package finitestatemachines; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import family.StandaloneSetup; import family.flatfsmmt.fsm.StateMachine; public class PrettyPrintFsm { public static void prettyPrint(StateMachine fsm) { System.out.println("Printing " + fsm.getName()); fsm.getStates().forEach(s -> { System.out.println("State " + s.getName()); s.getIncoming().forEach(t -> System.out.println( "\tIncoming "+ t.getName() + " from " + t.getSource().getName())); s.getOutgoing().forEach(t -> System.out.println("\tOutgoing " + t.getName() + " to " + t.getTarget().getName())); }); System.out.println(); } public static void main(String[] args) { StandaloneSetup.doSetup(); ResourceSet rs = new ResourceSetImpl(); List<String> models = new ArrayList<>(); models.add("melange:/file/input/dummie.xmi?mt=family.FlatFsmMT"); models.add("melange:/file/input/timeddummie.xmi?mt=family.FlatFsmMT"); models.add("melange:/file/input/compositedummie.xmi?mt=family.FlatFsmMT"); models.add("melange:/file/input/timedcompositedummie.xmi?mt=family.FlatFsmMT"); for (String uri : models) { Resource res = rs.getResource(URI.createURI(uri), true); StateMachine root = (StateMachine) res.getContents().get(0); // Polymorphic invokation of prettyPrint() prettyPrint(root); } } }