[cooperativefsm] r17 committed - [No log message]

  • From: codesite-noreply@xxxxxxxxxx
  • To: cooperativefsm@xxxxxxxxxxxxx
  • Date: Wed, 21 Oct 2009 08:54:23 +0000

Revision: 17
Author: luca.cominardi@xxxxxxxxx
Date: Wed Oct 21 01:53:14 2009
Log: [No log message]
http://code.google.com/p/cooperativefsm/source/detail?r=17

Modified:
 /trunk/cooperativefsm/src/cooperativefsm/InputTast.java
 /trunk/cooperativefsm/src/cooperativefsm/InputXML.java
 /trunk/cooperativefsm/src/cooperativefsm/Transizione.java

=======================================
--- /trunk/cooperativefsm/src/cooperativefsm/InputTast.java Mon Oct 19 07:00:40 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/InputTast.java Wed Oct 21 01:53:14 2009
@@ -119,16 +119,16 @@
      public void inizializzaTrans (Fsm x)
      {
boolean continua = this.ciSonoTrans(); //metodo che verrà sovrascritto dalle sottoclassi
-        int k = 0;
+        int k=0;
         while (continua)
         {
Stato sorgente = this.leggiStatoConMax("sorgente", x.getNumStati()-1); Stato destinazione = this.leggiStatoConMax("destinazione", x.getNumStati()-1);

- Transizione t = new Transizione (Integer.toString(k),sorgente,destinazione);
+            Transizione t = new Transizione (k,sorgente,destinazione);
             x.addTrans(t);
-            System.out.println("Transizione inserita correttamente!");
             k++;
+            System.out.println("Transizione inserita correttamente!");
             continua = this.ciSonoTrans();
         }//while
      }
=======================================
--- /trunk/cooperativefsm/src/cooperativefsm/InputXML.java Mon Oct 19 07:00:40 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/InputXML.java Wed Oct 21 01:53:14 2009
@@ -7,7 +7,7 @@

 /**
  *
- * @author Renato
+ * @author Cominardi Luca
  */

 import java.io.File;
@@ -25,19 +25,18 @@

 public class InputXML extends Input {

- private Simulazione.Relazione relazioniTransizioni[][]; //Relazione è un tipo enum che definisce i tipi di relazione
-     private Vector<Fsm> listaFsm = new Vector<Fsm>();
-     private StatoCorrente statoIniziale = new StatoCorrente();
-     private Document doc = null;
-
-    public @Override Simulazione leggiSimulazione()
-    {
- return new Simulazione(listaFsm, relazioniTransizioni, statoIniziale);
-    }
-
- public @Override StatoCorrente leggiStatoIniziale(Vector<Fsm> list) {return new StatoCorrente();}
-
-    //costruttore di InputXML
+ private Simulazione.Relazione relazioniTransizioni[][]; //Relazione è un tipo enum che definisce i tipi di relazione
+    private Vector<Fsm> listaFsm = new Vector<Fsm>();
+    private StatoCorrente statoIniziale = new StatoCorrente();
+    private Vector<Stato> statoCur = new Vector<Stato>();
+    private Document doc = null;
+
+    /**
+     *
+     * @param URI
+     * @param è il percorso del file xml da caricre
+     * @return è il costruttore della classe InputXML
+     */
     public InputXML(String URI)
     {
         //provo a leggere il file e fare il parser xml
@@ -48,8 +47,12 @@
         }
         catch(Exception error)
         {
+            System.out.println("File xml non formattato correttamente");
             error.printStackTrace();
         }
+ //controllo che siano state create almeno 2 fsm prima di settare lo stato corrente della simulazione
+        if(statoCur.size()>1)
+            statoIniziale.setStati(statoCur.get(0), statoCur.get(1));
         /*
         System.out.println("Le fsm sono: " + listaFsm.size());
         System.out.println("Stati fsm1: " + listaFsm.get(0).getNumStati());
@@ -59,17 +62,43 @@
         */
     }

