KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cve > esecutori > components > automatonB > AutControlB


1 /*
2 * @(#)AutControlB.java 1.00 22/02/02
3 */

4
5 package cve.esecutori.components.automatonB;
6
7 import java.io.File JavaDoc;
8 import java.io.IOException JavaDoc;
9 import java.io.*;
10 import java.util.*;
11
12 import org.jdom.*;
13 import org.jdom.Document;
14 import org.jdom.Element;
15 import org.jdom.JDOMException;
16 import org.jdom.input.SAXBuilder;
17 import org.jdom.output.XMLOutputter;
18
19 import cve.esecutori.components.specificaLV.*;
20 import cve.staticLayout.*;
21 import cve.util.ConfigurationRead;
22
23 import org.apache.log4j.Logger;
24
25 /**
26 * Permette la creazione della macchina a stati finiti
27 * (automa di controllo dell'interazione visuale) che contiene le
28 * informazioni necessarie per la generazione di sentenze visuali
29 * corrette(algoritmo toplas).
30 *
31 * Logica: utilizza i servizi offerti da ISpecifica, finalizzati
32 * all'acquisizione delle informazioni derivanti dalla specifica
33 * di un linguaggio visuale. (vedere interfaccia ISpecifica).
34 * Utilizza la classe di servizio WippogSpe per creare le specifiche
35 * Wippog.
36 *
37 * Result: class indipendente dall'implemantazione scelta per
38 * rappresentare la macchina a stati finiti. Dipende dal
39 * dtd utilizzato alla specifica del linguaggio visuale
40 *
41 *@see cve.esecutori.components.automatonB.IAutomaControllo
42 *
43 */

