Exemple #1
0
  public void treatmentGenStateGraph() {
    try {
      PrintWriter file = new PrintWriter(new FileWriter(destination));
      // We want color wells in red
      ArrayList<String> lesPuits = new ArrayList<String>();
      file.println("digraph G {");
      file.println();

      // Prepare a bubble giving all genes
      file.println("/* Order of genes */");
      file.print("/*$g*/" + "\"");
      for (int j = 0; j < autoGraphState.vGeneNames.size(); j++) {
        file.print(autoGraphState.vGeneNames.get(j));
        file.print(" ; ");
      }
      file.println("\"" + "/*$fg*/" + " [color=green,fontcolor=black];");
      file.println();

      // List potential and their position statements
      file.println("/* States and their transitions */");
      for (int j = 0; j < autoGraphState.vStates.size(); j++) {
        file.print("/*$e*/" + "\"");
        file.print(autoGraphState.vStates.get(j).getEtiquette());
        file.print("\"");
        // x et y
        file.print(
            "/*x:"
                + autoGraphState.vStates.get(j).getX()
                + ";y:"
                + autoGraphState.vStates.get(j).getY()
                + " $fe*/");
        file.println(";");
      }
      file.println();

      // Recherche des transitions

      /*
       * A faire : les clous !
       */

      file.println("/* Transitions */");
      for (int i = 0; i < autoGraphState.vTranStates.size(); i++) {
        TransState trans = (TransState) autoGraphState.vTranStates.get(i);

        file.print("/*$t*/" + "\"");
        for (int j = 0; j < autoGraphState.vStates.size(); j++) {
          State state = (State) autoGraphState.vStates.get(j);
          if (state.getNum() == trans.getNumInitialState()) {
            /*
             * L'�tiquette est de la forme "[0, 1, 2]"
             * On la veut sous la forme "0,1,2" dans le .gen
             */
            String labelGen = state.getEtiquette();
            labelGen = labelGen.replace("[", "");
            labelGen = labelGen.replace("]", "");
            labelGen = labelGen.replace(" ", "");
            file.print(labelGen);
          }
        }
        file.print("\"");

        file.print("->");

        file.print("\"");
        for (int j = 0; j < autoGraphState.vStates.size(); j++) {
          State state = (State) autoGraphState.vStates.get(j);
          if (state.getNum() == trans.getNumFinalState()) {
            /*
             * The label is of the form "[0, 1, 2]"
             * We want it in the form "0,1,2" in the .gen
             */
            String labelGen = state.getEtiquette();
            labelGen = labelGen.replace("[", "");
            labelGen = labelGen.replace("]", "");
            labelGen = labelGen.replace(" ", "");
            file.print(labelGen);

            if (state.couleurPuit.equals(Color.red)) {
              lesPuits.add("\"" + labelGen + "\"");
            }
          }
        }
        file.print("\"" + "/*$ft*/");
        file.println(";");
      }
      file.println();

      // Ecrire dans le .gen les puits, et dire qu'il faudra afficher leur police en rouge
      file.println("/* Stable states */");
      while (lesPuits.isEmpty() == false) {
        String lePuit = lesPuits.get(0);
        file.println("/*$p*/" + lePuit + "/*$fp*/" + " [fontcolor=red];");
        while (lesPuits.contains(lePuit)) {
          lesPuits.remove(lePuit);
        }
      }
      file.println();
      file.println("}");
      file.println("");
      file.println(autoGraphState.comment);
      file.println("");
      // uncomment
      file.println("$ed");
      file.println("gene x");
      file.println("equation : 2 + 3 * s(p,y,theta(x,x))  * s(n,x,theta(x,y)) ;");
      file.println("thetas : theta(x,x) < theta(x,y) ;");
      file.println("gene y");
      file.println("equation : 1 + 2 * s(p,y,theta(y,x)) ;");
      file.println("thetas : theta(y,x) ;");
      file.println("$fed");
      file.println("");

      /* Le systeme d'equation ci-dessous sert pour les tests
       * Il sera a supprimer
       */
      // fichier.println("$ed");
      // fichier.println("gene x");
      // fichier.println("equation : 2 + 3 * s(p,y,theta(x,x))  * s(n,x,theta(x,y)) ;");
      // fichier.println("thetas : theta(x,x) < theta(x,y) ;");
      // fichier.println("gene y");
      // fichier.println("equation : 1 + 2 * s(p,y,theta(y,x)) ;");
      // fichier.println("thetas : theta(y,x) ;");
      // fichier.println("$fed");
      // fichier.println("");

      file.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }