Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2007-12-20 10:49:08 +0000
committerEike Stepper2007-12-20 10:49:08 +0000
commit084753263bd3a8545257561dac6cde43274fbe09 (patch)
treee8360703dc51699117af609b13a8c70237bfcc76 /plugins/org.eclipse.emf.cdo.edit/src
parent003040d1415fb4c7df9be2b474cbaa36fc8316cd (diff)
downloadcdo-084753263bd3a8545257561dac6cde43274fbe09.tar.gz
cdo-084753263bd3a8545257561dac6cde43274fbe09.tar.xz
cdo-084753263bd3a8545257561dac6cde43274fbe09.zip
[213420] Speed up handling of ManyReferences in DBStoreAccessor
https://bugs.eclipse.org/bugs/show_bug.cgi?id=213420
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.edit/src')
-rw-r--r--plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/edit/CDOItemProviderAdapter.java63
1 files changed, 63 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/edit/CDOItemProviderAdapter.java b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/edit/CDOItemProviderAdapter.java
new file mode 100644
index 0000000000..c2ed9c7855
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/edit/CDOItemProviderAdapter.java
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.edit;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOItemProviderAdapter extends ItemProviderAdapter
+{
+ public CDOItemProviderAdapter(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ @Override
+ @SuppressWarnings("deprecation")
+ public boolean hasChildren(Object object)
+ {
+ Collection<? extends EStructuralFeature> anyChildrenFeatures = getChildrenFeatures(object);
+ if (anyChildrenFeatures.isEmpty())
+ {
+ anyChildrenFeatures = getChildrenReferences(object);
+ }
+
+ EObject eObject = (EObject)object;
+ for (EStructuralFeature feature : anyChildrenFeatures)
+ {
+ if (feature.isMany())
+ {
+ List<?> children = (List<?>)eObject.eGet(feature);
+ if (!children.isEmpty())
+ {
+ return true;
+ }
+ }
+ else
+ {
+ if (eObject.eIsSet(feature))
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+}

Back to the top