Search in sources :

Example 31 with StringLiteral

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

the class AlisaSemanticSequencer method sequence.

@Override
public void sequence(ISerializationContext context, EObject semanticObject) {
    EPackage epackage = semanticObject.eClass().getEPackage();
    ParserRule rule = context.getParserRule();
    Action action = context.getAssignedAction();
    Set<Parameter> parameters = context.getEnabledBooleanParameters();
    if (epackage == Aadl2Package.eINSTANCE)
        switch(semanticObject.eClass().getClassifierID()) {
            case Aadl2Package.AADL_BOOLEAN:
                sequence_TypeRef(context, (AadlBoolean) semanticObject);
                return;
            case Aadl2Package.AADL_INTEGER:
                sequence_TypeRef(context, (AadlInteger) semanticObject);
                return;
            case Aadl2Package.AADL_REAL:
                sequence_TypeRef(context, (AadlReal) semanticObject);
                return;
            case Aadl2Package.AADL_STRING:
                sequence_TypeRef(context, (AadlString) semanticObject);
                return;
            case Aadl2Package.BOOLEAN_LITERAL:
                sequence_ABooleanLiteral(context, (BooleanLiteral) semanticObject);
                return;
            case Aadl2Package.INTEGER_LITERAL:
                sequence_AIntegerTerm(context, (IntegerLiteral) semanticObject);
                return;
            case Aadl2Package.REAL_LITERAL:
                sequence_ARealTerm(context, (RealLiteral) semanticObject);
                return;
            case Aadl2Package.STRING_LITERAL:
                sequence_StringTerm(context, (StringLiteral) semanticObject);
                return;
        }
    else if (epackage == AlisaPackage.eINSTANCE)
        switch(semanticObject.eClass().getClassifierID()) {
            case AlisaPackage.ASSURANCE_CASE:
                sequence_AssuranceCase(context, (AssuranceCase) semanticObject);
                return;
            case AlisaPackage.ASSURANCE_PLAN:
                sequence_AssurancePlan(context, (AssurancePlan) semanticObject);
                return;
            case AlisaPackage.ASSURANCE_TASK:
                sequence_AssuranceTask(context, (AssuranceTask) semanticObject);
                return;
        }
    else if (epackage == CommonPackage.eINSTANCE)
        switch(semanticObject.eClass().getClassifierID()) {
            case CommonPackage.ABINARY_OPERATION:
                sequence_AAdditiveExpression_AAndExpression_AEqualityExpression_AMultiplicativeExpression_AOrExpression_ARelationalExpression(context, (ABinaryOperation) semanticObject);
                return;
            case CommonPackage.ACONDITIONAL:
                sequence_AIfExpression(context, (AConditional) semanticObject);
                return;
            case CommonPackage.AFUNCTION_CALL:
                sequence_AFunctionCall(context, (AFunctionCall) semanticObject);
                return;
            case CommonPackage.AMODEL_REFERENCE:
                sequence_AModelReference(context, (AModelReference) semanticObject);
                return;
            case CommonPackage.APROPERTY_REFERENCE:
                if (rule == grammarAccess.getAModelOrPropertyReferenceRule() || rule == grammarAccess.getAExpressionRule() || rule == grammarAccess.getAOrExpressionRule() || action == grammarAccess.getAOrExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAAndExpressionRule() || action == grammarAccess.getAAndExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAEqualityExpressionRule() || action == grammarAccess.getAEqualityExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getARelationalExpressionRule() || action == grammarAccess.getARelationalExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAAdditiveExpressionRule() || action == grammarAccess.getAAdditiveExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAMultiplicativeExpressionRule() || action == grammarAccess.getAMultiplicativeExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAUnaryOperationRule() || rule == grammarAccess.getAUnitExpressionRule() || action == grammarAccess.getAUnitExpressionAccess().getAUnitExpressionExpressionAction_1_0() || rule == grammarAccess.getAPrimaryExpressionRule() || rule == grammarAccess.getAParenthesizedExpressionRule()) {
                    sequence_AModelOrPropertyReference_APropertyReference(context, (APropertyReference) semanticObject);
                    return;
                } else if (rule == grammarAccess.getAPropertyReferenceRule()) {
                    sequence_APropertyReference(context, (APropertyReference) semanticObject);
                    return;
                } else
                    break;
            case CommonPackage.ARANGE:
                sequence_ARangeExpression(context, (ARange) semanticObject);
                return;
            case CommonPackage.AUNARY_OPERATION:
                sequence_AUnaryOperation(context, (AUnaryOperation) semanticObject);
                return;
            case CommonPackage.AUNIT_EXPRESSION:
                if (rule == grammarAccess.getAExpressionRule() || rule == grammarAccess.getAOrExpressionRule() || action == grammarAccess.getAOrExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAAndExpressionRule() || action == grammarAccess.getAAndExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAEqualityExpressionRule() || action == grammarAccess.getAEqualityExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getARelationalExpressionRule() || action == grammarAccess.getARelationalExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAAdditiveExpressionRule() || action == grammarAccess.getAAdditiveExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAMultiplicativeExpressionRule() || action == grammarAccess.getAMultiplicativeExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAUnaryOperationRule() || rule == grammarAccess.getAUnitExpressionRule() || action == grammarAccess.getAUnitExpressionAccess().getAUnitExpressionExpressionAction_1_0() || rule == grammarAccess.getAPrimaryExpressionRule() || rule == grammarAccess.getAParenthesizedExpressionRule()) {
                    sequence_AUnitExpression(context, (AUnitExpression) semanticObject);
                    return;
                } else if (rule == grammarAccess.getShowValueRule()) {
                    sequence_ShowValue(context, (AUnitExpression) semanticObject);
                    return;
                } else
                    break;
            case CommonPackage.AVARIABLE_REFERENCE:
                sequence_AVariableReference(context, (AVariableReference) semanticObject);
                return;
            case CommonPackage.COMPUTE_DECLARATION:
                sequence_ComputeDeclaration(context, (ComputeDeclaration) semanticObject);
                return;
            case CommonPackage.DESCRIPTION:
                sequence_Description(context, (Description) semanticObject);
                return;
            case CommonPackage.DESCRIPTION_ELEMENT:
                sequence_DescriptionElement(context, (DescriptionElement) semanticObject);
                return;
            case CommonPackage.IMAGE_REFERENCE:
                sequence_ImageReference(context, (ImageReference) semanticObject);
                return;
            case CommonPackage.MODEL_REF:
                sequence_TypeRef(context, (ModelRef) semanticObject);
                return;
            case CommonPackage.PROPERTY_REF:
                sequence_PropertyRef(context, (PropertyRef) semanticObject);
                return;
            case CommonPackage.RATIONALE:
                sequence_Rationale(context, (Rationale) semanticObject);
                return;
            case CommonPackage.TYPE_REF:
                sequence_TypeRef(context, (TypeRef) semanticObject);
                return;
            case CommonPackage.UNCERTAINTY:
                sequence_Uncertainty(context, (Uncertainty) semanticObject);
                return;
            case CommonPackage.VAL_DECLARATION:
                sequence_ValDeclaration(context, (ValDeclaration) semanticObject);
                return;
        }
    if (errorAcceptor != null)
        errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
Also used : ParserRule(org.eclipse.xtext.ParserRule) Action(org.eclipse.xtext.Action) AConditional(org.osate.alisa.common.common.AConditional) Uncertainty(org.osate.alisa.common.common.Uncertainty) Description(org.osate.alisa.common.common.Description) APropertyReference(org.osate.alisa.common.common.APropertyReference) BooleanLiteral(org.osate.aadl2.BooleanLiteral) AFunctionCall(org.osate.alisa.common.common.AFunctionCall) TypeRef(org.osate.alisa.common.common.TypeRef) AUnaryOperation(org.osate.alisa.common.common.AUnaryOperation) PropertyRef(org.osate.alisa.common.common.PropertyRef) EPackage(org.eclipse.emf.ecore.EPackage) RealLiteral(org.osate.aadl2.RealLiteral) AVariableReference(org.osate.alisa.common.common.AVariableReference) AadlInteger(org.osate.aadl2.AadlInteger) Rationale(org.osate.alisa.common.common.Rationale) AadlString(org.osate.aadl2.AadlString) IntegerLiteral(org.osate.aadl2.IntegerLiteral) AadlReal(org.osate.aadl2.AadlReal) AModelReference(org.osate.alisa.common.common.AModelReference) ARange(org.osate.alisa.common.common.ARange) ComputeDeclaration(org.osate.alisa.common.common.ComputeDeclaration) ValDeclaration(org.osate.alisa.common.common.ValDeclaration) DescriptionElement(org.osate.alisa.common.common.DescriptionElement) ABinaryOperation(org.osate.alisa.common.common.ABinaryOperation) AUnitExpression(org.osate.alisa.common.common.AUnitExpression) ImageReference(org.osate.alisa.common.common.ImageReference) AadlBoolean(org.osate.aadl2.AadlBoolean) StringLiteral(org.osate.aadl2.StringLiteral) Parameter(org.eclipse.xtext.Parameter) ModelRef(org.osate.alisa.common.common.ModelRef)

Example 32 with StringLiteral

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

the class AadlBaUnparser method initSwitches.

/**
 * Specific aadlba switch to unparse components
 */
protected void initSwitches() {
    aadlbaSwitch = new AadlBaSwitch<String>() {

        /**
         * Top-level method to unparse "behavior_specification"
         * annexsubclause
         */
        // public String caseAnnexSubclause(AnnexSubclause object) {
        // //FIXME : TODO : update location reference
        // 
        // process((BehaviorAnnex) object);
        // 
        // return DONE;
        // }
        /**
         * Unparse behaviorannex
         */
        @Override
        public String caseBehaviorAnnex(BehaviorAnnex object) {
            // DB: Improve code formatting
            aadlbaText.addOutputNewline("");
            // FIXME : TODO : update location reference
            if (object.isSetVariables()) {
                aadlbaText.addOutputNewline("variables");
                aadlbaText.incrementIndent();
                processEList(object.getVariables());
                aadlbaText.decrementIndent();
            }
            if (object.isSetStates()) {
                aadlbaText.addOutputNewline("states");
                aadlbaText.incrementIndent();
                processEList(object.getStates());
                aadlbaText.decrementIndent();
            }
            if (object.isSetTransitions()) {
                aadlbaText.addOutputNewline("transitions");
                aadlbaText.incrementIndent();
                processEList(object.getTransitions());
                aadlbaText.decrementIndent();
            }
            return DONE;
        }

        /**
         * Unparse behaviorvariable
         */
        @Override
        public String caseBehaviorVariable(BehaviorVariable object) {
            // FIXME : TODO : update location reference
            aadlbaText.addOutput(object.getName());
            for (ArrayDimension ad : object.getArrayDimensions()) {
                aadlbaText.addOutput("[");
                if (ad instanceof DeclarativeArrayDimension) {
                    DeclarativeArrayDimension dad = (DeclarativeArrayDimension) ad;
                    process(dad.getDimension());
                } else if (ad instanceof ArrayDimension) {
                    aadlbaText.addOutput(Long.toString(ad.getSize().getSize()));
                }
                aadlbaText.addOutput("]");
            }
            aadlbaText.addOutput(" : ");
            if (object.getDataClassifier() instanceof QualifiedNamedElement) {
                QualifiedNamedElement qn = (QualifiedNamedElement) object.getDataClassifier();
                aadlbaText.addOutput(getNamespace(qn));
                process(qn);
            } else if (object.getDataClassifier() instanceof DataClassifier) {
                aadlbaText.addOutput(object.getDataClassifier().getQualifiedName());
            }
            aadlbaText.addOutputNewline(";");
            return DONE;
        }

        private String getNamespace(final QualifiedNamedElement qn) {
            final Identifier baNameSpace = qn.getBaNamespace();
            final StringBuilder nameSpace = new StringBuilder();
            if (baNameSpace != null && !Strings.isNullOrEmpty(baNameSpace.getId())) {
                nameSpace.append(baNameSpace.getId()).append("::");
            }
            return nameSpace.toString();
        }

        /**
         * Unparse behaviorstate
         */
        @Override
        public String caseBehaviorState(BehaviorState object) {
            // FIXME : TODO : update location reference
            aadlbaText.addOutput(object.getName());
            aadlbaText.addOutput(" : ");
            if (object.isInitial()) {
                aadlbaText.addOutput("initial ");
            }
            if (object.isComplete()) {
                aadlbaText.addOutput("complete ");
            }
            if (object.isFinal()) {
                aadlbaText.addOutput("final ");
            }
            aadlbaText.addOutputNewline("state;");
            return DONE;
        }

        /**
         * Unparse behaviortransition
         */
        @Override
        public String caseBehaviorTransition(BehaviorTransition object) {
            // FIXME : TODO : update location reference
            String tid = object.getName();
            Long num = object.getPriority();
            if (tid != null) {
                aadlbaText.addOutput(tid);
                if (num != AadlBaVisitors.DEFAULT_TRANSITION_PRIORITY) {
                    // numeral
                    aadlbaText.addOutput(" [");
                    aadlbaText.addOutput(String.valueOf(num));
                    aadlbaText.addOutput("]");
                }
                aadlbaText.addOutput(" : ");
            }
            if (object.getSourceState() != null) {
                aadlbaText.addOutput(object.getSourceState().getName());
            } else if (object instanceof DeclarativeBehaviorTransition) {
                DeclarativeBehaviorTransition dbt = (DeclarativeBehaviorTransition) object;
                for (Identifier id : dbt.getSrcStates()) {
                    aadlbaText.addOutput(id.getId());
                    if (dbt.getSrcStates().get(dbt.getSrcStates().size() - 1) != id) {
                        aadlbaText.addOutput(",");
                    }
                }
            }
            aadlbaText.addOutput(" -[");
            process(object.getCondition());
            aadlbaText.addOutput("]-> ");
            if (object.getDestinationState() != null) {
                aadlbaText.addOutput(object.getDestinationState().getName());
            } else if (object instanceof DeclarativeBehaviorTransition) {
                DeclarativeBehaviorTransition dbt = (DeclarativeBehaviorTransition) object;
                aadlbaText.addOutput(dbt.getDestState().getId());
            }
            if (object.getActionBlock() != null) {
                aadlbaText.addOutput(" ");
                process(object.getActionBlock());
            }
            aadlbaText.addOutputNewline(";");
            return DONE;
        }

        @Override
        public String caseExecutionTimeoutCatch(ExecutionTimeoutCatch object) {
            aadlbaText.addOutput("timeout");
            return DONE;
        }

        @Override
        public String caseOtherwise(Otherwise object) {
            aadlbaText.addOutput("otherwise");
            return DONE;
        }

        /**
         * Unparse dispatchcondition
         */
        @Override
        public String caseDispatchCondition(DispatchCondition object) {
            // FIXME : TODO : update location reference
            aadlbaText.addOutput("on dispatch");
            if (object.getDispatchTriggerCondition() != null) {
                aadlbaText.addOutput(" ");
                process(object.getDispatchTriggerCondition());
            }
            if (object.isSetFrozenPorts()) {
                aadlbaText.addOutput(" frozen ");
                processEList(object.getFrozenPorts(), ", ");
            }
            return DONE;
        }

        @Override
        public String caseDispatchTriggerConditionStop(DispatchTriggerConditionStop object) {
            aadlbaText.addOutput("stop");
            return DONE;
        }

        @Override
        public String caseDispatchRelativeTimeout(DispatchRelativeTimeout object) {
            aadlbaText.addOutput("timeout ");
            return DONE;
        }

        @Override
        public String caseCompletionRelativeTimeout(CompletionRelativeTimeout object) {
            aadlbaText.addOutput("timeout ");
            caseBehaviorTime(object);
            return DONE;
        }

        @Override
        public String caseDispatchTriggerLogicalExpression(DispatchTriggerLogicalExpression object) {
            processEList(object.getDispatchConjunctions(), " or ");
            return DONE;
        }

        @Override
        public String caseDispatchConjunction(DispatchConjunction object) {
            processEList(object.getDispatchTriggers(), " and ");
            return DONE;
        }

        @Override
        public String caseBehaviorActionBlock(BehaviorActionBlock object) {
            aadlbaText.addOutputNewline("{");
            aadlbaText.incrementIndent();
            // aadlbaText.addOutput("{");
            process(object.getContent());
            aadlbaText.decrementIndent();
            aadlbaText.addOutputNewline("");
            aadlbaText.addOutput("}");
            if (object.getTimeout() != null) {
                aadlbaText.addOutput(" timeout ");
                process(object.getTimeout());
            }
            return DONE;
        }

        @Override
        public String caseBehaviorActionSequence(BehaviorActionSequence object) {
            // DB: Indentation problem when using \n direcly
            processEList(object.getActions(), ";", true);
            // processEList(object.getActions(), ";\n");
            return DONE;
        }

        @Override
        public String caseBehaviorActionSet(BehaviorActionSet object) {
            // DB: Indentation problem when using \n direcly
            processEList(object.getActions(), " &", true);
            // processEList(object.getActions(), " &\n");
            return DONE;
        }

        /**
         * Unparse ifstatement
         */
        @Override
        public String caseIfStatement(IfStatement object) {
            // FIXME : TODO : update location reference
            boolean hasToOutputTerminator = true;
            if (object.isElif()) {
                aadlbaText.addOutputNewline("");
                aadlbaText.addOutput("elsif (");
                hasToOutputTerminator = false;
            } else {
                aadlbaText.addOutput("if (");
                hasToOutputTerminator = true;
            }
            process(object.getLogicalValueExpression());
            aadlbaText.addOutputNewline(")");
            aadlbaText.incrementIndent();
            process(object.getBehaviorActions());
            aadlbaText.decrementIndent();
            if (object.getElseStatement() != null) {
                process(object.getElseStatement());
            }
            if (hasToOutputTerminator) {
                aadlbaText.addOutputNewline("");
                aadlbaText.addOutput("end if");
            }
            return DONE;
        }

        @Override
        public String caseElseStatement(ElseStatement object) {
            aadlbaText.addOutputNewline("");
            aadlbaText.addOutputNewline("else");
            aadlbaText.incrementIndent();
            process(object.getBehaviorActions());
            aadlbaText.decrementIndent();
            return DONE;
        }

        /**
         * Unparse fororforallstatement
         */
        @Override
        public String caseForOrForAllStatement(ForOrForAllStatement object) {
            // FIXME : TODO : update location reference
            if (object.isForAll()) {
                aadlbaText.addOutput("forall (");
            } else {
                aadlbaText.addOutput("for (");
            }
            process(object.getIterativeVariable());
            aadlbaText.addOutput(" in ");
            process(object.getIteratedValues());
            aadlbaText.addOutputNewline(") {");
            // aadlbaText.addOutputNewline("{");
            aadlbaText.incrementIndent();
            process(object.getBehaviorActions());
            aadlbaText.decrementIndent();
            aadlbaText.addOutputNewline("");
            aadlbaText.addOutput("}");
            return DONE;
        }

        @Override
        public String caseIterativeVariable(IterativeVariable iv) {
            aadlbaText.addOutput(iv.getName());
            aadlbaText.addOutput(" : ");
            // DB: Use qualified name when classifier is declared outside the package
            final DataClassifier dataClass = iv.getDataClassifier();
            final String dataClassName;
            if (dataClass.getElementRoot() == iv.getElementRoot()) {
                dataClassName = dataClass.getName();
            } else {
                dataClassName = dataClass.getQualifiedName();
            }
            aadlbaText.addOutput(dataClassName);
            return DONE;
        }

        @Override
        public String caseWhileOrDoUntilStatement(WhileOrDoUntilStatement object) {
            if (object.isDoUntil()) {
                return caseDoUntilStatement(object);
            } else {
                return caseWhileStatement(object);
            }
        }

        /**
         * Unparse whilestatement
         */
        public String caseWhileStatement(WhileOrDoUntilStatement object) {
            // FIXME : TODO : update location reference
            aadlbaText.addOutput("while (");
            process(object.getLogicalValueExpression());
            aadlbaText.addOutputNewline(") {");
            // aadlbaText.addOutputNewline("{");
            aadlbaText.incrementIndent();
            process(object.getBehaviorActions());
            aadlbaText.decrementIndent();
            aadlbaText.addOutputNewline("");
            aadlbaText.addOutputNewline("}");
            return DONE;
        }

        /**
         * Unparse dountilstatement
         */
        public String caseDoUntilStatement(WhileOrDoUntilStatement object) {
            // FIXME : TODO : update location reference
            aadlbaText.addOutputNewline("do");
            process(object.getBehaviorActions());
            aadlbaText.addOutputNewline("");
            aadlbaText.addOutput("until (");
            process(object.getLogicalValueExpression());
            aadlbaText.addOutputNewline(")");
            return DONE;
        }

        /**
         * Unparse integerrange
         */
        @Override
        public String caseIntegerRange(IntegerRange object) {
            // FIXME : TODO : update location reference
            process(object.getLowerIntegerValue());
            aadlbaText.addOutput(" .. ");
            process(object.getUpperIntegerValue());
            return DONE;
        }

        /**
         * Unparse timedaction
         */
        @Override
        public String caseTimedAction(TimedAction object) {
            aadlbaText.addOutput("computation (");
            process(object.getLowerTime());
            if (object.getUpperTime() != null) {
                aadlbaText.addOutput(" .. ");
                process(object.getUpperTime());
            }
            aadlbaText.addOutput(")");
            if (object.isSetProcessorClassifier()) {
                aadlbaText.addOutput(" in binding (");
                processEList(object.getProcessorClassifier(), ", ", object, false);
                aadlbaText.addOutput(")");
            }
            return DONE;
        }

        /**
         * Unparse assignmentaction
         */
        @Override
        public String caseAssignmentAction(AssignmentAction object) {
            // FIXME : TODO : update location reference
            process(object.getTarget());
            aadlbaText.addOutput(" := ");
            process(object.getValueExpression());
            return DONE;
        }

        @Override
        public String caseAny(Any object) {
            aadlbaText.addOutput("any");
            return DONE;
        }

        @Override
        public String caseElementHolder(ElementHolder el) {
            if (el instanceof Reference) {
                return processReference((Reference) el);
            }
            Element refContainer = Aadl2Visitors.getContainingPackageSection(el.getElement());
            Element holderPackageOrPropertySet = Aadl2Visitors.getContainingPackageSection(el);
            if (refContainer != null && holderPackageOrPropertySet != null && false == holderPackageOrPropertySet.equals(refContainer) && false == (el instanceof DataSubcomponentHolder)) {
                StringBuilder sb = new StringBuilder(el.getElement().getQualifiedName());
                String prefix = sb.substring(0, sb.lastIndexOf("::") + 2);
                aadlbaText.addOutput(prefix);
            }
            if (el instanceof GroupableElement) {
                GroupableElement ge = (GroupableElement) el;
                if (ge.isSetGroupHolders()) {
                    processEList(ge.getGroupHolders(), ".");
                    aadlbaText.addOutput(".");
                }
            }
            aadlbaText.addOutput(el.getElement().getName());
            if (el instanceof IndexableElement) {
                IndexableElement ie = (IndexableElement) el;
                if (ie.isSetArrayIndexes()) {
                    caseArrayIndex(ie.getArrayIndexes());
                }
            }
            return DONE;
        }

        private String processReference(Reference ref) {
            for (ArrayableIdentifier id : ref.getIds()) {
                aadlbaText.addOutput(id.getId());
                caseArrayIndex(id.getArrayIndexes());
                if (id != ref.getIds().get(ref.getIds().size() - 1)) {
                    aadlbaText.addOutput(".");
                }
            }
            return DONE;
        }

        private String processCommAction(CommAction object) {
            process(object.getReference());
            if (object.isLock()) {
                aadlbaText.addOutput("!<");
            } else if (object.isUnlock()) {
                aadlbaText.addOutput("!>");
            } else if (object.isPortDequeue()) {
                aadlbaText.addOutput(" ?");
            } else {
                aadlbaText.addOutput(" !");
            }
            if (object.isSetParameters() == true) {
                aadlbaText.addOutput(" (");
                processEList(object.getParameters(), ",");
                aadlbaText.addOutput(")");
                return DONE;
            } else if (object.getTarget() != null) {
                aadlbaText.addOutput(" (");
                process(object.getTarget());
                aadlbaText.addOutput(")");
                return DONE;
            }
            return DONE;
        }

        /**
         * Unparse arrayindex
         */
        public String caseArrayIndex(EList<IntegerValue> object) {
            // FIXME : TODO : update location reference
            for (IntegerValue iv : object) {
                aadlbaText.addOutput("[");
                process(iv);
                aadlbaText.addOutput("]");
            }
            return DONE;
        }

        /**
         * Unparse datacomponentreference
         */
        @Override
        public String caseDataComponentReference(DataComponentReference object) {
            // FIXME : TODO : update location reference
            processEList(object.getData(), ".");
            return DONE;
        }

        @Override
        public String defaultCase(EObject object) {
            if (object instanceof CommAction) {
                return processCommAction((CommAction) object);
            } else if (object instanceof Reference) {
                return processReference((Reference) object);
            } else if (object instanceof QualifiedNamedElement) {
                QualifiedNamedElement qn = (QualifiedNamedElement) object;
                aadlbaText.addOutput(qn.getBaName().getId());
            } else if (object instanceof org.osate.ba.declarative.NamedValue) {
                org.osate.ba.declarative.NamedValue nv = (org.osate.ba.declarative.NamedValue) object;
                process(nv.getReference());
                if (nv.isCount()) {
                    aadlbaText.addOutput("' count");
                }
                if (nv.isFresh()) {
                    aadlbaText.addOutput("' fresh");
                }
                if (nv.isDequeue()) {
                    aadlbaText.addOutput(" ?");
                }
            } else if (object instanceof DeclarativePropertyReference) {
                DeclarativePropertyReference dpr = (DeclarativePropertyReference) object;
                if (dpr.getQualifiedName().getBaName().getId().isEmpty()) {
                    aadlbaText.addOutput("#");
                }
                aadlbaText.addOutput(dpr.getQualifiedName().getBaNamespace().getId());
                aadlbaText.addOutput("::");
                if (false == dpr.getQualifiedName().getBaName().getId().isEmpty()) {
                    aadlbaText.addOutput(dpr.getQualifiedName().getBaName().getId());
                    aadlbaText.addOutput("#");
                }
                processEList(dpr.getPropertyNames(), ".");
            } else if (object instanceof DeclarativePropertyName) {
                DeclarativePropertyName dpn = (DeclarativePropertyName) object;
                aadlbaText.addOutput(dpn.getPropertyName().getId());
                // field
                process(dpn.getField());
                // indexes
                caseArrayIndex(dpn.getIndexes());
            }
            return DONE;
        }

        @Override
        public String caseSubprogramCallAction(SubprogramCallAction object) {
            if (object.getProxy() != null) {
                process(object.getProxy());
                aadlbaText.addOutput(".");
            }
            process(object.getSubprogram());
            aadlbaText.addOutput(" !");
            if (object.isSetParameterLabels()) {
                aadlbaText.addOutput(" (");
                processEList(object.getParameterLabels(), ", ");
                aadlbaText.addOutput(")");
            }
            return DONE;
        }

        @Override
        public String casePortSendAction(PortSendAction object) {
            process(object.getPort());
            aadlbaText.addOutput(" !");
            if (object.getValueExpression() != null) {
                aadlbaText.addOutput(" (");
                process(object.getValueExpression());
                aadlbaText.addOutput(")");
            }
            return DONE;
        }

        @Override
        public String casePortFreezeAction(PortFreezeAction object) {
            return casePortActionOrValue(object, " >>");
        }

        @Override
        public String casePortDequeueAction(PortDequeueAction object) {
            process(object.getPort());
            aadlbaText.addOutput(" ?");
            if (object.getTarget() != null) {
                aadlbaText.addOutput(" (");
                process(object.getTarget());
                aadlbaText.addOutput(")");
            }
            return DONE;
        }

        @Override
        public String caseLockAction(LockAction object) {
            return caseSharedDataAction(object, "!<");
        }

        @Override
        public String caseUnlockAction(UnlockAction object) {
            return caseSharedDataAction(object, "!>");
        }

        public String caseSharedDataAction(SharedDataAction object, String token) {
            if (object.getDataAccess() != null) {
                process(object.getDataAccess());
                aadlbaText.addOutput(" ");
            } else {
                aadlbaText.addOutput("*");
            }
            aadlbaText.addOutput(token);
            return DONE;
        }

        /**
         * Unparse behaviortime
         */
        @Override
        public String caseBehaviorTime(BehaviorTime object) {
            // FIXME : TODO : update location reference
            process(object.getIntegerValue());
            aadlbaText.addOutput(" ");
            if (object.getUnit() != null) {
                aadlbaText.addOutput(object.getUnit().getName());
            } else {
                if (object instanceof DeclarativeTime) {
                    DeclarativeTime dt = (DeclarativeTime) object;
                    aadlbaText.addOutput(dt.getUnitId().getId());
                }
            }
            return DONE;
        }

        @Override
        public String casePortDequeueValue(PortDequeueValue object) {
            return casePortActionOrValue(object, " ?");
        }

        @Override
        public String casePortCountValue(PortCountValue object) {
            return casePortActionOrValue(object, "' count");
        }

        @Override
        public String casePortFreshValue(PortFreshValue object) {
            return casePortActionOrValue(object, "' fresh");
        }

        public String casePortActionOrValue(PortHolder object, String token) {
            caseElementHolder(object);
            aadlbaText.addOutput(token);
            return DONE;
        }

        /**
         * Unparse booleanliteral
         */
        @Override
        public String caseBehaviorBooleanLiteral(BehaviorBooleanLiteral object) {
            // FIXME : TODO : update location reference
            if (object.isValue()) {
                aadlbaText.addOutput("true");
            } else {
                aadlbaText.addOutput("false");
            }
            return DONE;
        }

        /**
         * Unparse stringliteral
         */
        @Override
        public String caseBehaviorStringLiteral(BehaviorStringLiteral object) {
            // FIXME : TODO : update location reference
            // DB: Manage adding double quotes
            aadlbaText.addOutput(doubleQuoteString(object.getValue()));
            return DONE;
        }

        @Override
        public String caseBehaviorRealLiteral(BehaviorRealLiteral object) {
            aadlbaText.addOutput(String.valueOf(object.getValue()));
            return DONE;
        }

        @Override
        public String caseBehaviorIntegerLiteral(BehaviorIntegerLiteral object) {
            aadlbaText.addOutput(Long.toString(object.getValue()));
            return DONE;
        }

        /**
         * Unparse valueexpression
         */
        @Override
        public String caseValueExpression(ValueExpression object) {
            // FIXME : TODO : update location reference
            Iterator<Relation> itRel = object.getRelations().iterator();
            process(itRel.next());
            if (object.isSetLogicalOperators()) {
                Iterator<LogicalOperator> itOp = object.getLogicalOperators().iterator();
                while (itRel.hasNext()) {
                    LogicalOperator lo = itOp.next();
                    if (lo != LogicalOperator.NONE) {
                        aadlbaText.addOutput(" " + lo.getLiteral() + " ");
                    }
                    process(itRel.next());
                }
            }
            return DONE;
        }

        /**
         * Unparse relation
         */
        @Override
        public String caseRelation(Relation object) {
            // FIXME : TODO : update location reference
            process(object.getFirstExpression());
            if (object.getSecondExpression() != null) {
                if (object.getRelationalOperator() != RelationalOperator.NONE) {
                    aadlbaText.addOutput(" " + object.getRelationalOperator().getLiteral() + " ");
                }
                process(object.getSecondExpression());
            }
            return DONE;
        }

        /**
         * Unparse simpleexpression
         */
        @Override
        public String caseSimpleExpression(SimpleExpression object) {
            // FIXME : TODO : update location reference
            if (object.isSetUnaryAddingOperator() && object.getUnaryAddingOperator() != UnaryAddingOperator.NONE) {
                aadlbaText.addOutput(object.getUnaryAddingOperator().getLiteral());
            }
            Iterator<Term> itTerm = object.getTerms().iterator();
            process(itTerm.next());
            if (object.isSetBinaryAddingOperators()) {
                Iterator<BinaryAddingOperator> itOp = object.getBinaryAddingOperators().iterator();
                while (itTerm.hasNext()) {
                    BinaryAddingOperator bao = itOp.next();
                    if (bao != BinaryAddingOperator.NONE) {
                        aadlbaText.addOutput(" " + bao.getLiteral() + " ");
                    }
                    process(itTerm.next());
                }
            }
            return DONE;
        }

        /**
         * Unparse term
         */
        @Override
        public String caseTerm(Term object) {
            // FIXME : TODO : update location reference
            Iterator<Factor> itFact = object.getFactors().iterator();
            process(itFact.next());
            if (object.isSetMultiplyingOperators()) {
                Iterator<MultiplyingOperator> itOp = object.getMultiplyingOperators().iterator();
                while (itFact.hasNext()) {
                    MultiplyingOperator mo = itOp.next();
                    if (mo != MultiplyingOperator.NONE) {
                        aadlbaText.addOutput(" " + mo.getLiteral() + " ");
                    }
                    process(itFact.next());
                }
            }
            return DONE;
        }

        /**
         * Unparse factor
         */
        @Override
        public String caseFactor(Factor object) {
            // FIXME : TODO : update location reference
            if (object.isSetUnaryNumericOperator() || object.isSetUnaryBooleanOperator()) {
                Enumerator e = null;
                if (object.isSetUnaryNumericOperator()) {
                    e = object.getUnaryNumericOperator();
                    if (e != UnaryNumericOperator.NONE) {
                        aadlbaText.addOutput(e.getLiteral() + " ");
                    }
                } else if (object.isSetUnaryBooleanOperator()) {
                    e = object.getUnaryBooleanOperator();
                    if (e != UnaryBooleanOperator.NONE) {
                        aadlbaText.addOutput(e.getLiteral() + " ");
                    }
                }
            }
            if (object.getFirstValue() instanceof ValueExpression) {
                aadlbaText.addOutput("(");
                process(object.getFirstValue());
                aadlbaText.addOutput(")");
            } else {
                process(object.getFirstValue());
            }
            if (object.isSetBinaryNumericOperator()) {
                BinaryNumericOperator bno = object.getBinaryNumericOperator();
                if (bno != BinaryNumericOperator.NONE) {
                    aadlbaText.addOutput(" " + bno.getLiteral() + " ");
                }
                if (object.getSecondValue() instanceof ValueExpression) {
                    aadlbaText.addOutput("(");
                    process(object.getSecondValue());
                    aadlbaText.addOutput(")");
                } else {
                    process(object.getSecondValue());
                }
            }
            return DONE;
        }

        @Override
        public String caseBehaviorPropertyConstant(BehaviorPropertyConstant object) {
            aadlbaText.addOutput("#");
            if (object.getPropertySet() != null) {
                aadlbaText.addOutput(object.getPropertySet().getQualifiedName());
                aadlbaText.addOutput("::");
            }
            aadlbaText.addOutput(object.getProperty().getName());
            return DONE;
        }

        @Override
        public String casePropertySetPropertyReference(PropertySetPropertyReference object) {
            aadlbaText.addOutput("#");
            if (object.getPropertySet() != null) {
                aadlbaText.addOutput(object.getPropertySet().getQualifiedName());
                aadlbaText.addOutput("::");
            }
            processEList(object.getProperties(), ".");
            return DONE;
        }

        @Override
        public String caseClassifierPropertyReference(ClassifierPropertyReference object) {
            org.osate.aadl2.Classifier c = object.getClassifier();
            process(c, object);
            aadlbaText.addOutput("#");
            processEList(object.getProperties(), ".");
            return DONE;
        }

        @Override
        public String caseClassifierFeaturePropertyReference(ClassifierFeaturePropertyReference object) {
            process(object.getComponent());
            aadlbaText.addOutput("#");
            processEList(object.getProperties(), ".");
            return DONE;
        }

        @Override
        public String casePropertyNameHolder(PropertyNameHolder pnh) {
            PropertyElementHolder peh = pnh.getProperty();
            Element el = peh.getElement();
            if (el instanceof NamedElement) {
                aadlbaText.addOutput(((NamedElement) el).getName());
            } else if (el instanceof PropertyAssociation) {
                aadlbaText.addOutput(((PropertyAssociation) el).getProperty().getName());
            } else {
                String tmp = unparse((PropertyExpression) el);
                aadlbaText.addOutput(tmp);
            }
            if (pnh.getField() != null) {
                aadlbaText.addOutput(".");
                process(pnh.getField());
            } else if (peh.isSetArrayIndexes()) {
                caseArrayIndex(peh.getArrayIndexes());
            }
            return DONE;
        }

        @Override
        public String caseUpperBound(UpperBound object) {
            aadlbaText.addOutput("upper_bound");
            return DONE;
        }

        @Override
        public String caseLowerBound(LowerBound object) {
            aadlbaText.addOutput("lower_bound");
            return DONE;
        }
    };
}
Also used : ExecutionTimeoutCatch(org.osate.ba.aadlba.ExecutionTimeoutCatch) SubprogramCallAction(org.osate.ba.aadlba.SubprogramCallAction) BehaviorTime(org.osate.ba.aadlba.BehaviorTime) ClassifierPropertyReference(org.osate.ba.aadlba.ClassifierPropertyReference) DeclarativeBehaviorTransition(org.osate.ba.declarative.DeclarativeBehaviorTransition) DispatchTriggerLogicalExpression(org.osate.ba.aadlba.DispatchTriggerLogicalExpression) GroupableElement(org.osate.ba.aadlba.GroupableElement) TimedAction(org.osate.ba.aadlba.TimedAction) BehaviorIntegerLiteral(org.osate.ba.aadlba.BehaviorIntegerLiteral) BehaviorTransition(org.osate.ba.aadlba.BehaviorTransition) DeclarativeBehaviorTransition(org.osate.ba.declarative.DeclarativeBehaviorTransition) ArrayableIdentifier(org.osate.ba.declarative.ArrayableIdentifier) DataComponentReference(org.osate.ba.aadlba.DataComponentReference) SimpleExpression(org.osate.ba.aadlba.SimpleExpression) DispatchTriggerConditionStop(org.osate.ba.aadlba.DispatchTriggerConditionStop) IfStatement(org.osate.ba.aadlba.IfStatement) DataSubcomponentHolder(org.osate.ba.aadlba.DataSubcomponentHolder) QualifiedNamedElement(org.osate.ba.declarative.QualifiedNamedElement) Otherwise(org.osate.ba.aadlba.Otherwise) Identifier(org.osate.ba.declarative.Identifier) ArrayableIdentifier(org.osate.ba.declarative.ArrayableIdentifier) AbstractEnumerator(org.eclipse.emf.common.util.AbstractEnumerator) Enumerator(org.eclipse.emf.common.util.Enumerator) PortFreezeAction(org.osate.ba.aadlba.PortFreezeAction) UpperBound(org.osate.ba.aadlba.UpperBound) EObject(org.eclipse.emf.ecore.EObject) Factor(org.osate.ba.aadlba.Factor) PropertySetPropertyReference(org.osate.ba.aadlba.PropertySetPropertyReference) BehaviorState(org.osate.ba.aadlba.BehaviorState) BehaviorActionSet(org.osate.ba.aadlba.BehaviorActionSet) BinaryNumericOperator(org.osate.ba.aadlba.BinaryNumericOperator) ForOrForAllStatement(org.osate.ba.aadlba.ForOrForAllStatement) PropertyElementHolder(org.osate.ba.aadlba.PropertyElementHolder) IterativeVariable(org.osate.ba.aadlba.IterativeVariable) BehaviorAnnex(org.osate.ba.aadlba.BehaviorAnnex) AssignmentAction(org.osate.ba.aadlba.AssignmentAction) PortDequeueAction(org.osate.ba.aadlba.PortDequeueAction) LogicalOperator(org.osate.ba.aadlba.LogicalOperator) PortDequeueValue(org.osate.ba.aadlba.PortDequeueValue) ElementHolder(org.osate.ba.aadlba.ElementHolder) PropertyElementHolder(org.osate.ba.aadlba.PropertyElementHolder) Term(org.osate.ba.aadlba.Term) DeclarativeTime(org.osate.ba.declarative.DeclarativeTime) PortSendAction(org.osate.ba.aadlba.PortSendAction) DispatchCondition(org.osate.ba.aadlba.DispatchCondition) ElseStatement(org.osate.ba.aadlba.ElseStatement) BehaviorBooleanLiteral(org.osate.ba.aadlba.BehaviorBooleanLiteral) MultiplyingOperator(org.osate.ba.aadlba.MultiplyingOperator) LockAction(org.osate.ba.aadlba.LockAction) QualifiedNamedElement(org.osate.ba.declarative.QualifiedNamedElement) NamedElement(org.osate.aadl2.NamedElement) CompletionRelativeTimeout(org.osate.ba.aadlba.CompletionRelativeTimeout) IndexableElement(org.osate.ba.aadlba.IndexableElement) DispatchConjunction(org.osate.ba.aadlba.DispatchConjunction) LowerBound(org.osate.ba.aadlba.LowerBound) BehaviorVariable(org.osate.ba.aadlba.BehaviorVariable) PropertyAssociation(org.osate.aadl2.PropertyAssociation) QualifiedNamedElement(org.osate.ba.declarative.QualifiedNamedElement) NamedElement(org.osate.aadl2.NamedElement) Element(org.osate.aadl2.Element) BehaviorElement(org.osate.ba.aadlba.BehaviorElement) IndexableElement(org.osate.ba.aadlba.IndexableElement) GroupableElement(org.osate.ba.aadlba.GroupableElement) WhileOrDoUntilStatement(org.osate.ba.aadlba.WhileOrDoUntilStatement) PortHolder(org.osate.ba.aadlba.PortHolder) AbstractNamedValue(org.osate.aadl2.AbstractNamedValue) NamedValue(org.osate.aadl2.NamedValue) DataClassifier(org.osate.aadl2.DataClassifier) DataClassifier(org.osate.aadl2.DataClassifier) Any(org.osate.ba.aadlba.Any) DeclarativePropertyName(org.osate.ba.declarative.DeclarativePropertyName) PortCountValue(org.osate.ba.aadlba.PortCountValue) Relation(org.osate.ba.aadlba.Relation) BehaviorPropertyConstant(org.osate.ba.aadlba.BehaviorPropertyConstant) DeclarativeArrayDimension(org.osate.ba.declarative.DeclarativeArrayDimension) ClassifierFeaturePropertyReference(org.osate.ba.aadlba.ClassifierFeaturePropertyReference) BehaviorStringLiteral(org.osate.ba.aadlba.BehaviorStringLiteral) BehaviorRealLiteral(org.osate.ba.aadlba.BehaviorRealLiteral) Iterator(java.util.Iterator) BehaviorActionBlock(org.osate.ba.aadlba.BehaviorActionBlock) DeclarativePropertyReference(org.osate.ba.declarative.DeclarativePropertyReference) SharedDataAction(org.osate.ba.aadlba.SharedDataAction) CommAction(org.osate.ba.declarative.CommAction) IntegerRange(org.osate.ba.aadlba.IntegerRange) DeclarativePropertyReference(org.osate.ba.declarative.DeclarativePropertyReference) PropertySetPropertyReference(org.osate.ba.aadlba.PropertySetPropertyReference) ClassifierFeaturePropertyReference(org.osate.ba.aadlba.ClassifierFeaturePropertyReference) ClassifierPropertyReference(org.osate.ba.aadlba.ClassifierPropertyReference) Reference(org.osate.ba.declarative.Reference) DataComponentReference(org.osate.ba.aadlba.DataComponentReference) IntegerValue(org.osate.ba.aadlba.IntegerValue) PortFreshValue(org.osate.ba.aadlba.PortFreshValue) DispatchRelativeTimeout(org.osate.ba.aadlba.DispatchRelativeTimeout) PropertyNameHolder(org.osate.ba.aadlba.PropertyNameHolder) UnlockAction(org.osate.ba.aadlba.UnlockAction) ValueExpression(org.osate.ba.aadlba.ValueExpression) BinaryAddingOperator(org.osate.ba.aadlba.BinaryAddingOperator) BehaviorActionSequence(org.osate.ba.aadlba.BehaviorActionSequence) ArrayDimension(org.osate.aadl2.ArrayDimension) DeclarativeArrayDimension(org.osate.ba.declarative.DeclarativeArrayDimension)

Example 33 with StringLiteral

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

the class AadlBaParserVisitor method clonePropertyExpression.

private PropertyExpression clonePropertyExpression(PropertyExpression sourcePropertyExpression) {
    PropertyExpression targetPropertyExpression = null;
    if (sourcePropertyExpression instanceof ListValue) {
        ListValue sourceLV = (ListValue) sourcePropertyExpression;
        ListValue targetLV = _coreFact.createListValue();
        for (PropertyExpression propInList : sourceLV.getOwnedListElements()) {
            targetLV.getOwnedListElements().add(clonePropertyExpression(propInList));
        }
        targetPropertyExpression = targetLV;
    } else if (sourcePropertyExpression instanceof StringLiteral) {
        StringLiteral sourceSL = (StringLiteral) sourcePropertyExpression;
        StringLiteral targetSL = _coreFact.createStringLiteral();
        targetSL.setValue(sourceSL.getValue());
        targetPropertyExpression = targetSL;
    } else if (sourcePropertyExpression instanceof IntegerLiteral) {
        IntegerLiteral sourceIL = (IntegerLiteral) sourcePropertyExpression;
        IntegerLiteral targetIL = _coreFact.createIntegerLiteral();
        targetIL.setValue(sourceIL.getValue());
        targetIL.setUnit(sourceIL.getUnit());
        targetPropertyExpression = targetIL;
    } else if (sourcePropertyExpression instanceof RealLiteral) {
        RealLiteral sourceRL = (RealLiteral) sourcePropertyExpression;
        RealLiteral targetRL = _coreFact.createRealLiteral();
        targetRL.setValue(sourceRL.getValue());
        targetRL.setUnit(sourceRL.getUnit());
        targetPropertyExpression = targetRL;
    } else if (sourcePropertyExpression instanceof RecordValue) {
        RecordValue sourceRV = (RecordValue) sourcePropertyExpression;
        RecordValue targetRV = _coreFact.createRecordValue();
        targetRV.getOwnedFieldValues().addAll(sourceRV.getOwnedFieldValues());
        targetPropertyExpression = targetRV;
    } else if (sourcePropertyExpression instanceof BooleanLiteral) {
        BooleanLiteral sourceBL = (BooleanLiteral) sourcePropertyExpression;
        BooleanLiteral targetBL = _coreFact.createBooleanLiteral();
        targetBL.setValue(sourceBL.getValue());
        targetPropertyExpression = targetBL;
    } else if (sourcePropertyExpression instanceof RangeValue) {
        RangeValue sourceRV = (RangeValue) sourcePropertyExpression;
        RangeValue targetRV = _coreFact.createRangeValue();
        targetRV.setMinimum(clonePropertyExpression(sourceRV.getMinimum()));
        targetRV.setMaximum(clonePropertyExpression(sourceRV.getMaximum()));
        targetPropertyExpression = targetRV;
    } else if (sourcePropertyExpression instanceof DeclarativeReferenceValue) {
        DeclarativeReferenceValue sourceDRV = (DeclarativeReferenceValue) sourcePropertyExpression;
        ReferenceValue targetRV = _coreFact.createReferenceValue();
        targetRV.setPath(sourceDRV.getRef());
        targetPropertyExpression = targetRV;
    } else if (sourcePropertyExpression instanceof DeclarativeClassifierValue) {
        DeclarativeClassifierValue sourceDCV = (DeclarativeClassifierValue) sourcePropertyExpression;
        ClassifierValue targetCV = _coreFact.createClassifierValue();
        targetCV.setClassifier(sourceDCV.getClassifier());
        targetPropertyExpression = targetCV;
    }
    return targetPropertyExpression;
}
Also used : RealLiteral(org.osate.aadl2.RealLiteral) BehaviorRealLiteral(org.osate.ba.aadlba.BehaviorRealLiteral) ClassifierValue(org.osate.aadl2.ClassifierValue) DeclarativeClassifierValue(org.osate.ba.declarative.DeclarativeClassifierValue) BehaviorStringLiteral(org.osate.ba.aadlba.BehaviorStringLiteral) StringLiteral(org.osate.aadl2.StringLiteral) DeclarativeReferenceValue(org.osate.ba.declarative.DeclarativeReferenceValue) BehaviorBooleanLiteral(org.osate.ba.aadlba.BehaviorBooleanLiteral) BooleanLiteral(org.osate.aadl2.BooleanLiteral) DeclarativeReferenceValue(org.osate.ba.declarative.DeclarativeReferenceValue) ReferenceValue(org.osate.aadl2.ReferenceValue) DeclarativeClassifierValue(org.osate.ba.declarative.DeclarativeClassifierValue) ListValue(org.osate.aadl2.ListValue) RecordValue(org.osate.aadl2.RecordValue) PropertyExpression(org.osate.aadl2.PropertyExpression) DeclarativePropertyExpression(org.osate.ba.declarative.DeclarativePropertyExpression) IntegerLiteral(org.osate.aadl2.IntegerLiteral) BehaviorIntegerLiteral(org.osate.ba.aadlba.BehaviorIntegerLiteral) RangeValue(org.osate.aadl2.RangeValue)

Example 34 with StringLiteral

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

the class AadlBaUnparser method unparse.

// This is very specific to AADL BA. It cannot be used elsewhere.
private static String unparse(PropertyExpression pe) {
    int type = pe.eClass().getClassifierID();
    String result = "";
    switch(type) {
        case Aadl2Package.STRING_LITERAL:
            {
                // TODO: Should quotes be added there?
                result = ((StringLiteral) pe).getValue();
                break;
            }
        case Aadl2Package.LIST_VALUE:
        case Aadl2Package.REAL_LITERAL:
        case Aadl2Package.BOOLEAN_LITERAL:
        case Aadl2Package.NUMBER_VALUE:
        case Aadl2Package.INTEGER_LITERAL:
        case Aadl2Package.RECORD_VALUE:
        case Aadl2Package.RANGE_VALUE:
            {
                BasicProperty container = PropertyUtils.getContainingProperty(pe);
                result = container.getName();
                break;
            }
        case Aadl2Package.NAMED_VALUE:
            {
                NamedValue nv = (NamedValue) pe;
                AbstractNamedValue anv = nv.getNamedValue();
                if (anv instanceof PropertyExpression) {
                    result = unparse((PropertyExpression) anv);
                } else if (anv instanceof EnumerationLiteral) {
                    BasicProperty container = PropertyUtils.getContainingProperty(pe);
                    result = container.getName();
                    break;
                } else {
                    String msg = anv.getClass().getSimpleName() + " is not supported (in NamedValue)";
                    System.err.println(msg);
                    throw new UnsupportedOperationException(msg);
                }
                break;
            }
        default:
            {
                String msg = "unparsing " + pe.getClass().getSimpleName() + " is not supported yet";
                System.err.println(msg);
                throw new UnsupportedOperationException(msg);
            }
    }
    return result;
}
Also used : BasicProperty(org.osate.aadl2.BasicProperty) BehaviorStringLiteral(org.osate.ba.aadlba.BehaviorStringLiteral) StringLiteral(org.osate.aadl2.StringLiteral) AbstractNamedValue(org.osate.aadl2.AbstractNamedValue) AbstractNamedValue(org.osate.aadl2.AbstractNamedValue) NamedValue(org.osate.aadl2.NamedValue) PropertyExpression(org.osate.aadl2.PropertyExpression) EnumerationLiteral(org.osate.aadl2.EnumerationLiteral)

Example 35 with StringLiteral

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

the class PropertyUtils method getStringListValue.

/**
 * Extract String list value from a specified property. May return null.
 *
 * @param i
 *            component instance.
 * @param propertyName
 *            property name.
 * @return property value.
 */
public static List<String> getStringListValue(NamedElement i, String propertyName) {
    List<String> res = new ArrayList<String>();
    PropertyAssociation pa = findPropertyAssociation(propertyName, i);
    if (pa != null) {
        Property p = pa.getProperty();
        if (p.getName().equalsIgnoreCase(propertyName)) {
            List<ModalPropertyValue> values = pa.getOwnedValues();
            if (values.size() == 1) {
                ModalPropertyValue v = values.get(0);
                PropertyExpression expr = v.getOwnedValue();
                if (expr instanceof ListValue) {
                    ListValue lv = (ListValue) expr;
                    for (PropertyExpression pe : lv.getOwnedListElements()) {
                        if (pe instanceof StringLiteral) {
                            StringLiteral sl = (StringLiteral) pe;
                            res.add(sl.getValue());
                        } else if (pe instanceof NamedValue) {
                            NamedValue nv = (NamedValue) pe;
                            if (nv.getNamedValue() instanceof EnumerationLiteral) {
                                EnumerationLiteral el = (EnumerationLiteral) nv.getNamedValue();
                                res.add(el.getName());
                            }
                        }
                    }
                    if (!res.isEmpty()) {
                        return res;
                    }
                }
            }
        }
    }
    return null;
}
Also used : ModalPropertyValue(org.osate.aadl2.ModalPropertyValue) StringLiteral(org.osate.aadl2.StringLiteral) PropertyAssociation(org.osate.aadl2.PropertyAssociation) BasicPropertyAssociation(org.osate.aadl2.BasicPropertyAssociation) ListValue(org.osate.aadl2.ListValue) ArrayList(java.util.ArrayList) PropertyExpression(org.osate.aadl2.PropertyExpression) NamedValue(org.osate.aadl2.NamedValue) AbstractNamedValue(org.osate.aadl2.AbstractNamedValue) BasicProperty(org.osate.aadl2.BasicProperty) Property(org.osate.aadl2.Property) EnumerationLiteral(org.osate.aadl2.EnumerationLiteral)

Aggregations

StringLiteral (org.osate.aadl2.StringLiteral)42 PropertyExpression (org.osate.aadl2.PropertyExpression)37 Property (org.osate.aadl2.Property)32 ListValue (org.osate.aadl2.ListValue)24 PropertyNotPresentException (org.osate.aadl2.properties.PropertyNotPresentException)19 BooleanLiteral (org.osate.aadl2.BooleanLiteral)18 IntegerLiteral (org.osate.aadl2.IntegerLiteral)17 RealLiteral (org.osate.aadl2.RealLiteral)17 NamedValue (org.osate.aadl2.NamedValue)16 RecordValue (org.osate.aadl2.RecordValue)14 BasicPropertyAssociation (org.osate.aadl2.BasicPropertyAssociation)13 ClassifierValue (org.osate.aadl2.ClassifierValue)13 RangeValue (org.osate.aadl2.RangeValue)12 PropertyAssociation (org.osate.aadl2.PropertyAssociation)11 EPackage (org.eclipse.emf.ecore.EPackage)10 Action (org.eclipse.xtext.Action)10 Parameter (org.eclipse.xtext.Parameter)10 ParserRule (org.eclipse.xtext.ParserRule)10 ContainmentPathElement (org.osate.aadl2.ContainmentPathElement)10 ModalPropertyValue (org.osate.aadl2.ModalPropertyValue)10