Go to the documentation of this file.00001
00007 package org.best_of_robotics.model.datatypes.impl;
00008
00009 import java.lang.String;
00010
00011 import org.best_of_robotics.model.datatypes.ComplexType;
00012 import org.best_of_robotics.model.datatypes.DataType;
00013 import org.best_of_robotics.model.datatypes.DatatypesPackage;
00014 import org.best_of_robotics.model.datatypes.TypesLibrary;
00015 import org.best_of_robotics.model.datatypes.SimpleType;
00016 import org.best_of_robotics.model.datatypes.VectorType;
00017
00018 import org.eclipse.emf.common.notify.Notification;
00019
00020 import org.eclipse.emf.common.notify.NotificationChain;
00021 import org.eclipse.emf.ecore.EClass;
00022 import org.eclipse.emf.ecore.InternalEObject;
00023
00024 import org.eclipse.emf.ecore.impl.ENotificationImpl;
00025 import org.eclipse.emf.ecore.impl.EObjectImpl;
00026 import org.eclipse.emf.ecore.util.EcoreUtil;
00027
00043 public class VectorTypeImpl extends EObjectImpl implements VectorType {
00052 protected static final String NAME_EDEFAULT = null;
00053
00062 protected String name = NAME_EDEFAULT;
00063
00072 protected DataType template;
00073
00079 protected VectorTypeImpl() {
00080 super();
00081 }
00082
00088 @Override
00089 protected EClass eStaticClass() {
00090 return DatatypesPackage.Literals.VECTOR_TYPE;
00091 }
00092
00098 public String getName() {
00099 return name;
00100 }
00101
00107 public void setName(String newName) {
00108 String oldName = name;
00109 name = newName;
00110 if (eNotificationRequired())
00111 eNotify(new ENotificationImpl(this, Notification.SET, DatatypesPackage.VECTOR_TYPE__NAME, oldName, name));
00112 }
00113
00119 public TypesLibrary getTypesLibrary() {
00120 if (eContainerFeatureID() != DatatypesPackage.VECTOR_TYPE__TYPES_LIBRARY) return null;
00121 return (TypesLibrary)eContainer();
00122 }
00123
00129 public NotificationChain basicSetTypesLibrary(TypesLibrary newTypesLibrary, NotificationChain msgs) {
00130 msgs = eBasicSetContainer((InternalEObject)newTypesLibrary, DatatypesPackage.VECTOR_TYPE__TYPES_LIBRARY, msgs);
00131 return msgs;
00132 }
00133
00139 public void setTypesLibrary(TypesLibrary newTypesLibrary) {
00140 if (newTypesLibrary != eInternalContainer() || (eContainerFeatureID() != DatatypesPackage.VECTOR_TYPE__TYPES_LIBRARY && newTypesLibrary != null)) {
00141 if (EcoreUtil.isAncestor(this, newTypesLibrary))
00142 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
00143 NotificationChain msgs = null;
00144 if (eInternalContainer() != null)
00145 msgs = eBasicRemoveFromContainer(msgs);
00146 if (newTypesLibrary != null)
00147 msgs = ((InternalEObject)newTypesLibrary).eInverseAdd(this, DatatypesPackage.TYPES_LIBRARY__TYPES, TypesLibrary.class, msgs);
00148 msgs = basicSetTypesLibrary(newTypesLibrary, msgs);
00149 if (msgs != null) msgs.dispatch();
00150 }
00151 else if (eNotificationRequired())
00152 eNotify(new ENotificationImpl(this, Notification.SET, DatatypesPackage.VECTOR_TYPE__TYPES_LIBRARY, newTypesLibrary, newTypesLibrary));
00153 }
00154
00160 public DataType getTemplate() {
00161 if (template != null && template.eIsProxy()) {
00162 InternalEObject oldTemplate = (InternalEObject)template;
00163 template = (DataType)eResolveProxy(oldTemplate);
00164 if (template != oldTemplate) {
00165 if (eNotificationRequired())
00166 eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatatypesPackage.VECTOR_TYPE__TEMPLATE, oldTemplate, template));
00167 }
00168 }
00169 return template;
00170 }
00171
00177 public DataType basicGetTemplate() {
00178 return template;
00179 }
00180
00186 public void setTemplate(DataType newTemplate) {
00187 DataType oldTemplate = template;
00188 template = newTemplate;
00189 if (eNotificationRequired())
00190 eNotify(new ENotificationImpl(this, Notification.SET, DatatypesPackage.VECTOR_TYPE__TEMPLATE, oldTemplate, template));
00191 }
00192
00198 public String getLabel(){
00199 String label = name;
00200 if(template instanceof ComplexType){
00201 label += "<" + ((ComplexType)template).getLabel() + ">";
00202 }else if (template instanceof SimpleType){
00203 label += "<" + template.getName() + ">";
00204 }
00205 return "std::" + label;
00206 }
00207
00213 @Override
00214 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
00215 switch (featureID) {
00216 case DatatypesPackage.VECTOR_TYPE__TYPES_LIBRARY:
00217 if (eInternalContainer() != null)
00218 msgs = eBasicRemoveFromContainer(msgs);
00219 return basicSetTypesLibrary((TypesLibrary)otherEnd, msgs);
00220 }
00221 return super.eInverseAdd(otherEnd, featureID, msgs);
00222 }
00223
00229 @Override
00230 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
00231 switch (featureID) {
00232 case DatatypesPackage.VECTOR_TYPE__TYPES_LIBRARY:
00233 return basicSetTypesLibrary(null, msgs);
00234 }
00235 return super.eInverseRemove(otherEnd, featureID, msgs);
00236 }
00237
00243 @Override
00244 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
00245 switch (eContainerFeatureID()) {
00246 case DatatypesPackage.VECTOR_TYPE__TYPES_LIBRARY:
00247 return eInternalContainer().eInverseRemove(this, DatatypesPackage.TYPES_LIBRARY__TYPES, TypesLibrary.class, msgs);
00248 }
00249 return super.eBasicRemoveFromContainerFeature(msgs);
00250 }
00251
00257 @Override
00258 public Object eGet(int featureID, boolean resolve, boolean coreType) {
00259 switch (featureID) {
00260 case DatatypesPackage.VECTOR_TYPE__NAME:
00261 return getName();
00262 case DatatypesPackage.VECTOR_TYPE__TYPES_LIBRARY:
00263 return getTypesLibrary();
00264 case DatatypesPackage.VECTOR_TYPE__TEMPLATE:
00265 if (resolve) return getTemplate();
00266 return basicGetTemplate();
00267 }
00268 return super.eGet(featureID, resolve, coreType);
00269 }
00270
00276 @Override
00277 public void eSet(int featureID, Object newValue) {
00278 switch (featureID) {
00279 case DatatypesPackage.VECTOR_TYPE__NAME:
00280 setName((String)newValue);
00281 return;
00282 case DatatypesPackage.VECTOR_TYPE__TYPES_LIBRARY:
00283 setTypesLibrary((TypesLibrary)newValue);
00284 return;
00285 case DatatypesPackage.VECTOR_TYPE__TEMPLATE:
00286 setTemplate((DataType)newValue);
00287 return;
00288 }
00289 super.eSet(featureID, newValue);
00290 }
00291
00297 @Override
00298 public void eUnset(int featureID) {
00299 switch (featureID) {
00300 case DatatypesPackage.VECTOR_TYPE__NAME:
00301 setName(NAME_EDEFAULT);
00302 return;
00303 case DatatypesPackage.VECTOR_TYPE__TYPES_LIBRARY:
00304 setTypesLibrary((TypesLibrary)null);
00305 return;
00306 case DatatypesPackage.VECTOR_TYPE__TEMPLATE:
00307 setTemplate((DataType)null);
00308 return;
00309 }
00310 super.eUnset(featureID);
00311 }
00312
00318 @Override
00319 public boolean eIsSet(int featureID) {
00320 switch (featureID) {
00321 case DatatypesPackage.VECTOR_TYPE__NAME:
00322 return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
00323 case DatatypesPackage.VECTOR_TYPE__TYPES_LIBRARY:
00324 return getTypesLibrary() != null;
00325 case DatatypesPackage.VECTOR_TYPE__TEMPLATE:
00326 return template != null;
00327 }
00328 return super.eIsSet(featureID);
00329 }
00330
00336 @Override
00337 public String toString() {
00338 if (eIsProxy()) return super.toString();
00339
00340 StringBuffer result = new StringBuffer(super.toString());
00341 result.append(" (name: ");
00342 result.append(name);
00343 result.append(')');
00344 return result.toString();
00345 }
00346
00347 }