/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package CREATOR_CONDICTIONS_RULES; import CSP_CREATOR.CreatorTypesAndChannels; import LOGIC.Channel; import LOGIC.Instance; import LOGIC.ObjectList; import LOGIC.Protocols; import java.util.LinkedList; /** * * @author forall */ public class CreatorBinaryRules { private String rule; private String pegaComposicao; private LinkedList instance; private ObjectList obl; private CreatorTypesAndChannels typechannels; private CreatorRenameFunction renameFunction; private CreatorChannelFunction channelFunction; private CreatorInputFunction inputFunction; private CreatorOutputFunction outputFunction; public CreatorBinaryRules(LinkedList i, ObjectList ob, LinkedList p) { instance = i; obl = ob; typechannels = new CreatorTypesAndChannels(ob); typechannels.creatorTypesChannels(); renameFunction = new CreatorRenameFunction(i); channelFunction = new CreatorChannelFunction(i, p);// null vai ser modificado para uma string que vai ser recebida de protocolos inputFunction = new CreatorInputFunction(i, p);//Vai receber mais alguma coisa outputFunction = new CreatorOutputFunction(i, p); } public String getRule() { return rule; } public void setRule(String rule) { this.rule = rule; } public String getPegaComposicao() { return pegaComposicao; } public void setPegaComposicao(String pegaComposicao) { this.pegaComposicao = pegaComposicao; } public void creatorBinaryCSP() { setRule(""); setRule(getRule() + "include \"sequence_aux.csp\" \ninclude \"function_aux.csp\" \n" + "include \"auxiliar.csp\" \ninclude \"rules.csp\""); setRule(getRule() + typechannels.getTypeChannel()); //não preciso de types e channels de contrato, pois estou declarando todos os tipos e canais do ObjectList //no caso, todo canal q eu criar vai possuir algum tipo e canal dessa lista. setRule(getRule() + "\n\n"); int st1 = instance.get(0).getContrato().getBehavior().indexOf("="); int st2 = instance.get(1).getContrato().getBehavior().indexOf("="); String s1 = instance.get(0).getContrato().getBehavior().substring(0, st1 - 1); String s2 = instance.get(0).getContrato().getBehavior().substring(0, st2 - 1); if (instance.get(0).getContrato().getBehavior().equals(instance.get(1).getContrato().getBehavior())) { //se for igual, coloco só um comportamento setRule(getRule() + "\n" + instance.get(0).getContrato().getBehavior() + "\n"); } else if (s1.equals(s2)) { // se o nome dos processos forem iguais pego o maior //pois tem um comportamento a mais especificado nele if (instance.get(0).getContrato().getBehavior().length() > instance.get(1).getContrato().getBehavior().length()) { setRule(getRule() + "\n" + instance.get(0).getContrato().getBehavior() + "\n"); } else { setRule(getRule() + "\n" + instance.get(1).getContrato().getBehavior() + "\n"); } } else if (instance.get(0).getContrato().getBehavior().contains(instance.get(1).getContrato().getBehavior())) { setRule(getRule() + "\n" + instance.get(0).getContrato().getBehavior() + "\n"); } else if (instance.get(1).getContrato().getBehavior().contains(instance.get(0).getContrato().getBehavior())) { setRule(getRule() + "\n" + instance.get(1).getContrato().getBehavior() + "\n"); } else { setRule(getRule() + "\n" + instance.get(0).getContrato().getBehavior() + "\n" + "\n\n" + instance.get(1).getContrato().getBehavior()); } setRule(getRule() + "\n\n"); //declaração dos canais das instancias /* for (Instance instance1 : instance) {// para cada objeto pertencente a lista instance, execute o que est[a logo a baixo for (int i = 0; i < instance1.getChannel().size(); i++) { //chama o método que cria o csp dos canais que estão associados ao contrato recebido channelInstanciation(instance1.getChannel().get(i)); } }*/ //setando processos auxiliares setRule(getRule() + "\n\n"); setRule(getRule() + "\n" + obl.getProcessosAuxiliares() + "\n\n"); //creatorRenameFunction(); setRule(getRule() + renameFunction.creatorRenameFunction()); //creatorChannelFunction(); setRule(getRule() + channelFunction.creatorChannelFunction()); // creatorInputFunction(); setRule(getRule() + inputFunction.creatorInputFunction()); //creatorOutputFunction(); setRule(getRule() + outputFunction.creatorOutputFunction()); } public void channelInstanciation(Channel Canal) { setRule(getRule() + "\nchannel " + Canal.getName() + " : "); for (int i = 0; i < Canal.getType().size(); i++) { if (i == Canal.getType().size() - 1) { setRule(getRule() + Canal.getType().get(i).getNome()); } else { setRule(getRule() + Canal.getType().get(i).getNome() + "."); } } } }