public static ArrayList<TransitionDetails> readVertices(Vertex vertex, SM smDetails) { State state = (State) vertex; ArrayList<TransitionDetails> transition = new ArrayList<>(); EList<Transition> outgoingTransitions = state.getOutgoings(); for (Transition trans : outgoingTransitions) { if (state.eClass() != UMLPackage.Literals.PSEUDOSTATE) { // System.out.println("Source : "+trans.getSource().getLabel()); // System.out.println("Dest : "+trans.getTarget().getLabel()); TransitionDetails temp = transitionDetails(trans); temp.setName(trans.getLabel()); temp.setDest(trans.getTarget().getLabel()); transition.add(temp); } } return transition; }
public static void printStateMachine(ArrayList<SM> stateMachineDetails) { for (SM details : stateMachineDetails) { System.out.println("State Name : " + details.getName()); ArrayList<TransitionDetails> trDetails = details.getTransitions(); for (TransitionDetails trDetail : trDetails) { System.out.println("Transition Name : " + trDetail.getName()); System.out.println("Dest : " + trDetail.getDest()); System.out.println("Effect name : " + trDetail.getEffect().getName()); System.out.println("Effect body : " + trDetail.getEffect().getBody()); System.out.println("Guard name : " + trDetail.getGuard().getName()); System.out.println("Guard body : " + trDetail.getGuard().getBody()); System.out.println("Trigger Name : " + trDetail.getTrigger().getOpName()); } } }
public static TransitionDetails transitionDetails(Transition trans) { String condition = ""; TransitionDetails transition = new TransitionDetails(); /// ****** guard condition *********************** EList<Constraint> ownedRules = trans.getOwnedRules(); com.mbe.umlce.dataobjects.stateMachine.Guard guard = new com.mbe.umlce.dataobjects.stateMachine.Guard(); for (Constraint Rule : ownedRules) { ValueSpecification Specifications = Rule.getSpecification(); guard.setName(Rule.getLabel()); OpaqueExpression expr = (OpaqueExpression) Specifications; condition += expr.getBodies().toString(); guard.setBody(removeSquareBrackets(condition)); // condition = expr.getLanguages(); // System.out.println("Condition : "+condition); } transition.setGuard(guard); Effect effect = new Effect(); String methodBody = null; if ((OpaqueBehavior) trans.getEffect() != null) { methodBody = ""; effect.setName(trans.getEffect().getLabel()); // methodBody += ("\nif ( "+removeSquareBrackets(condition)+" ){\n"); methodBody += removeSquareBrackets(((OpaqueBehavior) trans.getEffect()).getBodies().toString()); // System.out.println("Effect : "+methodBody); effect.setBody(methodBody); } // Trigger yet to read// // transition.setEffect(effect); /* TimeEvent timeEvent=null; ChangeEvent changeEvent = null; */ // Triggers reading CallEvent callEvent = null; Operation operation = null; EList<Trigger> trigger = trans.getTriggers(); com.mbe.umlce.dataobjects.stateMachine.Trigger trig = new com.mbe.umlce.dataobjects.stateMachine.Trigger(); for (Trigger triger : trigger) { // System.out.println("Triger : "+triger.getQualifiedName()); // if(triger.getEvent().getName().contains("CallEvent")){ callEvent = (CallEvent) (triger.getEvent()); operation = callEvent.getOperation(); if (operation != null) { // System.out.println("Operation : "+operation.getLabel()); EList<Parameter> parameters = operation.getOwnedParameters(); ArrayList<String> param = new ArrayList<>(); ArrayList<String> paramClass = new ArrayList<>(); for (Parameter pm : parameters) { param.add(pm.getLabel()); paramClass.add(pm.getClass().getName()); // System.out.println("Parameters : "+pm.getLabel()); } trig.setOpName(operation.getLabel()); trig.setOpParameters(param); trig.setParametersClass(paramClass); } } transition.setTrigger(trig); // } return transition; }