use of org.softlang.metalib.emf.fsml.fsml.FSMState in project metalib by softlang.
the class FSMTransitionImpl method setTarget.
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setTarget(FSMState newTarget) {
FSMState oldTarget = target;
target = newTarget;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, FsmlPackage.FSM_TRANSITION__TARGET, oldTarget, target));
}
use of org.softlang.metalib.emf.fsml.fsml.FSMState in project metalib by softlang.
the class FSMStateImpl method isReachable.
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
public boolean isReachable(DiagnosticChain diagnostics, Map<Object, Object> context) {
FSM fsm = (FSM) eContainer();
Set<FSMState> reachable = new HashSet<>();
Stack<FSMState> currents = new Stack<FSMState>();
currents.addAll(fsm.getStates().stream().filter(x -> x.isInitial()).collect(Collectors.toSet()));
while (!currents.isEmpty()) {
FSMState current = currents.pop();
if (current == this)
return true;
if (reachable.contains(current))
continue;
reachable.add(current);
for (FSMTransition transition : current.getTransitions()) if (transition.getTarget() != null)
currents.push(transition.getTarget());
}
if (diagnostics != null) {
diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, FsmlValidator.DIAGNOSTIC_SOURCE, FsmlValidator.FSM_STATE__IS_REACHABLE, EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "isReachable", EObjectValidator.getObjectLabel(this, context) }), new Object[] { this }));
}
return false;
}
use of org.softlang.metalib.emf.fsml.fsml.FSMState in project metalib by softlang.
the class StandaloneTurnstile method main.
public static void main(String[] args) {
// Register package as a side-effect.
FsmlPackage.eINSTANCE.eClass();
// The ResourceSet that this standalone application is using.
ResourceSet resourceSet = new ResourceSetImpl();
// Get the registry for ResourceFactories.
Registry resourceFactoryRegistry = resourceSet.getResourceFactoryRegistry();
// Register the XMIResourceFactory for files with fsml extension.
XMIResourceFactoryImpl xmiResourceFactory = new XMIResourceFactoryImpl();
resourceFactoryRegistry.getExtensionToFactoryMap().put("fsml", xmiResourceFactory);
// Deserialize XMI File.
Resource fsmlResource = resourceSet.getResource(URI.createURI("Turnstile.fsml"), true);
// Read the Turnstile model.
FSM fsmTurnstileEObject = (FSM) fsmlResource.getContents().get(0);
EList<FSMState> fsmTurnstileStateEObjects = fsmTurnstileEObject.getStates();
}
Aggregations