- //creo una nuova instanza di Simulazione facendo passare tutti i nodi presenti nel file
+    /**
+     *
+     * @return una nuova istanza di simulazione
+     * Metodo eriditato dalla classe Input
+     */
+    public @Override Simulazione leggiSimulazione()
+    {
+ return new Simulazione(listaFsm, relazioniTransizioni, statoIniziale);
+    }
+
+    /**
+     *
+     * @param list
+     * @return lo stato iniziale della simulazione
+     * Metodo eriditato dalla classe Input
+     */
+    public @Override StatoCorrente leggiStatoIniziale(Vector<Fsm> list)
+    {
+        return statoIniziale;
+    }
+
+    /**
+     *
+     * @param node
+     * @param level
+ * Serve per far passare tutti i nodi del file xml e invocare il metodo appropriato in base al tipo di oggetto
+     */
     private void insSIM(Node node, int level)
     {
+        //Estraggo tutti i nodi figli del nodo passato come parametro
         NodeList nl = node.getChildNodes();

+ //for che fa passare tutti i nodi figli del nodo passato come parametro
         for(int i=0, cnt=nl.getLength(); i<cnt; i++)
        {
+            //prendo il nome del nodo (identificatore tag)
             String test=nl.item(i).getNodeName();
-            //System.out.println(test);
-            //System.out.println(nl.item(i).getNodeName());
-            //System.out.println(nl.item(i).getNodeType());
//Se è definita una fsm la leggo e la aggiungo alla lista delle fsm
             if(test.equalsIgnoreCase("fsm"))
             {
@@ -85,6 +114,12 @@
         }
     }

+    /**
+     *
+     * @param node
+     * @return una istanza di Fsm
+     * Serve per creare e inizializzare una Fsm
+     */
     private Fsm insFSM(Node node)
     {
            boolean stati=true;
@@ -94,17 +129,23 @@
            Vector<Stato> listaS = new Vector<Stato>();
            Vector<Transizione> listaT = new Vector<Transizione>();

+           //Estraggo tutti i nodi figli del nodo passato come parametro
            NodeList nl = node.getChildNodes();

-           //prima controllo il name e il numero di stati
+           //Prima controllo il name e il numero di stati
+ //Prima devo creare gli stati per poter creare poi le transizioni che si riferiscono agli stati
            for(int i=0, cnt=nl.getLength(); i<cnt; i++)
            {
+               //prendo il nome del nodo (identificatore tag)
                 String test=nl.item(i).getNodeName();

                 if(test.equalsIgnoreCase("name"))
                 {
+                    //Se è presente un tag "name" imposto name=false
                     name=false;
+                    //Prendo il valore del tag name
                     id = nl.item(i).getFirstChild().getNodeValue();
+ //Controllo che non ci sia già un'altra fsm con lo stesso id
                     for(int j=0; j<listaFsm.size(); j++)
                     {
                         if(id.equals(listaFsm.get(j).getId()))
@@ -116,10 +157,13 @@
                 }
                 else if(test.equalsIgnoreCase("states"))
                 {
+                    //Se è presente un tag "states" imposto stati=false
                     stati=false;
                     try
                     {
+ //Faccio un parse da String a Int per il numero di stati int states = Integer.parseInt(nl.item(i).getFirstChild().getNodeValue()); + //Aggiungo un numero di stati pari a quanto definito in states
                         for(i=0; i<states; i++)
                         {
                             Stato s = new Stato(i+1);
@@ -132,28 +176,41 @@
                     }
                 }
            }//end for
-           //poi controllo le transizioni
+           //Ora posso creare le transizioni
            for(int i=0, cnt=nl.getLength(); i<cnt; i++)
            {
+               //prendo il nome del nodo (identificatore tag)
                 String test=nl.item(i).getNodeName();

                 if(test.equalsIgnoreCase("transition"))
                 {
+                    //Se è presente un tag "transition" imposto trans=false
                     trans=false;
+ //Leggo e aggiungo una transizione alla lista delle transizioni
                     listaT.add(insTRANS(nl.item(i), listaS, listaT));
                 }
                 else if(test.equalsIgnoreCase("current"))
                 {
-                    //TODO finire l'impostazione dello StatoCorrente
                     try
                     {
+ //Faccio un parse da String a Int per il numero dello stato corrente int stato = Integer.parseInt(nl.item(i).getFirstChild().getNodeValue()); + //Controllo che il numero dello stato corrente non sia maggiore del numero massimo degli stati
                         if(stato>listaS.size())
System.out.println("Il numero dello stato corrente non può superare il numero totale degli stati");
                         else
                         {
-                           //Stato s1=getStatoById(stato, listaS);
-                           //System.out.println(s1.ToString());
+ //Estraggo dalla lista degli stati l'oggetto Stato identificato dall'id
+                           Stato scurrent=getStatoById(stato, listaS);
+                           if(scurrent==null)
+                           {
+ System.out.println("Lo stato corrente è nullo");
+                           }
+                           else
+                           {
+ //Aggiungo lo stato corrente di questa fsm al vector degli stati correnti
+                               statoCur.add(scurrent);
+                           }
                         }
                     }
                     catch(NumberFormatException ne)
@@ -162,6 +219,7 @@
                     }
                 }
            }
+           //Messaggi di errore se non sono stati dichiarati alcuni tag
            if(name)
            {
                System.out.println("Non è stato definito l'id per una fsm");
@@ -174,29 +232,44 @@
            {
System.out.println("Non è stata definita alcuna transizione per una fsm");
            }
+           //Creo la fsm
            Fsm f = new Fsm(id, listaS, listaT);

            return f;
     }

+    /**
+     *
+     * @param node
+     * @param lS
+     * @param lT
+     * @return una transizione
+     * Serve per creare e inizializzare una transizione di una fsm
+     */
private Transizione insTRANS(Node node, Vector<Stato> lS, Vector<Transizione> lT)
     {
+        //Estraggo tutti i nodi figli del nodo passato come parametro
         NodeList nl = node.getChildNodes();
-        String id = "";
+
+        String nome = "";
         Stato s1 = null;
         Stato s2 = null;
         int length = 0;

+        //Faccio passare tutti i tag figli della transizione
         for(int i=0, cnt=nl.getLength(); i<cnt; i++)
         {
+            //prendo il nome del nodo (identificatore tag)
             String test=nl.item(i).getNodeName();

             if(test.equalsIgnoreCase("id"))
             {
-                id = nl.item(i).getFirstChild().getNodeValue();
+                //Prendo il valore del tag id
+                nome = nl.item(i).getFirstChild().getNodeValue();
+ //Controllo che non ci siano due transizioni con lo stesso id
                 for(int j=0; j<lT.size(); j++)
                 {
-                    if(id.equals(lT.get(j).getId()))
+                    if(nome.equals(lT.get(j).getNome()))
                     {
System.out.println("Due transizioni definite con lo stesso id!!!");
                         //TODO Uscire dal programma
@@ -207,13 +280,15 @@
             {
                 try
                 {
+ //Faccio un parse da String a int per il numero dello stato int stato = Integer.parseInt(nl.item(i).getFirstChild().getNodeValue()); + //Controllo che il numero dello stato non sia maggiore del numero degli stati della fsm
                     if(stato>lS.size())
System.out.println("Il numero dello stato non può superare il numero totale degli stati");
                     else
                     {
+ //Estraggo dalla lista degli stati l'oggetto Stato identificato dall'id
                         s1=getStatoById(stato, lS);
-                        //System.out.println(s1.ToString());
                     }
                 }
                 catch(NumberFormatException ne)
@@ -225,11 +300,14 @@
             {
                 try
                 {
+ //Faccio un parse da String a int per il numero dello stato int stato = Integer.parseInt(nl.item(i).getFirstChild().getNodeValue()); + //Controllo che il numero dello stato non sia maggiore del numero degli stati della fsm
                     if(stato>lS.size())
System.out.println("Il numero dello stato non può superare il numero totale degli stati");
                     else
                     {
+ //Estraggo dalla lista degli stati l'oggetto Stato identificato dall'id
                         s2=getStatoById(stato, lS);
                     }
                 }
@@ -244,14 +322,30 @@
System.out.println("length: " + nl.item(i).getFirstChild().getNodeValue());
             }*/
         }
-        Transizione T = new Transizione(id,s1,s2);
-        s1.addTransUscente(T);
+        //Creo una istanza di Transizione
+        Transizione T = null;
+ //Prima di inizializzare T controllo che gli stati s1 e s2 non siano nulli
+        if(s1!=null && s2!=null)
+        {
+            T = new Transizione(lT.size(),s1,s2);
+            //Setto il nome simbolico della transizione
+            T.setNome(nome);
+ //Aggiungo allo stato sorgente della transizione la transizione stessa come transizione uscente
+            s1.addTransUscente(T);
+        }
         return T;
     }

+    /**
+     *
+     * @param id
+     * @param lS
+ * @return lo stato identificato dall'id all'interno della lista di stati passata per parametro
+     */
     private Stato getStatoById(int id, Vector<Stato> lS)
     {
         Stato k = null;
+ //Faccio passare tutti gli stati e controllo se è presente l'id passato come parametro
         for(int i=0; i<lS.size(); i++)
         {
             Stato p = lS.get(i);
@@ -261,8 +355,16 @@
         return k;
     }

+    /**
+     * @param node
+     * Serve per creare e inizializzare una relazione tra transizioni
+     */
     private void insREL(Node node)
     {
+        int x = listaFsm.get(0).getNumTr();
+        int y = listaFsm.get(1).getNumTr();
+ Simulazione.Relazione relazioniTransizioni[][] = (new Simulazione.Relazione [x+1][y+1]);
+
         NodeList nl = node.getChildNodes();

         for(int i=0, cnt=nl.getLength(); i<cnt; i++)
@@ -276,7 +378,7 @@
         }
     }

-    public void insTRANSVAL(Node node)
+    private void insTRANSVAL(Node node)
     {
         NodeList nl = node.getChildNodes();

@@ -296,7 +398,14 @@
     }


-
+    /**
+     *
+     * @param file
+ * @return un oggetto di tipo Document, è un albero contenente tutti i nodi xml
+     * @throws SAXException
+     * @throws IOException
+     * @throws ParserConfigurationException
+     */
public Document parserXML(File file) throws SAXException, IOException, ParserConfigurationException
     {
return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);
=======================================
--- /trunk/cooperativefsm/src/cooperativefsm/Transizione.java Mon Oct 19 07:00:40 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/Transizione.java Wed Oct 21 01:53:14 2009
@@ -11,8 +11,8 @@
  */
 public class Transizione {

- //private int id; //è il numero progressivo assegnato alla transizione, riferito alla fsm cui appartiene
-    private String id;
+ private int id; //è il numero progressivo assegnato alla transizione, riferito alla fsm cui appartiene
+    //private String id;
private String nome; //identifica una certa transizione (attributo opzionale)
     private Stato stato1;
     private Stato stato2;
@@ -25,7 +25,7 @@
      * @param _stato2
      */

-    public Transizione(String _id, Stato _stato1, Stato _stato2)
+    public Transizione(int _id, Stato _stato1, Stato _stato2)
     {
         id = _id;
         stato1 = _stato1;
@@ -34,13 +34,23 @@

     public String ToString()
     {
-        String s = ("Transizione numero: " + id +
+        String s = ("Transizione numero: " + id + "\nNome: " + nome +
                     "\nDallo stato " + stato1.getId() +
                     " allo stato " + stato2.getId());
         return s;
     }

-    public String getId()
+    public void setNome(String _nome)
+    {
+        nome = _nome;
+    }
+
+    public String getNome()
+    {
+        return nome;
+    }
+
+    public int getId()
     {
         return id;
     }

Other related posts:

  • » [cooperativefsm] r17 committed - [No log message] - codesite-noreply