Revision: 23 Author: luca.cominardi@xxxxxxxxx Date: Thu Oct 29 09:14:04 2009 Log: [No log message] http://code.google.com/p/cooperativefsm/source/detail?r=23 Modified: /trunk/cooperativefsm/fsm.xml /trunk/cooperativefsm/src/cooperativefsm/InputXML.java /trunk/cooperativefsm/src/cooperativefsm/Main.java /trunk/cooperativefsm/src/cooperativefsm/Simulazione.java /trunk/cooperativefsm/src/cooperativefsm/StatoCorrente.java ======================================= --- /trunk/cooperativefsm/fsm.xml Wed Oct 21 13:22:11 2009 +++ /trunk/cooperativefsm/fsm.xml Thu Oct 29 09:14:04 2009 @@ -2,7 +2,7 @@ <simulation> <fsm> <name>A</name> - <states>5</states> + <states>6</states> <transition> <id>a</id> <s1>1</s1> @@ -112,6 +112,4 @@ </transval> <type>mutex</type> </relation> - - </simulation> =======================================--- /trunk/cooperativefsm/src/cooperativefsm/InputXML.java Thu Oct 22 03:03:27 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/InputXML.java Thu Oct 29 09:14:04 2009
@@ -543,5 +543,4 @@return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);
} - -} +}//end class =======================================--- /trunk/cooperativefsm/src/cooperativefsm/Main.java Thu Oct 22 03:03:27 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/Main.java Thu Oct 29 09:14:04 2009
@@ -30,6 +30,7 @@ final String MESS_FINALE = "CIAO!";final String XML_NOT = "-- File xml non formattato correttamente!!! --";
final String XML_DEF = "fsm.xml"; + final String SALVA_SIM = "Vuoi salvare la simulazione? "; MyMenu menuInput = new MyMenu( TIPOINPUT , SCELTAINPUT ); boolean continua = true; @@ -59,7 +60,8 @@ s = in.leggiSimulazione(); System.out.println(s.ToString()); } catch (Exception ex) {- System.out.println(XML_NOT + ex.toString()); + //System.out.println(XML_NOT + ex.toString());
+ System.out.println(XML_NOT); // } catch (IOException ex) {// System.out.println("-- Il file specificato non esiste!!! --"); // //Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
@@ -75,7 +77,7 @@ case 0: { - System.out.println(MESS_FINALE); + //System.out.println(MESS_FINALE); //System.exit(0); continua=false; } @@ -91,7 +93,17 @@ //System.out.println(s.getListaFsm().get(0).ToString()); //System.out.println(s.getListaFsm().get(1).ToString()); - + if(s!=null) + { + boolean salva = Servizio.yesOrNo(SALVA_SIM); + if(salva) + {+ String url=Servizio.leggiString("Inserire il percorso dove salvare il file xml della simulazione (" + XML_DEF + ")> ");
+ if(url.equals("")) + url=XML_DEF; + s.salvaSimulazione(url); + } + } System.out.println(MESS_FINALE); } =======================================--- /trunk/cooperativefsm/src/cooperativefsm/Simulazione.java Thu Oct 22 01:53:27 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/Simulazione.java Thu Oct 29 09:14:04 2009
@@ -5,7 +5,9 @@ * @author Alessandro Ferrari, Carlo Svanera, Luca Cominardi */ import java.util.Vector; - +import java.io.*; +import java.util.logging.Level; +import java.util.logging.Logger; public class Simulazione { @@ -77,6 +79,82 @@ return true; } + + public void salvaSimulazione(String file) + { + try { + scriviSimulazione(file); + } catch (IOException ex) {+ Logger.getLogger(Simulazione.class.getName()).log(Level.SEVERE, null, ex);
+ } + } + + private void scriviSimulazione(String file) throws IOException + { + FileWriter outFile = new FileWriter(file); + PrintWriter out = new PrintWriter(outFile); + out.println("<?xml version=\"1.0\"?>"); + out.println("<simulation>"); + for(int i=0; i<listaFsm.size(); i++) + { + out.println("\t<fsm>"); + Fsm fsm=listaFsm.get(i); + out.println("\t\t<name>"+fsm.getId()+"</name>"); + out.println("\t\t<states>"+fsm.getNumStati()+"</states>"); + Vector<Transizione> tr = fsm.getTransizioni(); + for(int j=0; j<tr.size(); j++) + { + Transizione t=tr.get(j); + out.println("\t\t<transition>"); + out.println("\t\t\t<id>"+t.getNome()+"</id>");+ out.println("\t\t\t<s1>"+t.getStato1().getId()+"</s1>"); + out.println("\t\t\t<s2>"+t.getStato2().getId()+"</s2>");
+ out.println("\t\t</transition>"); + }+ out.println("\t\t<current>"+statoCorrente.getStato(i).getId()+"</current>");
+ out.print("\t</fsm>\n"); + } + //out.println("\n"); + for(int x=0; x<listaFsm.get(0).getNumTr(); x++) + { + for(int y=0; y<listaFsm.get(1).getNumTr(); y++) + { + if(relazioniTransizioni[x][y]!=Relazione.ASINCRONA) + { + out.println("\t<relation>"); + out.println("\t\t<transval>");+ out.println("\t\t\t<fsmval>"+listaFsm.get(0).getId()+"</fsmval>"); + out.println("\t\t\t<idval>"+getTrNameById(x, 0)+"</idval>");
+ out.println("\t\t</transval>"); + out.println("\t\t<transval>");+ out.println("\t\t\t<fsmval>"+listaFsm.get(1).getId()+"</fsmval>"); + out.println("\t\t\t<idval>"+getTrNameById(y, 1)+"</idval>");
+ out.println("\t\t</transval>"); + if(relazioniTransizioni[x][y]==Relazione.M_EX) + out.println("\t\t<type>mutex</type>");+ else if(relazioniTransizioni[x][y]==Relazione.SINCRONA)
+ out.println("\t\t<type>sync</type>"); + out.println("\t</relation>"); + } + } + } + out.println("</simulation>"); + out.close(); + } + + private String getTrNameById(int id, int index) + { + Fsm fsm=listaFsm.get(index); + Vector<Transizione> tr=fsm.getTransizioni(); + String name=""; + for(int i=0; i<tr.size(); i++) + { + int p=tr.get(i).getId(); + if(p==id) + name=tr.get(i).getNome(); + } + return name; + } public String ToString() { =======================================--- /trunk/cooperativefsm/src/cooperativefsm/StatoCorrente.java Thu Oct 15 07:02:36 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/StatoCorrente.java Thu Oct 29 09:14:04 2009
@@ -32,5 +32,15 @@ //sCorrenteFsm2 = new Stato(corrente2.getId()); sCorrenteFsm2 = corrente2; } + + public Stato getStato(int s) + { + Stato p = null; + if(s==0) + p=sCorrenteFsm1; + if(s==1) + p=sCorrenteFsm2; + return p; + } }