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