package jcircus.newfrontendmethod; import java.util.List; import java.util.Vector; import net.sourceforge.czt.circus.ast.Action1; import net.sourceforge.czt.circus.ast.Action2; import net.sourceforge.czt.circus.ast.CircusAction; import net.sourceforge.czt.circus.ast.Communication; import net.sourceforge.czt.circus.ast.ExtChoiceAction; import net.sourceforge.czt.circus.ast.IntChoiceAction; import net.sourceforge.czt.circus.ast.InterleaveAction; import net.sourceforge.czt.circus.ast.ParallelAction; import net.sourceforge.czt.circus.ast.PrefixingAction; public class FrontEndPrinter { public static FrontEndAnn getFrontEndAnn (Communication c) { FrontEndAnn fea = new FrontEndAnn (); List l = c.getAnns(); int size = l.size(); for (int i = 0; i < size; i++) { if (l.get(i) instanceof FrontEndAnn) { System.out.println ("FE found"); fea = (FrontEndAnn) l.get(i); } } return fea; } public static String frontEndAnnAsString (FrontEndAnn fea) { Vector vec = fea.getFrontEnd(); int size = vec.size(); String str = "<<["; for (int i = 0; i < size; i++) { str = str + vec.elementAt(i); if (i < size - 1) { str = str + ", "; } } return str + "]>>"; } public static String communicationAsString (Communication c) { //Comunicação impressa sem os campos String cName = c.getChannelExpr().getName().toString(); FrontEndAnn fea = getFrontEndAnn(c); return cName + frontEndAnnAsString (fea); } /*public String prefixingActionAsString (PrefixingAction pa) { String c = communicationAsString (pa.getCommunication()); }*/ public static String frontEndContentAsString (CircusAction action) { if (action instanceof Action1) { if (action instanceof PrefixingAction) { Communication comm = ((PrefixingAction)action).getCommunication(); CircusAction ca = ((PrefixingAction)action).getCircusAction(); String commstr = communicationAsString (comm); return commstr + frontEndContentAsString (ca); } else { return frontEndContentAsString (((Action1)action).getCircusAction()); } } else if (action instanceof Action2) { if (action instanceof ParallelAction) { CircusAction left = ((ParallelAction)action).getLeftAction(); CircusAction right = ((ParallelAction)action).getRightAction(); return frontEndContentAsString (left) + " || " + frontEndContentAsString (right) ; } else if (action instanceof InterleaveAction) { CircusAction left = ((InterleaveAction)action).getLeftAction(); CircusAction right = ((InterleaveAction)action).getRightAction(); return frontEndContentAsString (left) + " ||| " + frontEndContentAsString (right) ; } else if (action instanceof ExtChoiceAction) { CircusAction left = ((ExtChoiceAction)action).getLeftAction(); CircusAction right = ((ExtChoiceAction)action).getRightAction(); return frontEndContentAsString (left) + " [] " + frontEndContentAsString (right) ; } else if (action instanceof IntChoiceAction) { CircusAction left = ((IntChoiceAction)action).getLeftAction(); CircusAction right = ((IntChoiceAction)action).getRightAction(); return frontEndContentAsString (left) + " |~| " + frontEndContentAsString (right) ; } else { CircusAction left = ((Action2)action).getLeftAction(); CircusAction right = ((Action2)action).getRightAction(); return frontEndContentAsString (left) + " " + frontEndContentAsString (right) ; } } else { return ""; } } }