package org.eclipse.bpmn2.modeler.core.utils; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.EcoreFactory; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecore.impl.DynamicEObjectImpl; import org.eclipse.emf.ecore.util.ExtendedMetaData; import org.eclipse.emf.ecore.xml.type.AnyType; import org.eclipse.emf.ecore.xml.type.XMLTypePackage; public class StringWrapper extends DynamicEObjectImpl { private static EClass eClass = null; private static EPackage ePackage = null; public StringWrapper() { super(); eSetClass(eClass()); } public StringWrapper(String value) { this(); this.eSet(eClass.getEStructuralFeature("value"), value); //$NON-NLS-1$ } @Override public EClass eClass() { if (eClass==null) { ePackage = EcoreFactory.eINSTANCE.createEPackage(); eClass = EcoreFactory.eINSTANCE.createEClass(); ePackage.getEClassifiers().add(eClass); eClass.setName("StringWrapper"); //$NON-NLS-1$ eClass.getESuperTypes().add(XMLTypePackage.eINSTANCE.getAnyType()); ExtendedMetaData.INSTANCE.setName(eClass, ""); //$NON-NLS-1$ eClass.setInstanceClass(AnyType.class); EAttribute eAttribute = EcoreFactory.eINSTANCE.createEAttribute(); eAttribute.setName("value"); //$NON-NLS-1$ eAttribute.setChangeable(true); eAttribute.setUnsettable(true); eAttribute.setEType(EcorePackage.eINSTANCE.getEClassifier("EString")); //$NON-NLS-1$ eClass.getEStructuralFeatures().add(eAttribute); // ExtendedMetaData.INSTANCE.setNamespace(eAttribute, ePackage.getNsURI()); ExtendedMetaData.INSTANCE.setFeatureKind(eAttribute, ExtendedMetaData.ATTRIBUTE_FEATURE); ExtendedMetaData.INSTANCE.setName(eAttribute, "value"); //$NON-NLS-1$ } return eClass; } // prevent owners from trying to resolve this thing - it's just a string! public boolean eIsProxy() { return false; } @Override public boolean equals(Object that) { String thisValue = this.toString(); if (that==null) { return thisValue==null || thisValue.isEmpty(); } String thatValue = that.toString(); if (thisValue==null) { return thatValue==null; } return thisValue.equals(thatValue); } @Override public String toString() { EStructuralFeature feature = this.eClass().getEStructuralFeature("value"); //$NON-NLS-1$ if (feature!=null) { return (String)eGet(feature); } return null; } }