/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package CREATOR_CONDICTIONS_RULES; import LOGIC.Instance; import LOGIC.Protocols; import java.util.LinkedList; /** * * @author sarah */ public class CreatorOutputFunction { private LinkedList instance; private String creatorFunction = ""; private LinkedList prot_imp_outputs; private LinkedList prot; private LinkedList pegarProtRIO; private CreatorNamesOfProcessCSP creatNamePcsp; public CreatorOutputFunction(LinkedList i,LinkedList p){ this.instance = i; this.prot = p; pegarProtRIO = new LinkedList<>(); creatNamePcsp = new CreatorNamesOfProcessCSP(i, p); prot_imp_outputs = new LinkedList<>(); //esse comportamento pode ser manual, pois a ferramenta recebe //sempre dois componentes prot_imp_outputs.add("PROT_IMP_"+ instance.get(0).getName() + "_"+p.get(0).getCanal().getName()); prot_imp_outputs.add("PROT_IMP_"+ instance.get(1).getName() + "_"+p.get(1).getCanal().getName()); // prot_imp_outputs.add("PROT_IMP_"+instance.get(0).getName()+ "_"+p.get(0).getCanal().getName()+"_R_IO_" +p.get(1).getCanal().getName()); prot_imp_outputs.add("PROT_IMP_"+instance.get(1).getName()+ "_"+p.get(1).getCanal().getName()+"_R_IO_"+ p.get(0).getCanal().getName()); // prot_imp_outputs.add("DUAL_PROT_IMP_"+instance.get(0).getName()+ "_"+p.get(0).getCanal().getName()+"_R_IO_"+ p.get(1).getCanal().getName()); // prot_imp_outputs.add("DUAL_PROT_IMP_"+instance.get(1).getName()+ "_"+p.get(1).getCanal().getName()+"_R_IO_"+ p.get(0).getCanal().getName()); } public String creatorOutputFunction() { pegarProtRIO = creatNamePcsp.CreatorProt_RIO(); int cont = 0; //função outputs creatorFunction = creatorFunction + "\n outputs( P ) = "; creatorFunction = creatorFunction + "\n \t let f =\n\t < "; for (Instance instance1 : instance) {// para cada objeto pertencente a lista inst, execute o que est[a logo a baixo creatorFunction = creatorFunction + "\n\t ( " + instance1.getName() + ", {| "; // coloca todos os canais de out associado com seus tipos. ex: {|c.1, c.2|} for (int i = 0; i < instance1.getOut().size(); i++) { if (i == instance1.getOut().size() - 1) { creatorFunction = creatorFunction + instance1.getOut().get(i).getEvento(); } else { creatorFunction = creatorFunction + instance1.getOut().get(i).getEvento() + ","; } } //if (cont == instance.size() - 1) { // creatorFunction = creatorFunction + " |})"; //} else { creatorFunction = creatorFunction + " |}),"; //} cont++; } creatorFunction = creatorFunction + "\n\t"; creatorFunction = creatorFunction + "("+ prot_imp_outputs.get(0)+","+ "outputs_PROT_IMP(" +instance.get(0).getName()+","+prot.get(0).getCanal().getName()+ ")),"; creatorFunction = creatorFunction + "\n\n\t"; creatorFunction = creatorFunction + "("+ prot_imp_outputs.get(1)+"," +"outputs_PROT_IMP(" +instance.get(1).getName()+","+prot.get(1).getCanal().getName()+ ")),"; creatorFunction = creatorFunction + "\n\n\t"; creatorFunction = creatorFunction + "("+ prot_imp_outputs.get(2)+","+ "outputs_R_IO("+instance.get(0).getName() +","+prot.get(0).getCanal().getName()+","+ prot.get(1).getCanal().getName()+")),"; creatorFunction = creatorFunction + "\n\n\t"; creatorFunction = creatorFunction + "("+ prot_imp_outputs.get(3)+"," +"outputs_R_IO("+instance.get(0).getName() +","+prot.get(1).getCanal().getName()+","+ prot.get(0).getCanal().getName()+")),"; creatorFunction = creatorFunction + "\n\n\t"; creatorFunction = creatorFunction + "("+ prot_imp_outputs.get(4)+ ","+"inputs("+pegarProtRIO.get(0)+")),"; creatorFunction = creatorFunction + "\n\n\t"; creatorFunction = creatorFunction + "("+ prot_imp_outputs.get(5)+ ","+"inputs("+pegarProtRIO.get(1)+"))"; creatorFunction = creatorFunction + "\n \t > \n"; creatorFunction = creatorFunction + "\n \t within apply(f, P )"; creatorFunction = creatorFunction + "\n\n"; return creatorFunction; } }