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: SubsetEObjectContainmentWithInverseEList.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 SubsetEObjectContainmentWithInverseEList<E>
021 extends SubsetEObjectContainmentEList<E> {
022
023 private static final long serialVersionUID = 1L;
024
025 public static class Unsettable<E>
026 extends SubsetEObjectContainmentWithInverseEList<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[] supersetFeatureIDs,
037 int inverseFeatureID) {
038 super(dataClass, owner, featureID, supersetFeatureIDs,
039 inverseFeatureID);
040 }
041
042 public Resolving(Class<?> dataClass, InternalEObject owner,
043 int featureID, int supersetFeatureID, int inverseFeatureID) {
044 this(dataClass, owner, featureID, new int[]{supersetFeatureID},
045 inverseFeatureID);
046 }
047
048 @Override
049 protected boolean hasProxies() {
050 return true;
051 }
052
053 @SuppressWarnings("unchecked")
054 @Override
055 protected E resolve(int index, E object) {
056 return (E) resolve(index, (EObject) object);
057 }
058 }
059
060 protected boolean isSet;
061
062 public Unsettable(Class<?> dataClass, InternalEObject owner,
063 int featureID, int[] supersetFeatureIDs, int inverseFeatureID) {
064 super(dataClass, owner, featureID, supersetFeatureIDs,
065 inverseFeatureID);
066 }
067
068 public Unsettable(Class<?> dataClass, InternalEObject owner,
069 int featureID, int supersetFeatureID, int inverseFeatureID) {
070 this(dataClass, owner, featureID, new int[]{supersetFeatureID},
071 inverseFeatureID);
072 }
073
074 @Override
075 protected void didChange() {
076 isSet = true;
077 }
078
079 @Override
080 public boolean isSet() {
081 return isSet;
082 }
083
084 @Override
085 public void unset() {
086 super.unset();
087
088 if (isNotificationRequired()) {
089 boolean oldIsSet = isSet;
090 isSet = false;
091
092 owner.eNotify(createNotification(Notification.UNSET, oldIsSet,
093 false));
094 } else {
095 isSet = false;
096 }
097 }
098 }
099
100 public static class Resolving<E>
101 extends SubsetEObjectContainmentWithInverseEList<E> {
102
103 private static final long serialVersionUID = 1L;
104
105 public Resolving(Class<?> dataClass, InternalEObject owner,
106 int featureID, int[] supersetFeatureIDs, int inverseFeatureID) {
107 super(dataClass, owner, featureID, supersetFeatureIDs,
108 inverseFeatureID);
109 }
110
111 public Resolving(Class<?> dataClass, InternalEObject owner,
112 int featureID, int supersetFeatureID, int inverseFeatureID) {
113 this(dataClass, owner, featureID, new int[]{supersetFeatureID},
114 inverseFeatureID);
115 }
116
117 @Override
118 protected boolean hasProxies() {
119 return true;
120 }
121
122 @SuppressWarnings("unchecked")
123 @Override
124 protected E resolve(int index, E object) {
125 return (E) resolve(index, (EObject) object);
126 }
127 }
128
129 protected final int inverseFeatureID;
130
131 public SubsetEObjectContainmentWithInverseEList(Class<?> dataClass,
132 InternalEObject owner, int featureID, int[] supersetFeatureIDs,
133 int inverseFeatureID) {
134 super(dataClass, owner, featureID, supersetFeatureIDs);
135
136 this.inverseFeatureID = inverseFeatureID;
137 }
138
139 public SubsetEObjectContainmentWithInverseEList(Class<?> dataClass,
140 InternalEObject owner, int featureID, int supersetFeatureID,
141 int inverseFeatureID) {
142 this(dataClass, owner, featureID, new int[]{supersetFeatureID},
143 inverseFeatureID);
144 }
145
146 @Override
147 protected boolean hasNavigableInverse() {
148 return true;
149 }
150
151 @Override
152 public int getInverseFeatureID() {
153 return inverseFeatureID;
154 }
155
156 @Override
157 public Class<?> getInverseFeatureClass() {
158 return dataClass;
159 }
160
161 }