use of com.google.cloud.vision.v1p4beta1.Feature in project osate2 by osate.
the class CacheContainedPropertyAssociationsSwitch method processContainedPropertyAssociations.
protected void processContainedPropertyAssociations(final FeatureInstance fi, final EList<PropertyAssociation> propertyAssociations) {
for (PropertyAssociation pa : propertyAssociations) {
Property prop = pa.getProperty();
if (Aadl2Util.isNull(prop) || Aadl2Util.isNull(prop.getType())) {
// PA is missing the prop def, skip to the next one
continue;
}
for (ContainedNamedElement cne : pa.getAppliesTos()) {
final EList<ContainmentPathElement> cpes = cne.getContainmentPathElements();
if (cpes != null && !cpes.isEmpty()) {
final Collection<FeatureInstance> ios = fi.findFeatureInstances(cpes);
if (!ios.isEmpty()) {
for (InstanceObject io : ios) {
PropertyAssociationInstance newPA = InstanceFactory.eINSTANCE.createPropertyAssociationInstance();
newPA.setProperty(prop);
newPA.setPropertyAssociation(pa);
newPA.getOwnedValues().addAll(EcoreUtil.copyAll(pa.getOwnedValues()));
// replace reference values in the context of the contained PA's owner
for (Iterator<Element> content = EcoreUtil.getAllProperContents(newPA, false); content.hasNext(); ) {
Element elem = content.next();
if (elem instanceof ReferenceValue) {
PropertyExpression irv = ((ReferenceValue) elem).instantiate(fi);
if (irv != null) {
EcoreUtil.replace(elem, irv);
}
}
}
final PropertyAssociation existingPA = io.getPropertyValue(prop, false).first();
if (existingPA != null && isConstant(existingPA)) {
/*
* Cannot put the error on the property association that is affected because it might
* be a declarative model element at this point. Need to report the error on the
* instance object itself.
*/
final String classifierName = pa.getContainingClassifier().getQualifiedName();
final Element owner = pa.getOwner();
final String featureName = (owner instanceof Feature) ? ("." + ((Feature) owner).getName()) : "";
getErrorManager().error(io, "Property association for \"" + prop.getQualifiedName() + "\" is constant. A contained property association in classifier \"" + classifierName + featureName + "\" tries to replace it.");
} else {
io.removePropertyAssociations(prop);
io.getOwnedPropertyAssociations().add(newPA);
}
}
}
}
}
checkIfCancelled();
if (cancelled()) {
break;
}
}
}
use of com.google.cloud.vision.v1p4beta1.Feature in project osate2 by osate.
the class CreateConnectionsSwitch method doModeTransitionConnections.
/**
* As we are following connection declarations we need to check whether the
* destination of the connection is named in one of the mode transitions of
* the component instance that is the destination of the connection being
* added
*
* @param parentci
* The component that is the context in which the connections are
* declared
* @param pci
* PortConnectionInstance that is being created
* @param conn
* connection being added to the ConnectionInstance
* @return true if we created a ModetransitionInstance
*/
private boolean doModeTransitionConnections(final ComponentInstance parentci, ConnectionInfo connInfo, Connection conn) {
boolean didTransition = false;
if (!(conn instanceof PortConnection || conn instanceof FeatureGroupConnection)) {
return false;
}
ComponentInstance parent = null;
Context fc = conn.getAllDestinationContext();
Element connContext = null;
if (fc instanceof ComponentImplementation || fc instanceof FeatureGroup) {
// we
// have
// an
// outgoing
// connection
parent = (ComponentInstance) parentci.eContainer();
connContext = parentci.getSubcomponent();
} else if (fc instanceof Subcomponent) {
parent = parentci.findSubcomponentInstance((Subcomponent) fc);
connContext = ((Subcomponent) fc).getAllClassifier();
}
if (parent == null) {
return false;
}
EList<ModeTransitionInstance> mtl = parent.getModeTransitionInstances();
Feature f = (Feature) conn.getAllDestination();
for (ModeTransitionInstance mti : mtl) {
ModeTransition mt = mti.getModeTransition();
Context co = null;
for (ModeTransitionTrigger trigger : mt.getOwnedTriggers()) {
TriggerPort tp = trigger.getTriggerPort();
if (tp instanceof Port) {
Port o = (Port) tp;
co = trigger.getContext();
NamedElement context = co;
if (context instanceof FeatureGroup) {
context = parent.getSubcomponent().getAllClassifier();
}
if (f == o && context == connContext) {
final ConnectionInstance mtci = addConnectionInstance(parentci.getSystemInstance(), connInfo.convertToModeTransition(), mti);
fillInModes(mtci);
fillInModeTransitions(mtci);
didTransition = true;
}
} else {
// TODO-LW: what if it's a processor port or internal event?
}
}
}
return didTransition;
}
use of com.google.cloud.vision.v1p4beta1.Feature in project osate2 by osate.
the class CreateConnectionsSwitch method doModeTransitionConnections.
// ------------------------------------------------------------------------
// Methods related to mode transition connections
// ------------------------------------------------------------------------
/**
* handles the situation that a mode transition may name an event port in a
* thread (or other leaf component instance) and that port is not the
* destination of a connection instance - it is the start of a connection
* instance
*
* @param ci
* ComponentInstance
* @param fi
* FeatureInstance
* @return true if we created a ModetransitionInstance
*/
private boolean doModeTransitionConnections(ComponentInstance ci, FeatureInstance fi) {
boolean didTransition = false;
if (fi.getCategory() == FeatureCategory.EVENT_PORT) {
Subcomponent sub = ci.getSubcomponent();
Feature f = fi.getFeature();
for (ModeTransitionInstance mti : ci.getContainingComponentInstance().getModeTransitionInstances()) {
for (ModeTransitionTrigger trigger : mti.getModeTransition().getOwnedTriggers()) {
TriggerPort tp = trigger.getTriggerPort();
if (tp instanceof Port) {
Port p = (Port) tp;
Context c = trigger.getContext();
if (f == p && c == sub) {
addConnectionInstance(ci.getSystemInstance(), ConnectionInfo.newModeTransition(fi), mti);
didTransition = true;
}
} else {
// TODO-LW: what if it's a processor port or internal
// event?
}
}
}
}
return didTransition;
}
use of com.google.cloud.vision.v1p4beta1.Feature in project osate2 by osate.
the class ResolvePrototypeUtil method resolvePrototypeInContainmentPath.
public static PrototypeBinding resolvePrototypeInContainmentPath(Prototype proto, ContainmentPathElement cpe) {
if (cpe.getNamedElement() instanceof Subcomponent) {
PrototypeBinding res = resolvePrototype(proto, AadlUtil.getContainingClassifier(cpe.getNamedElement()));
if (res != null) {
return res;
}
}
ContainmentPathElement previous = getPrevious(cpe);
if (previous != null) {
// find prototype binding in namespace of previous element
NamedElement ne = previous.getNamedElement();
if (ne instanceof Subcomponent) {
// look for prototype in prototype binding of subcomponent declaration
PrototypeBinding res = resolvePrototype(proto, ne);
if (res != null) {
return res;
} else {
Subcomponent subcomponent = (Subcomponent) ne;
while (subcomponent.getSubcomponentType() == null && subcomponent.getRefined() != null) {
subcomponent = subcomponent.getRefined();
}
ComponentClassifier subcomponentClassifier = null;
if (subcomponent.getSubcomponentType() instanceof ComponentClassifier) {
subcomponentClassifier = (ComponentClassifier) subcomponent.getSubcomponentType();
} else if (subcomponent.getSubcomponentType() instanceof ComponentPrototype) {
subcomponentClassifier = resolveComponentPrototype((ComponentPrototype) subcomponent.getSubcomponentType(), previous);
}
if (subcomponentClassifier != null) {
return resolvePrototype(proto, subcomponentClassifier);
}
}
} else if (ne instanceof FeatureGroup) {
FeatureGroup fg = (FeatureGroup) ne;
while (fg.getFeatureType() == null && fg.getRefined() instanceof FeatureGroup) {
fg = (FeatureGroup) fg.getRefined();
}
FeatureGroupType fgt = null;
if (fg.getFeatureType() instanceof FeatureGroupType) {
fgt = (FeatureGroupType) fg.getFeatureType();
} else if (fg.getFeatureType() instanceof FeatureGroupPrototype) {
fgt = resolveFeatureGroupPrototype((FeatureGroupPrototype) fg.getFeatureType(), previous);
}
if (fgt != null) {
return resolvePrototype(proto, fgt);
}
} else if (ne instanceof Feature) {
}
} else {
// the context is the entity with the property association
// need to make sure we look in the correct name space
Classifier cl = null;
if (AadlUtil.getContainingSubcomponent(cpe) != null) {
Subcomponent containingSubcomponent = AadlUtil.getContainingSubcomponent(cpe);
PrototypeBinding res = resolvePrototype(proto, containingSubcomponent);
if (res != null) {
return res;
}
while (containingSubcomponent.getSubcomponentType() == null && containingSubcomponent.getRefined() != null) {
containingSubcomponent = containingSubcomponent.getRefined();
}
if (containingSubcomponent.getSubcomponentType() instanceof ComponentClassifier) {
cl = (ComponentClassifier) containingSubcomponent.getSubcomponentType();
} else if (containingSubcomponent.getSubcomponentType() instanceof ComponentPrototype) {
cl = resolveComponentPrototype((ComponentPrototype) containingSubcomponent.getSubcomponentType(), AadlUtil.getContainingClassifier(cpe));
}
} else if (AadlUtil.getContainingFeatureGroup(cpe) != null) {
FeatureGroup containingFeatureGroup = AadlUtil.getContainingFeatureGroup(cpe);
FeatureGroupType typeForContainingFeatureGroup = null;
while (containingFeatureGroup.getFeatureType() == null && containingFeatureGroup.getRefined() instanceof FeatureGroup) {
containingFeatureGroup = (FeatureGroup) containingFeatureGroup.getRefined();
}
if (containingFeatureGroup.getFeatureType() instanceof FeatureGroupType) {
typeForContainingFeatureGroup = (FeatureGroupType) containingFeatureGroup.getFeatureType();
} else if (containingFeatureGroup.getFeatureType() instanceof FeatureGroupPrototype) {
typeForContainingFeatureGroup = resolveFeatureGroupPrototype((FeatureGroupPrototype) containingFeatureGroup.getFeatureType(), AadlUtil.getContainingClassifier(cpe));
}
if (typeForContainingFeatureGroup != null) {
PrototypeBinding res = resolvePrototype(proto, typeForContainingFeatureGroup);
if (res != null) {
return res;
}
}
} else {
cl = AadlUtil.getContainingClassifier(cpe);
}
PrototypeBinding res = resolvePrototype(proto, cl);
return res;
}
return null;
}
use of com.google.cloud.vision.v1p4beta1.Feature in project osate2 by osate.
the class AadlUtil method getMultiplicity.
/*
* return the size of an arrayed named element.
* Find the array dimensions in the element or the element it refines.
*/
public static long getMultiplicity(NamedElement el) {
if (!(el instanceof ArrayableElement)) {
return 1;
}
ArrayableElement ae = (ArrayableElement) el;
EList<ArrayDimension> dims = ae.getArrayDimensions();
if (!dims.isEmpty()) {
return calcSize(dims);
} else {
if (el instanceof Subcomponent) {
Subcomponent sub = (Subcomponent) el;
EList<Subcomponent> subs = sub.getAllSubcomponentRefinements();
for (Subcomponent subcomponent : subs) {
dims = subcomponent.getArrayDimensions();
if (!dims.isEmpty()) {
return calcSize(dims);
}
}
} else if (el instanceof Feature) {
Feature fe = (Feature) el;
EList<Feature> feas = fe.getAllFeatureRefinements();
for (Feature feature : feas) {
dims = feature.getArrayDimensions();
if (!dims.isEmpty()) {
return calcSize(dims);
}
}
}
}
return 1;
}
Aggregations