Exemplo n.º 1
0
 private void emptyExpandedChildren(RepositoryNode repositoryNode) {
   for (IRepositoryNode children : repositoryNode.getChildren()) {
     if (idIsValid(children)) {
       expanded.remove(children.getId());
     }
     emptyExpandedChildren((RepositoryNode) children);
   }
 }
  public IDuplicateHandle createDuplicateHandle(IRepositoryNode node) throws BusinessException {
    IDuplicateHandle handle = null;

    EResourceConstant typedConstant =
        EResourceConstant.getTypedConstant(node.getObject().getProperty().getItem());

    if (typedConstant == null) {
      BusinessException createBusinessException =
          ExceptionFactory.getInstance()
              .createBusinessException(
                  DefaultMessagesImpl.getString(
                      "ActionHandleFactory.duplicateFail", node.getLabel())); // $NON-NLS-1$
      throw createBusinessException;
    } else {
      switch (typedConstant) {
        case DB_CONNECTIONS:
          handle = new DBConnectionDuplicateHandle();
          break;
        case JRXML_TEMPLATE:
          handle = new JrxmlFileDuplicateHandle(node);
          break;
        case ANALYSIS:
          handle = new AnalysisDuplicateHandle();
          break;
        case REPORTS:
          handle = new ReportDuplicateHandle();
          break;
        case MDM_CONNECTIONS:
        case PATTERNS:
        case RULES_PARSER:
        case RULES_SQL:
          handle = new ModelElementDuplicateHandle();
          break;
        case INDICATORS:
          handle = new IndicatorDuplicateHandle();
          break;
        case SOURCE_FILES:
          handle = new SourceFileDuplicateHandle(node);
          break;

        default:
          break;
      }
    }

    return handle;
  }
 @SuppressWarnings("unchecked")
 private static List<NodeType> getProcessNodeTypes(IRepositoryNode node) {
   Item item = node.getObject().getProperty().getItem();
   if (item instanceof ProcessItem) {
     ProcessType process = ((ProcessItem) item).getProcess();
     return process.getNode();
   }
   return Collections.emptyList();
 }
  @Override
  public void run() {
    SaveAsBusinessModelWizard businessModelWizard = new SaveAsBusinessModelWizard(editorPart);

    WizardDialog dlg = new WizardDialog(Display.getCurrent().getActiveShell(), businessModelWizard);
    if (dlg.open() == Window.OK) {

      try {

        BusinessProcessItem businessProcessItem = businessModelWizard.getBusinessProcessItem();

        IRepositoryNode repositoryNode =
            RepositoryNodeUtilities.getRepositoryNode(
                businessProcessItem.getProperty().getId(), false);

        // because step1, the fresh will unload the resource(EMF), so, assign a new one...
        businessProcessItem =
            (BusinessProcessItem) repositoryNode.getObject().getProperty().getItem();

        IWorkbenchPage page = getActivePage();

        DiagramResourceManager diagramResourceManager =
            new DiagramResourceManager(page, new NullProgressMonitor());
        IFile file = businessModelWizard.getTempFile();
        // Set readonly to false since created job will always be editable.
        RepositoryEditorInput newBusinessModelEditorInput =
            new RepositoryEditorInput(file, businessProcessItem);

        newBusinessModelEditorInput.setRepositoryNode(repositoryNode);

        // here really do the normal save as function
        IDocumentProvider provider =
            ((BusinessDiagramEditor) this.editorPart).getDocumentProvider();

        provider.aboutToChange(newBusinessModelEditorInput);
        provider.saveDocument(
            null,
            newBusinessModelEditorInput,
            provider.getDocument(this.editorPart.getEditorInput()),
            true);
        provider.changed(newBusinessModelEditorInput);

        // copy back from the *.business_diagram file to *.item file.
        // @see:BusinessDiagramEditor.doSave(IProgressMonitor progressMonitor)
        diagramResourceManager.updateFromResource(
            businessProcessItem, newBusinessModelEditorInput.getFile());

        // notice: here, must save it, save the item to disk, otherwise close the editor
        // without any modification, there won't save the
        // model again, so, will lost the graphic when reopen it.
        ProxyRepositoryFactory.getInstance().save(businessProcessItem);

        // close the old editor
        page.closeEditor(this.editorPart, false);

        // open the new editor, because at the same time, there will update the
        // jobSetting/componentSetting view
        IEditorPart openEditor =
            page.openEditor(newBusinessModelEditorInput, BusinessDiagramEditor.ID, true);

      } catch (Exception e) {
        MessageDialog.openError(
            Display.getCurrent().getActiveShell(),
            "Error",
            "Business model could not be saved" + " : " + e.getMessage());
        ExceptionHandler.process(e);
      }
    }
  }
Exemplo n.º 5
0
 private boolean idIsValid(IRepositoryNode repositoryNode) {
   String id = repositoryNode.getId();
   return id != null && !RepositoryNode.NO_ID.equals(id);
 }