Search in sources :

Example 1 with BooleanLiteralImpl

use of org.osate.aadl2.impl.BooleanLiteralImpl in project VERDICT by ge-high-assurance.

the class Aadl2Vdm method getStrRepofExpr.

/**
 * @author Paul Meng
 * The calling function should know the size of the return array
 */
String[] getStrRepofExpr(PropertyExpression expr) {
    String[] values = new String[4];
    if (expr instanceof BooleanLiteralImpl) {
        BooleanLiteralImpl bool = ((BooleanLiteralImpl) expr);
        // values[0] = bool.getValue()?"1":"0";
        values[0] = bool.getValue() ? "true" : "false";
    } else if (expr instanceof IntegerLiteralImpl) {
        IntegerLiteralImpl intVal = ((IntegerLiteralImpl) expr);
        values[0] = String.valueOf((int) intVal.getValue());
    } else if (expr instanceof NamedValueImpl) {
        NamedValueImpl namedValue = ((NamedValueImpl) expr);
        if (namedValue.getNamedValue() instanceof EnumerationLiteralImpl) {
            EnumerationLiteralImpl enu = ((EnumerationLiteralImpl) namedValue.getNamedValue());
            values[0] = enu.getName();
        } else {
            throw new RuntimeException("Unsupported property value: " + namedValue.getNamedValue());
        }
    } else if (expr instanceof ListValueImpl) {
        ListValueImpl listValue = (ListValueImpl) expr;
        if (listValue.getOwnedListElements().size() == 1) {
            values = getStrRepofExpr(listValue.getOwnedListElements().get(0));
        } else {
            throw new RuntimeException("Unexpected!");
        }
    } else if (expr instanceof ReferenceValueImpl) {
        // We only consider the value of expr is a bus expression here.
        ReferenceValueImpl refValue = (ReferenceValueImpl) expr;
        if (refValue.getContainmentPathElements().size() == 1) {
            ContainmentPathElement element = refValue.getContainmentPathElements().get(0);
            NamedElement namedElement = element.getNamedElement();
            if (namedElement instanceof BusSubcomponent) {
                ComponentImplementation impl = ((BusSubcomponent) namedElement).getContainingComponentImpl();
                String compTypeName = impl.getTypeName();
                values[0] = compTypeName;
                values[1] = impl.getName();
                values[2] = "";
                values[3] = namedElement.getName();
            } else {
                throw new RuntimeException("Unexpected!");
            }
        } else if (refValue.getContainmentPathElements().size() == 2) {
            // This is to deal with the expression "subcomponent . bus"
            ContainmentPathElement elementZero = refValue.getContainmentPathElements().get(0);
            ContainmentPathElement elementOne = refValue.getContainmentPathElements().get(1);
            NamedElement namedElementZero = elementZero.getNamedElement();
            NamedElement namedElementOne = elementOne.getNamedElement();
            if (namedElementZero instanceof SystemSubcomponent) {
                ComponentImplementation impl = ((SystemSubcomponent) namedElementZero).getComponentImplementation();
                values[0] = impl.getTypeName();
                values[1] = impl.getName();
                values[2] = namedElementZero.getName();
                values[3] = namedElementOne.getName();
            } else {
                throw new RuntimeException("Unexpected!");
            }
        } else {
            throw new RuntimeException("Unexpected number of property values: " + refValue.getContainmentPathElements().size());
        }
    } else if (expr instanceof StringLiteralImpl) {
        StringLiteralImpl strVal = ((StringLiteralImpl) expr);
        values[0] = strVal.getValue();
    } else {
        throw new RuntimeException("Unsupported property value: " + expr);
    }
    return values;
}
Also used : ComponentImplementation(org.osate.aadl2.ComponentImplementation) StringLiteralImpl(org.osate.aadl2.impl.StringLiteralImpl) NamedValueImpl(org.osate.aadl2.impl.NamedValueImpl) ContainmentPathElement(org.osate.aadl2.ContainmentPathElement) BusSubcomponent(org.osate.aadl2.BusSubcomponent) BooleanLiteralImpl(org.osate.aadl2.impl.BooleanLiteralImpl) ReferenceValueImpl(org.osate.aadl2.impl.ReferenceValueImpl) EnumerationLiteralImpl(org.osate.aadl2.impl.EnumerationLiteralImpl) SystemSubcomponent(org.osate.aadl2.SystemSubcomponent) IntegerLiteralImpl(org.osate.aadl2.impl.IntegerLiteralImpl) ListValueImpl(org.osate.aadl2.impl.ListValueImpl) ContainedNamedElement(org.osate.aadl2.ContainedNamedElement) NamedElement(org.osate.aadl2.NamedElement)

Example 2 with BooleanLiteralImpl

use of org.osate.aadl2.impl.BooleanLiteralImpl in project VERDICT by ge-high-assurance.

the class Aadl2CsvTranslator method getStrRepofExpr.

/**
 * The calling function should know the size of the return array
 */
