private void writeHTMLPageHeader(DbObject model, int operation) throws DbException {
   writer.write("<html>"); // NOT LOCALIZABLE
   writer.write("<head>"); // NOT LOCALIZABLE
   String title = operation == AbstractIntegrity.INTEGRITY ? kTitleInteg : kTitleClean;
   writer.write("<TR><TD CLASS=Titre><FONT SIZE=+2>" + title);
   writer.write("</FONT></TD></TR>");
   writer.write("</head>"); // NOT LOCALIZABLE
   writer.write("<body bgcolor=\"#FFFFFF\">"); // NOT LOCALIZABLE
   writer.write("<i>" + kNote + "</i>" + EOL + EOL); // NOT LOCALIZABLE
   writer.write("<hr>"); // NOT LOCALIZABLE
   writer.write("<b>"); // NOT LOCALIZABLE
   if (model instanceof DbBEModel) {
     writer.write(
         MessageFormat.format(
                 AbstractBEIntegrity.kBeModel,
                 new Object[] {getLinksForDbObject(model, false, false)})
             + EOL);
   } else {
     writer.write(
         MessageFormat.format(
                 AbstractORIntegrity.kDataModel,
                 new Object[] {getLinksForDbObject(model, false, false)})
             + EOL);
   }
   writer.write("</b>");
 }
  private void generateExplorerToolBar(IndentWriter writer) throws IOException {
    writer.println("<table style=\"width: 100%;\">");
    writer.println("<tr><td style=\"width: 100%; text-align: right;\">");
    writer.indent();

    // decrease font size
    String pattern =
        "<img src=\"images/font_size_decrease.png\" title=\"{0}\" onclick=\"javascript:decreaseFontSize();\" />";
    String tooltip = LocaleMgr.getInstance().getString("fontSizeDecrease");
    String line = MessageFormat.format(pattern, new Object[] {tooltip});
    writer.println(line);

    // increase font size
    pattern =
        "<img src=\"images/font_size_increase.png\" title=\"{0}\" onclick=\"javascript:increaseFontSize();\" />";
    tooltip = LocaleMgr.getInstance().getString("fontSizeIncrease");
    line = MessageFormat.format(pattern, new Object[] {tooltip});
    writer.println(line);

    // print
    pattern = "<img src=\"images/print.gif\" title=\"{0}\" onclick=\"javascript:print();\" />";
    tooltip = LocaleMgr.getInstance().getString("print");
    line = MessageFormat.format(pattern, new Object[] {tooltip});
    writer.println(line);

    // open all
    pattern = "<img src=\"images/expandall.gif\" title=\"{0}\" onclick=\"openAll();\" />";
    tooltip = LocaleMgr.getInstance().getString("openAll");
    line = MessageFormat.format(pattern, new Object[] {tooltip});
    writer.println(line);

    // close all
    pattern = "<img src=\"images/collapseall.gif\" title=\"{0}\" onclick=\"closeAll();\" />";
    tooltip = LocaleMgr.getInstance().getString("closeAll");
    line = MessageFormat.format(pattern, new Object[] {tooltip});
    writer.println(line);

    writer.unindent();
    writer.println("</td></tr>");
    writer.println("</table>");
  }
  private void writeHTMLPageFooter() throws DbException {
    writer.write("<b><i>"); // NOT LOCALIZABLE
    writer.write(EOL + EOL);
    if (modelErrorCount > 0)
      writer.write(
          MessageFormat.format(kErrorCount0, new Object[] {new Integer(modelErrorCount)}) + EOL);
    if (modelWarningCount > 0)
      writer.write(
          MessageFormat.format(kWarningCount0, new Object[] {new Integer(modelWarningCount)})
              + EOL);
    if (modelErrorCount == 0 && modelWarningCount == 0) writer.write(kNoErrorFound + EOL);
    writer.write("</i></b>"); // NOT LOCALIZABLE

    if (cleanUpMode) {
      String deleteAllOcc =
          this.getCleanupLink(AbstractIntegrity.DELETE_ALL, kCleanAllTip, showDeleteAlImageURL);
      writer.write(EOL + deleteAllOcc + EOL);
    }

    writer.write(EOL + EOL);
    writer.write("</body>"); // NOT LOCALIZABLE
    writer.write("</html>"); // NOT LOCALIZABLE
  }
 // Called at the end of a cell edition, to process the edition result.
 public final void valueForPathChanged(TreePath path, Object newValue) {
   DynamicNode node = (DynamicNode) path.getLastPathComponent();
   Object obj = node.getRealObject();
   if (obj instanceof DbObject) {
     boolean editable = false;
     try {
       Db db = ((DbObject) obj).getDb();
       if (db.isValid()) {
         db.beginReadTrans();
         MetaField editableMetaField = getEditableMetaField((DbObject) obj);
         if (editableMetaField == null)
           editable =
               ApplicationContext.getSemanticalModel()
                   .isNameEditable((DbObject) obj, Explorer.class);
         else
           editable =
               ApplicationContext.getSemanticalModel()
                   .isEditable(editableMetaField, (DbObject) obj, Explorer.class);
         db.commitTrans();
       }
     } catch (DbException ex) {
       org.modelsphere.jack.util.ExceptionHandler.processUncatchedException(
           ApplicationContext.getDefaultMainFrame(), ex);
       editable = false;
     }
     if (!editable) return;
   } else {
     return;
   }
   DbObject semObj = (DbObject) obj;
   try {
     MetaField editableMetaField = getEditableMetaField(semObj);
     String transName =
         (editableMetaField == null
             ? LocaleMgr.action.getString("rename")
             : MessageFormat.format(kUpdate0, new Object[] {editableMetaField.getGUIName()}));
     semObj.getDb().beginTrans(Db.WRITE_TRANS, transName);
     if (editableMetaField == null) {
       if (semObj.getTransStatus() == Db.OBJ_REMOVED) return;
       semObj.setName((String) newValue);
     } else semObj.set(editableMetaField, (String) newValue);
     semObj.getDb().commitTrans();
     nodeChanged(node); // in case it is a secondary node (only the
     // primary node is updated by the refresh
     // listener).
   } catch (Exception ex) {
     org.modelsphere.jack.util.ExceptionHandler.processUncatchedException(
         ApplicationContext.getDefaultMainFrame(), ex);
   }
 }
  // this update is always safe
  public final void updateSelectionAction() throws DbException {
    ApplicationDiagram diag = ApplicationContext.getFocusManager().getActiveDiagram();
    Object[] objects = ApplicationContext.getFocusManager().getSelectedSemanticalObjects();
    if ((diag == null) || (objects.length != 1) || !(objects[0] instanceof DbORAssociationEnd)) {
      setSelectedIndex(-1);
      setEnabled(false);
      return;
    }

    // update values
    dbos.clear();

    DbORAssociationEnd end = (DbORAssociationEnd) objects[0];
    DbORPrimaryUnique selKey = end.getReferencedConstraint();

    DbORAbsTable tableSo = (DbORAbsTable) end.getOppositeEnd().getClassifier();
    DbEnumeration dbEnum = tableSo.getComponents().elements(DbORPrimaryUnique.metaClass);
    while (dbEnum.hasMoreElements()) {
      DbORPrimaryUnique key = (DbORPrimaryUnique) dbEnum.nextElement();
      dbos.add(key);
    }
    dbEnum.close();

    int sizeadjustment = (dbos.size() == 0) ? 1 : 2; // adding a separator
    // and an item for
    // removing the
    // referenced
    // constraint
    // if no keys, do not add a separator
    Object[] items = new Object[dbos.size() + sizeadjustment];

    items[0] = kNoReferencedConstraint;
    if (sizeadjustment == 2) {
      items[1] = null;
    }

    String tableName = tableSo.getName();
    for (int i = 0; i < dbos.size(); i++) {
      String name = ((DbORPrimaryUnique) dbos.get(i)).getName();
      items[i + sizeadjustment] =
          MessageFormat.format(kKeyNamePatern, new Object[] {tableName, name});
    }
    setDomainValues(items);

    if (selKey == null) setSelectedIndex(0);
    else setSelectedIndex(dbos.indexOf(selKey) + sizeadjustment);

    setEnabled(true);
  }
  protected final void doActionPerformed() {
    DbObject[] selObjs = ORActionFactory.getActiveObjects();
    if (selObjs == null || selObjs.length > 1 || selObjs.length == 0) {
      throw new RuntimeException("Expecting selection of one database");
    }
    boolean userHasCancelled = false;
    DbORDatabase database = null;
    try {
      selObjs[0].getDb().beginTrans(Db.READ_TRANS);
      DbORModel model = null;

      if (selObjs[0] instanceof DbORDatabase) {
        database = (DbORDatabase) selObjs[0];
      } else {
        model =
            (selObjs[0] instanceof DbORModel)
                ? (DbORModel) selObjs[0]
                : (DbORModel) selObjs[0].getCompositeOfType(DbORModel.metaClass);
        if (model != null) {
          if (model instanceof DbORDataModel) {
            database = ((DbORDataModel) model).getDeploymentDatabase();
          } else if (model instanceof DbORDomainModel) {
            database = ((DbORDomainModel) model).getDeploymentDatabase();
          } else if (model instanceof DbOROperationLibrary) {
            database = ((DbOROperationLibrary) model).getDeploymentDatabase();
          } // end if
        } // end if
      } // end if
      selObjs[0].getDb().commitTrans();

      if ((model != null) && (database == null)) {
        String transName =
            MessageFormat.format(
                kCreation, new Object[] {DbORDataModel.fDeploymentDatabase.getGUIName()});
        selObjs[0].getDb().beginWriteTrans(transName);
        int option =
            JOptionPane.showConfirmDialog(
                ApplicationContext.getDefaultMainFrame(),
                kNoActiveDatabase,
                ApplicationContext.getApplicationName(),
                JOptionPane.OK_CANCEL_OPTION,
                JOptionPane.INFORMATION_MESSAGE);
        if (option == 0) {
          DbObject composite = model.getProject();
          DbSMSTargetSystem ts = model.getTargetSystem();
          database = AnyORObject.createDatabase(composite, ts);
          if (model instanceof DbORDataModel) {
            DbORDataModel dm = (DbORDataModel) model;
            dm.setDeploymentDatabase(database);
          } else if (model instanceof DbOROperationLibrary) {
            DbOROperationLibrary ol = (DbOROperationLibrary) model;
            ol.setDeploymentDatabase(database);
          } else if (model instanceof DbORDomainModel) {
            DbORDomainModel dm = (DbORDomainModel) model;
            dm.setDeploymentDatabase(database);
          } // end if
        } else if (option == 1) {
          userHasCancelled = true;
        } // end if

        selObjs[0].getDb().commitTrans();
      } // end if
    } catch (DbException e) {
      ExceptionHandler.processUncatchedException(ApplicationContext.getDefaultMainFrame(), e);
    } // end try

    if (userHasCancelled) {
      return;
    }

    DbSMSTargetSystem target = null;
    try {
      Db db = database.getDb();
      db.beginTrans(Db.READ_TRANS);
      target = database.getTargetSystem();
      DBMSDefaultForwardWizardModel model =
          new DBMSDefaultForwardWizardModel(target.getID().intValue());
      model.setAbstractPackage(database);
      model.setDatabaseName(database.getName());
      db.commitTrans();
      Wizard wizard = new Wizard(model);
      wizard.setVisible(true);
    } catch (InstantiationException e) {
      Component parent = ApplicationContext.getDefaultMainFrame();
      Db.abortAllTrans();
      ExceptionHandler.showErrorMessage(parent, e.getMessage());
    } catch (DbException e) {
      ExceptionHandler.processUncatchedException(ApplicationContext.getDefaultMainFrame(), e);
    } catch (RuntimeException e) {
      Component parent = ApplicationContext.getDefaultMainFrame();
      String pattern = kPattern;
      String targetName = kUnknown;

      try {
        Db db = target.getDb();
        db.beginReadTrans();
        targetName = target.getName() + " " + target.getVersion();
        db.commitTrans();
      } catch (DbException ex) {
        // leave targetName's value to unknown
      }

      String msg = MessageFormat.format(pattern, new Object[] {targetName});
      Db.abortAllTrans();
      ExceptionHandler.showErrorMessage(parent, msg);
    }
  }
 private void refreshTitle() throws DbException {
   setTitle(MessageFormat.format(NOTATIONS, new Object[] {project.getFullDisplayName()}));
 }