use of com.google.cloud.dialogflow.v2.Context in project osate2 by osate.
the class InstantiateModel method instantiateFlowSpecs.
/**
* same method but with different name exists in createEndToEndFlowSwitch.
* It adds the flow instances on demand when ETEF is created
* @param ci
*/
private void instantiateFlowSpecs(ComponentInstance ci) throws InterruptedException {
for (FlowSpecification spec : getComponentType(ci).getAllFlowSpecifications()) {
if (monitor.isCanceled()) {
throw new InterruptedException();
}
FlowSpecificationInstance speci = ci.createFlowSpecification();
speci.setName(spec.getName());
speci.setFlowSpecification(spec);
FlowEnd inend = spec.getAllInEnd();
if (inend != null) {
Feature srcfp = inend.getFeature();
Context srcpg = inend.getContext();
if (srcpg == null) {
FeatureInstance fi = ci.findFeatureInstance(srcfp);
if (fi != null) {
speci.setSource(fi);
}
} else if (srcpg instanceof FeatureGroup) {
FeatureInstance pgi = ci.findFeatureInstance((FeatureGroup) srcpg);
if (pgi != null) {
FeatureInstance fi = pgi.findFeatureInstance(srcfp);
if (fi != null) {
speci.setSource(fi);
}
}
}
}
FlowEnd outend = spec.getAllOutEnd();
if (outend != null) {
Feature dstfp = outend.getFeature();
Context dstpg = outend.getContext();
if (dstpg == null) {
FeatureInstance fi = ci.findFeatureInstance(dstfp);
if (fi != null) {
speci.setDestination(fi);
}
} else if (dstpg instanceof FeatureGroup) {
FeatureInstance pgi = ci.findFeatureInstance((FeatureGroup) dstpg);
if (pgi != null) {
FeatureInstance fi = pgi.findFeatureInstance(dstfp);
if (fi != null) {
speci.setDestination(fi);
}
}
}
}
for (Mode mode : spec.getAllInModes()) {
if (monitor.isCanceled()) {
throw new InterruptedException();
}
ModeInstance mi = ci.findModeInstance(mode);
if (mi != null) {
speci.getInModes().add(mi);
}
}
for (ModeTransition mt : spec.getInModeTransitions()) {
if (monitor.isCanceled()) {
throw new InterruptedException();
}
ModeTransitionInstance ti = ci.findModeTransitionInstance(mt);
if (ti != null) {
speci.getInModeTransitions().add(ti);
}
}
}
}
use of com.google.cloud.dialogflow.v2.Context 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.dialogflow.v2.Context 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.dialogflow.v2.Context in project osate2 by osate.
the class AadlUtil method getConnectionEndName.
public static String getConnectionEndName(ConnectedElement ce) {
Context cxt = ce.getContext();
ConnectionEnd cend = ce.getConnectionEnd();
if (cxt != null) {
return cxt.getName() + '.' + cend.getName();
} else {
return cend.getName();
}
}
use of com.google.cloud.dialogflow.v2.Context in project osate2 by osate.
the class EndToEndFlowSegmentImpl method setContext.
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setContext(Context newContext) {
Context oldContext = context;
context = newContext;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET, Aadl2Package.END_TO_END_FLOW_SEGMENT__CONTEXT, oldContext, context));
}
}
Aggregations