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: SupersetEObjectWithInverseResolvingEList.java,v 1.3 2006/12/14 15:47:33 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 SupersetEObjectWithInverseResolvingEList<E>
021                    extends SupersetEObjectWithInverseEList<E> {
022    
023            private static final long serialVersionUID = 1L;
024    
025            public static class Unsettable<E>
026                            extends SupersetEObjectWithInverseResolvingEList<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[] subsetFeatureIDs, int inverseFeatureID) {
037                                    super(dataClass, owner, featureID, subsetFeatureIDs,
038                                            inverseFeatureID);
039                            }
040    
041                            public ManyInverse(Class<?> dataClass, InternalEObject owner,
042                                            int featureID, int subsetFeatureID, int inverseFeatureID) {
043                                    this(dataClass, owner, featureID, new int[]{subsetFeatureID},
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[] subsetFeatureIDs, int inverseFeatureID) {
057                            super(dataClass, owner, featureID, subsetFeatureIDs,
058                                    inverseFeatureID);
059                    }
060    
061                    public Unsettable(Class<?> dataClass, InternalEObject owner,
062                                    int featureID, int subsetFeatureID, int inverseFeatureID) {
063                            this(dataClass, owner, featureID, new int[]{subsetFeatureID},
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 SupersetEObjectWithInverseResolvingEList<E> {
095    
096                    private static final long serialVersionUID = 1L;
097    
098                    public ManyInverse(Class<?> dataClass, InternalEObject owner,
099                                    int featureID, int[] subsetFeatureIDs, int inverseFeatureID) {
100                            super(dataClass, owner, featureID, subsetFeatureIDs,
101                                    inverseFeatureID);
102                    }
103    
104                    public ManyInverse(Class<?> dataClass, InternalEObject owner,
105                                    int featureID, int subsetFeatureID, int inverseFeatureID) {
106                            this(dataClass, owner, featureID, new int[]{subsetFeatureID},
107                                    inverseFeatureID);
108                    }
109    
110                    @Override
111                    protected boolean hasManyInverse() {
112                            return true;
113                    }
114            }
115    
116            public SupersetEObjectWithInverseResolvingEList(Class<?> dataClass,
117                            InternalEObject owner, int featureID, int[] subsetFeatureIDs,
118                            int inverseFeatureID) {
119                    super(dataClass, owner, featureID, subsetFeatureIDs, inverseFeatureID);
120            }
121    
122            public SupersetEObjectWithInverseResolvingEList(Class<?> dataClass,
123                            InternalEObject owner, int featureID, int subsetFeatureID,
124                            int inverseFeatureID) {
125                    this(dataClass, owner, featureID, new int[]{subsetFeatureID},
126                            inverseFeatureID);
127            }
128    
129            @Override
130            protected boolean hasProxies() {
131                    return true;
132            }
133    
134            @SuppressWarnings("unchecked")
135            @Override
136            protected E resolve(int index, E object) {
137                    return (E) resolve(index, (EObject) object);
138            }
139    
140    }