Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid W. Miller2014-04-24 20:33:42 +0000
committerDavid Miller2014-04-25 20:57:06 +0000
commit0b56d63f6d44a9cf5969b2a7bd10e4ffd86825de (patch)
treeb4c6d889e684dc0d0f99b873e0d834c25bcce1b8 /plugins/org.eclipse.osee.orcs.core
parent65a75e439b4f612ea2c0bfdc040856eff2ed15d5 (diff)
downloadorg.eclipse.osee-0b56d63f6d44a9cf5969b2a7bd10e4ffd86825de.tar.gz
org.eclipse.osee-0b56d63f6d44a9cf5969b2a7bd10e4ffd86825de.tar.xz
org.eclipse.osee-0b56d63f6d44a9cf5969b2a7bd10e4ffd86825de.zip
bug[ats_ATS40005]: Fix uniqueness constraint
Fix uniqueness constraint violation during server relation transaction Change-Id: I3b5b99591b14cdd21d048a91879c17033acfb709
Diffstat (limited to 'plugins/org.eclipse.osee.orcs.core')
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/graph/impl/GraphDataImpl.java37
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/ChangeSetBuilder.java16
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/TxDataManager.java9
3 files changed, 53 insertions, 9 deletions
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/graph/impl/GraphDataImpl.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/graph/impl/GraphDataImpl.java
index f38ecffb82f..2cf3dfd071a 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/graph/impl/GraphDataImpl.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/graph/impl/GraphDataImpl.java
@@ -125,4 +125,41 @@ public class GraphDataImpl implements GraphData {
nodesById.size(), adjacenciesById.size());
}
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ IOseeBranch branch = getBranch();
+ result = prime * result + ((branch == null) ? 0 : branch.hashCode());
+ result = prime * result + getTransaction();
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ GraphData other = (GraphData) obj;
+ IOseeBranch branch = getBranch();
+ IOseeBranch otherbranch = other.getBranch();
+ if (branch == null) {
+ if (otherbranch != null) {
+ return false;
+ }
+ } else if (!branch.equals(otherbranch)) {
+ return false;
+ }
+ if (getTransaction() != other.getTransaction()) {
+ return false;
+ }
+ return true;
+ }
+
}
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/ChangeSetBuilder.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/ChangeSetBuilder.java
index eeb2e23b2eb..395500467bd 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/ChangeSetBuilder.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/ChangeSetBuilder.java
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.eclipse.osee.orcs.core.internal.transaction;
-import java.util.List;
+import java.util.Set;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.orcs.core.ds.ArtifactData;
import org.eclipse.osee.orcs.core.ds.AttributeData;
@@ -23,7 +23,7 @@ import org.eclipse.osee.orcs.core.internal.artifact.ArtifactVisitor;
import org.eclipse.osee.orcs.core.internal.attribute.Attribute;
import org.eclipse.osee.orcs.core.internal.relation.Relation;
import org.eclipse.osee.orcs.core.internal.relation.RelationVisitor;
-import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
/**
* Collect all the dirty OrcsData's into a changeSet;
@@ -66,9 +66,9 @@ public class ChangeSetBuilder implements ArtifactVisitor, RelationVisitor, HasOr
private static final class OrcsChangeSetImpl implements OrcsChangeSet {
- private final List<ArtifactData> arts = Lists.newArrayList();
- private final List<AttributeData> attrs = Lists.newArrayList();
- private final List<RelationData> rels = Lists.newArrayList();
+ private final Set<ArtifactData> arts = Sets.newLinkedHashSet();
+ private final Set<AttributeData> attrs = Sets.newLinkedHashSet();
+ private final Set<RelationData> rels = Sets.newLinkedHashSet();
@Override
public void accept(OrcsVisitor visitor) throws OseeCoreException {
@@ -84,17 +84,17 @@ public class ChangeSetBuilder implements ArtifactVisitor, RelationVisitor, HasOr
}
@Override
- public List<ArtifactData> getArtifactData() {
+ public Iterable<ArtifactData> getArtifactData() {
return arts;
}
@Override
- public List<AttributeData> getAttributeData() {
+ public Iterable<AttributeData> getAttributeData() {
return attrs;
}
@Override
- public List<RelationData> getRelationData() {
+ public Iterable<RelationData> getRelationData() {
return rels;
}
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/TxDataManager.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/TxDataManager.java
index 7bface2c857..c760b5783fc 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/TxDataManager.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/transaction/TxDataManager.java
@@ -24,8 +24,8 @@ import org.eclipse.osee.framework.core.data.IRelationType;
import org.eclipse.osee.framework.core.enums.RelationSide;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.type.OseeStateException;
-import org.eclipse.osee.framework.jdk.core.util.Conditions;
import org.eclipse.osee.framework.jdk.core.type.ResultSet;
+import org.eclipse.osee.framework.jdk.core.util.Conditions;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.orcs.OrcsSession;
import org.eclipse.osee.orcs.core.ds.OrcsChangeSet;
@@ -34,8 +34,10 @@ import org.eclipse.osee.orcs.core.internal.artifact.Artifact;
import org.eclipse.osee.orcs.core.internal.artifact.ArtifactFactory;
import org.eclipse.osee.orcs.core.internal.graph.GraphData;
import org.eclipse.osee.orcs.core.internal.proxy.ExternalArtifactManager;
+import org.eclipse.osee.orcs.core.internal.relation.Relation;
import org.eclipse.osee.orcs.core.internal.relation.RelationManager;
import org.eclipse.osee.orcs.core.internal.relation.RelationNode;
+import org.eclipse.osee.orcs.core.internal.relation.impl.RelationNodeAdjacencies;
import org.eclipse.osee.orcs.core.internal.transaction.TxData.TxState;
import org.eclipse.osee.orcs.data.ArtifactId;
import org.eclipse.osee.orcs.data.ArtifactReadable;
@@ -75,8 +77,13 @@ public class TxDataManager {
}
public void txCommitSuccess(TxData txData) {
+ GraphData graph = txData.getGraph();
for (Artifact writeable : txData.getAllWriteables()) {
writeable.setNotDirty();
+ RelationNodeAdjacencies adjacencies = graph.getAdjacencies(writeable);
+ for (Relation relation : adjacencies.getDirties()) {
+ relation.clearDirty();
+ }
}
txData.setTxState(TxState.COMMITTED);
}

Back to the top