001    /**
002     * <copyright>
003     * </copyright>
004     *
005     * $Id$
006     */
007    package com.hammurapi.reasoning.spi.model.impl;
008    
009    import com.hammurapi.config.impl.NamedObjectDefinitionImpl;
010    
011    import com.hammurapi.reasoning.spi.model.ModelPackage;
012    import com.hammurapi.reasoning.spi.model.Rule;
013    import com.hammurapi.reasoning.spi.model.RuleSet;
014    
015    import java.util.Collection;
016    
017    import org.eclipse.emf.common.notify.NotificationChain;
018    
019    import org.eclipse.emf.common.util.EList;
020    
021    import org.eclipse.emf.ecore.EClass;
022    import org.eclipse.emf.ecore.InternalEObject;
023    
024    import org.eclipse.emf.ecore.util.EObjectContainmentEList;
025    import org.eclipse.emf.ecore.util.EObjectResolvingEList;
026    import org.eclipse.emf.ecore.util.InternalEList;
027    
028    /**
029     * <!-- begin-user-doc -->
030     * An implementation of the model object '<em><b>Rule Set</b></em>'.
031     * <!-- end-user-doc -->
032     * <p>
033     * The following features are implemented:
034     * <ul>
035     *   <li>{@link com.hammurapi.reasoning.spi.model.impl.RuleSetImpl#getRule <em>Rule</em>}</li>
036     *   <li>{@link com.hammurapi.reasoning.spi.model.impl.RuleSetImpl#getBase <em>Base</em>}</li>
037     * </ul>
038     * </p>
039     *
040     * @generated
041     */
042    public class RuleSetImpl extends NamedObjectDefinitionImpl implements RuleSet {
043            /**
044             * The cached value of the '{@link #getRule() <em>Rule</em>}' containment reference list.
045             * <!-- begin-user-doc -->
046             * <!-- end-user-doc -->
047             * @see #getRule()
048             * @generated
049             * @ordered
050             */
051            protected EList<Rule> rule;
052    
053            /**
054             * The cached value of the '{@link #getBase() <em>Base</em>}' reference list.
055             * <!-- begin-user-doc -->
056             * <!-- end-user-doc -->
057             * @see #getBase()
058             * @generated
059             * @ordered
060             */
061            protected EList<RuleSet> base;
062    
063            /**
064             * <!-- begin-user-doc -->
065             * <!-- end-user-doc -->
066             * @generated
067             */
068            protected RuleSetImpl() {
069                    super();
070            }
071    
072            /**
073             * <!-- begin-user-doc -->
074             * <!-- end-user-doc -->
075             * @generated
076             */
077            @Override
078            protected EClass eStaticClass() {
079                    return ModelPackage.Literals.RULE_SET;
080            }
081    
082            /**
083             * <!-- begin-user-doc -->
084             * <!-- end-user-doc -->
085             * @generated
086             */
087            public EList<Rule> getRule() {
088                    if (rule == null) {
089                            rule = new EObjectContainmentEList<Rule>(Rule.class, this, ModelPackage.RULE_SET__RULE);
090                    }
091                    return rule;
092            }
093    
094            /**
095             * <!-- begin-user-doc -->
096             * <!-- end-user-doc -->
097             * @generated
098             */
099            public EList<RuleSet> getBase() {
100                    if (base == null) {
101                            base = new EObjectResolvingEList<RuleSet>(RuleSet.class, this, ModelPackage.RULE_SET__BASE);
102                    }
103                    return base;
104            }
105    
106            /**
107             * <!-- begin-user-doc -->
108             * <!-- end-user-doc -->
109             * @generated
110             */
111            @Override
112            public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
113                    switch (featureID) {
114                            case ModelPackage.RULE_SET__RULE:
115                                    return ((InternalEList<?>)getRule()).basicRemove(otherEnd, msgs);
116                    }
117                    return super.eInverseRemove(otherEnd, featureID, msgs);
118            }
119    
120            /**
121             * <!-- begin-user-doc -->
122             * <!-- end-user-doc -->
123             * @generated
124             */
125            @Override
126            public Object eGet(int featureID, boolean resolve, boolean coreType) {
127                    switch (featureID) {
128                            case ModelPackage.RULE_SET__RULE:
129                                    return getRule();
130                            case ModelPackage.RULE_SET__BASE:
131                                    return getBase();
132                    }
133                    return super.eGet(featureID, resolve, coreType);
134            }
135    
136            /**
137             * <!-- begin-user-doc -->
138             * <!-- end-user-doc -->
139             * @generated
140             */
141            @SuppressWarnings("unchecked")
142            @Override
143            public void eSet(int featureID, Object newValue) {
144                    switch (featureID) {
145                            case ModelPackage.RULE_SET__RULE:
146                                    getRule().clear();
147                                    getRule().addAll((Collection<? extends Rule>)newValue);
148                                    return;
149                            case ModelPackage.RULE_SET__BASE:
150                                    getBase().clear();
151                                    getBase().addAll((Collection<? extends RuleSet>)newValue);
152                                    return;
153                    }
154                    super.eSet(featureID, newValue);
155            }
156    
157            /**
158             * <!-- begin-user-doc -->
159             * <!-- end-user-doc -->
160             * @generated
161             */
162            @Override
163            public void eUnset(int featureID) {
164                    switch (featureID) {
165                            case ModelPackage.RULE_SET__RULE:
166                                    getRule().clear();
167                                    return;
168                            case ModelPackage.RULE_SET__BASE:
169                                    getBase().clear();
170                                    return;
171                    }
172                    super.eUnset(featureID);
173            }
174    
175            /**
176             * <!-- begin-user-doc -->
177             * <!-- end-user-doc -->
178             * @generated
179             */
180            @Override
181            public boolean eIsSet(int featureID) {
182                    switch (featureID) {
183                            case ModelPackage.RULE_SET__RULE:
184                                    return rule != null && !rule.isEmpty();
185                            case ModelPackage.RULE_SET__BASE:
186                                    return base != null && !base.isEmpty();
187                    }
188                    return super.eIsSet(featureID);
189            }
190    
191    } //RuleSetImpl