Search in sources :

Example 6 with RangeType

use of org.osate.aadl2.RangeType in project osate2 by osate.

the class PropertyUtils method checkUnitsAndGetSimplePropertyValue.

/**
 * Check that UnitLiteral unit is part of Property pd's UnitsType and
 * returns the property value by calling ph.getSimplePropertyValue(pd)
 *
 * @param ph The property holder from which to retrieve the property value.
 * @param pd The property to retrieve.
 * @param unit The literal to test against pd's units type.
 * @return The retrieved property value.
 * @throws InvalidModelException Thrown if the property value cannot be
 *             retrieved because the model is incomplete or otherwise
 *             invalid.
 * @throws PropertyNotPresentException Thrown if the property is undefined
 *             for ph.
 * @throws PropertyIsModalException Thrown if ph is modal and declarative.
 * @throws IllegalStateException Thrown if the lookup encounters a cycle of
 *             property reference dependencies.
 * @throws IllegalArgumentException Thrown if the given unit literal is not
 *             from the property's unit type or if ph, pd, or unit is null.
 * @throws PropertyDoesNotApplyToHolderException Thrown if pd does not apply
 *             to ph.
 * @throws PropertyIsListException Thrown if the property is not scalar.
 * @throws ClassCastException Thrown if the property's type is not a
 *             RangeType or a NumberType.
 */
private static PropertyExpression checkUnitsAndGetSimplePropertyValue(final NamedElement ph, final Property pd, final UnitLiteral unit) throws InvalidModelException, PropertyNotPresentException, PropertyIsModalException, IllegalStateException, IllegalArgumentException, PropertyDoesNotApplyToHolderException, PropertyIsListException, ClassCastException {
    if (unit == null) {
        throw new IllegalArgumentException("UnitLiteral unit cannot be null.");
    }
    final PropertyExpression pv = getSimplePropertyValue(ph, pd);
    PropertyType pt = (PropertyType) pd.getType();
    if (pt instanceof RangeType) {
        pt = ((RangeType) pt).getNumberType();
    }
    final UnitsType theUnitsType = ((NumberType) pt).getUnitsType();
    if (unit.eContainer() != theUnitsType) {
        throw new IllegalArgumentException("Unit literal " + unit.getName() + " is not from the property's type " + theUnitsType.getName());
    }
    return pv;
}
Also used : RangeType(org.osate.aadl2.RangeType) NumberType(org.osate.aadl2.NumberType) PropertyExpression(org.osate.aadl2.PropertyExpression) PropertyType(org.osate.aadl2.PropertyType) UnitsType(org.osate.aadl2.UnitsType)

Aggregations

RangeType (org.osate.aadl2.RangeType)4 UnitsType (org.osate.aadl2.UnitsType)4 PropertyType (org.osate.aadl2.PropertyType)3 AadlBoolean (org.osate.aadl2.AadlBoolean)2 AadlInteger (org.osate.aadl2.AadlInteger)2 AadlReal (org.osate.aadl2.AadlReal)2 AadlString (org.osate.aadl2.AadlString)2 BooleanLiteral (org.osate.aadl2.BooleanLiteral)2 ClassifierType (org.osate.aadl2.ClassifierType)2 ClassifierValue (org.osate.aadl2.ClassifierValue)2 ContainedNamedElement (org.osate.aadl2.ContainedNamedElement)2 ContainmentPathElement (org.osate.aadl2.ContainmentPathElement)2 EnumerationLiteral (org.osate.aadl2.EnumerationLiteral)2 EnumerationType (org.osate.aadl2.EnumerationType)2 IntegerLiteral (org.osate.aadl2.IntegerLiteral)2 ListType (org.osate.aadl2.ListType)2 ListValue (org.osate.aadl2.ListValue)2 MetaclassReference (org.osate.aadl2.MetaclassReference)2 NamedValue (org.osate.aadl2.NamedValue)2 Operation (org.osate.aadl2.Operation)2