001 /*
002 * Copyright (c) 2003, 2006 IBM Corporation and others.
003 * All rights reserved. This program and the accompanying materials
004 * are made available under the terms of the Eclipse Public License v1.0
005 * which accompanies this distribution, and is available at
006 * http://www.eclipse.org/legal/epl-v10.html
007 *
008 * Contributors:
009 * IBM - initial API and implementation
010 *
011 * $Id: SupersetEObjectContainmentWithInverseEList.java,v 1.4 2006/12/14 15:47:32 khussey Exp $
012 */
013 package org.eclipse.uml2.common.util;
014
015 import org.eclipse.emf.common.notify.Notification;
016 import org.eclipse.emf.ecore.EObject;
017 import org.eclipse.emf.ecore.InternalEObject;
018
019 @Deprecated
020 public class SupersetEObjectContainmentWithInverseEList<E>
021 extends SupersetEObjectContainmentEList<E> {
022
023 private static final long serialVersionUID = 1L;
024
025 public static class Unsettable<E>
026 extends SupersetEObjectContainmentWithInverseEList<E> {
027
028 private static final long serialVersionUID = 1L;
029
030 public static class Resolving<E>
031 extends Unsettable<E> {
032
033 private static final long serialVersionUID = 1L;
034
035 public Resolving(Class<?> dataClass, InternalEObject owner,
036 int featureID, int[] subsetFeatureIDs, int inverseFeatureID) {
037 super(dataClass, owner, featureID, subsetFeatureIDs,
038 inverseFeatureID);
039 }
040
041 public Resolving(Class<?> dataClass, InternalEObject owner,
042 int featureID, int subsetFeatureID, int inverseFeatureID) {
043 this(dataClass, owner, featureID, new int[]{subsetFeatureID},
044 inverseFeatureID);
045 }
046
047 @Override
048 protected boolean hasProxies() {
049 return true;
050 }
051
052 @SuppressWarnings("unchecked")
053 @Override
054 protected E resolve(int index, E object) {
055 return (E) resolve(index, (EObject) object);
056 }
057 }
058
059 protected boolean isSet;
060
061 public Unsettable(Class<?> dataClass, InternalEObject owner,
062 int featureID, int[] subsetFeatureIDs, int inverseFeatureID) {
063 super(dataClass, owner, featureID, subsetFeatureIDs,
064 inverseFeatureID);
065 }
066
067 public Unsettable(Class<?> dataClass, InternalEObject owner,
068 int featureID, int subsetFeatureID, int inverseFeatureID) {
069 this(dataClass, owner, featureID, new int[]{subsetFeatureID},
070 inverseFeatureID);
071 }
072
073 @Override
074 protected void didChange() {
075 isSet = true;
076 }
077
078 @Override
079 public boolean isSet() {
080 return isSet;
081 }
082
083 @Override
084 public void unset() {
085 super.unset();
086
087 if (isNotificationRequired()) {
088 boolean oldIsSet = isSet;
089 isSet = false;
090
091 owner.eNotify(createNotification(Notification.UNSET, oldIsSet,
092 false));
093 } else {
094 isSet = false;
095 }
096 }
097 }
098
099 public static class Resolving<E>
100 extends SupersetEObjectContainmentWithInverseEList<E> {
101
102 private static final long serialVersionUID = 1L;
103
104 public Resolving(Class<?> dataClass, InternalEObject owner,
105 int featureID, int[] subsetFeatureIDs, int inverseFeatureID) {
106 super(dataClass, owner, featureID, subsetFeatureIDs,
107 inverseFeatureID);
108 }
109
110 public Resolving(Class<?> dataClass, InternalEObject owner,
111 int featureID, int subsetFeatureID, int inverseFeatureID) {
112 this(dataClass, owner, featureID, new int[]{subsetFeatureID},
113 inverseFeatureID);
114 }
115
116 @Override
117 protected boolean hasProxies() {
118 return true;
119 }
120
121 @SuppressWarnings("unchecked")
122 @Override
123 protected E resolve(int index, E object) {
124 return (E) resolve(index, (EObject) object);
125 }
126 }
127
128 protected final int inverseFeatureID;
129
130 public SupersetEObjectContainmentWithInverseEList(Class<?> dataClass,
131 InternalEObject owner, int featureID, int[] subsetFeatureIDs,
132 int inverseFeatureID) {
133 super(dataClass, owner, featureID, subsetFeatureIDs);
134
135 this.inverseFeatureID = inverseFeatureID;
136 }
137
138 public SupersetEObjectContainmentWithInverseEList(Class<?> dataClass,
139 InternalEObject owner, int featureID, int subsetFeatureID,
140 int inverseFeatureID) {
141 this(dataClass, owner, featureID, new int[]{subsetFeatureID},
142 inverseFeatureID);
143 }
144
145 @Override
146 protected boolean hasNavigableInverse() {
147 return true;
148 }
149
150 @Override
151 public int getInverseFeatureID() {
152 return inverseFeatureID;
153 }
154
155 @Override
156 public Class<?> getInverseFeatureClass() {
157 return dataClass;
158 }
159
160 }