diff options
author | Eike Stepper | 2007-12-20 10:49:08 +0000 |
---|---|---|
committer | Eike Stepper | 2007-12-20 10:49:08 +0000 |
commit | 084753263bd3a8545257561dac6cde43274fbe09 (patch) | |
tree | e8360703dc51699117af609b13a8c70237bfcc76 /plugins/org.eclipse.emf.cdo.edit/src | |
parent | 003040d1415fb4c7df9be2b474cbaa36fc8316cd (diff) | |
download | cdo-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.java | 63 |
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; + } +} |