Blame view

BRIC/src/CSP_ANALYSE/AnalyseRuleInterleave.java 4.34 KB
eeb5cac08   Madiel de Souza Conserva Filho   first
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
  /*
   * 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<FDRResult> rule;
      private LinkedList<Instance> instance;
      private String pegarErro = "";
      private Contract c;
      private ReadFileCSP rdf;
      private ReturnMensageFDR mensagemF;
  
      public AnalyseRuleInterleave(LinkedList<Instance> i) {
          instance = i;
          rule = new ArrayList<FDRResult>();
          c = new Contract();
          c.setName("RuleInterleaveOf" + i.get(0).getName() + "_" + i.get(1).getName());
          rdf = new ReadFileCSP(c);
          mensagemF = new ReturnMensageFDR(c);
      }
  
      public ArrayList<FDRResult> 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;
      }
  }