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    }