blob: 8e604b988d25ae592c37fcfc5b62d7d7d38b6a57 [file] [log] [blame]
nitindd6e591d2005-03-14 22:21:57 +00001/*******************************************************************************
nitinde3908662009-01-26 22:18:30 +00002 * Copyright (c) 2001, 2009 IBM Corporation and others.
nitindd6e591d2005-03-14 22:21:57 +00003 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
amywuecebb042007-04-10 20:07:35 +00007 *
nitindd6e591d2005-03-14 22:21:57 +00008 * Contributors:
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11
12package org.eclipse.wst.dtd.core.internal.emf.impl;
13
14import java.util.Collection;
15
16import org.eclipse.emf.common.notify.Notification;
17import org.eclipse.emf.common.notify.NotificationChain;
18import org.eclipse.emf.common.util.EList;
19import org.eclipse.emf.ecore.EClass;
20import org.eclipse.emf.ecore.EPackage;
21import org.eclipse.emf.ecore.EStructuralFeature;
22import org.eclipse.emf.ecore.EcorePackage;
23import org.eclipse.emf.ecore.InternalEObject;
24import org.eclipse.emf.ecore.impl.EEnumImpl;
25import org.eclipse.emf.ecore.impl.ENotificationImpl;
26import org.eclipse.emf.ecore.util.EcoreUtil;
27import org.eclipse.emf.ecore.util.InternalEList;
david_williams38046012005-04-08 19:04:29 +000028import org.eclipse.wst.dtd.core.internal.DTDCoreMessages;
nitindd6e591d2005-03-14 22:21:57 +000029import org.eclipse.wst.dtd.core.internal.emf.DTDEnumGroupKind;
30import org.eclipse.wst.dtd.core.internal.emf.DTDEnumerationType;
31import org.eclipse.wst.dtd.core.internal.emf.DTDFile;
32import org.eclipse.wst.dtd.core.internal.emf.DTDObject;
33import org.eclipse.wst.dtd.core.internal.emf.DTDPackage;
34
35
36/**
37 * @generated
38 */
39public class DTDEnumerationTypeImpl extends EEnumImpl implements DTDEnumerationType {
40 /**
41 * The default value of the '{@link #getKind() <em>Kind</em>}'
42 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
43 *
44 * @see #getKind()
45 * @generated
46 * @ordered
47 */
48 protected static final DTDEnumGroupKind KIND_EDEFAULT = DTDEnumGroupKind.NAME_TOKEN_GROUP_LITERAL;
49
david_williams38046012005-04-08 19:04:29 +000050 public final static String enumerationTypeDescriptions[] = {DTDCoreMessages._UI_ENUM_NAME_TOKENS_DESC, DTDCoreMessages._UI_ENUM_NOTATION_DESC}; //$NON-NLS-1$ //$NON-NLS-2$
nitindd6e591d2005-03-14 22:21:57 +000051
52 public final static int enumerationTypeKinds[] = {DTDEnumGroupKind.NAME_TOKEN_GROUP, DTDEnumGroupKind.NOTATION_GROUP};
53
54 /**
55 * @generated This field/method will be replaced during code generation.
56 */
57 /**
58 * @generated This field/method will be replaced during code generation.
59 */
60 protected DTDEnumGroupKind kind = KIND_EDEFAULT;
61
62 public DTDEnumerationTypeImpl() {
63 super();
64 }
65
66 /**
67 * <!-- begin-user-doc --> <!-- end-user-doc -->
68 *
69 * @generated
70 */
71 protected EClass eStaticClass() {
72 return DTDPackage.eINSTANCE.getDTDEnumerationType();
73 }
74
75 public EList getEnumLiterals() {
76 return getELiterals();
77 }
78
79 public String getEnumerationTypeDescription() {
80 return getEnumerationTypeDescription(getKind().getValue());
81 }
82
83 public static String getEnumerationTypeDescription(int kind) {
84 // it can only be 1 or 2, but maybe later...
85 if (kind >= 1 && kind <= 2) {
86 // we subtract 1 since the kind is 1 - based not zero based
87 return enumerationTypeDescriptions[kind - 1];
88 }
89 return null;
90 }
91
92 public String getPathname() {
93 // TBD
david_williams38046012005-04-08 19:04:29 +000094 return ""; //$NON-NLS-1$
nitindd6e591d2005-03-14 22:21:57 +000095 }
96
97 public DTDObject findObject(String relativePath) {
98 return null;
99 }
100
101 /**
102 * @generated This field/method will be replaced during code generation
103 */
104 public DTDEnumGroupKind getKind() {
105 return kind;
106 }
107
108 /**
109 * <!-- begin-user-doc --> <!-- end-user-doc -->
110 *
111 * @generated
112 */
113 public void setKind(DTDEnumGroupKind newKind) {
114 DTDEnumGroupKind oldKind = kind;
115 kind = newKind == null ? KIND_EDEFAULT : newKind;
116 if (eNotificationRequired())
117 eNotify(new ENotificationImpl(this, Notification.SET, DTDPackage.DTD_ENUMERATION_TYPE__KIND, oldKind, kind));
118 }
119
120 /**
121 * @generated This field/method will be replaced during code generation
122 */
123 public DTDFile getDTDFile() {
nitinde3908662009-01-26 22:18:30 +0000124 if (eContainerFeatureID() != DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE)
nitindd6e591d2005-03-14 22:21:57 +0000125 return null;
126 return (DTDFile) eContainer;
127 }
128
129 /**
130 * @generated This field/method will be replaced during code generation.
131 */
132 public void setDTDFile(DTDFile newDTDFile) {
nitinde3908662009-01-26 22:18:30 +0000133 if (newDTDFile != eContainer || (eContainerFeatureID() != DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE && newDTDFile != null)) {
nitindd6e591d2005-03-14 22:21:57 +0000134 if (EcoreUtil.isAncestor(this, newDTDFile))
david_williams38046012005-04-08 19:04:29 +0000135 throw new IllegalArgumentException("Recursive containment not allowed for " + toString() + "."); //$NON-NLS-1$ //$NON-NLS-2$
nitindd6e591d2005-03-14 22:21:57 +0000136 NotificationChain msgs = null;
137 if (eContainer != null)
138 msgs = eBasicRemoveFromContainer(msgs);
139 if (newDTDFile != null)
140 msgs = ((InternalEObject) newDTDFile).eInverseAdd(this, DTDPackage.DTD_FILE__DTD_ENUMERATION_TYPE, DTDFile.class, msgs);
141 msgs = eBasicSetContainer((InternalEObject) newDTDFile, DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE, msgs);
142 if (msgs != null)
143 msgs.dispatch();
144 }
145 else if (eNotificationRequired())
146 eNotify(new ENotificationImpl(this, Notification.SET, DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE, newDTDFile, newDTDFile));
147 }
148
149 /**
150 * <!-- begin-user-doc --> <!-- end-user-doc -->
151 *
152 * @generated
153 */
154 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs) {
155 if (featureID >= 0) {
156 switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
157 case DTDPackage.DTD_ENUMERATION_TYPE__EANNOTATIONS :
158 return ((InternalEList) getEAnnotations()).basicAdd(otherEnd, msgs);
159 case DTDPackage.DTD_ENUMERATION_TYPE__EPACKAGE :
160 if (eContainer != null)
161 msgs = eBasicRemoveFromContainer(msgs);
162 return eBasicSetContainer(otherEnd, DTDPackage.DTD_ENUMERATION_TYPE__EPACKAGE, msgs);
163 case DTDPackage.DTD_ENUMERATION_TYPE__ELITERALS :
164 return ((InternalEList) getELiterals()).basicAdd(otherEnd, msgs);
165 case DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE :
166 if (eContainer != null)
167 msgs = eBasicRemoveFromContainer(msgs);
168 return eBasicSetContainer(otherEnd, DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE, msgs);
169 default :
170 return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
171 }
172 }
173 if (eContainer != null)
174 msgs = eBasicRemoveFromContainer(msgs);
175 return eBasicSetContainer(otherEnd, featureID, msgs);
176 }
177
178 /**
179 * <!-- begin-user-doc --> <!-- end-user-doc -->
180 *
181 * @generated
182 */
183 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs) {
184 if (featureID >= 0) {
185 switch (baseClass == null ? featureID : eDerivedStructuralFeatureID(featureID, baseClass)) {
186 case DTDPackage.DTD_ENUMERATION_TYPE__EANNOTATIONS :
187 return ((InternalEList) getEAnnotations()).basicRemove(otherEnd, msgs);
188 case DTDPackage.DTD_ENUMERATION_TYPE__EPACKAGE :
189 return eBasicSetContainer(null, DTDPackage.DTD_ENUMERATION_TYPE__EPACKAGE, msgs);
190 case DTDPackage.DTD_ENUMERATION_TYPE__ELITERALS :
191 return ((InternalEList) getELiterals()).basicRemove(otherEnd, msgs);
192 case DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE :
193 return eBasicSetContainer(null, DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE, msgs);
194 default :
195 return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
196 }
197 }
198 return eBasicSetContainer(null, featureID, msgs);
199 }
200
201 /**
202 * <!-- begin-user-doc --> <!-- end-user-doc -->
203 *
204 * @generated
205 */
206 public NotificationChain eBasicRemoveFromContainer(NotificationChain msgs) {
nitinde3908662009-01-26 22:18:30 +0000207 if (eContainerFeatureID() >= 0) {
208 switch (eContainerFeatureID()) {
nitindd6e591d2005-03-14 22:21:57 +0000209 case DTDPackage.DTD_ENUMERATION_TYPE__EPACKAGE :
210 return eContainer.eInverseRemove(this, EcorePackage.EPACKAGE__ECLASSIFIERS, EPackage.class, msgs);
211 case DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE :
212 return eContainer.eInverseRemove(this, DTDPackage.DTD_FILE__DTD_ENUMERATION_TYPE, DTDFile.class, msgs);
213 default :
214 return eDynamicBasicRemoveFromContainer(msgs);
215 }
216 }
nitinde3908662009-01-26 22:18:30 +0000217 return eContainer.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - eContainerFeatureID(), null, msgs);
nitindd6e591d2005-03-14 22:21:57 +0000218 }
219
220 /**
221 * <!-- begin-user-doc --> <!-- end-user-doc -->
222 *
223 * @generated
224 */
225 public Object eGet(EStructuralFeature eFeature, boolean resolve) {
226 switch (eDerivedStructuralFeatureID(eFeature.getFeatureID(), eFeature.getContainerClass())) {
227 case DTDPackage.DTD_ENUMERATION_TYPE__EANNOTATIONS :
228 return getEAnnotations();
229 case DTDPackage.DTD_ENUMERATION_TYPE__NAME :
230 return getName();
231 case DTDPackage.DTD_ENUMERATION_TYPE__INSTANCE_CLASS_NAME :
232 return getInstanceClassName();
233 case DTDPackage.DTD_ENUMERATION_TYPE__INSTANCE_CLASS :
234 return getInstanceClass();
235 case DTDPackage.DTD_ENUMERATION_TYPE__DEFAULT_VALUE :
236 return getDefaultValue();
237 case DTDPackage.DTD_ENUMERATION_TYPE__EPACKAGE :
238 return getEPackage();
239 case DTDPackage.DTD_ENUMERATION_TYPE__SERIALIZABLE :
240 return isSerializable() ? Boolean.TRUE : Boolean.FALSE;
241 case DTDPackage.DTD_ENUMERATION_TYPE__ELITERALS :
242 return getELiterals();
243 case DTDPackage.DTD_ENUMERATION_TYPE__KIND :
244 return getKind();
245 case DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE :
246 return getDTDFile();
247 }
248 return eDynamicGet(eFeature, resolve);
249 }
250
251 /**
252 * @generated This field/method will be replaced during code generation.
253 */
254 public boolean eIsSet(EStructuralFeature eFeature) {
255 switch (eDerivedStructuralFeatureID(eFeature.getFeatureID(), eFeature.getContainerClass())) {
256 case DTDPackage.DTD_ENUMERATION_TYPE__EANNOTATIONS :
257 return eAnnotations != null && !getEAnnotations().isEmpty();
258 case DTDPackage.DTD_ENUMERATION_TYPE__NAME :
259 return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
260 case DTDPackage.DTD_ENUMERATION_TYPE__INSTANCE_CLASS_NAME :
261 return INSTANCE_CLASS_NAME_EDEFAULT == null ? instanceClassName != null : !INSTANCE_CLASS_NAME_EDEFAULT.equals(instanceClassName);
262 case DTDPackage.DTD_ENUMERATION_TYPE__INSTANCE_CLASS :
263 return INSTANCE_CLASS_EDEFAULT == null ? instanceClass != null : !INSTANCE_CLASS_EDEFAULT.equals(instanceClass);
264 case DTDPackage.DTD_ENUMERATION_TYPE__DEFAULT_VALUE :
265 return getDefaultValue() != null;
266 case DTDPackage.DTD_ENUMERATION_TYPE__EPACKAGE :
267 return getEPackage() != null;
268 case DTDPackage.DTD_ENUMERATION_TYPE__SERIALIZABLE :
cbridghaa55c66c2005-04-17 15:28:01 +0000269 return ((eFlags & SERIALIZABLE_EFLAG) != 0) != SERIALIZABLE_EDEFAULT;
nitindd6e591d2005-03-14 22:21:57 +0000270 case DTDPackage.DTD_ENUMERATION_TYPE__ELITERALS :
271 return eLiterals != null && !getELiterals().isEmpty();
272 case DTDPackage.DTD_ENUMERATION_TYPE__KIND :
273 return kind != KIND_EDEFAULT;
274 case DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE :
275 return getDTDFile() != null;
276 }
277 return eDynamicIsSet(eFeature);
278 }
279
280 /**
281 * @generated This field/method will be replaced during code generation.
282 */
283 public void eSet(EStructuralFeature eFeature, Object newValue) {
284 switch (eDerivedStructuralFeatureID(eFeature.getFeatureID(), eFeature.getContainerClass())) {
285 case DTDPackage.DTD_ENUMERATION_TYPE__EANNOTATIONS :
286 getEAnnotations().clear();
287 getEAnnotations().addAll((Collection) newValue);
288 return;
289 case DTDPackage.DTD_ENUMERATION_TYPE__NAME :
290 setName((String) newValue);
291 return;
292 case DTDPackage.DTD_ENUMERATION_TYPE__INSTANCE_CLASS_NAME :
293 setInstanceClassName((String) newValue);
294 return;
295 case DTDPackage.DTD_ENUMERATION_TYPE__INSTANCE_CLASS :
296 setInstanceClass((Class) newValue);
297 return;
298 case DTDPackage.DTD_ENUMERATION_TYPE__SERIALIZABLE :
299 setSerializable(((Boolean) newValue).booleanValue());
300 return;
301 case DTDPackage.DTD_ENUMERATION_TYPE__ELITERALS :
302 getELiterals().clear();
303 getELiterals().addAll((Collection) newValue);
304 return;
305 case DTDPackage.DTD_ENUMERATION_TYPE__KIND :
306 setKind((DTDEnumGroupKind) newValue);
307 return;
308 case DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE :
309 setDTDFile((DTDFile) newValue);
310 return;
311 }
312 eDynamicSet(eFeature, newValue);
313 }
314
315 /**
316 * @generated This field/method will be replaced during code generation.
317 */
318 public void eUnset(EStructuralFeature eFeature) {
319 switch (eDerivedStructuralFeatureID(eFeature.getFeatureID(), eFeature.getContainerClass())) {
320 case DTDPackage.DTD_ENUMERATION_TYPE__EANNOTATIONS :
321 getEAnnotations().clear();
322 return;
323 case DTDPackage.DTD_ENUMERATION_TYPE__NAME :
324 setName(NAME_EDEFAULT);
325 return;
326 case DTDPackage.DTD_ENUMERATION_TYPE__INSTANCE_CLASS_NAME :
327 setInstanceClassName(INSTANCE_CLASS_NAME_EDEFAULT);
328 return;
329 case DTDPackage.DTD_ENUMERATION_TYPE__INSTANCE_CLASS :
330 setInstanceClass(INSTANCE_CLASS_EDEFAULT);
331 return;
332 case DTDPackage.DTD_ENUMERATION_TYPE__SERIALIZABLE :
333 setSerializable(SERIALIZABLE_EDEFAULT);
334 return;
335 case DTDPackage.DTD_ENUMERATION_TYPE__ELITERALS :
336 getELiterals().clear();
337 return;
338 case DTDPackage.DTD_ENUMERATION_TYPE__KIND :
339 setKind(KIND_EDEFAULT);
340 return;
341 case DTDPackage.DTD_ENUMERATION_TYPE__DTD_FILE :
342 setDTDFile((DTDFile) null);
343 return;
344 }
345 eDynamicUnset(eFeature);
346 }
347
348 /**
349 * @generated This field/method will be replaced during code generation.
350 */
351 public String toString() {
352 if (eIsProxy())
353 return super.toString();
354
355 StringBuffer result = new StringBuffer(super.toString());
david_williams38046012005-04-08 19:04:29 +0000356 result.append(" (kind: "); //$NON-NLS-1$
nitindd6e591d2005-03-14 22:21:57 +0000357 result.append(kind);
358 result.append(')');
359 return result.toString();
360 }
361
362}