use of com.google.api.expr.v1alpha1.ListValue in project osate2 by osate.
the class Sei method getProtocolqos.
public static Optional<List<Protocolqostype>> getProtocolqos(NamedElement lookupContext, Optional<Mode> mode) {
Property property = getProtocolqos_Property(lookupContext);
try {
PropertyExpression value = CodeGenUtil.lookupProperty(property, lookupContext, mode);
PropertyExpression resolved = CodeGenUtil.resolveNamedValue(value, lookupContext, mode);
return Optional.of(((ListValue) resolved).getOwnedListElements().stream().map(element1 -> {
PropertyExpression resolved1 = CodeGenUtil.resolveNamedValue(element1, lookupContext, mode);
return Protocolqostype.valueOf(resolved1);
}).collect(Collectors.toList()));
} catch (PropertyNotPresentException e) {
return Optional.empty();
}
}
use of com.google.api.expr.v1alpha1.ListValue in project osate2 by osate.
the class FHAReport method reportHazardProperty.
protected void reportHazardProperty(InstanceObject ci, List<EMV2PropertyAssociation> PAList, List<EMV2PropertyAssociation> SevList, List<EMV2PropertyAssociation> LikeList, NamedElement target, TypeSet ts, Element localContext, WriteToFile report) {
String targetName;
if (PAList.isEmpty()) {
return;
}
if (target == null) {
targetName = "";
} else {
targetName = EMV2Util.getPrintName(target);
if (target instanceof ErrorEvent) {
targetName = "event " + targetName;
}
if (target instanceof ErrorBehaviorState) {
targetName = "state " + targetName;
}
}
for (EMV2PropertyAssociation PA : PAList) {
for (ModalPropertyValue modalPropertyValue : PA.getOwnedValues()) {
PropertyExpression peVal = modalPropertyValue.getOwnedValue();
ListValue lv = (ListValue) peVal;
for (PropertyExpression pe : lv.getOwnedListElements()) {
EList<BasicPropertyAssociation> fields = ((RecordValue) pe).getOwnedFieldValues();
if (ts != null) {
// do smaller of ts or hazard type set.
EList<EMV2Path> epathlist = PA.getEmv2Path();
for (EMV2Path ep : epathlist) {
ErrorTypes et = EMV2Util.getErrorType(ep);
ErrorTypes targettype = ts;
if (et != null && EMV2TypeSetUtil.contains(ts, et)) {
targettype = et;
}
List<EMV2PropertyAssociation> Sevs = EMV2Properties.getSeverityProperty(ci, target, et);
List<EMV2PropertyAssociation> Likes = EMV2Properties.getLikelihoodProperty(ci, target, et);
EMV2PropertyAssociation Sev = Sevs.isEmpty() ? null : Sevs.get(0);
EMV2PropertyAssociation Like = Likes.isEmpty() ? null : Likes.get(0);
PropertyExpression severityValue = EMV2Properties.getPropertyValue(Sev);
PropertyExpression likelihoodValue = EMV2Properties.getPropertyValue(Like);
if (targettype instanceof TypeSet) {
for (TypeToken token : ((TypeSet) targettype).getTypeTokens()) {
reportFHAEntry(report, fields, severityValue, likelihoodValue, ci, targetName, EMV2Util.getName(token));
}
} else {
reportFHAEntry(report, fields, severityValue, likelihoodValue, ci, targetName, EMV2Util.getName(targettype));
}
}
} else {
// did not have a type set. Let's use fmr (state of type set as failure mode.
EMV2PropertyAssociation Sev = SevList.isEmpty() ? null : SevList.get(0);
EMV2PropertyAssociation Like = LikeList.isEmpty() ? null : LikeList.get(0);
PropertyExpression severityValue = EMV2Properties.getPropertyValue(Sev);
PropertyExpression likelihoodValue = EMV2Properties.getPropertyValue(Like);
if (localContext == null) {
reportFHAEntry(report, fields, severityValue, likelihoodValue, ci, targetName, "");
} else {
reportFHAEntry(report, fields, severityValue, likelihoodValue, ci, EMV2Util.getPrintName(localContext), EMV2Util.getPrintName(target));
}
}
}
}
}
}
use of com.google.api.expr.v1alpha1.ListValue in project osate2 by osate.
the class EMV2Properties method getHazardDescription.
public static String getHazardDescription(NamedElement element, NamedElement relatedComponent, ErrorTypes ts) {
List<EMV2PropertyAssociation> PA = EMV2Properties.getHazardsProperty(relatedComponent, element, ts);
if (PA.isEmpty()) {
return null;
}
// XXX TODO we may get more than one back, one each for different types
PropertyExpression val = getPropertyValue(PA.get(0));
if (val instanceof RecordValue) {
RecordValue rv = (RecordValue) val;
EList<BasicPropertyAssociation> fields = rv.getOwnedFieldValues();
BasicPropertyAssociation xref = GetProperties.getRecordField(fields, "description");
if (xref != null) {
PropertyExpression peVal = getPropertyValue(xref);
if (peVal instanceof StringLiteral) {
return ((StringLiteral) peVal).getValue();
}
}
}
if (val instanceof ListValue) {
ListValue lv = (ListValue) val;
for (PropertyExpression pe : lv.getOwnedListElements()) {
if (pe instanceof RecordValue) {
RecordValue rv = (RecordValue) pe;
EList<BasicPropertyAssociation> fields = rv.getOwnedFieldValues();
BasicPropertyAssociation xref = GetProperties.getRecordField(fields, "description");
if (xref != null) {
PropertyExpression peVal = getPropertyValue(xref);
if (peVal instanceof StringLiteral) {
return ((StringLiteral) peVal).getValue();
}
}
}
}
}
return null;
}
use of com.google.api.expr.v1alpha1.ListValue in project AGREE by loonwerks.
the class AgreeTypeSystem method typeDefFromClassifier.
public static TypeDef typeDefFromClassifier(Classifier c) {
if (c instanceof DataType || (c instanceof DataImplementation && ((DataImplementation) c).getAllSubcomponents().isEmpty() && ((DataImplementation) c).getType() != null)) {
// Includes special case for data implementations implementing extensions of primitive types
Classifier classifierType = c instanceof DataImplementation ? ((DataImplementation) c).getType() : c;
List<PropertyAssociation> pas = classifierType.getAllPropertyAssociations();
for (Classifier classType : classifierType.getSelfPlusAllExtended()) {
if (classType != null && hasIntegerDataRepresentation(classType)) {
for (PropertyAssociation choice : pas) {
Property p = choice.getProperty();
PropertyExpression v = choice.getOwnedValues().get(0).getOwnedValue();
String key = p.getQualifiedName();
if (key.equals("Data_Model::Integer_Range")) {
if (v instanceof RangeValue) {
try {
RangeValue rangeValue = (RangeValue) v;
long min = intFromPropExp(rangeValue.getMinimum()).get();
long max = intFromPropExp(rangeValue.getMaximum()).get();
return new RangeIntTypeDef(min, max);
} catch (Exception e) {
return Prim.ErrorTypeDef;
}
}
}
}
return Prim.IntTypeDef;
} else if (classType != null && hasFloatDataRepresentation(classType)) {
for (PropertyAssociation choice : pas) {
Property p = choice.getProperty();
PropertyExpression v = choice.getOwnedValues().get(0).getOwnedValue();
String key = p.getQualifiedName();
if (key.equals("Data_Model::Real_Range")) {
if (v instanceof RangeValue) {
try {
RangeValue rangeValue = (RangeValue) v;
double min = realFromPropExp(rangeValue.getMinimum()).get();
double max = realFromPropExp(rangeValue.getMaximum()).get();
return new RangeRealTypeDef(min, max);
} catch (Exception e) {
return Prim.ErrorTypeDef;
}
}
}
}
return Prim.RealTypeDef;
} else if (classType != null && hasBooleanDataRepresentation(classType)) {
return Prim.BoolTypeDef;
}
}
boolean prop_isArray = false;
int prop_arraySize = 0;
TypeDef prop_arrayBaseType = null;
boolean prop_isEnum = false;
List<String> prop_enumValues = null;
for (PropertyAssociation choice : pas) {
Property p = choice.getProperty();
PropertyExpression v = choice.getOwnedValues().get(0).getOwnedValue();
String key = p.getQualifiedName();
key = key == null ? p.getName() : key;
if (key == null) {
return Prim.ErrorTypeDef;
}
if (key.equalsIgnoreCase("Data_Model::Data_Representation")) {
if (v instanceof NamedValue) {
AbstractNamedValue anv = ((NamedValue) v).getNamedValue();
if (anv instanceof EnumerationLiteral) {
EnumerationLiteral el = (EnumerationLiteral) anv;
prop_isArray = el.getName().equals("Array");
prop_isEnum = el.getName().equals("Enum");
}
}
} else if (key.equalsIgnoreCase("Data_Model::Enumerators")) {
if (v instanceof ListValue) {
EList<PropertyExpression> peList = ((ListValue) v).getOwnedListElements();
String prefix = c.getQualifiedName() + "_";
prop_enumValues = new ArrayList<>();
for (PropertyExpression pe : peList) {
if (pe instanceof StringLiteral) {
String enumString = prefix + ((StringLiteral) pe).getValue();
prop_enumValues.add(enumString);
}
}
}
} else if (key.equalsIgnoreCase("Data_Model::Base_Type")) {
if (v instanceof ListValue) {
ListValue l = (ListValue) v;
PropertyExpression pe = l.getOwnedListElements().get(0);
if (pe instanceof ClassifierValue) {
prop_arrayBaseType = typeDefFromClassifier(((ClassifierValue) pe).getClassifier());
}
}
} else if (key.equalsIgnoreCase("Data_Model::Dimension")) {
if (v instanceof ListValue) {
ListValue l = (ListValue) v;
PropertyExpression pe = l.getOwnedListElements().get(0);
prop_arraySize = Math.toIntExact(intFromPropExp(pe).orElse((long) -1).longValue());
}
}
}
if (prop_isArray && prop_arraySize > 0 && prop_arrayBaseType != null) {
return new ArrayTypeDef(prop_arrayBaseType, prop_arraySize, Optional.of(c));
} else if (prop_isEnum && prop_enumValues != null) {
String name = c.getQualifiedName();
return new EnumTypeDef(name, prop_enumValues, c);
}
} else if (c instanceof ComponentClassifier) {
Map<String, TypeDef> fields = new HashMap<>();
Classifier currClsfr = c;
while (currClsfr != null) {
ComponentType ct = null;
if (currClsfr instanceof ComponentImplementation) {
EList<Subcomponent> subcomps = ((ComponentImplementation) currClsfr).getAllSubcomponents();
for (Subcomponent sub : subcomps) {
String fieldName = sub.getName();
if (sub.getClassifier() != null) {
boolean prop_isArray = false;
int prop_arraySize = 0;
boolean prop_isEnum = false;
List<String> prop_enumValues = null;
for (PropertyAssociation pa : sub.getOwnedPropertyAssociations()) {
Property p = pa.getProperty();
String key = p.getQualifiedName();
key = key == null ? p.getName() : key;
PropertyExpression v = null;
if (!pa.getOwnedValues().isEmpty()) {
v = pa.getOwnedValues().get(0).getOwnedValue();
} else {
continue;
}
if (key.equals("Data_Model::Data_Representation")) {
if (v instanceof NamedValue) {
AbstractNamedValue anv = ((NamedValue) v).getNamedValue();
if (anv instanceof EnumerationLiteral) {
EnumerationLiteral el = (EnumerationLiteral) anv;
prop_isArray = el.getName().equals("Array");
prop_isEnum = el.getName().equals("Enum");
}
}
} else if (key.equals("Data_Model::Dimension")) {
if (v instanceof ListValue) {
ListValue l = (ListValue) v;
PropertyExpression pe = l.getOwnedListElements().get(0);
prop_arraySize = Math.toIntExact(intFromPropExp(pe).orElse((long) -1).longValue());
}
} else if (key.equals("Data_Model::Enumerators")) {
if (v instanceof ListValue) {
EList<PropertyExpression> peList = ((ListValue) v).getOwnedListElements();
String prefix = c.getQualifiedName() + "_";
prop_enumValues = new ArrayList<>();
for (PropertyExpression pe : peList) {
if (pe instanceof StringLiteral) {
String enumString = prefix + ((StringLiteral) pe).getValue();
prop_enumValues.add(enumString);
}
}
}
}
}
if (prop_isArray && prop_arraySize > 0) {
TypeDef typeDef = new ArrayTypeDef(typeDefFromClassifier(sub.getClassifier()), prop_arraySize, Optional.empty());
fields.putIfAbsent(fieldName, typeDef);
} else if (prop_isEnum && prop_enumValues != null) {
String name = c.getQualifiedName();
TypeDef typeDef = new EnumTypeDef(name, prop_enumValues, c);
fields.putIfAbsent(fieldName, typeDef);
} else if (sub.getArrayDimensions().size() == 0) {
TypeDef typeDef = typeDefFromClassifier(sub.getClassifier());
fields.putIfAbsent(fieldName, typeDef);
} else if (sub.getArrayDimensions().size() == 1) {
ArrayDimension ad = sub.getArrayDimensions().get(0);
int size = Math.toIntExact(getArraySize(ad));
TypeDef stem = typeDefFromClassifier(sub.getClassifier());
TypeDef typeDef = new ArrayTypeDef(stem, size, Optional.empty());
fields.putIfAbsent(fieldName, typeDef);
}
}
}
ct = ((ComponentImplementation) currClsfr).getType();
} else if (c instanceof ComponentType) {
ct = (ComponentType) currClsfr;
}
if (ct != null) {
EList<Feature> features = ct.getAllFeatures();
for (Feature feature : features) {
String fieldName = feature.getName();
if (feature.getClassifier() != null) {
if (feature.getArrayDimensions().size() == 0) {
TypeDef typeDef = typeDefFromClassifier(feature.getClassifier());
fields.putIfAbsent(fieldName, typeDef);
} else if (feature.getArrayDimensions().size() == 1) {
ArrayDimension ad = feature.getArrayDimensions().get(0);
int size = Math.toIntExact(getArraySize(ad));
TypeDef stem = typeDefFromClassifier(feature.getClassifier());
TypeDef typeDef = new ArrayTypeDef(stem, size, Optional.empty());
fields.putIfAbsent(fieldName, typeDef);
}
}
}
for (AnnexSubclause annex : AnnexUtil.getAllAnnexSubclauses(currClsfr, AgreePackage.eINSTANCE.getAgreeContractSubclause())) {
AgreeContract contract = (AgreeContract) ((AgreeContractSubclause) annex).getContract();
for (SpecStatement spec : contract.getSpecs()) {
List<Arg> args = new ArrayList<>();
if (spec instanceof EqStatement) {
args = ((EqStatement) spec).getLhs();
} else if (spec instanceof InputStatement) {
args = ((InputStatement) spec).getLhs();
}
for (Arg arg : args) {
String fieldName = arg.getName();
TypeDef typeDef = typeDefFromNE(arg);
fields.putIfAbsent(fieldName, typeDef);
}
if (spec instanceof ConstStatement) {
String fieldName = ((ConstStatement) spec).getName();
TypeDef typeDef = AgreeTypeSystem.typeDefFromType(((ConstStatement) spec).getType());
fields.putIfAbsent(fieldName, typeDef);
}
}
}
}
currClsfr = currClsfr.getExtended();
}
String name = c.getQualifiedName();
return new RecordTypeDef(name, fields, c);
}
return Prim.ErrorTypeDef;
}
use of com.google.api.expr.v1alpha1.ListValue in project AGREE by loonwerks.
the class AgreeTypeSystem method getTypeDefFromFeatureOrSubcomp.
private static TypeDef getTypeDefFromFeatureOrSubcomp(NamedElement ne) {
Classifier cl = null;
if (ne instanceof Feature) {
cl = ((Feature) ne).getClassifier();
} else if (ne instanceof Subcomponent) {
cl = ((Subcomponent) ne).getClassifier();
}
List<ArrayDimension> dims = null;
if (ne instanceof ArrayableElement) {
dims = ((ArrayableElement) ne).getArrayDimensions();
}
if (cl == null) {
return Prim.ErrorTypeDef;
}
TypeDef clsTypeDef = typeDefFromClassifier(cl);
if (dims == null || dims.size() == 0) {
boolean prop_isArray = false;
int prop_arraySize = 0;
List<PropertyAssociation> pas = null;
if (ne instanceof Feature) {
pas = ((Feature) ne).getOwnedPropertyAssociations();
} else if (ne instanceof Subcomponent) {
pas = ((Subcomponent) ne).getOwnedPropertyAssociations();
}
if (pas != null) {
for (PropertyAssociation pchoice : pas) {
Property p = pchoice.getProperty();
PropertyExpression v = pchoice.getOwnedValues().get(0).getOwnedValue();
String key = p.getQualifiedName();
if (key.equals("Data_Model::Data_Representation")) {
if (v instanceof NamedValue) {
AbstractNamedValue anv = ((NamedValue) v).getNamedValue();
if (anv instanceof EnumerationLiteral) {
EnumerationLiteral el = (EnumerationLiteral) anv;
prop_isArray = el.getName().equals("Array");
}
}
} else if (key.equals("Data_Model::Dimension")) {
if (v instanceof ListValue) {
ListValue l = (ListValue) v;
PropertyExpression pe = l.getOwnedListElements().get(0);
prop_arraySize = Math.toIntExact(intFromPropExp(pe).orElse((long) -1).longValue());
}
}
}
}
if (prop_isArray && prop_arraySize > 0) {
return new ArrayTypeDef(clsTypeDef, prop_arraySize, Optional.empty());
} else if (prop_isArray && prop_arraySize <= 0) {
return Prim.ErrorTypeDef;
} else {
return clsTypeDef;
}
} else if (dims.size() == 1) {
long size = getArraySize(dims.get(0));
return new ArrayTypeDef(clsTypeDef, Math.toIntExact(size), Optional.empty());
}
return Prim.ErrorTypeDef;
}
Aggregations