Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordonald.g.dunne2013-11-12 18:49:57 +0000
committerRoberto E. Escobar2013-11-25 23:45:39 +0000
commit198c363b0f08e6acbc6e490a5f19d63b80f08aa8 (patch)
tree66d6418fe116bf84216bd91860b7028f77314948 /plugins/org.eclipse.osee.ats.core.client
parentc6e7bdc123b1acfe1a5bf1601c2d87f376173951 (diff)
downloadorg.eclipse.osee-198c363b0f08e6acbc6e490a5f19d63b80f08aa8.tar.gz
org.eclipse.osee-198c363b0f08e6acbc6e490a5f19d63b80f08aa8.tar.xz
org.eclipse.osee-198c363b0f08e6acbc6e490a5f19d63b80f08aa8.zip
feature[ats_S5JDQ]: Create StateManager reader and writer
Diffstat (limited to 'plugins/org.eclipse.osee.ats.core.client')
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionManager.java5
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsCacheManagerUpdateListener.java5
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsAttributeResolverServiceImpl.java17
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsWorkItemServiceImpl.java5
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java2
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java13
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerToPeerReviewManager.java5
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ValidateReviewManager.java2
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AbstractTaskableArtifact.java19
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/createtasks/TaskOpCreate.java2
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowArtifact.java14
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsChangeSet.java71
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AbstractWorkflowArtifact.java109
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/transition/TransitionToOperation.java17
14 files changed, 159 insertions, 127 deletions
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionManager.java
index 9578a3c3f17..637f71ec4c4 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionManager.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/action/ActionManager.java
@@ -79,8 +79,9 @@ public class ActionManager {
TeamWorkFlowArtifact teamWf =
createTeamWorkflow(actionArt, teamDef, actionableItems, leads, changes, createdDate, createdBy,
newActionListener);
- teamWf.getStateMgr().writeToStore();
+
AtsCore.getLogFactory().writeToStore(teamWf);
+ changes.add(teamWf);
}
// Notify listener of action creation
@@ -151,7 +152,7 @@ public class ActionManager {
}
// Initialize state machine
- teamArt.initializeNewStateMachine(assignees, createdDate, createdBy);
+ teamArt.initializeNewStateMachine(assignees, createdDate, createdBy, changes);
// Notify listener of team creation
if (newActionListener != null) {
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsCacheManagerUpdateListener.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsCacheManagerUpdateListener.java
index 63c7078dec5..6372a92d7b1 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsCacheManagerUpdateListener.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsCacheManagerUpdateListener.java
@@ -23,6 +23,7 @@ import org.eclipse.osee.ats.core.client.task.AbstractTaskableArtifact;
import org.eclipse.osee.ats.core.client.task.TaskArtifact;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
import org.eclipse.osee.ats.core.client.util.AtsTaskCache;
+import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact;
import org.eclipse.osee.framework.core.model.type.RelationType;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.logging.OseeLog;
@@ -178,6 +179,10 @@ public class AtsCacheManagerUpdateListener implements IArtifactEventListener {
AtsReviewCache.decache(artifact);
}
}
+ if (artifact instanceof AbstractWorkflowArtifact) {
+ AbstractWorkflowArtifact awa = (AbstractWorkflowArtifact) artifact;
+ awa.clearCaches();
+ }
}
private void handleCachesForDeletedPurged(EventBasicGuidArtifact guidArt) throws OseeCoreException {
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsAttributeResolverServiceImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsAttributeResolverServiceImpl.java
index 6f6900f9624..4d42c660623 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsAttributeResolverServiceImpl.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsAttributeResolverServiceImpl.java
@@ -26,6 +26,7 @@ import org.eclipse.osee.framework.core.model.type.AttributeType;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.artifact.Attribute;
import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager;
import org.eclipse.osee.framework.skynet.core.utility.AttributeTypeToXWidgetName;
@@ -121,4 +122,20 @@ public class AtsAttributeResolverServiceImpl implements IAttributeResolver {
public void deleteSoleAttribute(IAtsWorkItem workItem, IAttributeType attributeType) throws OseeCoreException {
AtsClientService.get().getArtifact(workItem).deleteSoleAttribute(attributeType);
}
+
+ @Override
+ public <T> void setValue(IAtsWorkItem workItem, IAttribute<String> attr, IAttributeType attributeType, T value) throws OseeCoreException {
+ @SuppressWarnings("unchecked")
+ Attribute<T> attribute = (Attribute<T>) attr.getData();
+ attribute.setValue(value);
+ }
+
+ @Override
+ public <T> void deleteAttribute(IAtsWorkItem workItem, IAttribute<T> attr) throws OseeCoreException {
+ Artifact artifact = AtsClientService.get().getArtifact(workItem);
+ Attribute<?> attribute = (Attribute<?>) attr.getData();
+ Attribute<?> attributeById = artifact.getAttributeById(attribute.getId(), false);
+ attributeById.delete();
+ }
+
}
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsWorkItemServiceImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsWorkItemServiceImpl.java
index 0d5100e4876..c9e39bc80e0 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsWorkItemServiceImpl.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/workflow/AtsWorkItemServiceImpl.java
@@ -227,11 +227,6 @@ public class AtsWorkItemServiceImpl implements IAtsWorkItemService {
}
@Override
- public void setInTransition(IAtsWorkItem workItem, boolean inTransition) {
- ((AbstractWorkflowArtifact) workItem).setInTransition(inTransition);
- }
-
- @Override
public Collection<ITransitionListener> getTransitionListeners() {
return TransitionListeners.getListeners();
}
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java
index 34bc23e6236..88b8324882e 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java
@@ -66,7 +66,7 @@ public class DecisionReviewDefinitionManager extends TransitionAdapter {
} else {
decArt =
DecisionReviewManager.createNewDecisionReview(teamArt, revDef.getBlockingType(), revDef.getReviewTitle(),
- revDef.getRelatedToState(), revDef.getDescription(), revDef.getOptions(), users, createdDate, createdBy);
+ revDef.getRelatedToState(), revDef.getDescription(), revDef.getOptions(), users, createdDate, createdBy, changes);
}
decArt.getLog().addLog(LogType.Note, null, String.format("Review [%s] auto-generated", revDef.getName()),
AtsCore.getUserService().getCurrentUser().getUserId());
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java
index 89ab2f929ab..41b3156e797 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java
@@ -133,7 +133,7 @@ public class DecisionReviewManager {
public static DecisionReviewArtifact createNewDecisionReviewAndTransitionToDecision(TeamWorkFlowArtifact teamArt, String reviewTitle, String description, String againstState, ReviewBlockType reviewBlockType, Collection<IAtsDecisionReviewOption> options, List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException {
DecisionReviewArtifact decRev =
createNewDecisionReview(teamArt, reviewBlockType, reviewTitle, againstState, description, options, assignees,
- createdDate, createdBy);
+ createdDate, createdBy, changes);
changes.add(decRev);
// transition to decision
@@ -154,11 +154,12 @@ public class DecisionReviewManager {
return decRev;
}
- public static DecisionReviewArtifact createNewDecisionReview(TeamWorkFlowArtifact teamArt, ReviewBlockType reviewBlockType, boolean againstCurrentState, Date createdDate, IAtsUser createdBy) throws OseeCoreException {
+ public static DecisionReviewArtifact createNewDecisionReview(TeamWorkFlowArtifact teamArt, ReviewBlockType reviewBlockType, boolean againstCurrentState, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException {
return createNewDecisionReview(teamArt, reviewBlockType,
"Should we do this? Yes will require followup, No will not",
againstCurrentState ? teamArt.getStateMgr().getCurrentStateName() : null,
- "Enter description of the decision, if any", getDefaultDecisionReviewOptions(), null, createdDate, createdBy);
+ "Enter description of the decision, if any", getDefaultDecisionReviewOptions(), null, createdDate, createdBy,
+ changes);
}
public static List<IAtsDecisionReviewOption> getDefaultDecisionReviewOptions() throws OseeCoreException {
@@ -184,13 +185,13 @@ public class DecisionReviewManager {
return sb.toString();
}
- public static DecisionReviewArtifact createNewDecisionReview(TeamWorkFlowArtifact teamArt, ReviewBlockType reviewBlockType, String title, String relatedToState, String description, Collection<IAtsDecisionReviewOption> options, List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy) throws OseeCoreException {
+ public static DecisionReviewArtifact createNewDecisionReview(TeamWorkFlowArtifact teamArt, ReviewBlockType reviewBlockType, String title, String relatedToState, String description, Collection<IAtsDecisionReviewOption> options, List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException {
DecisionReviewArtifact decRev =
(DecisionReviewArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.DecisionReview,
AtsUtilCore.getAtsBranch(), title);
// Initialize state machine
- decRev.initializeNewStateMachine(assignees, createdDate, createdBy);
+ decRev.initializeNewStateMachine(assignees, createdDate, createdBy, changes);
teamArt.addRelation(AtsRelationTypes.TeamWorkflowToReview_Review, decRev);
if (Strings.isValid(relatedToState)) {
@@ -204,7 +205,7 @@ public class DecisionReviewManager {
decRev.setSoleAttributeFromString(AtsAttributeTypes.ReviewBlocks, reviewBlockType.name());
}
AtsReviewCache.decache(teamArt);
-
+ changes.add(decRev);
return decRev;
}
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerToPeerReviewManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerToPeerReviewManager.java
index 906c7cf2f63..5f55b409b15 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerToPeerReviewManager.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerToPeerReviewManager.java
@@ -26,7 +26,6 @@ import org.eclipse.osee.ats.api.workdef.ReviewBlockType;
import org.eclipse.osee.ats.api.workdef.StateType;
import org.eclipse.osee.ats.api.workflow.transition.TransitionOption;
import org.eclipse.osee.ats.api.workflow.transition.TransitionResults;
-import org.eclipse.osee.ats.core.AtsCore;
import org.eclipse.osee.ats.core.client.internal.AtsClientService;
import org.eclipse.osee.ats.core.client.review.defect.ReviewDefectItem;
import org.eclipse.osee.ats.core.client.review.defect.ReviewDefectManager;
@@ -122,7 +121,6 @@ public class PeerToPeerReviewManager {
reviewArt.setSoleAttributeValue(AtsAttributeTypes.Location, reviewMaterials);
reviewArt.setSoleAttributeValue(AtsAttributeTypes.ReviewFormalType, ReviewFormalType.InFormal.name());
reviewArt.getStateMgr().updateMetrics(reviewArt.getStateDefinition(), stateHoursSpent, statePercentComplete, true);
- AtsCore.getLogFactory().writeToStore(reviewArt);
return Result.TrueResult;
}
@@ -142,7 +140,6 @@ public class PeerToPeerReviewManager {
defectManager.saveToArtifact(reviewArt);
}
reviewArt.getStateMgr().updateMetrics(reviewArt.getStateDefinition(), stateHoursSpent, statePercentComplete, true);
- AtsCore.getLogFactory().writeToStore(reviewArt);
return Result.TrueResult;
}
@@ -183,7 +180,7 @@ public class PeerToPeerReviewManager {
// Initialize state machine
peerToPeerRev.setSoleAttributeValue(AtsAttributeTypes.WorkflowDefinition, workDefinition.getId());
- peerToPeerRev.initializeNewStateMachine(workDefinition, null, new Date(), createdBy);
+ peerToPeerRev.initializeNewStateMachine(null, new Date(), createdBy, changes);
if (teamArt != null && againstState != null) {
peerToPeerRev.setSoleAttributeValue(AtsAttributeTypes.RelatedToState, againstState);
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ValidateReviewManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ValidateReviewManager.java
index 5ed1e27431f..8062a9f9324 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ValidateReviewManager.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ValidateReviewManager.java
@@ -77,7 +77,7 @@ public class ValidateReviewManager {
DecisionReviewManager.createNewDecisionReview(
teamArt,
isValidateReviewBlocking(teamArt.getStateDefinition()) ? ReviewBlockType.Transition : ReviewBlockType.None,
- true, createdDate, createdBy);
+ true, createdDate, createdBy, changes);
decRev.setName(VALIDATE_REVIEW_TITLE);
decRev.setSoleAttributeValue(AtsAttributeTypes.DecisionReviewOptions,
"No;Followup;" + getValidateReviewFollowupUsersStr(teamArt) + "\n" + "Yes;Completed;");
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AbstractTaskableArtifact.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AbstractTaskableArtifact.java
index f7c27d6b0c3..4ced79e6a8a 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AbstractTaskableArtifact.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/AbstractTaskableArtifact.java
@@ -99,28 +99,28 @@ public abstract class AbstractTaskableArtifact extends AbstractWorkflowArtifact
return getRelatedArtifactsCount(AtsRelationTypes.TeamWfToTask_Task) > 0;
}
- public TaskArtifact createNewTask(String title, Date createdDate, IAtsUser createdBy) throws OseeCoreException {
+ public TaskArtifact createNewTask(String title, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException {
return createNewTask(Arrays.asList(AtsClientService.get().getUserAdmin().getCurrentUser()), title, createdDate,
- createdBy, null);
+ createdBy, null, changes);
}
- public TaskArtifact createNewTask(List<? extends IAtsUser> assignees, String title, Date createdDate, IAtsUser createdBy) throws OseeCoreException {
- return createNewTask(assignees, title, createdDate, createdBy, null);
+ public TaskArtifact createNewTask(List<? extends IAtsUser> assignees, String title, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException {
+ return createNewTask(assignees, title, createdDate, createdBy, null, changes);
}
- public TaskArtifact createNewTask(String title, Date createdDate, IAtsUser createdBy, String relatedToState) throws OseeCoreException {
+ public TaskArtifact createNewTask(String title, Date createdDate, IAtsUser createdBy, String relatedToState, IAtsChangeSet changes) throws OseeCoreException {
return createNewTask(Arrays.asList(AtsClientService.get().getUserAdmin().getCurrentUser()), title, createdDate,
- createdBy, relatedToState);
+ createdBy, relatedToState, changes);
}
- public TaskArtifact createNewTask(List<? extends IAtsUser> assignees, String title, Date createdDate, IAtsUser createdBy, String relatedToState) throws OseeCoreException {
+ public TaskArtifact createNewTask(List<? extends IAtsUser> assignees, String title, Date createdDate, IAtsUser createdBy, String relatedToState, IAtsChangeSet changes) throws OseeCoreException {
TaskArtifact taskArt = null;
taskArt =
(TaskArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.Task, AtsUtilCore.getAtsBranch(), title);
addRelation(AtsRelationTypes.TeamWfToTask_Task, taskArt);
taskArt.initializeNewStateMachine(assignees, new Date(),
- (createdBy == null ? AtsClientService.get().getUserAdmin().getCurrentUser() : createdBy));
+ (createdBy == null ? AtsClientService.get().getUserAdmin().getCurrentUser() : createdBy), changes);
// Set parent state task is related to if set
if (Strings.isValid(relatedToState)) {
@@ -128,6 +128,7 @@ public abstract class AbstractTaskableArtifact extends AbstractWorkflowArtifact
}
AtsCore.getLogFactory().writeToStore(taskArt);
AtsTaskCache.decache(this);
+ changes.add(taskArt);
return taskArt;
}
@@ -255,7 +256,7 @@ public abstract class AbstractTaskableArtifact extends AbstractWorkflowArtifact
public Collection<TaskArtifact> createTasks(List<String> titles, List<IAtsUser> assignees, Date createdDate, IAtsUser createdBy, String relatedToState, IAtsChangeSet changes) throws OseeCoreException {
List<TaskArtifact> tasks = new ArrayList<TaskArtifact>();
for (String title : titles) {
- TaskArtifact taskArt = createNewTask(title, createdDate, createdBy, relatedToState);
+ TaskArtifact taskArt = createNewTask(title, createdDate, createdBy, relatedToState, changes);
if (assignees != null && !assignees.isEmpty()) {
Set<IAtsUser> users = new HashSet<IAtsUser>(); // NOPMD by b0727536 on 9/29/10 8:51 AM
for (IAtsUser art : assignees) {
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/createtasks/TaskOpCreate.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/createtasks/TaskOpCreate.java
index dd446bb36ae..c5944405159 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/createtasks/TaskOpCreate.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/task/createtasks/TaskOpCreate.java
@@ -40,7 +40,7 @@ public class TaskOpCreate extends AbstractTaskOp {
String taskTitle = taskTitleProvider.getTaskTitle(metadata);
Date creationDate = new Date();
- TaskArtifact taskArt = parentTeamWf.createNewTask(taskTitle, creationDate, AtsCoreUsers.SYSTEM_USER);
+ TaskArtifact taskArt = parentTeamWf.createNewTask(taskTitle, creationDate, AtsCoreUsers.SYSTEM_USER, changes);
// create for Implement state regardless of which state workflow is in
taskArt.setSoleAttributeValue(AtsAttributeTypes.RelatedToState, TeamState.Implement.getName());
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowArtifact.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowArtifact.java
index 53ffd53108b..e27663d2201 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowArtifact.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/team/TeamWorkFlowArtifact.java
@@ -46,7 +46,6 @@ import org.eclipse.osee.framework.logging.OseeLevel;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.artifact.IATSStateMachineArtifact;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
/**
* @author Donald G. Dunne
@@ -79,19 +78,6 @@ public class TeamWorkFlowArtifact extends AbstractTaskableArtifact implements IA
}
@Override
- public void saveSMA(SkynetTransaction transaction) {
- super.saveSMA(transaction);
- try {
- ActionArtifact parentAction = getParentActionArtifact();
- ActionArtifactRollup rollup = new ActionArtifactRollup(parentAction);
- rollup.resetAttributesOffChildren();
- parentAction.persist(transaction);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, "Can't reset Action parent of children", ex);
- }
- }
-
- @Override
public void saveSMA(IAtsChangeSet changes) {
super.saveSMA(changes);
try {
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsChangeSet.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsChangeSet.java
index 855a7fc31e6..af906490efb 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsChangeSet.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/AtsChangeSet.java
@@ -12,7 +12,11 @@ package org.eclipse.osee.ats.core.client.util;
import java.util.HashSet;
import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
+import org.eclipse.osee.ats.api.IAtsWorkItem;
import org.eclipse.osee.ats.api.util.IAtsChangeSet;
+import org.eclipse.osee.ats.api.util.IExecuteListener;
+import org.eclipse.osee.ats.core.AtsCore;
import org.eclipse.osee.framework.core.util.Conditions;
import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
@@ -27,6 +31,8 @@ public class AtsChangeSet implements IAtsChangeSet {
private String comment;
private final Set<Object> objects = new HashSet<Object>();
+ private final Set<Object> deleteObjects = new HashSet<Object>();
+ private final Set<IExecuteListener> listeners = new HashSet<IExecuteListener>();
public AtsChangeSet(String comment) {
this.comment = comment;
@@ -39,21 +45,61 @@ public class AtsChangeSet implements IAtsChangeSet {
}
@Override
+ public void addAll(Object... objects) throws OseeCoreException {
+ Conditions.checkNotNull(objects, "objects");
+ for (Object obj : objects) {
+ if (obj == null) {
+ throw new OseeArgumentException("object can't be null");
+ }
+ this.objects.add(obj);
+ }
+ }
+
+ @Override
+ public void addToDelete(Object obj) throws OseeCoreException {
+ Conditions.checkNotNull(obj, "object");
+ deleteObjects.add(obj);
+ }
+
+ @Override
public void execute() throws OseeCoreException {
Conditions.checkNotNull(comment, "comment");
- Conditions.checkNotNullOrEmpty(objects, "objects");
+ if (objects.isEmpty() && deleteObjects.isEmpty()) {
+ throw new OseeArgumentException("objects/deleteObjects cannot be empty");
+ }
SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtilCore.getAtsBranchToken(), comment);
+ for (Object obj : new CopyOnWriteArrayList<Object>(objects)) {
+ if (obj instanceof IAtsWorkItem) {
+ IAtsWorkItem workItem = (IAtsWorkItem) obj;
+ if (workItem.getStateMgr().isDirty()) {
+ AtsCore.getStateFactory().writeToStore(workItem, this);
+ }
+ if (workItem.getLog().isDirty()) {
+ AtsCore.getLogFactory().writeToStore(workItem);
+ }
+ }
+ }
for (Object obj : objects) {
if (obj instanceof Artifact) {
((Artifact) obj).persist(transaction);
} else {
- throw new OseeArgumentException("Unhandled object type: " + obj);
+ throw new OseeArgumentException("ATsChangeSet: Unhandled object type: " + obj);
+ }
+ }
+ for (Object obj : deleteObjects) {
+ if (obj instanceof Artifact) {
+ ((Artifact) obj).deleteAndPersist(transaction);
+ } else {
+ throw new OseeArgumentException("ATsChangeSet: Unhandled deleteObject type: " + obj);
}
}
transaction.execute();
- objects.clear();
+ for (IExecuteListener listener : listeners) {
+ listener.changesStored(this);
+ }
}
+ @Override
public Set<Object> getObjects() {
return objects;
}
@@ -65,6 +111,8 @@ public class AtsChangeSet implements IAtsChangeSet {
@Override
public void clear() {
objects.clear();
+ deleteObjects.clear();
+ listeners.clear();
}
public void addTo(SkynetTransaction transaction) throws OseeCoreException {
@@ -83,8 +131,23 @@ public class AtsChangeSet implements IAtsChangeSet {
this.comment = comment;
}
+ @Override
public boolean isEmpty() {
- return objects.isEmpty();
+ return objects.isEmpty() && deleteObjects.isEmpty();
}
+ @Override
+ public void addExecuteListener(IExecuteListener listener) {
+ Conditions.checkNotNull(listener, "listener");
+ listeners.add(listener);
+ }
+
+ public static void execute(String comment, Object object, Object... objects) throws OseeCoreException {
+ AtsChangeSet changes = new AtsChangeSet(comment);
+ changes.add(object);
+ for (Object obj : objects) {
+ changes.add(obj);
+ }
+ changes.execute();
+ }
}
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AbstractWorkflowArtifact.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AbstractWorkflowArtifact.java
index e73826d436c..4aa8bd723b4 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AbstractWorkflowArtifact.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/AbstractWorkflowArtifact.java
@@ -31,9 +31,7 @@ import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition;
import org.eclipse.osee.ats.api.workdef.IStateToken;
import org.eclipse.osee.ats.api.workdef.IWorkDefinitionMatch;
import org.eclipse.osee.ats.api.workdef.RuleDefinitionOption;
-import org.eclipse.osee.ats.api.workdef.StateType;
import org.eclipse.osee.ats.api.workflow.IAtsWorkData;
-import org.eclipse.osee.ats.api.workflow.WorkStateProvider;
import org.eclipse.osee.ats.api.workflow.log.IAtsLog;
import org.eclipse.osee.ats.api.workflow.log.IAtsLogItem;
import org.eclipse.osee.ats.api.workflow.log.LogType;
@@ -49,12 +47,12 @@ import org.eclipse.osee.ats.core.client.review.ReviewManager;
import org.eclipse.osee.ats.core.client.task.AbstractTaskableArtifact;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
import org.eclipse.osee.ats.core.client.util.AtsUtilCore;
-import org.eclipse.osee.ats.core.client.workflow.log.ArtifactLog;
import org.eclipse.osee.ats.core.client.workflow.note.ArtifactNote;
import org.eclipse.osee.ats.core.client.workflow.note.AtsNote;
import org.eclipse.osee.ats.core.users.AtsCoreUsers;
import org.eclipse.osee.ats.core.util.AtsObjects;
import org.eclipse.osee.ats.core.util.PercentCompleteTotalUtil;
+import org.eclipse.osee.ats.core.workflow.state.StateManagerUtility;
import org.eclipse.osee.ats.core.workflow.transition.TransitionManager;
import org.eclipse.osee.framework.access.AccessControlManager;
import org.eclipse.osee.framework.core.data.IArtifactType;
@@ -63,7 +61,6 @@ import org.eclipse.osee.framework.core.enums.PermissionEnum;
import org.eclipse.osee.framework.core.model.Branch;
import org.eclipse.osee.framework.core.services.CmAccessControl;
import org.eclipse.osee.framework.core.services.HasCmAccessControl;
-import org.eclipse.osee.framework.core.util.Conditions;
import org.eclipse.osee.framework.core.util.IGroupExplorerProvider;
import org.eclipse.osee.framework.core.util.Result;
import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException;
@@ -76,7 +73,6 @@ import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.artifact.Attribute;
import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
import org.eclipse.osee.framework.skynet.core.relation.RelationManager;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
@@ -90,36 +86,24 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
protected AbstractWorkflowArtifact parentAwa;
protected TeamWorkFlowArtifact parentTeamArt;
protected ActionArtifact parentAction;
- private final IAtsStateManager stateMgr;
private IAtsLog atsLog;
private int atsLogTransactionNumber;
- private final AtsNote atsNote;
- private boolean inTransition = false;
+ private int stateMgrTransactionNumber;
+ private AtsNote atsNote;
+ private IAtsStateManager stateMgr;
private IAtsWorkData atsWorkData;
public AbstractWorkflowArtifact(String guid, Branch branch, IArtifactType artifactType) throws OseeCoreException {
super(guid, branch, artifactType);
- stateMgr = AtsCore.getStateFactory().getStateManager(this);
- atsNote = new AtsNote(new ArtifactNote(this));
}
- public void initializeNewStateMachine(List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy) throws OseeCoreException {
- IAtsWorkDefinition workDefinition = getWorkDefinition();
- Conditions.checkNotNull(workDefinition, "WorkDefinition");
- initializeNewStateMachine(workDefinition, assignees, createdDate, createdBy);
- }
-
- public void initializeNewStateMachine(IAtsWorkDefinition workDefinition, List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy) throws OseeCoreException {
- IAtsStateDefinition startState = workDefinition.getStartState();
- initializeNewStateMachine(startState, assignees, createdDate, createdBy);
- }
-
- private void initializeNewStateMachine(IStateToken state, List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy) throws OseeCoreException {
- getStateMgr().initializeStateMachine(state, assignees,
- (createdBy == null ? AtsClientService.get().getUserAdmin().getCurrentUser() : createdBy));
+ public void initializeNewStateMachine(List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException {
+ IAtsStateDefinition startState = getWorkDefinition().getStartState();
+ StateManagerUtility.initializeStateMachine(getStateMgr(), startState, assignees,
+ (createdBy == null ? AtsClientService.get().getUserAdmin().getCurrentUser() : createdBy), changes);
IAtsUser user = createdBy == null ? AtsClientService.get().getUserAdmin().getCurrentUser() : createdBy;
setCreatedBy(user, true, createdDate);
- TransitionManager.logStateStartedEvent(this, state, createdDate, user);
+ TransitionManager.logStateStartedEvent(this, startState, createdDate, user);
}
public boolean isTargetedVersionable() throws OseeCoreException {
@@ -191,6 +175,8 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
parentAction = null;
parentAwa = null;
parentTeamArt = null;
+ stateMgr = null;
+ atsLog = null;
}
public void atsDelete(Set<Artifact> deleteArts, Map<Artifact, Object> allRelated) throws OseeCoreException {
@@ -315,9 +301,8 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
for (Artifact artifact : artifacts) {
if (artifact instanceof AbstractWorkflowArtifact) {
AbstractWorkflowArtifact awa = (AbstractWorkflowArtifact) artifact;
- Result result = awa.getStateMgr().isDirtyResult();
- if (result.isTrue()) {
- return result;
+ if (awa.getStateMgr().isDirty()) {
+ return new Result(true, "StateMgr is dirty");
}
if (awa.getLog().isDirty()) {
return new Result(true, "Log is dirty");
@@ -351,28 +336,12 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
getSmaArtifactsOneLevel(this, artifacts);
for (Artifact artifact : artifacts) {
if (artifact instanceof AbstractWorkflowArtifact) {
- ((AbstractWorkflowArtifact) artifact).getStateMgr().writeToStore();
- }
- changes.add(artifact);
- }
- } catch (Exception ex) {
- OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, "Can't save artifact " + getAtsId(), ex);
- }
- }
-
- public void saveSMA(SkynetTransaction transaction) {
- try {
- Set<Artifact> artifacts = new HashSet<Artifact>();
- getSmaArtifactsOneLevel(this, artifacts);
- for (Artifact artifact : artifacts) {
- if (artifact instanceof AbstractWorkflowArtifact) {
AbstractWorkflowArtifact awa = (AbstractWorkflowArtifact) artifact;
- awa.getStateMgr().writeToStore();
+ changes.add(artifact);
if (awa.getLog().isDirty()) {
AtsCore.getLogFactory().writeToStore(awa);
}
}
- artifact.persist(transaction);
}
} catch (Exception ex) {
OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, "Can't save artifact " + getAtsId(), ex);
@@ -385,10 +354,8 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
getSmaArtifactsOneLevel(this, artifacts);
for (Artifact artifact : artifacts) {
artifact.reloadAttributesAndRelations();
- if (artifact instanceof AbstractWorkflowArtifact) {
- AbstractWorkflowArtifact awa = (AbstractWorkflowArtifact) artifact;
- awa.getStateMgr().reload();
- awa.atsLog = null;
+ if (artifact instanceof IAtsWorkItem) {
+ AtsCore.getStateFactory().load((IAtsWorkItem) artifact, getStateMgr());
}
}
} catch (Exception ex) {
@@ -439,13 +406,16 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
@Override
public IAtsLog getLog() {
if (atsLog == null || atsLogTransactionNumber != getTransactionNumber()) {
- atsLog = AtsCore.getLogFactory().getLogLoaded(new ArtifactLog(this));
+ atsLog = AtsCore.getLogFactory().getLogLoaded(this);
atsLogTransactionNumber = getTransactionNumber();
}
return atsLog;
}
public AtsNote getNotes() {
+ if (atsNote == null) {
+ atsNote = new AtsNote(new ArtifactNote(this));
+ }
return atsNote;
}
@@ -661,19 +631,19 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
return fromState;
}
- public boolean isInWork() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.CurrentStateType, "").equals(StateType.Working.name());
+ public boolean isInWork() {
+ return getStateDefinition().getStateType().isWorkingState();
}
- public boolean isCompleted() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.CurrentStateType, "").equals(StateType.Completed.name());
+ public boolean isCompleted() {
+ return getStateDefinition().getStateType().isCompletedState();
}
- public boolean isCancelled() throws OseeCoreException {
- return getSoleAttributeValue(AtsAttributeTypes.CurrentStateType, "").equals(StateType.Cancelled.name());
+ public boolean isCancelled() {
+ return getStateDefinition().getStateType().isCancelledState();
}
- public boolean isCompletedOrCancelled() throws OseeCoreException {
+ public boolean isCompletedOrCancelled() {
return isCompleted() || isCancelled();
}
@@ -688,7 +658,7 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
}
public boolean isAssigneeMe() throws OseeCoreException {
- return stateMgr.getAssignees().contains(AtsClientService.get().getUserAdmin().getCurrentUser());
+ return getStateMgr().getAssignees().contains(AtsClientService.get().getUserAdmin().getCurrentUser());
}
/*
@@ -704,23 +674,23 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
return transitionAssignees;
}
}
- return stateMgr.getAssignees();
+ return getStateMgr().getAssignees();
}
public String getTransitionAssigneesStr() throws OseeCoreException {
return AtsObjects.toString(";", getTransitionAssignees());
}
- public boolean isInTransition() {
- return inTransition;
- }
-
- public void setInTransition(boolean inTransition) {
- this.inTransition = inTransition;
- }
-
@Override
public IAtsStateManager getStateMgr() {
+ if (stateMgr == null || stateMgrTransactionNumber != getTransactionNumber()) {
+ try {
+ stateMgr = AtsCore.getStateFactory().getStateManager(this, isInDb());
+ stateMgrTransactionNumber = getTransactionNumber();
+ } catch (OseeCoreException ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ }
return stateMgr;
}
@@ -785,11 +755,6 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple
}
@Override
- public WorkStateProvider getStateData() {
- return stateMgr;
- }
-
- @Override
public IAtsWorkData getWorkData() {
if (atsWorkData == null) {
atsWorkData = new AtsWorkData(this);
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/transition/TransitionToOperation.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/transition/TransitionToOperation.java
index ee4e887ba06..6f36e1f96f5 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/transition/TransitionToOperation.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/workflow/transition/TransitionToOperation.java
@@ -47,21 +47,22 @@ public class TransitionToOperation extends AbstractOperation {
changes.add(awa);
}
}
- changes.execute();
+ if (!changes.isEmpty()) {
+ changes.execute();
+ }
- changes.reset(helper.getName());
TransitionManager transitionMgr = new TransitionManager(helper);
- results = transitionMgr.handleAll();
+ results = transitionMgr.handleAllAndPersist();
if (results.isCancelled()) {
return;
- } else if (results.isEmpty()) {
- changes.execute();
}
} catch (OseeCoreException ex) {
OseeLog.log(Activator.class, Level.SEVERE, ex);
- results.addResult(new TransitionResult(String.format(
- "Exception [%s] transitioning to [%s]. See error log for details.", ex.getLocalizedMessage(),
- helper.getToStateName())));
+ if (results != null) {
+ results.addResult(new TransitionResult(String.format(
+ "Exception [%s] transitioning to [%s]. See error log for details.", ex.getLocalizedMessage(),
+ helper.getToStateName())));
+ }
}
}

Back to the top