diff options
Diffstat (limited to 'cdo/bundles/uml/org.eclipse.uml2.uml.cdo/src/org/eclipse/uml2/uml/cdo/internal/util/SubsetSupersetEObjectWithInverseResolvingEList.java')
-rw-r--r-- | cdo/bundles/uml/org.eclipse.uml2.uml.cdo/src/org/eclipse/uml2/uml/cdo/internal/util/SubsetSupersetEObjectWithInverseResolvingEList.java | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.cdo/src/org/eclipse/uml2/uml/cdo/internal/util/SubsetSupersetEObjectWithInverseResolvingEList.java b/cdo/bundles/uml/org.eclipse.uml2.uml.cdo/src/org/eclipse/uml2/uml/cdo/internal/util/SubsetSupersetEObjectWithInverseResolvingEList.java new file mode 100644 index 00000000..cae4c13b --- /dev/null +++ b/cdo/bundles/uml/org.eclipse.uml2.uml.cdo/src/org/eclipse/uml2/uml/cdo/internal/util/SubsetSupersetEObjectWithInverseResolvingEList.java @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2006 IBM Corporation and others. + * 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: + * IBM - initial API and implementation + * Eike Stepper - bug 540814 + * + */ +package org.eclipse.uml2.uml.cdo.internal.util; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.InternalEObject; + +/** + * @since 1.2 + */ +public class SubsetSupersetEObjectWithInverseResolvingEList<E> + extends SubsetSupersetEObjectWithInverseEList<E> { + + private static final long serialVersionUID = 1L; + + public static class Unsettable<E> + extends SubsetSupersetEObjectWithInverseResolvingEList<E> { + + private static final long serialVersionUID = 1L; + + public static class ManyInverse<E> + extends Unsettable<E> { + + private static final long serialVersionUID = 1L; + + public ManyInverse(Class<?> dataClass, InternalEObject owner, + int featureID, int[] supersetFeatureIDs, + int[] subsetFeatureIDs, int inverseFeatureID) { + super(dataClass, owner, featureID, supersetFeatureIDs, + subsetFeatureIDs, inverseFeatureID); + } + + @Override + protected boolean hasManyInverse() { + return true; + } + } + + protected boolean isSet; + + public Unsettable(Class<?> dataClass, InternalEObject owner, + int featureID, int[] supersetFeatureIDs, + int[] subsetFeatureIDs, int inverseFeatureID) { + super(dataClass, owner, featureID, supersetFeatureIDs, + subsetFeatureIDs, inverseFeatureID); + } + + @Override + protected void didChange() { + isSet = true; + } + + @Override + public boolean isSet() { + return isSet; + } + + @Override + public void unset() { + super.unset(); + + if (isNotificationRequired()) { + boolean oldIsSet = isSet; + isSet = false; + + owner.eNotify(createNotification(Notification.UNSET, oldIsSet, + false)); + } else { + isSet = false; + } + } + } + + public static class ManyInverse<E> + extends SubsetSupersetEObjectWithInverseResolvingEList<E> { + + private static final long serialVersionUID = 1L; + + public ManyInverse(Class<?> dataClass, InternalEObject owner, + int featureID, int[] supersetFeatureIDs, + int[] subsetFeatureIDs, int inverseFeatureID) { + super(dataClass, owner, featureID, supersetFeatureIDs, + subsetFeatureIDs, inverseFeatureID); + } + + @Override + protected boolean hasManyInverse() { + return true; + } + } + + public SubsetSupersetEObjectWithInverseResolvingEList(Class<?> dataClass, + InternalEObject owner, int featureID, int[] supersetFeatureIDs, + int[] subsetFeatureIDs, int inverseFeatureID) { + super(dataClass, owner, featureID, supersetFeatureIDs, + subsetFeatureIDs, inverseFeatureID); + } + + @Override + protected boolean hasProxies() { + return true; + } + + // @SuppressWarnings("unchecked") + // @Override + // protected E resolve(int index, E object) { + // return (E) resolve(index, (EObject) object); + // } + +}
\ No newline at end of file |