44 public class AutControlB implements IAutomaControllo {
45
46    private WippogAut wip;
47
48    /**
49    * Contiene tutti i nomi dei membri di una relazione
50    */

51    private HashSet memberRel=new HashSet();
52
53    /**
54    * Contiene tutti i nomi degli stati utilizzati dall'automa
55    */

56    private HashSet stateSet=new HashSet();
57
58    /**
59    * Contiene tutti l'alfabeto delle azioni utente
60    */

61    private HashSet userAction=new HashSet();
62
63    /**
64    * Contiene tutti i valori (stringa)e i nomi delle attivita' da associare ad una transizione
65    */

66    private HashSet activityValue=new HashSet();
67    private HashSet activityName=new HashSet();
68
69    /**
70    * Contiene tutti i nomi (stringa) delle attivita' da associare ad una transizione
71    */

72    private Vector activityValueA=new Vector();
73    private Vector activityNameA=new Vector();
74
75    /**
76    * Contiene tutti il valore e il nome(stringa) di process da associare ad una transizione
77    */

78    private HashSet processValue=new HashSet();
79    private HashSet processName=new HashSet();
80
81    /**
82    * Contiene tutti gli id (stringa) di get da associare ad una transizione
83    */

84    private HashSet idGet=new HashSet();
85
86    /**
87    * Contiene tutti i valori e i nomi dei produce da associare ad una transizione
88    */

89    private HashSet produceValue=new HashSet();
90    private HashSet produceName=new HashSet();
91    //private HashMap scheletro;
92
private HashSet scheletroName=new HashSet();
93    private Vector scheletroValue=new Vector();
94
95    /* ############## METODI PUBLIC ################################
96    ############################################################# */

97
98    /**
99    *
100    * Logica: Vedere algoritmo toplas
101    * Result: se true ritorna la macchina a stati finiti nella locazione
102    * indicata in config(). Se false allora si sono verificati errori
103    *
104    * @param spe il gestore della specifica scelto deve implementare ISpecifica
105    * @param fileA file alfabeto
106    * @param fileLang file regole
107    *
108    */

109    public String JavaDoc createCA(String JavaDoc fileA,File JavaDoc fileLang,ISpecifica spe)throws java.io.IOException JavaDoc {
110       Cve.errLog.debug("");
111       // inizializzo specifica automa e sentenza wippog
112
String JavaDoc nameFileLanguage=fileLang.getName();
113       String JavaDoc filePath=fileLang.getParent();
114       String JavaDoc fileS=filePath+"/"+"Sent_"+nameFileLanguage;
115       initialize(fileA,fileS,spe);
116       CollectionTransaction colleTransactionAut=new CollectionTransaction();
117       // inizializzo userAction
118
userAction.add("select");
119       userAction.add("deselect");
120       //userAction.add("triggerR");
121
create_kernel_bin(spe, colleTransactionAut);
122       free_creation(spe);
123       create_traps(colleTransactionAut,spe);
124       //Create_Validity_checker()
125
String JavaDoc fileAut=wip.saveFileAut(fileLang);
126       return fileAut;
127    }
128
129
130    /**
131    * Simulazione del componente di crezione specifica wippg
132    */

133    public static void main(String JavaDoc[] args) throws java.io.IOException JavaDoc {
134       Cve.errLog.debug("");
135       // lettura alfabeto e regole
136
//String fileA="c:/cve1.0/VisualLanguage/petriAlf1.xml";
137
//String fileR="c:/cve1.0/VisualLanguage/petriRule.xml";
138
String JavaDoc fileS="filesent";
139       // analisi dei file
140
String JavaDoc fileA=ConfigurationRead.getCveRoot()+"/VisualLanguage/cveAlf1.xml";
141       String JavaDoc fileR=ConfigurationRead.getCveRoot()+"/VisualLanguage/cveRules1.xml";
142       Specifica spe=new Specifica(fileR,fileA);
143       // creazione automa
144
AutControlB msf=new AutControlB();
145       //msf.createCA(fileA,fileS,spe);
146
//wip.saveFileXml();
147
}
148
149    /* ############## METODI PRIVATE ################################
150    ############################################################# */

151
152    /**
153    * Inizializzazione specifica wippog automa e sentenza
154    */

155    private void initialize(String JavaDoc fileA,String JavaDoc fileS,ISpecifica spe) {
156       Cve.errLog.debug("");
157       wip= new WippogAut(spe);
158       wip.configAut (fileA,fileS);
159       // metto tag alfabeto, sentensa, defines, import export in automa
160
}
161
162    /**
163    *
164    * Logica: per ogni stato presente nella lista stateSet crea transizione
165    * per creare una free element
166    * @param spe il gestore della specifica scelto deve implementare
167    * ISpecifica
168    */

169    private void free_creation(ISpecifica spe) {
170       Cve.errLog.debug("");
171       Collection free=spe.getFreeCreation();
172       System.out.println("<<<<<<<< DENTRO FREE CREATION >>>>>>>free-->"+free.size());
173       // la chiave e' il nome del tipo e il valore e' l'insieme (name, tipo)
174
clearList();
175       if ((free!=null)&&(stateSet!=null)) {
176          // ViewLog.writeInLog(" stateSet e' lunga "+stateSet.size()+"\n" );
177
Iterator its=stateSet.iterator();
178          while (its.hasNext()){
179             String JavaDoc stato=(String JavaDoc)its.next();
180             //ViewLog.writeInLog(" stato vale "+stato+"\n");
181
Iterator itf=free.iterator();
182             while(itf.hasNext()){// per ogni elemento free
183
String JavaDoc freeEle=(String JavaDoc)itf.next();
184                activityValueA.add(freeEle);
185                activityNameA.add("Generate");
186                idGet.add(freeEle);
187                wip.transitionA(stato,stato,"TriggerF",activityValueA, activityNameA,idGet); //5
188
clearList();
189                // metto lo scheletro dell'elemento in produceValue
190
//HashSet scheletroName=new HashSet();
191
//scheletroName.add(freeEle);
192
//scheletroValue.addAll((Collection)scheletro.get(freeEle));
193
//System.out.println(" scheletroValue dim "+scheletroValue.size());
194
/*0*/ //transitionS(activityValue,activityName,"",null,null,scheletroValue, scheletroName, null);
195

196             }
197          }
198       }
199    }
200
201    /**
202    * Creazione delle transizioni di errore
203    * Logica: Per ogni stato, per ogni azione utente, per ogni elemento, verifichiamo se vi e'
204    * associata una transizione corretta, altrimenti creazione transizione di errore
205    *
206    */

207    private void create_traps(CollectionTransaction colleTransactionAut,ISpecifica spe) {
208       Cve.errLog.debug("");
209       System.out.println("<<<<<<<< DENTRO CREATE TRAPS >>>>>>>");
210       Vector free=new Vector( spe.getNonRelation() );
211       System.out.println("<<<<<<<< DENTRO CREATE TRAPS >>>>>>>free-->"+free.size());
212       Iterator its=stateSet.iterator();
213       while (its.hasNext()){ // per ogni stato
214
String JavaDoc state=(String JavaDoc)its.next();
215          System.out.println(" DENTRO STATE:"+state);
216          Iterator user=userAction.iterator();
217          while (user.hasNext()) { // per ogni azione utente
218
String JavaDoc action=(String JavaDoc)user.next();
219             System.out.println(" DENTRO USER ACTION:"+action);
220             Iterator itEle=free.iterator();
221             while(itEle.hasNext()) {// per ogni elemento free
222
ElementNonRel eleNonRel=(ElementNonRel)itEle.next();
223                String JavaDoc element=((Element)eleNonRel.getElementXml()).getAttributeValue("name");
224                System.out.println(" DENTRO ELEMENT:"+element);
225                // se non esiste transizione corretta bisogna generare errore
226
if (!colleTransactionAut.exist(state,action,element)) {
227                   System.out.println("Trans ERRORE -> State:"+state+" Action:"+action+" Element:"+element);
228                   wip.transitionError(state,element,action);
229
230                }
231             }
232          }
233       }
234    }
235
236    /**
237    *
238    *Logica: Utilizzando ISpecifica creo per ogni relazione la lista memberRel che contine tutti
239    * i membri di una relazione, KsTot, KtTot, KstTot.
240    * Mentre per ogni relazione ed elemento creo Ks,Kt,Kst
241    * Viene lanciato createControlBin.
242    * Algoritmo toplas.
243    *@param spe ISpecifica tipologia di gestore della specifica
244    */

245    private void create_kernel_bin(ISpecifica spe,CollectionTransaction colleStateGet)throws java.io.IOException JavaDoc {
246
247       // Ks e' un insiemi di coppie (elemento, nomi dei suoi sorgenti
248
//(anaologo a Kt,Kst)
249
Cve.errLog.debug("");
250       HashMap Ks=new HashMap(),Kt=new HashMap(),Kst=new HashMap();
251
252       // KsTot e' l'insiemi dei nomi degli elementi che possono essere
253
// source per una relazione data (anaologo a KtTot,KstTot)
254
HashSet listName=new HashSet(), KsTot=new HashSet(),KtTot=new HashSet(),KstTot=new HashSet();
255       Vector KRel=new Vector(spe.getRelation());
256       Vector KNonRel=new Vector( spe.getNonRelation() );
257       ViewLog.writeInLog(" ****************************"+"\n");
258       ViewLog.writeInLog(" Sono in create kernel il numero di relazioni e' "+KRel.size()+"\n");
259       ViewLog.writeInLog(" Sono in create kernel il numero di non relazioni e' "+KNonRel.size()+"\n");
260       for (int i=0; i<KRel.size(); i++) {
261          ElementRel eleRel=(ElementRel)KRel.get(i); // prendo Elemento che gestisce relazioni
262
String JavaDoc nameRel=((Element)eleRel.getElementXml()).getAttributeValue("name");
263          ViewLog.writeInLog(" Relazione in esame "+nameRel+"\n");
264          for (int j=0; j<KNonRel.size(); j++) {
265             ElementNonRel eleNonRel=(ElementNonRel)KNonRel.get(j);
266             String JavaDoc nameNonRel=((Element)eleNonRel.getElementXml()).getAttributeValue("name");
267             ViewLog.writeInLog(" ->Elemento non relazione esaminato "+nameNonRel+"\n");
268             listName=(HashSet)spe.getTarget(eleRel,eleNonRel);
269             if ((listName!=null)&&(listName.size()>0)) {
270                Kt.put(nameNonRel,listName);
271                memberRel.addAll(listName);
272                KtTot.addAll(listName); // target globali pe rla relazione
273
ViewLog.writeInLog(" KtTot e' lunga "+ listName.size()+ "\n");
274                ViewLog.writeInLog(" Kt per la coppia esaminata <relazione, elemento> e' lunga "+ listName.size()+":");
275                Iterator it=listName.iterator();
276                while (it.hasNext()) {
277                   String JavaDoc app=(String JavaDoc)it.next();
278                   ViewLog.writeInLog(" "+ app+",");
279                }
280                ViewLog.writeInLog("\n");
281             }
282             listName=(HashSet)spe.getSource(eleRel,eleNonRel);
283             if ((listName!=null)&&(listName.size()>0)){
284                Ks.put(nameNonRel,listName);
285                memberRel.addAll(listName);
286                KsTot.addAll(listName); // source globali per la relazione
287
ViewLog.writeInLog(" KtTot e' lunga "+ listName.size()+ "\n");
288                ViewLog.writeInLog(" Ks per la coppia esaminata <relazione, elemento> e' lunga** "+ listName.size()+":");
289                Iterator it=listName.iterator();
290                while (it.hasNext()){
291                   String JavaDoc app=(String JavaDoc)it.next();
292                   ViewLog.writeInLog(" "+ app+",");
293                }
294                ViewLog.writeInLog("\n");
295             }
296             listName=(HashSet)spe.getSourceTarget(eleRel, eleNonRel);
297             if ((listName!=null)&&(listName.size()>0)) {
298                Kst.put(nameNonRel,listName);
299                memberRel.addAll(listName);
300                KstTot.addAll(listName); // source globali per la relazione
301
ViewLog.writeInLog(" kst listName e' lungo** "+listName.size()+":");
302                Iterator it=listName.iterator();
303                while (it.hasNext()){
304                   String JavaDoc app=(String JavaDoc)it.next();
305                   ViewLog.writeInLog(" **elemento ks** "+ app+"\n");
306                }
307                ViewLog.writeInLog("\n");
308             }
309          }
310          // lancio createControlBin con il riferimento alla relazione,
311
// nomi dei suoi membri, le liste di coppie e le slite globali
312
createControlBin(nameRel,memberRel,Ks,Kt,Kst, KsTot,KtTot,KstTot,colleStateGet);
313          ViewLog.writeInLog(" Fine creazione automa per relazione "+nameRel+"\n");
314          if (memberRel!=null)
315          memberRel.clear();
316          if (Kst!=null)
317          Kst.clear();
318          if (Ks!=null)
319          Ks.clear();
320          if (Kt!=null)
321          Kt.clear();
322          if (KsTot!=null)
323          KsTot.clear();
324          if (KtTot!=null)
325          KtTot.clear();
326          if (KstTot!=null)
327          KstTot.clear();
328       }
329    }
330
331    /**
332    *
333    * Vedere algoritmo in toplas
334    */

335    private void createControlBin(String JavaDoc nameEleRel,Set memberRel,Map Ksou,Map Ktar,Map Ksoutar,Set KsTot,Set KtTot,Set KstTot, CollectionTransaction colleStateGet){
336       HashSet Ktot=new HashSet();
337       String JavaDoc input, cond;
338       // creo insiemi ktot
339

340       Cve.errLog.debug("");
341       if (memberRel!=null)
342       Ktot=new HashSet(memberRel);
343       ViewLog.writeInLog(" INIZIO CREATECONTROLBIN"+"\n");
344       ViewLog.writeInLog(" la relazione e' "+nameEleRel+"\n");
345       ViewLog.writeInLog(" Member e' lungo "+memberRel.size()+"\n");
346       if (memberRel!=null){
347          Iterator it=memberRel.iterator(); // tutti i nomi dei membri della relazione
348
while (it.hasNext()){
349             String JavaDoc nameEle=(String JavaDoc)it.next();
350             ViewLog.writeInLog(" membro "+nameEle+"\n");
351          }
352       }
353       ViewLog.writeInLog(" KsTot "+"\n");
354       if ((KsTot!=null)){
355          Iterator itst=KsTot.iterator(); // tutti i nomi dei membri della relazione
356
while (itst.hasNext()){
357             String JavaDoc nameEle=(String JavaDoc)itst.next();
358             ViewLog.writeInLog(" source tot relazione corrente "+nameEle+"\n");
359          }
360       }
361       ViewLog.writeInLog(" KtTot "+"\n");
362       if ((KtTot!=null)){
363          Iterator itst=KtTot.iterator(); // tutti i nomi dei membri della relazione
364
while (itst.hasNext()){
365             String JavaDoc nameEle=(String JavaDoc)itst.next();
366             ViewLog.writeInLog(" target tot della relazione corrente "+nameEle+"\n");
367          }
368       }
369       ViewLog.writeInLog(" KstTot "+"\n");
370       if ((KstTot!=null)){
371          Iterator itst=KstTot.iterator(); // tutti i nomi dei membri della relazione
372
while (itst.hasNext()){
373             String JavaDoc nameEle=(String JavaDoc)itst.next();
374             ViewLog.writeInLog(" Kst tot della relazione corrente "+nameEle+"\n");
375          }
376       }
377       ViewLog.writeInLog(" *** automa creato correttamante (CREATECONTROLBIN) "+"\n");
378
379       //****************** inizio algoritmo **********
380
// inizializzazione dello stato corrente a start viene atto in wippog
381
//per ogni membro della relazione attuale
382
stateSet.add("Start");
383       Iterator itKtot=Ktot.iterator();
384       System.out.println("\n\n");
385       System.out.println("@ PRIMA CICLO WHILE rel->"+nameEleRel+" @@@@@"+"\n");
386       while (itKtot.hasNext()) {
387          System.out.println("@@ dentro CICLO WHILE ");
388          String JavaDoc nameEleX=(String JavaDoc)itKtot.next();
389          String JavaDoc nameEleXSel=nameEleX+"_Sel";
390          String JavaDoc nameEleY="";
391          String JavaDoc namePairXYSel="";
392          System.out.println("@@ EleX->"+nameEleX);
393          stateSet.add(nameEleXSel); // se non esiste aggiorno lista stati
394
clearList();
395          idGet.add(nameEleX);
396          System.out.println("@@ 1)Start->"+nameEleXSel);
397          // --> transitionA(StatoIni,StatoFin,"select",activityValore,activityName,Get); <---
398
if (colleStateGet.insertIfNotExist("Start","select",nameEleX))
399          /*1*/ wip.transitionA("Start",nameEleXSel,"select",activityValueA,activityNameA,idGet); //1
400
clearList();
401          idGet.add(nameEleX);
402          System.out.println("@@ 2)"+nameEleXSel+"->Start");
403          if (colleStateGet.insertIfNotExist(nameEleXSel,"deselect",nameEleX))
404          /*2*/ wip.transitionA(nameEleXSel,"Start","deselect",activityValueA,activityNameA,idGet); //2
405
if ((KstTot.contains(nameEleX))||(KsTot.contains(nameEleX)) ){ // una istanza puo' essere sorgente
406
System.out.println("@@ dentro if se e' sorgente->"+nameEleX );
407             HashSet Kstt= new HashSet();
408             if (Ktar.get(nameEleX)!=null){// prendo i target di nameEleX
409
Kstt.addAll((Set)Ktar.get(nameEleX));
410                System.out.println("@@ Kstt vale (Ktar)->"+Kstt.toString() );
411             }
412             if (Ksoutar.get(nameEleX)!=null){// prendo i sourcetarget di nameEleX
413
Kstt.addAll((Set)Ksoutar.get(nameEleX));
414                System.out.println("@@ Kstt vale (Ksoutar)->"+Kstt.toString() );
415             }
416             if (Kstt!=null) {
417                System.out.println("@@ Inizo a scorrere target->");
418                Iterator itKstt=Kstt.iterator();
419                while (itKstt.hasNext()) {
420                   nameEleY=(String JavaDoc)itKstt.next();
421                   System.out.println("@@@ target->"+nameEleY);
422                   String JavaDoc nameEleYSel=nameEleY+"_Sel";
423                   //ViewLog.writeInLog(" questo elemento -> " +nameEleY+" e' in Kstt di -> "+nameEleX+"\n");
424
namePairXYSel=nameEleX+nameEleY+"_Sel";
425                   stateSet.add(namePairXYSel);
426                   clearList();
427                   activityNameA.add("eButton");
428                   activityValueA.add(nameEleRel);
429                   idGet.add(nameEleY);
430                   System.out.println("@@@ 3)"+nameEleXSel+"->"+namePairXYSel);
431                   if (colleStateGet.insertIfNotExist(nameEleXSel,"select",nameEleY))
432                   /*3*/ wip.transitionA(nameEleXSel,namePairXYSel,"select",activityValueA,activityNameA,idGet); //3
433
clearList();
434                   activityNameA.add("dButton");
435                   activityValueA.add(nameEleRel);
436                   idGet.add(nameEleY);
437                   System.out.println("@@@ 4)"+namePairXYSel+"->"+nameEleXSel);
438                   if (colleStateGet.insertIfNotExist(namePairXYSel,"deselect",nameEleY))
439                   /*4*/wip.transitionA(namePairXYSel,nameEleXSel,"deselect",activityValueA,activityNameA,idGet); //4
440
clearList();
441                   activityValueA.add(nameEleRel);
442                   activityNameA.add("generate");
443                   idGet.add(nameEleRel);
444                   System.out.println("@@@ 5)"+namePairXYSel+"->"+namePairXYSel+ "Trigger");
445                   if (colleStateGet.insertIfNotExist(namePairXYSel,"triggerR",nameEleRel))
446                   /*5*/ wip.transitionA(namePairXYSel,namePairXYSel,"triggerR",activityValueA, activityNameA,idGet); //5
447
activityValueA.add(nameEleRel);
448                   activityNameA.add("generate");
449                   idGet.add(nameEleRel);
450                   //System.out.println("@@ 5.1)"+ namePairXYSel+"-->"+"conditionSent");
451
/*5.1*/
452                   //wip.transitionA(namePairXYSel,"conditionSent","triggerR", activityValueA,activityNameA,idGet); //10
453
clearList();
454                   activityValueA.add(nameEleRel);
455                   activityNameA.add("dButton");
456                   clearList();
457                   //System.out.println(" 5.2) ConditionSent"+"-->"+namePairXYSel);
458
/*5.2*/
459                   //wip.transitionA("conditionSent",namePairXYSel,"conditionF",activityValueA,activityNameA,idGet); //5
460
clearList();
461                   activityValueA.add(nameEleRel);
462                   activityNameA.add("dButton"); // correzione 12/05
463
if (colleStateGet.insertIfNotExist(namePairXYSel,"conditionT",""))
464                   /*6*/ wip.transitionA(namePairXYSel,namePairXYSel,"conditionT",activityValueA,activityNameA,idGet); //6
465
// crea errori
466
clearList();
467                   activityValueA.add(nameEleRel);
468                   activityNameA.add("dButton");
469                   idGet.add(nameEleX);
470                   if (colleStateGet.insertIfNotExist(namePairXYSel,"deselect",nameEleX))
471                   /*7*/ wip.transitionA(namePairXYSel,nameEleYSel,"deselect",activityValueA,activityNameA,idGet); //6
472
clearList();
473                   //@ if (KsTot!=null&&KsTot.contains(nameEleX)){
474
//@ clearList();
475
//@ activityValueA.add(nameEleRel);
476
//@ activityNameA.add("eButton");
477
//@ idGet.add(nameEleX);
478
//@ /*7*/ wip.transitionA(nameEleYSel,namePairXYSel,"select",activityValueA,activityNameA,idGet); //7
479
//@ }
480
} //end while
481
}//end if
482
}//end if kst
483
/*if (KtTot.contains(nameEleX)){ // una istanza puo' essere target
484          System.out.println("@@ Dentro if istanza target->"+nameEleX);
485          HashSet Ksst= new HashSet();
486          if (Ksou.get(nameEleX)!=null){// prendo i target di nameEleX
487          Ksst.addAll((Set)Ksou.get(nameEleX));
488          System.out.println("@@ Ksst (Ksou)->"+Ksst.toString());
489          }
490          if (Ksoutar.get(nameEleX)!=null){// prendo i sourcetarget di nameEleX
491          Ksst.addAll((Set)Ksoutar.get(nameEleX));
492          System.out.println("@@ Ksst (Ksoutar)->"+Ksst.toString());
493          }
494          Iterator itKsst=Ksst.iterator();
495          while (itKsst.hasNext()) {
496          nameEleY=(String)itKsst.next();
497          String nameEleYSel=nameEleY+"_Sel";
498          System.out.println("@@@ elemento in ksst->"+nameEleY);
499          String namePairYXSel=nameEleX+nameEleY+"_Sel";
500          stateSet.add(namePairYXSel);
501          clearList();
502          activityValueA.add(nameEleRel);
503          activityNameA.add("eButton");
504          idGet.add(nameEleX);
505          System.out.println(" 8)"+ nameEleXSel+"-->"+namePairYXSel);
506          /*8*/

507          /*wip.transitionA(nameEleXSel,namePairYXSel,"select",activityValueA,activityNameA,idGet); //8
508          clearList();
509          activityValueA.add(nameEleRel);
510          activityNameA.add("dButton");
511          idGet.add(nameEleY);
512          System.out.println(" 9)"+ namePairYXSel+"-->"+nameEleXSel);
513          /*9*/

514          /* wip.transitionA(namePairYXSel,nameEleXSel,"deselect",activityValueA,activityNameA,idGet); //9
515          clearList();
516          activityValueA.add(nameEleRel);
517          activityNameA.add("generate");
518          idGet.add(nameEleRel);
519          System.out.println(" 10)"+ namePairXYSel+"-->"+"conditionSent");
520          /*10*/

521          /* wip.transitionA(namePairYXSel,"conditionSent","triggerR", activityValueA,activityNameA,idGet); //10
522          clearList();
523          activityValueA.add(nameEleRel);
524          activityNameA.add("dButton");
525          // wip.transitionA("conditionSent","Start","conditionT",activityValueA,activityNameA,idGet); //5
526          clearList();
527          System.out.println(" 10.2) ConditionSent"+"-->"+namePairYXSel);
528          /*10.2*/

529          /* wip.transitionA("conditionSent",namePairYXSel,"conditionF",activityValueA,activityNameA,idGet); //5
530          //gestione errori
531          }// fine while
532          } // fine if target
533          */

534       } //fine while
535
// transizione che consente di tornare a start perche' creazione rel avvenuta
536
/*clearList();
537       activityValueA.add(nameEleRel);
538       activityNameA.add("dButton"); // correzione 12/05
539       wip.transitionA("","","conditionT",activityValueA,activityNameA,idGet); //5 */

540    }
541
542    /**
543    * Inizializzazione strutture utilizzate
544    */

545    private void clearList() {
546       Cve.errLog.debug("");
547       activityValue.clear();
548       activityName.clear();
549       activityValueA.clear();
550       activityNameA.clear();
551       processValue.clear();
552       processName.clear();
553       produceValue.clear();
554       produceName.clear();
555       idGet.clear();
556       scheletroName.clear();
557       scheletroValue.clear();
558    }
559 }
560
561 /**
562 * Classe che gestisce coppie stato input
563 */

