package CREATOR_CONDICTIONS_RULES; import LOGIC.Instance; import LOGIC.Protocols; import java.util.LinkedList; /** * * @author sarah */ public class CreatorProtocol { private String protocolo = ""; private LinkedList prot; private LinkedList instance; private CreatorNamesOfProcessCSP creatName; private LinkedList pegarProtRIO; private CreatorNamesOfProcessCSP creatNamePcsp; private LinkedList guardanomeProcessoProt_Imp; private LinkedList pegarDualProtRIO; private LinkedList pegarDualProt; private String nomecanal = ""; private String eventoprotocol1 = ""; private String eventoprotocol2 = ""; public CreatorProtocol(LinkedList i, LinkedList p) { prot =new LinkedList<>(); prot.addAll(p); instance = i; creatName = new CreatorNamesOfProcessCSP(i, p); pegarProtRIO = new LinkedList<>(); creatNamePcsp = new CreatorNamesOfProcessCSP(i, p); guardanomeProcessoProt_Imp = new LinkedList<>(); pegarDualProtRIO = new LinkedList<>(); pegarDualProt = new LinkedList<>(); //pegando o nome do evento que passei por paramentro no protocolo int pr1, pr2, pr3, pr4; pr1 = p.get(0).getProtocol().indexOf("("); pr2 = p.get(0).getProtocol().lastIndexOf(")"); eventoprotocol1 = p.get(0).getProtocol().substring(pr1 + 1, pr2); pr3 = p.get(1).getProtocol().indexOf("("); pr4 = p.get(1).getProtocol().lastIndexOf(")"); eventoprotocol2 = p.get(1).getProtocol().substring(pr3 + 1, pr4); } public String creatorProtocol_and_DualProtocol() { creatoProtocol(); CreateDualProtocol(); CreateProtocolIMP_RIO(); CreateDual_ProtocolIMP_RIO(); return protocolo; } private void creatoProtocol() { //protocoll //PROT_IMP_CELL_1_write = PROT_CTRL(write) for (int i = 0; i < prot.size(); i++) { //se o canal tiver um "." substituo por "_" nomecanal = prot.get(i).getCanal().getName().replace(".", "_"); if (prot.get(i).getProtocol().contains("=")) { int st = prot.get(i).getProtocol().indexOf("="); protocolo = protocolo + "PROT_IMP_" + instance.get(i).getName() + "_" + nomecanal; protocolo = protocolo + " = " + prot.get(i).getProtocol().substring(st + 1, prot.get(i).getProtocol().length()); protocolo = protocolo + "\n\n"; } else { protocolo = protocolo + "PROT_IMP_" + instance.get(i).getName() + "_" + nomecanal; protocolo = protocolo + " = " + prot.get(i).getProtocol(); protocolo = protocolo + "\n\n"; } } protocolo = protocolo + "\n\n"; //renomeando protocolos //protocolo = protocolo + "--renomeando protocolos \n\n"; //protocolo = protocolo + "PROT_IMP_" + instance.get(i).getName() + "_" + prot.get(i).getCanal().getName(); // protocolo = protocolo + " = " + prot.get(i).getProtocol().substring(st + 1, prot.get(i).getProtocol().length()); // protocolo = protocolo + "\n\n"; } private void CreateDualProtocol() { //dualProtocol for (int i = 0; i < prot.size(); i++) { //se o canal tiver um "." substituo por "_" nomecanal = prot.get(i).getCanal().getName().replace(".", "_"); if (prot.get(i).getDualProtocol().contains("=")) { int st = prot.get(i).getDualProtocol().indexOf("="); protocolo = protocolo + "DUAL_PROT_IMP_" + instance.get(i).getName() + "_" + nomecanal; protocolo = protocolo + " = " + prot.get(i).getDualProtocol().substring(st + 1, prot.get(i).getDualProtocol().length()); protocolo = protocolo + "\n\n"; } else { protocolo = protocolo + "DUAL_PROT_IMP_" + instance.get(i).getName() + "_" + nomecanal; protocolo = protocolo + " = " + prot.get(i).getDualProtocol(); protocolo = protocolo + "\n\n"; } } protocolo = protocolo + "\n\n"; } private void CreateProtocolIMP_RIO() { guardanomeProcessoProt_Imp = creatNamePcsp.CreatorProt_Name(); pegarProtRIO = creatNamePcsp.CreatorProt_RIO(); //String nomecanal1 = prot.get(0).getCanal().getName().replace(".","_"); //String nomecanal2 = prot.get(1).getCanal().getName().replace(".","_"); protocolo = protocolo + pegarProtRIO.get(0) + " = PROT_IMP_R(" + guardanomeProcessoProt_Imp.get(0) + ",R_IO(" + instance.get(0).getName() + "," + eventoprotocol1 + "," + eventoprotocol2 + "))"; protocolo = protocolo + "\n\n"; protocolo = protocolo + pegarProtRIO.get(1) + " = PROT_IMP_R(" + guardanomeProcessoProt_Imp.get(1) + ",R_IO(" + instance.get(1).getName() + "," + eventoprotocol2 + "," + eventoprotocol1 + "))"; protocolo = protocolo + "\n\n"; } private void CreateDual_ProtocolIMP_RIO() { pegarDualProtRIO = creatNamePcsp.CreatorDual_Prot_RIO(); pegarDualProt = creatNamePcsp.CreatorDual_Prot_Name(); protocolo = protocolo + pegarDualProtRIO.get(0) + " = DUAL_PROT_IMP_R(" + pegarDualProt.get(0) + ",R_IO(" + instance.get(0).getName() + "," + eventoprotocol1 + "," + eventoprotocol2 + "))"; protocolo = protocolo + "\n\n"; protocolo = protocolo + pegarDualProtRIO.get(1) + " = DUAL_PROT_IMP_R(" + pegarDualProt.get(1) + ",R_IO(" + instance.get(1).getName() + "," + eventoprotocol2 + "," + eventoprotocol1 + "))"; } }