use of com.ge.research.osate.verdict.dsl.verdict.SLAnd in project VERDICT by ge-high-assurance.
the class Aadl2Vdm method handleOrSafetyReqExpr.
/**
* to handle LOr expressions while creating a SafetyReqExpr object
* @param orExpr
* @param allPortNames
* @param allPortCIAs
* @return
*/
verdict.vdm.vdm_model.SafetyReqExpr handleOrSafetyReqExpr(SLExpr orExpr, List<String> allPortNames, List<String> allPortCIAs) {
// to pack this SafetyReqExpr
verdict.vdm.vdm_model.SafetyReqExpr packSafetyReqExpr = new verdict.vdm.vdm_model.SafetyReqExpr();
if (orExpr instanceof SLPort) {
verdict.vdm.vdm_model.IAPort port = handleIAPort(orExpr, allPortNames, allPortCIAs);
// setting "port" field of packSafetyReqExp
packSafetyReqExpr.setPort(port);
} else if (orExpr instanceof SLNot) {
verdict.vdm.vdm_model.SafetyReqExprKind kind = verdict.vdm.vdm_model.SafetyReqExprKind.fromValue("Not");
// setting "kind" of expression
packSafetyReqExpr.setKind(kind);
// to pack the SafetyReqExpr for the Not
verdict.vdm.vdm_model.SafetyReqExpr packNotCyberExpr = handleNotSafetyReqExpr((SLNot) orExpr, allPortNames, allPortCIAs);
// set the "not" of packSafetyReqExpr
packSafetyReqExpr.setNot(packNotCyberExpr);
} else if (((SLOr) 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
*/
SLAnd soloAndExpr = ((SLOr) orExpr).getExprs().get(0);
packSafetyReqExpr = handleAndSafetyReqExpr(soloAndExpr, allPortNames, allPortCIAs);
} else if (((SLOr) orExpr).getExprs().size() > 1) {
verdict.vdm.vdm_model.SafetyReqExprKind kind = verdict.vdm.vdm_model.SafetyReqExprKind.fromValue("Or");
// setting "kind" of expression
packSafetyReqExpr.setKind(kind);
// to pack all disjunct subexpressions in a single list
verdict.vdm.vdm_model.SafetyReqExprList packAndList = new verdict.vdm.vdm_model.SafetyReqExprList();
for (SLAnd andExpr : ((SLOr) orExpr).getExprs()) {
// for each disjunct (each disjunct is a LAnd)
// to pack the SafetyReqExpr for this disjunct
verdict.vdm.vdm_model.SafetyReqExpr packDisjunctSafetyReqExpr = handleAndSafetyReqExpr(andExpr, allPortNames, allPortCIAs);
// adding to the list of disjuncts
packAndList.getExpr().add(packDisjunctSafetyReqExpr);
}
// setting the "and" field of packSafetyReqExpr
packSafetyReqExpr.setOr(packAndList);
}
return packSafetyReqExpr;
}
use of com.ge.research.osate.verdict.dsl.verdict.SLAnd in project VERDICT by ge-high-assurance.
the class Aadl2Vdm method createVdmSafetyRelExpr.
/**
* creates a Vdm SafetyRelExpr object and returns
* @param expr
* @return
*/
verdict.vdm.vdm_model.SafetyRelExpr createVdmSafetyRelExpr(SLExpr expr) {
// to pack the SafetyRelExpr and return
verdict.vdm.vdm_model.SafetyRelExpr packSafetyRelExpr = new verdict.vdm.vdm_model.SafetyRelExpr();
// ---------variables for testing---- will remove when testing is over
List<String> allPortNames = new ArrayList<>();
List<String> allPortCIAs = new ArrayList<>();
if (expr instanceof SLOr) {
// HAS to be an LOr since LExpr can only be an LOr
if (((SLOr) expr).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
*/
SLAnd soloAndExpr = ((SLOr) expr).getExprs().get(0);
packSafetyRelExpr = handleAndSafetyRelExpr(soloAndExpr, allPortNames, allPortCIAs);
} else if (((SLOr) expr).getExprs().size() > 1) {
verdict.vdm.vdm_model.SafetyRelExprKind kind = verdict.vdm.vdm_model.SafetyRelExprKind.fromValue("Or");
// setting "kind" of expression
packSafetyRelExpr.setKind(kind);
// to pack all disjunct subexpressions in a single list
verdict.vdm.vdm_model.SafetyRelExprList packAndList = new verdict.vdm.vdm_model.SafetyRelExprList();
for (SLAnd andExpr : ((SLOr) expr).getExprs()) {
// for each disjunct (each disjunct is a LAnd)
// to pack the SafetyRelExpr for this disjunct
verdict.vdm.vdm_model.SafetyRelExpr packDisjunctSafetyRelExpr = handleAndSafetyRelExpr(andExpr, allPortNames, allPortCIAs);
// adding to the list of disjuncts
packAndList.getExpr().add(packDisjunctSafetyRelExpr);
}
// setting the "and" field of packSafetyRelExpr
packSafetyRelExpr.setOr(packAndList);
}
} else {
// Should never occur, but keeping for sanity
throw new RuntimeException("Warning -- LExpr should be an LOr");
}
return packSafetyRelExpr;
}
use of com.ge.research.osate.verdict.dsl.verdict.SLAnd in project VERDICT by ge-high-assurance.
the class Aadl2Vdm method createVdmSafetyReqExpr.
/**
* creates a Vdm SafetyReqExpr object and returns
* @param expr
* @return
*/
verdict.vdm.vdm_model.SafetyReqExpr createVdmSafetyReqExpr(SLExpr expr) {
// to pack the SafetyReqExpr and return
verdict.vdm.vdm_model.SafetyReqExpr packSafetyReqExpr = new verdict.vdm.vdm_model.SafetyReqExpr();
// ---------variables for debugging
List<String> allPortNames = new ArrayList<>();
List<String> allPortCIAs = new ArrayList<>();
if (expr instanceof SLOr) {
// HAS to be an LOr since SLExpr can only be an SLOr
if (((SLOr) expr).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
*/
SLAnd soloAndExpr = ((SLOr) expr).getExprs().get(0);
packSafetyReqExpr = handleAndSafetyReqExpr(soloAndExpr, allPortNames, allPortCIAs);
} else if (((SLOr) expr).getExprs().size() > 1) {
verdict.vdm.vdm_model.SafetyReqExprKind kind = verdict.vdm.vdm_model.SafetyReqExprKind.fromValue("Or");
// setting "kind" of expression
packSafetyReqExpr.setKind(kind);
// to pack all disjunct subexpressions in a single list
verdict.vdm.vdm_model.SafetyReqExprList packAndList = new verdict.vdm.vdm_model.SafetyReqExprList();
for (SLAnd andExpr : ((SLOr) expr).getExprs()) {
// for each disjunct (each disjunct is a LAnd)
// to pack the SafetyReqExpr for this disjunct
verdict.vdm.vdm_model.SafetyReqExpr packDisjunctSafetyReqExpr = handleAndSafetyReqExpr(andExpr, allPortNames, allPortCIAs);
// adding to the list of disjuncts
packAndList.getExpr().add(packDisjunctSafetyReqExpr);
}
// setting the "and" field of packSafetyReq
packSafetyReqExpr.setOr(packAndList);
}
} else {
// Should never occur, but keeping for sanity
throw new RuntimeException("Warning -- LExpr should be an LOr");
}
return packSafetyReqExpr;
}
use of com.ge.research.osate.verdict.dsl.verdict.SLAnd in project VERDICT by ge-high-assurance.
the class Aadl2Vdm method handleOrSafetyRelExpr.
/**
* to handle LOr expressions while creating a SafetyRelExpr object
* @param orExpr
* @param allPortNames
* @param allPortCIAs
* @return
*/
verdict.vdm.vdm_model.SafetyRelExpr handleOrSafetyRelExpr(SLExpr orExpr, List<String> allPortNames, List<String> allPortCIAs) {
// to pack this SafetyRelExpr
verdict.vdm.vdm_model.SafetyRelExpr packSafetyRelExpr = new verdict.vdm.vdm_model.SafetyRelExpr();
if (orExpr instanceof SLPort) {
verdict.vdm.vdm_model.IAPort port = handleIAPort(orExpr, allPortNames, allPortCIAs);
// setting "port" field of packSafetyRelExpr
packSafetyRelExpr.setPort(port);
} else if (orExpr instanceof SLNot) {
verdict.vdm.vdm_model.SafetyRelExprKind kind = verdict.vdm.vdm_model.SafetyRelExprKind.fromValue("Not");
// setting "kind" of expression
packSafetyRelExpr.setKind(kind);
// to pack the SafetyRelExpr for the Not
verdict.vdm.vdm_model.SafetyRelExpr packNotCyberExpr = handleNotSafetyRelExpr((SLNot) orExpr, allPortNames, allPortCIAs);
// set the "not" of packSafetyRelExpr
packSafetyRelExpr.setNot(packNotCyberExpr);
} else if (orExpr instanceof FExpr) {
verdict.vdm.vdm_model.EventHappens fault = handleEventHappens(orExpr, allPortNames, allPortCIAs);
// setting "port" field of packSafetyRelExpr
packSafetyRelExpr.setFault(fault);
} else if (((SLOr) 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
*/
SLAnd soloAndExpr = ((SLOr) orExpr).getExprs().get(0);
packSafetyRelExpr = handleAndSafetyRelExpr(soloAndExpr, allPortNames, allPortCIAs);
} else if (((SLOr) orExpr).getExprs().size() > 1) {
verdict.vdm.vdm_model.SafetyRelExprKind kind = verdict.vdm.vdm_model.SafetyRelExprKind.fromValue("Or");
// setting "kind" of expression
packSafetyRelExpr.setKind(kind);
// to pack all disjunct subexpressions in a single list
verdict.vdm.vdm_model.SafetyRelExprList packAndList = new verdict.vdm.vdm_model.SafetyRelExprList();
for (SLAnd andExpr : ((SLOr) orExpr).getExprs()) {
// for each disjunct (each disjunct is a LAnd)
// to pack the SafetyRelExprfor this disjunct
verdict.vdm.vdm_model.SafetyRelExpr packDisjunctSafetyRelExpr = handleAndSafetyRelExpr(andExpr, allPortNames, allPortCIAs);
// adding to the list of disjuncts
packAndList.getExpr().add(packDisjunctSafetyRelExpr);
}
// setting the "and" field of packSafetyRelExpr
packSafetyRelExpr.setOr(packAndList);
}
return packSafetyRelExpr;
}
Aggregations