564 class StateGet {
565    String JavaDoc state="";
566    String JavaDoc userAction="";
567    String JavaDoc element="";
568
569    StateGet(String JavaDoc state,String JavaDoc userAction,String JavaDoc element){
570       Cve.errLog.debug("");
571       this.state=state;
572       this.userAction=userAction;
573       this.element=element;
574    }
575 }
576
577 /**
578 * Classe che gestisce collezioni di coppie stato input
579 */

580 class CollectionTransaction {
581    Vector colStateGet=null;
582
583    CollectionTransaction() {
584       Cve.errLog.debug("");
585       colStateGet=new Vector();
586    }
587
588    /**
589    * Inserisce istanza di StateGet se non esiste gia'
590    * restituisce true se non esiste gia
591    */

592    boolean insertIfNotExist(String JavaDoc state, String JavaDoc userAction,String JavaDoc element) {
593       int i=0;
594       StateGet curr=null,stateGet;
595       boolean trovato=false;
596
597       Cve.errLog.debug("");
598       stateGet=new StateGet(state,userAction,element);
599       while ( (i<colStateGet.size())&&(!trovato) ){
600          curr=(StateGet)colStateGet.get(i);
601          if ( (curr.state.equals(stateGet.state))&&
602          (curr.userAction.equals(stateGet.userAction))&&
603          (curr.element.equals(stateGet.element)) ) {
604             trovato=true;
605             System.out.println("----- Stato -->"+stateGet.state+" userAction-->"+stateGet.userAction+" ele-->"+stateGet.element);
606          }
607          i++;
608       }
609       if (trovato)
610       return false;
611       // inserisco istanza
612
System.out.println("----- insertIfNotExist insert State:"+state+ " UserAction:"+userAction+" element:"+element);
613       colStateGet.add(stateGet);
614       return true;
615    }
616
617
618    /**
619    * Restituisce true se esiste la transizione, false altrimenti
620    */

621    boolean exist(String JavaDoc state, String JavaDoc userAction,String JavaDoc element) {
622       int i=0;
623       StateGet curr=null;
624       boolean trovato=false;
625
626       Cve.errLog.debug("");
627       while ( (i<colStateGet.size())&&(!trovato) ){
628          curr=(StateGet)colStateGet.get(i);
629          if ( (curr.state.equals(state))&&
630          (curr.userAction.equals(userAction))&&
631          (curr.element.equals(element)) ){
632             trovato=true;
633             System.out.println("TROVATO ----- Stato -->"+state+" userAction-->"+userAction+" ele-->"+element);
634          }
635          i++;
636       }
637       return trovato;
638    }
639 }
640
Popular Tags