diff --git a/de.hftstuttgart.cityunits.model/META-INF/MANIFEST.MF b/de.hftstuttgart.cityunits.model/META-INF/MANIFEST.MF index bedbe0223bffe0ab67eae804432f8e464f40fb69..824f68a1385553f8ddce068ee9593e04fed22f4d 100644 --- a/de.hftstuttgart.cityunits.model/META-INF/MANIFEST.MF +++ b/de.hftstuttgart.cityunits.model/META-INF/MANIFEST.MF @@ -19,4 +19,5 @@ Export-Package: de.hftstuttgart.cityunits.model; tech.units.indriya", de.hftstuttgart.cityunits.model.quantities; uses:="org.eclipse.emf.ecore", - de.hftstuttgart.cityunits.model.quantities.impl + de.hftstuttgart.cityunits.model.quantities.impl, + de.hftstuttgart.cityunits.model.quantities.util diff --git a/de.hftstuttgart.cityunits.model/model/Quantities.genmodel b/de.hftstuttgart.cityunits.model/model/Quantities.genmodel index d66e4a154e636b2dac792b7362bc97df0450acb0..1371397775f31e48bb469e6b5bf1276695ab0713 100644 --- a/de.hftstuttgart.cityunits.model/model/Quantities.genmodel +++ b/de.hftstuttgart.cityunits.model/model/Quantities.genmodel @@ -11,5 +11,6 @@ convert="return it == null ? null : it.toString();"/> <genDataTypes ecoreDataType="Quantities.ecore#//QuantityLong" create="return de.hftstuttgart.cityunits.model.NullableQuantity.create(it);" convert="return it == null ? null : it.toString();"/> + <genDataTypes ecoreDataType="Quantities.ecore#//Fraction"/> </genPackages> </genmodel:GenModel> diff --git a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/QuantitiesPackage.java b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/QuantitiesPackage.java index 054ca1ffc509edfd1ca1899b5634f91e17674ee5..04ece655807e73cac353fba3da026b16f69f70c7 100644 --- a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/QuantitiesPackage.java +++ b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/QuantitiesPackage.java @@ -115,7 +115,7 @@ public interface QuantitiesPackage extends EPackage { * @return the meta object for data type '<em>Fraction</em>'. * @see java.lang.Double * @model instanceClass="java.lang.Double" - * annotation="https:///org/eclipse/emf/ecore/util/ExtendedMetaData minInclusive='0.0' maxInclusive='1.0'" + * extendedMetaData="minInclusive='0.0' maxInclusive='1.0'" * @generated */ EDataType getFraction(); diff --git a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/impl/QuantitiesPackageImpl.java b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/impl/QuantitiesPackageImpl.java index fe0fe48c4e4266f1ac5547a5991eede4398e9de7..a030ec985def3f8ebfa0a68b48ad1ff421d80c55 100644 --- a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/impl/QuantitiesPackageImpl.java +++ b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/impl/QuantitiesPackageImpl.java @@ -6,9 +6,11 @@ import de.hftstuttgart.cityunits.model.NullableQuantity; import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory; import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage; +import de.hftstuttgart.cityunits.model.quantities.util.QuantitiesValidator; import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EValidator; import org.eclipse.emf.ecore.impl.EPackageImpl; /** @@ -92,6 +94,16 @@ public class QuantitiesPackageImpl extends EPackageImpl implements QuantitiesPac // Initialize created meta-data theQuantitiesPackage.initializePackageContents(); + // Register package validator + EValidator.Registry.INSTANCE.put + (theQuantitiesPackage, + new EValidator.Descriptor() { + @Override + public EValidator getEValidator() { + return QuantitiesValidator.INSTANCE; + } + }); + // Mark meta-data to indicate it can't be changed theQuantitiesPackage.freeze(); @@ -196,18 +208,18 @@ public class QuantitiesPackageImpl extends EPackageImpl implements QuantitiesPac createResource(eNS_URI); // Create annotations - // https:///org/eclipse/emf/ecore/util/ExtendedMetaData + // http:///org/eclipse/emf/ecore/util/ExtendedMetaData createExtendedMetaDataAnnotations(); } /** - * Initializes the annotations for <b>https:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>. + * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected void createExtendedMetaDataAnnotations() { - String source = "https:///org/eclipse/emf/ecore/util/ExtendedMetaData"; + String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData"; addAnnotation (fractionEDataType, source, diff --git a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/util/QuantitiesValidator.java b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/util/QuantitiesValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..a79b6bf8ea17790153e8592b1eb4cc3bd05b2cb4 --- /dev/null +++ b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/util/QuantitiesValidator.java @@ -0,0 +1,186 @@ +/** + */ +package de.hftstuttgart.cityunits.model.quantities.util; + +import de.hftstuttgart.cityunits.model.NullableQuantity; + +import de.hftstuttgart.cityunits.model.quantities.*; + +import java.util.Map; + +import org.eclipse.emf.common.util.DiagnosticChain; +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.EObjectValidator; + +/** + * <!-- begin-user-doc --> + * The <b>Validator</b> for the model. + * <!-- end-user-doc --> + * @see de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage + * @generated + */ +public class QuantitiesValidator extends EObjectValidator { + /** + * The cached model package + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final QuantitiesValidator INSTANCE = new QuantitiesValidator(); + + /** + * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.common.util.Diagnostic#getSource() + * @see org.eclipse.emf.common.util.Diagnostic#getCode() + * @generated + */ + public static final String DIAGNOSTIC_SOURCE = "de.hftstuttgart.cityunits.model.quantities"; + + /** + * A constant with a fixed name that can be used as the base value for additional hand written constants. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 0; + + /** + * A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT; + + /** + * Creates an instance of the switch. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public QuantitiesValidator() { + super(); + } + + /** + * Returns the package of this validator switch. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EPackage getEPackage() { + return QuantitiesPackage.eINSTANCE; + } + + /** + * Calls <code>validateXXX</code> for the corresponding classifier of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics, Map<Object, Object> context) { + switch (classifierID) { + case QuantitiesPackage.QUANTITY_DOUBLE: + return validateQuantityDouble((NullableQuantity)value, diagnostics, context); + case QuantitiesPackage.QUANTITY_LONG: + return validateQuantityLong((NullableQuantity)value, diagnostics, context); + case QuantitiesPackage.FRACTION: + return validateFraction((Double)value, diagnostics, context); + default: + return true; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateQuantityDouble(NullableQuantity quantityDouble, DiagnosticChain diagnostics, Map<Object, Object> context) { + return true; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateQuantityLong(NullableQuantity quantityLong, DiagnosticChain diagnostics, Map<Object, Object> context) { + return true; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateFraction(Double fraction, DiagnosticChain diagnostics, Map<Object, Object> context) { + boolean result = validateFraction_Min(fraction, diagnostics, context); + if (result || diagnostics != null) result &= validateFraction_Max(fraction, diagnostics, context); + return result; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @see #validateFraction_Min + */ + public static final Double FRACTION__MIN__VALUE = Double.valueOf(0.0); + + /** + * Validates the Min constraint of '<em>Fraction</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateFraction_Min(Double fraction, DiagnosticChain diagnostics, Map<Object, Object> context) { + boolean result = fraction.compareTo(FRACTION__MIN__VALUE) >= 0; + if (!result && diagnostics != null) + reportMinViolation(QuantitiesPackage.Literals.FRACTION, fraction, FRACTION__MIN__VALUE, true, diagnostics, context); + return result; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @see #validateFraction_Max + */ + public static final Double FRACTION__MAX__VALUE = Double.valueOf(1.0); + + /** + * Validates the Max constraint of '<em>Fraction</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateFraction_Max(Double fraction, DiagnosticChain diagnostics, Map<Object, Object> context) { + boolean result = fraction.compareTo(FRACTION__MAX__VALUE) <= 0; + if (!result && diagnostics != null) + reportMaxViolation(QuantitiesPackage.Literals.FRACTION, fraction, FRACTION__MAX__VALUE, true, diagnostics, context); + return result; + } + + /** + * Returns the resource locator that will be used to fetch messages for this validator's diagnostics. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + // TODO + // Specialize this to return a resource locator for messages specific to this validator. + // Ensure that you remove @generated or mark it @generated NOT + return super.getResourceLocator(); + } + +} //QuantitiesValidator