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