Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorddunne2009-01-02 19:48:21 +0000
committerddunne2009-01-02 19:48:21 +0000
commit1e8bc1a7fa747b7556e590c7b128d66feb5543ef (patch)
tree7a50c85ba22032e9a14c7c9adabc8d1427bd50c2
parentf8064268b1047d076770c1330ff76cc7ebf0174b (diff)
downloadorg.eclipse.osee-1e8bc1a7fa747b7556e590c7b128d66feb5543ef.tar.gz
org.eclipse.osee-1e8bc1a7fa747b7556e590c7b128d66feb5543ef.tar.xz
org.eclipse.osee-1e8bc1a7fa747b7556e590c7b128d66feb5543ef.zip
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java38
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java31
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java28
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/AtsWorkflowConfigCreationWizard.java11
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsWorkDefinitions.java17
-rw-r--r--org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkItemDefinitionFactory.java5
-rw-r--r--org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageDefinition.java15
7 files changed, 116 insertions, 29 deletions
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java
index 291c8e42d42..f1eb909d480 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java
@@ -39,6 +39,11 @@ import org.eclipse.osee.ats.workflow.editor.model.WorkflowDiagram;
import org.eclipse.osee.ats.workflow.editor.parts.ShapesEditPartFactory;
import org.eclipse.osee.ats.workflow.editor.parts.ShapesTreeEditPartFactory;
import org.eclipse.osee.framework.db.connection.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
+import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
import org.eclipse.osee.framework.ui.plugin.util.Displays;
@@ -61,7 +66,7 @@ import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
*
* @author Donald G. Dunne
*/
-public class AtsWorkflowConfigEditor extends GraphicalEditorWithFlyoutPalette {
+public class AtsWorkflowConfigEditor extends GraphicalEditorWithFlyoutPalette implements IFrameworkTransactionEventListener {
/** This is the root of the editor's model. */
private WorkflowDiagram diagram;
@@ -72,6 +77,7 @@ public class AtsWorkflowConfigEditor extends GraphicalEditorWithFlyoutPalette {
/** Create a new ShapesEditor instance. This is called by the Workspace. */
public AtsWorkflowConfigEditor() {
setEditDomain(new DefaultEditDomain(this));
+ OseeEventManager.addListener(this);
}
public static void editWorkflow(final WorkFlowDefinition workflow) {
@@ -168,6 +174,7 @@ public class AtsWorkflowConfigEditor extends GraphicalEditorWithFlyoutPalette {
return;
}
transaction.execute();
+ diagram.getWorkFlowDefinition().loadPageData(true);
getCommandStack().markSaveLocation();
} catch (OseeCoreException ex) {
@@ -394,4 +401,33 @@ public class AtsWorkflowConfigEditor extends GraphicalEditorWithFlyoutPalette {
}
}
+ public void closeEditor() {
+ final IEditorPart editor = this;
+ Displays.ensureInDisplayThread(new Runnable() {
+ /* (non-Javadoc)
+ * @see java.lang.Runnable#run()
+ */
+ @Override
+ public void run() {
+ AWorkbench.getActivePage().closeEditor(editor, false);
+ }
+ });
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener#handleFrameworkTransactionEvent(org.eclipse.osee.framework.skynet.core.event.Sender, org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData)
+ */
+ @Override
+ public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
+ if (transData.branchId != AtsPlugin.getAtsBranch().getBranchId()) return;
+ for (Artifact delArt : transData.cacheDeletedArtifacts) {
+ if (delArt.getArtifactTypeName().equals(WorkFlowDefinition.ARTIFACT_NAME)) {
+ if (delArt.getInternalAttributeValue("Name").equals(getPartName())) {
+ closeEditor();
+ }
+ }
+ }
+ System.out.println("Add refresh of editor if workflow mod");
+ }
+
} \ No newline at end of file
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java
index ef89bb4c5f1..3a8ba6e7638 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java
@@ -14,6 +14,7 @@ import java.util.List;
import java.util.logging.Level;
import org.eclipse.osee.ats.AtsPlugin;
import org.eclipse.osee.ats.util.AtsLib;
+import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions;
import org.eclipse.osee.ats.workflow.page.AtsCancelledWorkPageDefinition;
import org.eclipse.osee.ats.workflow.page.AtsCompletedWorkPageDefinition;
import org.eclipse.osee.framework.db.connection.exception.OseeCoreException;
@@ -51,6 +52,15 @@ public class WorkPageShape extends RectangleShape {
this(new WorkPageDefinition("New" + AtsLib.getAtsDeveloperIncrementingNum(), "NEW", null));
}
+ public WorkPageShape(WorkPageDefinition workPageDefinition) {
+ this.workPageDefinition = workPageDefinition;
+ try {
+ artifact = WorkItemDefinitionFactory.getWorkItemDefinitionArtifact(workPageDefinition.getId());
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
/* (non-Javadoc)
* @see org.eclipse.osee.ats.workflow.editor.model.Shape#setWorkflowDiagram(org.eclipse.osee.ats.workflow.editor.model.WorkflowDiagram)
*/
@@ -106,9 +116,6 @@ public class WorkPageShape extends RectangleShape {
}
public Artifact getArtifact() throws OseeCoreException {
- if (artifact == null && workPageDefinition != null) {
- artifact = WorkItemDefinitionFactory.getWorkItemDefinitionArtifact(workPageDefinition.getId());
- }
return artifact;
}
@@ -142,10 +149,6 @@ public class WorkPageShape extends RectangleShape {
return Result.TrueResult;
}
- public WorkPageShape(WorkPageDefinition workPageDefinition) {
- this.workPageDefinition = workPageDefinition;
- }
-
public boolean isInstanceof(String workPageDefinitionId) throws OseeCoreException {
return isInstanceofRecurse(workPageDefinition, workPageDefinitionId);
}
@@ -244,14 +247,22 @@ public class WorkPageShape extends RectangleShape {
workPageDefinition.setPageName(name);
workPageDefinition.setId(workId);
workPageDefinition.setParentId(parentWorkId);
- Artifact artifact = workPageDefinition.toArtifact(WriteType.Update);
+ Artifact artifact = getArtifact();
if (artifact == null) {
artifact = workPageDefinition.toArtifact(WriteType.New);
} else {
- artifact = workPageDefinition.toArtifact(WriteType.Update);
+ artifact.setSoleAttributeValue(WorkItemAttributes.WORK_PAGE_NAME.getAttributeTypeName(), name);
+ artifact.setSoleAttributeValue(WorkItemAttributes.WORK_ID.getAttributeTypeName(), workId);
+ if (parentWorkId == null || parentWorkId.equals("")) {
+ artifact.deleteSoleAttribute(WorkItemAttributes.WORK_PARENT_ID.getAttributeTypeName());
+ } else {
+ artifact.setSoleAttributeValue(WorkItemAttributes.WORK_PARENT_ID.getAttributeTypeName(), parentWorkId);
+ }
}
+ artifact.setDescriptiveName(workId);
+ AtsWorkDefinitions.addUpdateWorkItemToDefaultHeirarchy(artifact, transaction);
+ WorkItemDefinitionFactory.deCache(workPageDefinition);
artifact.persistAttributesAndRelations(transaction);
return Result.TrueResult;
}
-
}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java
index ea7f50c7f00..df8495428ae 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java
@@ -23,7 +23,6 @@ import org.eclipse.osee.framework.ui.plugin.util.Result;
import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemAttributes;
-import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinition;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinitionFactory;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition.TransitionType;
@@ -41,6 +40,7 @@ public class WorkflowDiagram extends ModelElement {
/** Property ID to use when a child is removed from this diagram. */
public static final String CHILD_REMOVED_PROP = "WorkflowDiagram.ChildRemoved";
private final List<Shape> shapes = new ArrayList<Shape>();
+ private final List<Shape> deletedShapes = new ArrayList<Shape>();
private final WorkFlowDefinition workFlowDefinition;
public WorkflowDiagram(WorkFlowDefinition workFlowDefinition) {
@@ -62,21 +62,14 @@ public class WorkflowDiagram extends ModelElement {
}
// Remove all states that do not exist anymore
- List<WorkItemDefinition> wids = workFlowDefinition.getWorkItems(false);
- List<WorkItemDefinition> widsForDelete = workFlowDefinition.getWorkItems(false);
- for (WorkPageShape workPageShape : workPageShapes) {
- for (WorkItemDefinition wid : wids) {
- if (wid.getId().equals(workPageShape.getId())) {
- // Remove wid from delete list
- widsForDelete.remove(wid);
- break;
+ for (Shape shape : deletedShapes) {
+ if (WorkPageShape.class.isAssignableFrom(shape.getClass())) {
+ WorkPageShape workPageShape = (WorkPageShape) shape;
+ if (workPageShape.getArtifact() != null) {
+ workPageShape.getArtifact().delete(transaction);
}
}
}
- for (WorkItemDefinition wid : widsForDelete) {
- Artifact art = WorkItemDefinitionFactory.getWorkItemDefinitionArtifact(wid.getId());
- art.delete();
- }
// Save new states and modifications to states
for (WorkPageShape workPageShape : workPageShapes) {
@@ -115,15 +108,20 @@ public class WorkflowDiagram extends ModelElement {
}
}
}
+ workFlowDefinition.loadPageData(true);
+
Artifact artifact = workFlowDefinition.toArtifact(WriteType.Update);
+ AtsWorkDefinitions.addUpdateWorkItemToDefaultHeirarchy(artifact, transaction);
artifact.persistAttributes(transaction);
+ WorkItemDefinitionFactory.deCache(workFlowDefinition);
+
// Validate saved workflows and all corresponding workItemDefinitions
// prior to completion of save
result = AtsWorkDefinitions.validateWorkItemDefinition(workFlowDefinition);
if (result.isFalse()) return result;
for (Shape shape : getChildren()) {
- if (shape instanceof WorkPageShape) {
+ if (WorkPageShape.class.isAssignableFrom(shape.getClass())) {
WorkPageDefinition workPageDefinition = ((WorkPageShape) shape).getWorkPageDefinition();
result = AtsWorkDefinitions.validateWorkItemDefinition(workPageDefinition);
if (result.isFalse()) return result;
@@ -219,6 +217,7 @@ public class WorkflowDiagram extends ModelElement {
*/
public boolean addChild(Shape s) {
if (s != null && shapes.add(s)) {
+ deletedShapes.remove(s);
s.setWorkflowDiagram(this);
firePropertyChange(CHILD_ADDED_PROP, null, s);
return true;
@@ -256,6 +255,7 @@ public class WorkflowDiagram extends ModelElement {
*/
public boolean removeChild(Shape s) {
if (s != null && shapes.remove(s)) {
+ deletedShapes.add(s);
firePropertyChange(CHILD_REMOVED_PROP, null, s);
return true;
}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/AtsWorkflowConfigCreationWizard.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/AtsWorkflowConfigCreationWizard.java
index cd1a19e0515..59f833118fa 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/AtsWorkflowConfigCreationWizard.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/wizard/AtsWorkflowConfigCreationWizard.java
@@ -22,6 +22,7 @@ import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId;
import org.eclipse.osee.ats.workflow.page.AtsCancelledWorkPageDefinition;
import org.eclipse.osee.ats.workflow.page.AtsCompletedWorkPageDefinition;
import org.eclipse.osee.ats.workflow.page.AtsEndorseWorkPageDefinition;
+import org.eclipse.osee.framework.db.connection.exception.OseeCoreException;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
@@ -67,9 +68,13 @@ public class AtsWorkflowConfigCreationWizard extends Wizard implements INewWizar
public boolean performFinish() {
final String namespace = page1.getNamespace();
try {
- if (WorkItemDefinitionFactory.getWorkItemDefinition(namespace) != null) {
- AWorkbench.popup("ERROR", "Namespace already used, choose a unique namespace.");
- return false;
+ try {
+ if (WorkItemDefinitionFactory.getWorkItemDefinition(namespace) != null) {
+ AWorkbench.popup("ERROR", "Namespace already used, choose a unique namespace.");
+ return false;
+ }
+ } catch (OseeCoreException ex) {
+ // do nothing
}
WorkFlowDefinition workflow = new WorkFlowDefinition(namespace, namespace, null);
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsWorkDefinitions.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsWorkDefinitions.java
index a71b8025c20..82f11f26e96 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsWorkDefinitions.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsWorkDefinitions.java
@@ -261,7 +261,22 @@ public class AtsWorkDefinitions implements IWorkDefinitionProvider {
// Relate if not already related
if (art.getRelatedArtifacts(AtsRelation.WorkItem__Parent, Artifact.class).size() == 0) {
if (art.getArtifactTypeName().equals(WorkPageDefinition.ARTIFACT_NAME)) {
- relateIfNotRelated(AtsConfig.getInstance().getOrCreateWorkPagesFolderArtifact(transaction), art);
+ // Add to workflow artifact if can
+ WorkPageDefinition workPageDefinition = new WorkPageDefinition(art);
+ Artifact parentArt = null;
+ WorkFlowDefinition workFlowDefinition = workPageDefinition.getWorkFlowDefinitionById();
+ if (workFlowDefinition != null) {
+ Artifact workflowArt =
+ WorkItemDefinitionFactory.getWorkItemDefinitionArtifact(workFlowDefinition.getId());
+ if (workflowArt != null) {
+ parentArt = workflowArt;
+ }
+ }
+ // Else, add to work pages folder
+ if (parentArt == null) {
+ parentArt = AtsConfig.getInstance().getOrCreateWorkPagesFolderArtifact(transaction);
+ }
+ relateIfNotRelated(parentArt, art);
}
if (art.getArtifactTypeName().equals(WorkRuleDefinition.ARTIFACT_NAME)) {
relateIfNotRelated(AtsConfig.getInstance().getOrCreateWorkRulesFolderArtifact(transaction), art);
diff --git a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkItemDefinitionFactory.java b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkItemDefinitionFactory.java
index db5d526870d..c779740219e 100644
--- a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkItemDefinitionFactory.java
+++ b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkItemDefinitionFactory.java
@@ -34,6 +34,11 @@ public class WorkItemDefinitionFactory {
itemIdToWidArtifact = null;
}
+ public static void deCache(WorkItemDefinition workItemDefinition) {
+ itemIdToDefinition.remove(workItemDefinition.getId());
+ itemIdToWidArtifact.remove(workItemDefinition.getId());
+ }
+
public synchronized static void loadDefinitions() throws OseeCoreException {
if (itemIdToDefinition == null) {
OseeLog.log(SkynetGuiPlugin.class, Level.INFO, "Loading Work Item Definitions");
diff --git a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageDefinition.java b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageDefinition.java
index eed1e2044e3..fe3844d3aab 100644
--- a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageDefinition.java
+++ b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageDefinition.java
@@ -43,6 +43,21 @@ public class WorkPageDefinition extends WorkItemWithChildrenDefinition {
return getWorkItemDefinition(ruleId) != null;
}
+ /**
+ * Returns work flow definition with the assumption that WorkFlowDefinition workId = pageWorkId minus pageName
+ *
+ * @return WorkFlowDefinition
+ * @throws OseeCoreException
+ */
+ public WorkFlowDefinition getWorkFlowDefinitionById() throws OseeCoreException {
+ String id = getId().replace("." + pageName, "");
+ WorkItemDefinition workItemDefinition = WorkItemDefinitionFactory.getWorkItemDefinition(id);
+ if (workItemDefinition instanceof WorkFlowDefinition) {
+ return (WorkFlowDefinition) WorkItemDefinitionFactory.getWorkItemDefinition(id);
+ }
+ return null;
+ }
+
@Override
public Artifact toArtifact(WriteType writeType) throws OseeCoreException {
Artifact art = super.toArtifact(writeType);

Back to the top