diff options
author | David W. Miller | 2014-04-24 20:33:42 +0000 |
---|---|---|
committer | David Miller | 2014-04-25 20:57:06 +0000 |
commit | 0b56d63f6d44a9cf5969b2a7bd10e4ffd86825de (patch) | |
tree | b4c6d889e684dc0d0f99b873e0d834c25bcce1b8 /plugins/org.eclipse.osee.orcs.core | |
parent | 65a75e439b4f612ea2c0bfdc040856eff2ed15d5 (diff) | |
download | org.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')
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); } |