Search in sources :

Example 1 with LPort

use of com.ge.research.osate.verdict.dsl.verdict.LPort in project VERDICT by ge-high-assurance.

the class WzrdTableLoader method getTableRow.

// Store existing cyber-relation into a data-structure
private WzrdTableRow getTableRow(Statement stmt) {
    WzrdTableRow tableRow = new WzrdTableRow();
    tableRow.setFormulaID(stmt.getId());
    tableRow.setNewRow(false);
    tableRow.setComment(((CyberRelImpl) stmt).getComment());
    tableRow.setDescription(((CyberRelImpl) stmt).getDescription());
    // tableRow.setExternal(((CyberRelImpl) stmt).getExternal());
    // tableRow.setPhase(((CyberRelImpl) stmt).getPhases());
    List<EObject> objList = stmt.eContents();
    for (int j = 0; j < objList.size(); j++) {
        EObject objInst = objList.get(j);
        if (objInst instanceof CyberRelOutputLogic) {
            CyberRelOutputLogic rhs = (CyberRelOutputLogic) objInst;
            LPort lp = rhs.getValue();
            tableRow.setFirstElement(drpdn.findIndex(drpdn.outPorts, lp.getPort()));
            tableRow.setSecondElement(drpdn.findIndex(drpdn.CIA_ABBREV, lp.getCia().getLiteral()));
        } else if (objInst instanceof CyberRelInputLogic) {
            ISerializer serializer = VerdictActivator.getInstance().getInjector(VerdictUiModule.INJECTOR_NAME).getInstance(VerdictSerializer.class);
            tableRow.setThirdElement(serializer.serialize(objInst));
        }
    }
    if (tableRow.getThirdElement() == null) {
        tableRow.setThirdElement("TRUE");
    }
    return tableRow;
}
Also used : EObject(org.eclipse.emf.ecore.EObject) CyberRelOutputLogic(com.ge.research.osate.verdict.dsl.verdict.CyberRelOutputLogic) LPort(com.ge.research.osate.verdict.dsl.verdict.LPort) CyberRelInputLogic(com.ge.research.osate.verdict.dsl.verdict.CyberRelInputLogic) ISerializer(org.eclipse.xtext.serializer.ISerializer) VerdictSerializer(com.ge.research.osate.verdict.dsl.serializer.VerdictSerializer)

Example 2 with LPort

use of com.ge.research.osate.verdict.dsl.verdict.LPort in project VERDICT by ge-high-assurance.

the class Aadl2Vdm method handleAndCyberExpr.

/**
 * to handle LAnd expressions while creating a CyberExpr object
 * @param andExpr
 * @param allPortNames
 * @param allPortCIAs
 * @return
 */
