package CREATOR_CONDICTIONS_RULES;
import LOGIC.Instance;
import LOGIC.Protocols;
import java.util.LinkedList;
/**
*
* @author sarah
*/
public class CreatorProtocol {
private String protocolo = "";
private LinkedList<Protocols> prot;
private LinkedList<Instance> instance;
private CreatorNamesOfProcessCSP creatName;
private LinkedList<String> pegarProtRIO;
private CreatorNamesOfProcessCSP creatNamePcsp;
private LinkedList<String> guardanomeProcessoProt_Imp;
private LinkedList<String> pegarDualProtRIO;
private LinkedList<String> pegarDualProt;
public CreatorProtocol(LinkedList<Instance> i, LinkedList<Protocols> p) {
this.prot = p;
instance = i;
creatName = new CreatorNamesOfProcessCSP(i, p);
pegarProtRIO = new LinkedList<>();
creatNamePcsp = new CreatorNamesOfProcessCSP(i, p);
}
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++) {
if (prot.get(i).getProtocol().contains("=")) {
int st = prot.get(i).getProtocol().indexOf("=");
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";
} else {
protocolo = protocolo + "PROT_IMP_" + instance.get(i).getName() + "_"
+ prot.get(i).getCanal().getName();
protocolo = protocolo + " = " + prot.get(i).getProtocol();
protocolo = protocolo + "\n";
}
}
protocolo = protocolo + "\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++) {
if (prot.get(i).getDualProtocol().contains("=")) {
int st = prot.get(i).getDualProtocol().indexOf("=");
protocolo = protocolo + "DUAL_PROT_IMP_" + instance.get(i).getName() + "_" + prot.get(i).getCanal().getName();
protocolo = protocolo + " = " + prot.get(i).getDualProtocol().substring(st + 1, prot.get(i).getDualProtocol().length());
protocolo = protocolo + "\n";
} else {
protocolo = protocolo + "DUAL_PROT_IMP_" + instance.get(i).getName() + "_" + prot.get(i).getCanal().getName();
protocolo = protocolo + " = " + prot.get(i).getDualProtocol();
protocolo = protocolo + "\n";
}
}
protocolo = protocolo + "\n";
}
private void CreateProtocolIMP_RIO() {
guardanomeProcessoProt_Imp = creatNamePcsp.CreatorProt_Name();
pegarProtRIO = creatNamePcsp.CreatorProt_RIO();
protocolo = protocolo + pegarProtRIO.get(0) + " = PROT_IMP_R(" + guardanomeProcessoProt_Imp.get(0)
+ ",R_IO(" + instance.get(0).getName() + "," + prot.get(0).getCanal().getName() + ","
+ prot.get(1).getCanal().getName() + "))";
protocolo = protocolo + "\n";
protocolo = protocolo + pegarProtRIO.get(1) + " = PROT_IMP_R(" + guardanomeProcessoProt_Imp.get(1)
+ ",R_IO(" + instance.get(1).getName() + "," + prot.get(1).getCanal().getName() + ","
+ prot.get(0).getCanal().getName() + "))";
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() + "," +
prot.get(0).getCanal().getName() + "," +
prot.get(1).getCanal().getName() + "))";
protocolo = protocolo + "\n";
protocolo = protocolo + pegarDualProtRIO.get(1) +
" = DUAL_PROT_IMP_R(" + pegarDualProt.get(1)
+ ",R_IO(" + instance.get(1).getName() + "," +
prot.get(1).getCanal().getName() + "," +
prot.get(0).getCanal().getName() + "))";
}
}