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