diff options
author | Eike Stepper | 2012-10-14 07:53:21 +0000 |
---|---|---|
committer | Eike Stepper | 2012-10-14 07:53:21 +0000 |
commit | 36955e0c72a1fc70a6dad030ce1be225e6cd951a (patch) | |
tree | acc1c28750619d656f277d140f7a98ccefe4df6c | |
parent | 05f2223c654036170948d73431ebfcd9ea84854b (diff) | |
download | cdo-36955e0c72a1fc70a6dad030ce1be225e6cd951a.tar.gz cdo-36955e0c72a1fc70a6dad030ce1be225e6cd951a.tar.xz cdo-36955e0c72a1fc70a6dad030ce1be225e6cd951a.zip |
[391503] [UI] Render a CDOCommitInfo graph into the history page
https://bugs.eclipse.org/bugs/show_bug.cgi?id=391503
7 files changed, 80 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfo.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfo.java index fdf8603d92..ccc3846cac 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfo.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfo.java @@ -42,4 +42,9 @@ public interface CDOCommitInfo extends CDOBranchPoint, CDOCommitData * @since 4.2 */ public boolean isInitialCommit(); + + /** + * @since 4.2 + */ + public boolean isCommitDataLoaded(); } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitHistoryImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitHistoryImpl.java index b66abbfd4d..61ac8297b2 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitHistoryImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitHistoryImpl.java @@ -275,6 +275,11 @@ public class CDOCommitHistoryImpl extends Container<CDOCommitInfo> implements CD public void handleCommitInfo(CDOCommitInfo commitInfo) { + if (filter(commitInfo)) + { + return; + } + long timeStamp = commitInfo.getTimeStamp(); synchronized (commitInfos) { @@ -315,6 +320,11 @@ public class CDOCommitHistoryImpl extends Container<CDOCommitInfo> implements CD fireElementAddedEvent(commitInfo); } + protected boolean filter(CDOCommitInfo commitInfo) + { + return branch != null && branch != commitInfo.getBranch(); + } + protected void setFull() { full = true; @@ -444,6 +454,11 @@ public class CDOCommitHistoryImpl extends Container<CDOCommitInfo> implements CD return false; } + public boolean isCommitDataLoaded() + { + return true; + } + public List<CDOPackageUnit> getNewPackageUnits() { return null; diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitInfoImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitInfoImpl.java index 7cd2979ebe..4c46a0be21 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitInfoImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitInfoImpl.java @@ -210,6 +210,11 @@ public class CDOCommitInfoImpl extends CDOBranchPointImpl implements CDOCommitIn "CommitInfo[{0}, {1}, {2}, {3}, {4}, {5}]", getPreviousTimeStamp(), getBranch(), timeStamp, getUserID(), getComment(), data); //$NON-NLS-1$ } + public synchronized boolean isCommitDataLoaded() + { + return commitData != null; + } + private synchronized void loadCommitDataIfNeeded() { if (commitData == null) diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/DelegatingCommitInfo.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/DelegatingCommitInfo.java index 1f79eaa574..922cc7c5d9 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/DelegatingCommitInfo.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/DelegatingCommitInfo.java @@ -74,6 +74,11 @@ public abstract class DelegatingCommitInfo implements CDOCommitInfo return getDelegate().isInitialCommit(); } + public boolean isCommitDataLoaded() + { + return getDelegate().isCommitDataLoaded(); + } + public List<CDOPackageUnit> getNewPackageUnits() { return getDelegate().getNewPackageUnits(); diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/FailureCommitInfo.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/FailureCommitInfo.java index b387a5520b..14db5461fb 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/FailureCommitInfo.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/FailureCommitInfo.java @@ -79,6 +79,11 @@ public class FailureCommitInfo implements CDOCommitInfo return false; } + public boolean isCommitDataLoaded() + { + return true; + } + public List<CDOPackageUnit> getNewPackageUnits() { return Collections.emptyList(); diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java index 1f99a5f8e2..90b353a1e2 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java @@ -1899,6 +1899,11 @@ public abstract class CDOSessionImpl extends CDOTransactionContainerImpl impleme return commitInfo.isInitialCommit(); } + public boolean isCommitDataLoaded() + { + return commitInfo.isCommitDataLoaded(); + } + public CDOChangeSetData copy() { return commitInfo.copy(); diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOObjectHistoryImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOObjectHistoryImpl.java index e0412d0fcc..b263ff415e 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOObjectHistoryImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOObjectHistoryImpl.java @@ -16,7 +16,10 @@ import org.eclipse.emf.cdo.common.branch.CDOBranchPoint; import org.eclipse.emf.cdo.common.branch.CDOBranchVersion; import org.eclipse.emf.cdo.common.commit.CDOCommitInfo; import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler; +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.revision.CDOIDAndVersion; import org.eclipse.emf.cdo.common.revision.CDORevision; +import org.eclipse.emf.cdo.common.revision.CDORevisionKey; import org.eclipse.emf.cdo.common.revision.CDORevisionManager; import org.eclipse.emf.cdo.internal.common.commit.CDOCommitHistoryImpl; @@ -50,6 +53,43 @@ public class CDOObjectHistoryImpl extends CDOCommitHistoryImpl implements CDOObj } @Override + protected boolean filter(CDOCommitInfo commitInfo) + { + if (commitInfo.isCommitDataLoaded()) + { + CDOID id = object.cdoID(); + + for (CDORevisionKey key : commitInfo.getChangedObjects()) + { + if (key.getID().equals(id)) + { + return false; + } + } + + for (CDOIDAndVersion key : commitInfo.getNewObjects()) + { + if (key.getID().equals(id)) + { + return false; + } + } + + for (CDOIDAndVersion key : commitInfo.getDetachedObjects()) + { + if (key.getID().equals(id)) + { + return false; + } + } + + return true; + } + + return super.filter(commitInfo); + } + + @Override protected void doLoadCommitInfos(CDOCommitInfoHandler handler) { int count = getLoadCount(); |