String[] getStrRepofExpr(PropertyExpression expr) {
    String[] values = new String[4];
    if (expr instanceof BooleanLiteralImpl) {
        BooleanLiteralImpl bool = ((BooleanLiteralImpl) expr);
        values[0] = bool.getValue() ? "1" : "0";
    } else if (expr instanceof IntegerLiteralImpl) {
        IntegerLiteralImpl intVal = ((IntegerLiteralImpl) expr);
        values[0] = String.valueOf((int) intVal.getValue());
    } else if (expr instanceof NamedValueImpl) {
        NamedValueImpl namedValue = ((NamedValueImpl) expr);
        if (namedValue.getNamedValue() instanceof EnumerationLiteralImpl) {
            EnumerationLiteralImpl enu = ((EnumerationLiteralImpl) namedValue.getNamedValue());
            values[0] = enu.getName();
        } else {
            throw new RuntimeException("Unsupported property value: " + namedValue.getNamedValue());
        }
    } else if (expr instanceof ListValueImpl) {
        ListValueImpl listValue = (ListValueImpl) expr;
        if (listValue.getOwnedListElements().size() == 1) {
            values = getStrRepofExpr(listValue.getOwnedListElements().get(0));
        } else {
            throw new RuntimeException("Unexpected!");
        }
    } else if (expr instanceof ReferenceValueImpl) {
        // We only consider the value of expr is a bus expression here.
        ReferenceValueImpl refValue = (ReferenceValueImpl) expr;
        if (refValue.getContainmentPathElements().size() == 1) {
            ContainmentPathElement element = refValue.getContainmentPathElements().get(0);
            NamedElement namedElement = element.getNamedElement();
            if (namedElement instanceof BusSubcomponent) {
                ComponentImplementation impl = ((BusSubcomponent) namedElement).getContainingComponentImpl();
                String compTypeName = impl.getTypeName();
                values[0] = compTypeName;
                values[1] = impl.getName();
                values[2] = "";
                values[3] = namedElement.getName();
            } else {
                throw new RuntimeException("Unexpected!");
            }
        } else if (refValue.getContainmentPathElements().size() == 2) {
            // This is to deal with the expression "subcomponent . bus"
            ContainmentPathElement elementZero = refValue.getContainmentPathElements().get(0);
            ContainmentPathElement elementOne = refValue.getContainmentPathElements().get(1);
            NamedElement namedElementZero = elementZero.getNamedElement();
            NamedElement namedElementOne = elementOne.getNamedElement();
            if (namedElementZero instanceof SystemSubcomponent) {
                ComponentImplementation impl = ((SystemSubcomponent) namedElementZero).getComponentImplementation();
                values[0] = impl.getTypeName();
                values[1] = impl.getName();
                values[2] = namedElementZero.getName();
                values[3] = namedElementOne.getName();
            } else {
                throw new RuntimeException("Unexpected!");
            }
        } else {
            throw new RuntimeException("Unexpected number of property values: " + refValue.getContainmentPathElements().size());
        }
    } else if (expr instanceof StringLiteralImpl) {
        StringLiteralImpl strVal = ((StringLiteralImpl) expr);
        values[0] = strVal.getValue();
    } else {
        throw new RuntimeException("Unsupported property value: " + expr);
    }
    return values;
}
Also used : ComponentImplementation(org.osate.aadl2.ComponentImplementation) StringLiteralImpl(org.osate.aadl2.impl.StringLiteralImpl) NamedValueImpl(org.osate.aadl2.impl.NamedValueImpl) ContainmentPathElement(org.osate.aadl2.ContainmentPathElement) BusSubcomponent(org.osate.aadl2.BusSubcomponent) BooleanLiteralImpl(org.osate.aadl2.impl.BooleanLiteralImpl) ReferenceValueImpl(org.osate.aadl2.impl.ReferenceValueImpl) EnumerationLiteralImpl(org.osate.aadl2.impl.EnumerationLiteralImpl) SystemSubcomponent(org.osate.aadl2.SystemSubcomponent) IntegerLiteralImpl(org.osate.aadl2.impl.IntegerLiteralImpl) ListValueImpl(org.osate.aadl2.impl.ListValueImpl) ContainedNamedElement(org.osate.aadl2.ContainedNamedElement) NamedElement(org.osate.aadl2.NamedElement)

Aggregations

BusSubcomponent (org.osate.aadl2.BusSubcomponent)2 ComponentImplementation (org.osate.aadl2.ComponentImplementation)2 ContainedNamedElement (org.osate.aadl2.ContainedNamedElement)2 ContainmentPathElement (org.osate.aadl2.ContainmentPathElement)2 NamedElement (org.osate.aadl2.NamedElement)2 SystemSubcomponent (org.osate.aadl2.SystemSubcomponent)2 BooleanLiteralImpl (org.osate.aadl2.impl.BooleanLiteralImpl)2 EnumerationLiteralImpl (org.osate.aadl2.impl.EnumerationLiteralImpl)2 IntegerLiteralImpl (org.osate.aadl2.impl.IntegerLiteralImpl)2 ListValueImpl (org.osate.aadl2.impl.ListValueImpl)2 NamedValueImpl (org.osate.aadl2.impl.NamedValueImpl)2 ReferenceValueImpl (org.osate.aadl2.impl.ReferenceValueImpl)2 StringLiteralImpl (org.osate.aadl2.impl.StringLiteralImpl)2