verdict.vdm.vdm_model.CyberExpr handleAndCyberExpr(LAnd andExpr, List<String> allPortNames, List<String> allPortCIAs) {
    // to pack this CyberExpr
    verdict.vdm.vdm_model.CyberExpr packCyberExpr = new verdict.vdm.vdm_model.CyberExpr();
    if (andExpr.getExprs().size() == 1) {
        // Is a Port or a Not
        LExpr subAndExpr = andExpr.getExprs().get(0);
        if (subAndExpr instanceof LPort) {
            verdict.vdm.vdm_model.CIAPort port = handleCIAPort(subAndExpr, allPortNames, allPortCIAs);
            // setting "port" field of packCyberExp
            packCyberExpr.setPort(port);
        } else if (subAndExpr instanceof LNot) {
            verdict.vdm.vdm_model.CyberExprKind kind = verdict.vdm.vdm_model.CyberExprKind.fromValue("Not");
            // setting "kind" of expression
            packCyberExpr.setKind(kind);
            // send to handler for not expressions
            verdict.vdm.vdm_model.CyberExpr packNotCyberExpr = handleNotCyberExpr((LNot) subAndExpr, allPortNames, allPortCIAs);
            // set the "not" of packCyberExpr
            packCyberExpr.setNot(packNotCyberExpr);
        } else if (subAndExpr instanceof LOr) {
            /**
             * If it is a single conjunct, just send it to handleOrCyberExpr
             * and return the same package returned by handleAndCyberExpr
             */
            packCyberExpr = handleOrCyberExpr(subAndExpr, allPortNames, allPortCIAs);
        }
    } else if (andExpr.getExprs().size() > 1) {
        // collection of conjuncts
        verdict.vdm.vdm_model.CyberExprKind kind = verdict.vdm.vdm_model.CyberExprKind.fromValue("And");
        // setting "kind" of expression
        packCyberExpr.setKind(kind);
        // to pack all conjunct subexpressions in a single list
        verdict.vdm.vdm_model.CyberExprList packOrList = new verdict.vdm.vdm_model.CyberExprList();
        for (LExpr expr : andExpr.getExprs()) {
            // for each conjunct (each disjunct is a LExpr)
            // to pack the CyberExpr for this conjunct
            verdict.vdm.vdm_model.CyberExpr packConjunctCyberExpr = handleOrCyberExpr(expr, allPortNames, allPortCIAs);
            // adding to the list of conjuncts
            packOrList.getExpr().add(packConjunctCyberExpr);
        }
        // setting the "or" field of packCyberExpr
        packCyberExpr.setAnd(packOrList);
    }
    return packCyberExpr;
}
Also used : LNot(com.ge.research.osate.verdict.dsl.verdict.LNot) SLNot(com.ge.research.osate.verdict.dsl.verdict.SLNot) LOr(com.ge.research.osate.verdict.dsl.verdict.LOr) SLOr(com.ge.research.osate.verdict.dsl.verdict.SLOr) SLExpr(com.ge.research.osate.verdict.dsl.verdict.SLExpr) LExpr(com.ge.research.osate.verdict.dsl.verdict.LExpr) SLPort(com.ge.research.osate.verdict.dsl.verdict.SLPort) LPort(com.ge.research.osate.verdict.dsl.verdict.LPort)

Example 3 with LPort

use of com.ge.research.osate.verdict.dsl.verdict.LPort in project VERDICT by ge-high-assurance.

the class Aadl2CsvTranslator method extractPortsFromAndExpr.

void extractPortsFromAndExpr(LAnd andExpr, List<String> allPortNames, List<String> allPortCIAs) {
    StringBuilder portEventNames = new StringBuilder();
    StringBuilder cias = new StringBuilder();
    for (int i = 0; i < andExpr.getExprs().size(); ++i) {
        LExpr subAndExpr = andExpr.getExprs().get(i);
        if (subAndExpr instanceof LPort) {
            portEventNames.append(((LPort) subAndExpr).getPort());
            cias.append(convertAbbreviation(((LPort) subAndExpr).getCia().getLiteral()));
        // We probably need to change this to support nested conjunction expressions
        } else {
            throw new RuntimeException("MBAA does not support parsing nested safety relation expression: " + subAndExpr);
        }
        if (i < andExpr.getExprs().size() - 1) {
            portEventNames.append(";");
            cias.append(";");
        }
    }
    allPortNames.add(portEventNames.toString());
    allPortCIAs.add(cias.toString());
}
Also used : SLExpr(com.ge.research.osate.verdict.dsl.verdict.SLExpr) LExpr(com.ge.research.osate.verdict.dsl.verdict.LExpr) SLPort(com.ge.research.osate.verdict.dsl.verdict.SLPort) LPort(com.ge.research.osate.verdict.dsl.verdict.LPort)

Example 4 with LPort

use of com.ge.research.osate.verdict.dsl.verdict.LPort in project VERDICT by ge-high-assurance.

the class Aadl2Vdm method handleOrCyberExpr.

/**
 * to handle LOr expressions while creating a CyberExpr object
 * @param orExpr
 * @param allPortNames
 * @param allPortCIAs
 * @return
 */
