/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package CSP_ANALYSE; import LOGIC.Contract; import LOGIC.Instance; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.ArrayList; import java.util.LinkedList; import javax.swing.JOptionPane; /** * * @author sarah */ public class AnalyseRuleInterleave { private ArrayList rule; private LinkedList instance; private String pegarErro = ""; private Contract c; private ReadFileCSP rdf; private ReturnMensageFDR mensagemF; public AnalyseRuleInterleave(LinkedList i) { instance = i; rule = new ArrayList(); c = new Contract(); c.setName("RuleInterleaveOf" + i.get(0).getName() + "_" + i.get(1).getName()); rdf = new ReadFileCSP(c); mensagemF = new ReturnMensageFDR(c); } public ArrayList resultRule() { rdf.saidaFDR(); // vai ler o arquivo saidaFDR.log verificando as condições de IOProcess File pegarSaida = new File("fdrLog/" + c.getName() + "_saida_" + rdf.getTemp() + ".log"); if (!pegarSaida.exists()) { System.exit(-1); } try { BufferedReader pegarResultado = new BufferedReader(new FileReader(pegarSaida)); String line = ""; while ((line = pegarResultado.readLine()) != null) { if (line == null) { FDRResult retorno = new FDRResult(); retorno.setMensagem("O arquivo CSP está com erro"); retorno.setResultado(false); rule.add(retorno); } else if (line.equals("Checking STOP [T= RUN(inter(events(" + instance.get(0).getName() + "),events(" + instance.get(1).getName() + ")))")) { line = pegarResultado.readLine(); if (line == null) { FDRResult retorno = new FDRResult(); retorno.setMensagem("O arquivo CSP está com erro"); retorno.setResultado(false); rule.add(retorno); } else { FDRResult retorno = new FDRResult(); if (line.equals("true") || line.equals("xtrue")) { retorno.setMensagem("The Alphabets are disjont"); retorno.setResultado(true); rule.add(retorno); } else { retorno.setMensagem("The Alphabets aren't disjont"); retorno.setResultado(false); rule.add(retorno); } } } else if (line.equals("Checking newComponent :[deadlock free[FD]]")) { line = pegarResultado.readLine(); if (line == null) { FDRResult retorno = new FDRResult(); retorno.setMensagem("O arquivo CSP está com erro"); retorno.setResultado(false); rule.add(retorno); } else { FDRResult retorno = new FDRResult(); if (line.equals("true") || line.equals("xtrue")) { retorno.setMensagem("The composition was successful (NO deadlock)"); retorno.setResultado(true); rule.add(retorno); } else { retorno.setMensagem("The composition was not successful (is deadlock)"); retorno.setResultado(false); rule.add(retorno); } } } } } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, "error occurred in verifying the composition"); } //pegarErroSaida(); if(rule.size() == 0){ FDRResult retorno = new FDRResult(); retorno.setMensagem("O arquivo CSP está com erro"); retorno.setResultado(false); rule.add(retorno); } rule.add(mensagemF.returnMensagefdr()); return rule; } }