AnalyseRuleInterleave.java 4.34 KB
   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;
}
}