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    }