verdict.vdm.vdm_model.CyberExpr handleOrCyberExpr(LExpr orExpr, List<String> allPortNames, List<String> allPortCIAs) {
    // to pack this CyberExpr
    verdict.vdm.vdm_model.CyberExpr packCyberExpr = new verdict.vdm.vdm_model.CyberExpr();
    if (orExpr instanceof LPort) {
        verdict.vdm.vdm_model.CIAPort port = handleCIAPort(orExpr, allPortNames, allPortCIAs);
        // setting "port" field of packCyberExp
        packCyberExpr.setPort(port);
    } else if (orExpr instanceof LNot) {
        verdict.vdm.vdm_model.CyberExprKind kind = verdict.vdm.vdm_model.CyberExprKind.fromValue("Not");
        // setting "kind" of expression
        packCyberExpr.setKind(kind);
        // send to handler for Not expression
        verdict.vdm.vdm_model.CyberExpr packNotCyberExpr = handleNotCyberExpr((LNot) orExpr, allPortNames, allPortCIAs);
        // set the "not" of packCyberExpr
        packCyberExpr.setNot(packNotCyberExpr);
    } else if (((LOr) orExpr).getExprs().size() == 1) {
        // Is a solo disjunct
        /**
         * If it is a single disjunct, just send it to handleAndCyberExpr
         * and return the same package returned by handleAndCyberExpr
         */
        LAnd soloAndExpr = ((LOr) orExpr).getExprs().get(0);
        packCyberExpr = handleAndCyberExpr(soloAndExpr, allPortNames, allPortCIAs);
    } else if (((LOr) orExpr).getExprs().size() > 1) {
        verdict.vdm.vdm_model.CyberExprKind kind = verdict.vdm.vdm_model.CyberExprKind.fromValue("Or");
        // setting "kind" of expression
        packCyberExpr.setKind(kind);
        // to pack all disjunct subexpressions in a single list
        verdict.vdm.vdm_model.CyberExprList packAndList = new verdict.vdm.vdm_model.CyberExprList();
        for (LAnd andExpr : ((LOr) orExpr).getExprs()) {
            // for each disjunct (each disjunct is a LAnd)
            // to pack the CyberExpr for this disjunct
            verdict.vdm.vdm_model.CyberExpr packDisjunctCyberExpr = handleAndCyberExpr(andExpr, allPortNames, allPortCIAs);
            // adding to the list of disjuncts
            packAndList.getExpr().add(packDisjunctCyberExpr);
        }
        // setting the "and" field of packCyberExpr
        packCyberExpr.setOr(packAndList);
    }
    return packCyberExpr;
}
Also used : LNot(com.ge.research.osate.verdict.dsl.verdict.LNot) SLNot(com.ge.research.osate.verdict.dsl.verdict.SLNot) LAnd(com.ge.research.osate.verdict.dsl.verdict.LAnd) SLAnd(com.ge.research.osate.verdict.dsl.verdict.SLAnd) LOr(com.ge.research.osate.verdict.dsl.verdict.LOr) SLOr(com.ge.research.osate.verdict.dsl.verdict.SLOr) SLPort(com.ge.research.osate.verdict.dsl.verdict.SLPort) LPort(com.ge.research.osate.verdict.dsl.verdict.LPort)

Aggregations

LPort (com.ge.research.osate.verdict.dsl.verdict.LPort)4 SLPort (com.ge.research.osate.verdict.dsl.verdict.SLPort)3 LExpr (com.ge.research.osate.verdict.dsl.verdict.LExpr)2 LNot (com.ge.research.osate.verdict.dsl.verdict.LNot)2 LOr (com.ge.research.osate.verdict.dsl.verdict.LOr)2 SLExpr (com.ge.research.osate.verdict.dsl.verdict.SLExpr)2 SLNot (com.ge.research.osate.verdict.dsl.verdict.SLNot)2 SLOr (com.ge.research.osate.verdict.dsl.verdict.SLOr)2 VerdictSerializer (com.ge.research.osate.verdict.dsl.serializer.VerdictSerializer)1 CyberRelInputLogic (com.ge.research.osate.verdict.dsl.verdict.CyberRelInputLogic)1 CyberRelOutputLogic (com.ge.research.osate.verdict.dsl.verdict.CyberRelOutputLogic)1 LAnd (com.ge.research.osate.verdict.dsl.verdict.LAnd)1 SLAnd (com.ge.research.osate.verdict.dsl.verdict.SLAnd)1 EObject (org.eclipse.emf.ecore.EObject)1 ISerializer (org.eclipse.xtext.serializer.ISerializer)1