KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cve > esecutori > EACesec


1 package cve.esecutori;
2
3 import cve.osservatori.servizioOACesec.*;
4
5 import cve.core.elementEEL.*;
6 import cve.osservatori.*;
7 import cve.esecutori.components.specificaLV.*;
8 import cve.esecutori.servizioEACesec.*;
9 import wippog.*; // messo in lib
10
import wippog.tipidato.*;
11 import wippog.event.*;
12 import wippog.eccezioni.*;
13
14 import diagrammaticLanguage.*;
15 import cve.staticLayout.*;
16 import cve.util.ConfigurationRead;
17
18 import java.awt.*;
19 import java.util.*;
20 import javax.swing.*;
21 import java.io.File JavaDoc;
22 import java.io.IOException JavaDoc;
23
24 import org.jdom.*;
25 import org.jdom.input.SAXBuilder;
26 import org.jdom.output.XMLOutputter;
27
28 import org.apache.log4j.Logger;
29
30 public class EACesec extends Esecutore implements IEsecutionSentence
31 {
32     /**
33      * Contiene tutte le istanze della frase visuale
34      */

35     private Vector sentence;
36     
37     /**
38      * coppie nomeElemento, rappresetnazione(icona, Cp)
39      */

40     private HashMap rappresentations;
41     
42     /**
43      * file alfabeto e file specifica sentenza
44      */

45     String JavaDoc fileAlf,fileSent;
46     
47     /**
48      * Contiene gli id degli elementi che devono essere disabilitati
49      */

50     private Vector disabButton,enableButton;
51     
52     /**
53      * Path assouluto
54      */

55     private String JavaDoc path=ConfigurationRead.getCveRoot();
56     
57     /**
58      * nome dell'attributo identificatore dell'elemento alfabeto che sto analizzando
59      */

60     private String JavaDoc nameId;
61     
62     /**
63      * Elementi selezionati
64      */

65     Vector listaSel;
66     
67     /**
68      * Istanza della macchine wippog automa
69      */

70     private WippogMachine aut;
71     
72     /**
73      * Istanza della macchine wippog sentenza
74      */

75     private WippogMachine sent;
76     
77     /**
78      * Contesto automa
79      */

80     private int contestoAutoma;
81
82     private IResource queryItem;
83
84     /**
85      * Stato di errore Automa di Controllo
86      */

87     private String JavaDoc stateError="";
88     
89     /**
90      * Contesto sentenza
91      */

92     private int contestoSentenza;
93    
94     final private static int INIT=0;
95     final private static int SELEZIONE=1;
96     final private static int TRIGGER_REL=2;
97     final private static int TRIGGER_NON_REL=3;
98     final private static int RELATION_CREATED=4;
99     final private static int QUERY=5;
100     
101     // variabili di istanza utili alla gestione dei listener wippog
102
private String JavaDoc sincronizzatoreSent,sincronizzatoreAut ;
103     private String JavaDoc idIstanza;
104     private int numEle=0;
105     private Collection lista=new Vector();
106     
107     /* ############ METODI PUBLICI ######################### */
108     
109     /**
110      * Inizializza modello (drawings, rappresentation)
111      */

112     public EACesec() {
113         Cve.errLog.debug("");
114         sentence = new Vector();
115         listaSel= new Vector();
116         rappresentations=new HashMap();
117         sincronizzatoreSent=new String JavaDoc();
118         sincronizzatoreAut=new String JavaDoc();
119     }
120     
121     /**
122      * Result: la collezione degli elementi che compongono
123      * la frase visuale (sentence)
124      */

125     public Collection getSentence(){
126         Cve.errLog.debug("");
127         Vector sentenceClone=new Vector();
128         Iterator itSent=sentence.iterator();
129         while(itSent.hasNext()){
130             ReferrableElement element=(ReferrableElement)itSent.next();
131             ReferrableElement elementClone=(ReferrableElement)element.clone();
132             sentenceClone.add(elementClone);
133         }
134         return sentenceClone;
135     }
136     
137     /**
138      *
139      * Viene presa la Representation associata all'idTipo e aggiornata
140      * la sentence.Verifica se l'elemento da creare e' una relazione.
141      * Viene aggiunta la risorsa wippog appropriata.
142      * Result: sentence con aggiunto nuovo id
143      * @param idTipo cliccato su un pulsante alfabeto identificato da idTipo (place,..)
144      *
145      */

146     public Collection inputTrigger(String JavaDoc idTipo) {
147         Cve.errLog.debug("");
148         ViewLog.writeInLog(" "+"\n");
149         ViewLog.writeInLog(" #E Eseguito inputTrigger del tipo "+ idTipo + "\n");
150         
151         // prendo rappresentazione dell'elemento identificato da id
152
Representation rap=(Representation)rappresentations.get(idTipo);
153         //metto path assoluto
154
String JavaDoc cp=rap.getAttribute("cp");
155         cp=path+"/"+cp;
156         //<Wippog> chiedere la creazione di un elemento
157
String JavaDoc activity;
158         if (rap.getAttribute("relation").equals("true")) { //STO CREANDO UNA RELAZIONE
159
contestoAutoma=TRIGGER_REL;
160             contestoSentenza=TRIGGER_REL;
161             ViewLog.writeInLog(" ->Cliccato su una relazione"+"\n");
162             //<Wippog> chiedere la creazione di un elemento id
163
//prendere idIstanza, il resto uguale
164
activity="activity(idType="+idTipo+")";
165             System.out.println(" #E inputTrigger: Creazione di una Relazione: "+activity);
166             System.out.println(" #E inputTrigger: Sincronizzazione Automa di Controllo");
167             aut.addItemGet(activity);
168             synchronized(sincronizzatoreAut) {
169                 try {
170                   //System.out.println(" inputTrigger()->denro syncr");
171
sincronizzatoreAut.wait();
172                   //System.out.println(" inputTrigger()->fatto wait");
173
}
174                 catch (InterruptedException JavaDoc e){
175                   Cve.errLog.error(e.toString());
176                 }
177             }
178             
179             System.out.println(" #E inputTrigger: Sincronizzazione Automa di Sentenza");
180             synchronized(sincronizzatoreSent) {
181                 try { //System.out.println(" inputTrigger()->denro syncr2");
182
sincronizzatoreSent.wait();
183                        //System.out.println(" inputTrigger()->fatto wait2 ");
184
}
185                 catch (InterruptedException JavaDoc e){
186                   Cve.errLog.error(e.toString());
187                 }
188             }
189         } else { // CREO UNA NON RELAZIONE
190
contestoAutoma=TRIGGER_NON_REL;
191             contestoSentenza=TRIGGER_NON_REL;
192             ViewLog.writeInLog(" #E inputTrigger: Selezionata una NON relazione: idTipo "+idTipo+"\n");
193             activity="activity(generate="+idTipo+")";
194             // prendo il nome dell'attributo identificatore dell'elemento
195
ViewLog.writeInLog(" #E inputTrigger: Creazione di una NON Relazione: "+activity+"\n");
196             System.out.println(" #E inputTrigger: Creazione di una NON Relazione: "+activity);
197             sent.addItemGet(activity);
198
199             // ciclo in attesa che listener imposti true produce
200
System.out.println(" #E inputTrigger: Sincronizzazione Automa di Controllo");
201             synchronized(sincronizzatoreSent) {
202                 try {
203                     //System.out.println(" inputTrigger()->denro syncr");
204
sincronizzatoreSent.wait();
205                     //System.out.println(" inputTrigger()->fatto wait");
206
}
207                 catch (InterruptedException JavaDoc e){
208                   Cve.errLog.error(e.toString());
209                 }
210             }
211         }
212         
213         //informo cambiamenti osservatori collegati
214
SentenceEvent sentEv=new SentenceEvent();
215         sentEv.setActionUser("trigger");
216         sentEv.setSentence(sentence);
217         ObservableCve ob=getObservable();
218         ob.setDate(sentEv);
219         ViewLog.writeInLog(" #E inputTrigger: Fine creazione elemento"+"\n");
220         System.out.println(" #E inputTrigger: Fine creazione elemento");
221         return sentence;
222     }
223     
224     /**
225      * Logica: e' stato selezionato (select true) l'elemento dell'alfabeto
226      * identificato da id (ad esempio place).Metto in listaSel tutti
227      * gli elementi selezionati
228      * Result: in sentence metto id come select
229      */

230     public void inputSelected(String JavaDoc idTipo,String JavaDoc idIstanza, boolean select)
231     {
232         Cve.errLog.debug("");
233         //Verifica del tipo delezionato
234
Representation rapre=(Representation)rappresentations.get(idTipo);
235         
236         if (rapre.getAttribute("relation").equals("true") == false){
237       
238           // a <wippog> devo passare idTipo e idIstanza e action select
239
// metto in listaSel=listaSel wippog,
240
// wippog ritorna listasel e l'esecutore seleziona elementi corrispondenti
241
// parte che deve fare wippog
242
ViewLog.writeInLog(" #E Eseguito inputSelected del tipo: "+ idTipo + " Istanza: " + idIstanza + " Select: " + select + "\n");
243           System.out.println(" #E Eseguito inputSelected del tipo: "+ idTipo + " Istanza: " + idIstanza + " Select: " + select);
244   
245           contestoAutoma=SELEZIONE;
246           String JavaDoc action="";
247           if (select){ // se seleziono
248
//VD
249
//action="action(select;"+"idInstance="+idIstanza+";idType="+idTipo+")";
250
action="action(select=true;deselect=false;"+"idInstance="+idIstanza+";idType="+idTipo+")";
251               ViewLog.writeInLog(" AZIONE:"+action+"\n");
252           }
253           else { // se deseleziono
254
//VD
255
//action="action(deselect;"+"idInstance="+idIstanza+";idType="+idTipo+")";
256
action="action(select=false;deselect=true;"+"idInstance="+idIstanza+";idType="+idTipo+")";
257               ViewLog.writeInLog(" AZIONE:"+action+"\n");
258           }
259           
260           ViewLog.writeInLog(" #E inputSelected: AZIONE WIPPOG: "+action+"\n");
261           System.out.println(" #E inputSelected: AZIONE WIPPOG: "+action);
262           aut.addItemGet(action);
263           // sincronizzo i thread
264
synchronized(lista) {
265               try {
266                  lista.wait();
267               }
268               catch (InterruptedException JavaDoc e){
269                 Cve.errLog.error(e.toString());
270               }
271           }
272           SentenceEvent sentEv=new SentenceEvent();
273           sentEv.setActionUser("selected");
274           sentEv.setSentence(sentence);
275           ObservableCve ob=getObservable();
276               ob.setDate(sentEv);
277         } //Controllo relazione
278

279     }
280     
281     /**
282      * Logica: richiesta di una Query
283      * @param id
284      * @param idIstanza
285      */

286     public void inputQuery(String JavaDoc idTipo,String JavaDoc idIstanza){
287        Cve.errLog.debug("");
288        ViewLog.writeInLog(" #E Eseguito inputQuery tipo "+ idTipo + " idIstanza: " + idIstanza + "\n");
289        System.out.println(" #E Eseguito inputQuery tipo "+ idTipo + " idIstanza: " + idIstanza);
290        String JavaDoc activity="activity(idInstance="+idIstanza+";"+"query="+idTipo+")";
291         //action (idInstance=11; query=observer)
292
// prendo il nome dell'attributo identificatore dell'elemento
293

294        ViewLog.writeInLog(" #E inputQuery: ATTIVITA' WIPPOG: "+activity+"\n");
295        System.out.println(" #E inputQuery: ATTIVITA' WIPPOG: "+activity);
296
297        contestoSentenza=QUERY;
298        sent.addItemGet(activity);
299             synchronized(sincronizzatoreSent) {
300                 try {
301                       System.out.println(" Prima di Query");
302                       sincronizzatoreSent.wait();
303                       System.out.println(" Dopo Query");
304                       }
305                 catch (InterruptedException JavaDoc e){
306                   Cve.errLog.error(e.toString());
307                 }
308             }
309               
310        //Alla risposta della WM comunico a OAC la risorsa selezionata
311
System.out.println(" #E Comunicazione 'query' a OAC");
312         SentenceEvent sentEv=new SentenceEvent();
313         sentEv.setActionUser("query");
314         sentEv.setSentence(sentence);
315         ObservableCve ob=getObservable();
316         ob.setDate(sentEv);
317     }
318     
319     //GF
320
public void setQueryItem(IResource item){
321        Cve.errLog.debug("");
322        this.queryItem = item;
323     }
324     
325     //GF
326
public IResource getQueryItem(){
327        Cve.errLog.debug("");
328        return this.queryItem;
329     }
330
331     /**
332      * Scrittura Stato di Errore generato da automa di controllo
333      *
334      * @param String descrizione stato di errore
335      */

336     public void setStateError(String JavaDoc state){
337        Cve.errLog.debug("");
338        this.stateError = state;
339     }
340
341     /**
342      * Lettura Stato di Errore generato da automa di controllo
343      *
344      * @return String descrizione stato di errore
345      */

346     public String JavaDoc getStateError(){
347        Cve.errLog.debug("");
348        return this.stateError;
349     }
350     
351     /**
352      * Logica: richiesdta di una Modifica di attributi
353      * @param id
354      * @param idIstanza
355      */

356     public void inputModify(String JavaDoc id,String JavaDoc idIstanza){
357       Cve.errLog.debug("");
358     }
359     
360     /**
361      * Logica: setAlfabetoSent estrae i nomi dell'alfabeto e della sentenza
362      * e riempio la collezione di representations per ogni elemento
363      * dell'alfabeto (vedi classe Representation)
364      *@param fileAut file contenente la specifica dell'automa
365      * tale file contiene i tag <alfabeto> e <Sentenza>.
366      *
367      */

368     public void setLanguage(String JavaDoc fileAut) {
369         
370         //Costruzione file Dinamicamente
371
//fileAut = ConfigurationRead.getCveRoot() + ConfigurationRead.getCveWSpeRoot() + "//" + fileAut;
372
Cve.errLog.debug("");
373         ViewLog.writeInLog(" "+"\n");
374         ViewLog.writeInLog(" Eseguito set language esecutore-->"+fileAut+"\n");
375         // estrae dal tag alfabeto presente nel file automa il nome dell'alfabeto
376
// e dal tag sentenza il file contente la specifica wippog
377
setAlfabetoSent(fileAut);
378         //String filereg="c:/cve1.0/VisualLanguage/petriRule.xml";
379
//String filealf="c:/cve1.0/VisualLanguage/petriAlf.xml";
380
//fileAlf="c:/cve1.0/VisualLanguage/cveAlf1.xml";
381
//fileAlf="c:/cve1.0/VisualLanguage/miniCveAlphabet.xml";
382
//String filereg="c:/cve1.0/VisualLanguage/ReggraphCve.xml";
383
Vector attributiRap=new Vector();
384         try {
385             Specifica spe=new Specifica(fileAlf);
386             // HashMap che contiene la coppia (nomeElemento, Rappresentation)
387
rappresentations.clear();
388             rappresentations.putAll(spe.getRappresentation());
389         } catch (java.io.IOException JavaDoc e){
390             Cve.errLog.error(e.toString());
391             ViewLog.writeInLog(" ->nome file errato"+"\n");
392         }
393         ViewLog.writeInLog(" ->informo osservatori dei cambiamenti"+"\n");
394         SentenceEvent sentEv=new SentenceEvent();
395         sentEv.setActionUser("language");
396         sentEv.setRappresentations(rappresentations);
397         ObservableCve ob=getObservable();
398         ob.setDate(sentEv);
399         ViewLog.writeInLog(" ->inizializzo macchina wippog automa(abilitazioni,...)"+"\n");
400         System.out.println("1");
401         
402         contestoAutoma = INIT;
403         initWippogAutoma(fileAut);
404         System.out.println("2");
405         aut.addItemGet("init");
406         ViewLog.writeInLog(" ->inizializzo macchina wippog sentenza"+"\n");
407         ViewLog.writeInLog(" ->sincronizzo le macchine wippog "+"\n");
408         synchronized(lista) {
409             try { lista.wait();}
410             catch (InterruptedException JavaDoc e){
411                Cve.errLog.error(e.toString());
412             }
413         }
414         ViewLog.writeInLog(" ->inizializzo macchina wippog sentenza"+"\n");
415         initWippogSentence();
416     }
417     
418     
419     /**
420      * Result: eliminazione di tutte le istanze della sentenza visuale
421      * e notifica a tutti gli osservatori il cambiamento nel modello
422      */

423     public void clearLanguage(){
424         Cve.errLog.debug("");
425         // modello sentenza posseduto esecutore
426
ViewLog.writeInLog(" #E Eseguita Pulizia Linguaggio (clearLanguage) "+"\n");
427         System.out.println(" #E Eseguita Pulizia Linguaggio (clearLanguage) ");
428
429         sentence.clear();
430         rappresentations.clear();
431         ObservableCve ob=getObservable();
432         SentenceEvent sentEv=new SentenceEvent();
433         sentEv.setActionUser("clearLanguage");
434         ob.setDate(sentEv);
435     }
436     
437     /**
438      * Result: cancellazione tutte le istanze della sentenza visuale
439      * e notifica a tutti gli osservatori il cambiamento nel modello
440      */

441     public void clearSentence(){
442         // modello sentenza posseduto esecutore
443
Cve.errLog.debug("");
444         ViewLog.writeInLog(" #E Eseguita Pulizia Sentenza (clearSentence) "+"\n");
445         System.out.println(" #E Eseguita Pulizia Sentenza (clearSentence) ");
446         sentence.clear();
447         ObservableCve ob=getObservable();
448         SentenceEvent sentEv=new SentenceEvent();
449         sentEv.setActionUser("clearSentence");
450         ob.setDate(sentEv);
451     }
452     
453     /**
454      * Result: clear rappresentazione
455      */

456     public void rappresentationsClear(){
457         Cve.errLog.debug("");
458         ViewLog.writeInLog(" "+"\n");
459         ViewLog.writeInLog(" #E Eseguita Pulizia rappresentazione"+"\n");
460         System.out.println(" #E Eseguita Pulizia rappresentazione");
461         rappresentations.clear();
462     }
463     
464     /**
465      * Result: clear sentenza
466      */

467     public void sentenceClear(){
468         Cve.errLog.debug("");
469         ViewLog.writeInLog(" #E Eseguita Pulizia Sentenza (SentenceClear) "+"\n");
470         System.out.println(" #E Eseguita Pulizia Sentenza (SentenceClear) ");
471         sentence.clear();
472     }
473     
474     /**
475      * Result: rappresentazione degli elementi
476      */

477     public Map getRappresentations(){
478         Cve.errLog.debug("");
479         ViewLog.writeInLog(" #E Eseguito Lettura Rappresentazioni (getRappresentations) "+"\n");
480         System.out.println(" #E Eseguito Lettura Rappresentazioni (getRappresentations) ");
481         return rappresentations;
482     }
483     
484     /**
485      * Result: restituisce la collezione contenente gli elementi disabilitati
486      */

487     public Collection getDisableButton() {
488         Cve.errLog.debug("");
489         ViewLog.writeInLog(" #E Eseguito Lettura Pulsanti disabilitati (getDisableButton) : "+ disabButton.toString() + "\n");
490         System.out.println(" #E Eseguito Lettura Pulsanti disabilitati (getDisableButton) : "+ disabButton.toString());
491
492         return disabButton;
493     }
494     
495     /**
496      * Result: restituisce la collezione contenente gli elementi abilitati
497      */

498     public Collection getEnableButton() {
499         Cve.errLog.debug("");
500         ViewLog.writeInLog(" #E Eseguito Lettura Pulsanti abilitati (getEnableButton) :"+enableButton.toString()+"\n");
501         System.out.println(" #E Eseguito Lettura Pulsanti abilitati (getEnableButton) :"+enableButton.toString()+"\n");
502
503         return enableButton;
504     }
505     
506     /* ############# METODI PRIVATI ############################
507     ########################################################## */

508     
509     
510     /**
511      * Configurazione delle liste enableButton e disabButton a secondo se
512      * il parametro enable vale true false.
513      * Result: vengono messi nella lista disabButton (enableButton) gli id di tutti gli element che devono essere
514      * disabilitati (abilitati)
515      * @param stateList
516      * @param enable
517      */

518     private void setButtonState(Collection stateList,boolean enable){
519         Cve.errLog.debug("");
520         //VD
521
System.out.println(" #E setButtonState: Abilitazione: " + enable +" Elenco: "+ stateList.toString());
522         if (enable)
523             this.enableButton=new Vector(stateList);
524         else
525             this.disabButton=new Vector(stateList);
526     }
527     
528     /**
529      * Viene aggiunto un elemento grafico
530      * @param d
531      */

532     private void addDrawing(ReferrableElement d){
533        Cve.errLog.debug("");
534         sentence.addElement(d);
535     }
536     
537    
538     /**
539      * Viene letto il tag <alfabeto> e <sentenza> dalla specifica dell'automa
540      * e assegnato il loro valore alle stringe
541      */

542     private void setAlfabetoSent(String JavaDoc fileAut){
543         Cve.errLog.debug("");
544         ViewLog.writeInLog(" #E setAlfabetoSent: file Automa = "+fileSent+"\n");
545         System.out.println(" #E setAlfabetoSent: file Automa = "+fileSent);
546         Document docAut=null;
547         try {
548             // vanno messi i controlli di correttezza
549
SAXBuilder builder = new SAXBuilder(false);
550             docAut = builder.build(new File JavaDoc(fileAut));
551         } catch (JDOMException e) {
552             Cve.errLog.error(e.toString());
553         } catch (Exception JavaDoc e) {
554             Cve.errLog.error(e.toString());
555         }
556         Element rootAut=docAut.getRootElement();
557         java.util.List JavaDoc figliAut=rootAut.getChildren("Alphabet");
558         if ((figliAut!=null)&&(figliAut.size()>0)){
559             Element ele=(Element)(figliAut.get(0)); // prendo un singolo elemento
560
// prendo nome alfabeto
561
fileAlf=ele.getAttributeValue("name");
562             
563             //GF Nuova lettura Path
564
fileAlf = ConfigurationRead.getCveRoot() + ConfigurationRead.getCveVCARWRoot() + "//" + fileAlf;
565
566             ViewLog.writeInLog(" #E setAlfabetoSent: file Alfabeto = "+fileAlf+"\n");
567         }
568         
569         java.util.List JavaDoc figliSent=rootAut.getChildren("Sentence");
570         if ((figliSent!=null)&&(figliSent.size()>0)){
571             Element ele=(Element)(figliSent.get(0)); // prendo un singolo elemento
572
// prendo nome sentence
573
fileSent=ele.getAttributeValue("name");
574             //GF Nuova lettura Path
575
fileSent = ConfigurationRead.getCveRoot() + ConfigurationRead.getCveWSpeRoot() + "//" + fileSent;
576             ViewLog.writeInLog(" #E setAlfabetoSent: file Automa Sentenza = "+fileSent+"\n");
577
578         }
579     }
580     
581     /**
582      * Verifica se idIstanza e' in listasel
583      */

584     private boolean isInListaSel(String JavaDoc idIst){
585         Cve.errLog.debug("");
586         for (int i=0;i<listaSel.size();i++){
587             Object JavaDoc idIstListaO=listaSel.elementAt(i);
588             String JavaDoc idIstLista=idIstListaO.toString();
589             //System.out.println ("sto visualizzando lista sel idIstLista "+idIstLista);
590
if (idIst.equals(idIstLista))
591                 return true;
592         }
593         return false;
594     }
595     
596     /**
597      * Viene istanziata un listener di eventi wipppog automa. In funzione della variabile
598      * contestoAutoma viene interpretato il irusltato delle transizione Wippog.
599      */

600     private void initWippogAutoma(String JavaDoc fileAut){
601         Cve.errLog.debug("");
602         System.out.println(" #E Inizializzazione Listener WIPPOG AUTOMA da "+fileAut);
603         try {
604             //java.io.PrintWriter wo = new java.io.PrintWriter( new java.io.FileOutputStream("wippog.log") );
605
//wippog.Log.setTraceWriter(wo);
606
//aut=WippogFactory.load(ConfigurationRead.getCveRoot()+"/VisualLanguage/SpecificheWippog/miniCveLanguage.xml",true);
607
aut=WippogFactory.load(fileAut,true);
608             contestoAutoma = INIT;
609             
610             // ################## LISTENER WIPPOG ##############
611
aut.addWippogListener(new WippogAdapter() {
612             
613               //Inizializzazione variabili di utilizzo nei metodi del WippogListener
614
java.util.List JavaDoc items;
615               WippogMachine wm;
616               Collection rules;
617               Iterator itRules;
618               Transition t;
619               
620               //Produzione di Risorse vera e propria
621
public void resourceProduced( WippogEvent event ) {
622                   Cve.errLog.debug("");
623                     System.out.println(" #E <WippogAut>: Ascoltatore AUT resourceProduced");
624                     
625                     //Inizializzazione
626
items=event.getResouces();
627                     wm = event.getSource();
628                     try{
629                        wm.run();
630                     } catch (WippogException e){
631                        Cve.errLog.error(e.toString());
632                     }
633                     System.out.println(" #E <WippogAut>: Ascoltatore AUT resourceProduced: Passo eseguito");
634               }
635               
636               //Transizione eseguita
637
public void stepExecuted( StepEvent event ) {
638             // public void resourceProduced( WippogEvent event ) {
639
// public void resourceProduced( WippogMachine wm, java.util.List items,Transition t ) {
640
Cve.errLog.debug("");
641                     System.out.println(" #E <WippogAut>: Ascoltatore AUT stepExecuted: Passo eseguito");
642
643                     //Inizializzazione
644
//java.util.List items = event.getResouces();
645
//WippogMachine wm = event.getSource();
646

647
648                     Iterator itItems;
649                     IResource item;
650                    
651                     // passo il controllo al thread principale per far eseguire wait()
652
Thread.yield();
653                     //System.out.println(" init Wippog Aut dopo yield");
654
switch (contestoAutoma) {
655                         case INIT:
656                         ViewLog.writeInLog(" #E <WippogAut>: INIZIALIZZAZIONE:abilitazione pulsanti"+ "\n");
657                         System.out.println(" #E <WippogAut>: INIZIALIZZAZIONE:abilitazione pulsanti");
658                         
659                             itItems=items.iterator();
660                             while (itItems.hasNext()){
661                                 item=(IResource)itItems.next();
662                                 String JavaDoc nameItem=item.getTypeName();
663                                 //ViewLog.writeInLog(" <WippogA> nome item "+ nameItem+"\n");
664
if (nameItem.equals("activity")){
665                                     Collection dButton=(Collection)item.getAttribute("dButton");
666                                     Iterator itbut=dButton.iterator();
667                                     setButtonState(dButton,false);
668                                     SentenceEvent sentEv=new SentenceEvent();
669                                     sentEv.setActionUser("deselectButton");
670                                     ObservableCve ob=getObservable();
671                                     ob.setDate(sentEv);
672                                 }
673                             }
674                             synchronized( lista ) {
675                                 lista.notifyAll();
676                             }
677                             break;
678                         case SELEZIONE:
679                         ViewLog.writeInLog(" #E <WippogAut>: Azione SELECT-DESELECT"+ "\n");
680                             
681                             itItems=items.iterator();
682                             while (itItems.hasNext()){
683                                 item=(IResource)itItems.next();
684                                 String JavaDoc nameItem=item.getTypeName();
685
686                                 if (nameItem.equals("state")){
687                                    String JavaDoc stateValue = ((Stringa)item.getAttribute("current")).toString();
688                                    
689                                    System.out.println(" #E <WippogAut>: Stato corrente: "+ stateValue);
690                                     
691                                    if (stateValue.endsWith("E")){
692                                       
693                                       //Impostazione Stato di errore
694
setStateError(stateValue);
695                                       
696                                       /*
697                                       //Invio comunicazione a OAC Messaggio di errore
698                                       SentenceEvent sentEv=new SentenceEvent();
699                                       sentEv.setActionUser("stateError");
700                                       ObservableCve ob=getObservable();
701                                       ob.setDate(sentEv);
702                                       */

703                                    }else{
704                                       setStateError("");
705                                    }
706                                 }
707                                 if (nameItem.equals("listaSel")){
708                                     listaSel.clear();
709                                     listaSel.addAll( (Collection)item.getAttribute("lista"));
710                                     setSelectCp(listaSel); // configuro selezionati
711
}
712                                 if (nameItem.equals("activity")){
713                                     Collection eButton=(Collection)item.getAttribute("eButton");
714                                     Collection dButton=(Collection)item.getAttribute("dButton");
715                                     if (eButton.size()>0){
716                                         Iterator itbut=eButton.iterator();
717                                         //VD
718
System.out.println(" #E pulsanti da abilitare-->"+eButton.toString());
719                                         setButtonState(eButton,true);
720                                         SentenceEvent sentEv=new SentenceEvent();
721                                         sentEv.setActionUser("selectButton");
722                                         ObservableCve ob=getObservable();
723                                         ob.setDate(sentEv);
724                                     }
725                                     if (dButton.size()>0){
726                                         Iterator itbut=dButton.iterator();
727                                         //VD
728
System.out.println(" #E pulsanti da disabilitare-->"+dButton.toString());
729                                         setButtonState(dButton,false);
730                                         SentenceEvent sentEv=new SentenceEvent();
731                                         sentEv.setActionUser("deselectButton");
732                                         ObservableCve ob=getObservable();
733                                         ob.setDate(sentEv);
734                                     }
735                                 }
736                             }
737                             synchronized( lista ) { lista.notifyAll(); }
738                             break;
739                         case TRIGGER_REL:
740                             // prendo source e target della relazione
741
ViewLog.writeInLog(" #E <WippogAut>: creazione RELAZIONE"+ "\n");
742                             System.out.println(" #E <WippogAut>: creazione RELAZIONE");
743                             
744                             Iterator itItemsRel=items.iterator();
745                             while (itItemsRel.hasNext()){
746                                 item=(IResource)itItemsRel.next();
747                                 String JavaDoc nameItem=item.getTypeName();
748                                  // da lista sel prendo source e target
749
if (nameItem.equals("listaSel")){
750                                     ViewLog.writeInLog(" #E <WippogAut>: Creazione relazione in specifica sentenza"+"\n");
751                                     System.out.println(" #E <WippogAut>: Creazione relazione in specifica sentenza");
752                                     listaSel.clear();
753                                     // metto tutti gli elementi selzionati in listaSel
754
listaSel.addAll( (Collection)item.getAttribute("lista"));
755                                 }
756                             }
757                             synchronized( sincronizzatoreAut ) {
758                                 sincronizzatoreAut.notifyAll();
759                             }
760                             break;
761                         
762                         case RELATION_CREATED:
763                             // disabilito pulsante rel e deseleziono cp
764
ViewLog.writeInLog(" #E <WippogAut>: RELAZIONE CREATA"+ "\n");
765                             System.out.println(" #E <WippogAut>: RELAZIONE CREATA");
766                             
767                             listaSel.clear();
768                             setSelectCp(listaSel);
769                             Iterator itItemsCre=items.iterator();
770                             while (itItemsCre.hasNext()){
771                                 item=(IResource)itItemsCre.next();
772                                 String JavaDoc nameItem=item.getTypeName();
773                                 if (nameItem.equals("activity")){
774                                     Collection dButton=(Collection)item.getAttribute("dButton");
775                                     if (dButton.size()>0){
776                                         Iterator itbut=dButton.iterator();
777                                         setButtonState(dButton,false);
778                                         SentenceEvent sentEv=new SentenceEvent();
779                                         sentEv.setActionUser("deselectButton");
780                                         ObservableCve ob=getObservable();
781                                         ob.setDate(sentEv);
782                                     }
783                                 }
784                             }
785                             synchronized( sincronizzatoreAut ) {
786                                 sincronizzatoreAut.notifyAll();
787                             }
788                             break;
789                         
790                     }// chiudo switch
791
}
792             } ); // chiudo listener
793
} catch (Exception JavaDoc e) {
794            Cve.errLog.error(e.toString());
795            ViewLog.writeInLog(" #E# problemi in wippog automa"+"\n");
796         }
797         /*try { aut.run(); System.out.println(" fatto run automa");}
798         catch (wippog.eccezioni.WippogException e) {
799         e.printStackTrace();
800         } */

801         //System.out.println("7");
802
}
803     
804     /**
805      * Viene istanziata un listener di eventi wipppog sentenza. In funzione della variabile
806      * contestoSentenza viene interpretato il risultato delle transizione Wippog.
807      * Creazione di un nuovo elemento: viene assegnato ad idIstanza id elemento appena creato
808      * Click su una relazione: vengono inseriti in listaSel (var ambiente) membri relazione
809      */

810     private void initWippogSentence(){
811         Cve.errLog.debug("");
812         System.out.println(" #E Inizializzazione Listener WIPPOG SENT da "+fileSent);
813         try {
814             sent=WippogFactory.load(fileSent,true);
815             sent.addWippogListener(new WippogAdapter() {
816             
817               /*
818               GF 11-01-2004
819               MODIFICHE A SEGUITO RILASCIO WIPPOG DEL 10-01-2004 DA P. DI TOMMASO
820               
821               - Il resourceProduced del WippogAdapter viene spezzato in due parti a seguito
822                 dell'input di tipo RunEvent (WippogEvent, StepEvent,...):
823                 
824                 1. resourceProduced vero e proprio in cui è possibile captare la WM e le
825                    risorse create (items).
826                    Una volta captate le risorse la WM attende un nuovo trigger (WM.run())
827                    per andare avanti.
828                    
829                 2. stepExecuted per captare la transizione esguita e quindi eseguire tutte
830                    le azioni dovute
831                 
832               */

833                
834               //Inizializzazione variabili di utilizzo nei metodi del WippogListener
835
java.util.List JavaDoc items;
836               WippogMachine wm;
837               Collection rules;
838               Iterator itRules;
839               Transition t;
840
841               //Risorse prodotte per l'eseterno
842
public void exportsPerformed( WippogEvent event){
843                 
844                 System.out.println(" #E <WippogSentenza>: Ascoltatore SENT exportsPerformed");
845                  
846                 //Per Sincronizzazione
847
//Nel caso di conditionRule -->Cambio contestoAutoma = RELATION_CREATED
848
Collection idOut = (Collection)event.getResouces();
849              if (idOut != null){
850                 
851                 for( Iterator itOut=idOut.iterator(); itOut.hasNext(); ) {
852                    
853                    //Prelevamento Risorsa
854
IResource appo_resource = (IResource)itOut.next();
855                    String JavaDoc appo_name = appo_resource.getTypeName();
856     
857                    System.out.println("EXPORTS : elemento: " + appo_name);
858                    
859                    //CAMBIO IL CONTESTO DELL'AUTOMA SOLO QUNADO IL SENT HA FINITO
860
//DI CREARE LA RELAZIONE -->Ovvero quando crea uqesta risorsa
861
if (appo_name.equals("conditionRule")){
862                       contestoAutoma = RELATION_CREATED;
863                    }
864                    
865                 }
866              }
867                 
868                 };
869
870               
871               //Produzione di Risorse vera e propria
872
public void resourceProduced( WippogEvent event ) {
873                   Cve.errLog.debug("");
874                     System.out.println(" #E <WippogSentenza>: Ascoltatore SENT resourceProduced");
875                     
876                     //Inizializzazione
877
items=event.getResouces();
878                     wm = event.getSource();
879                     try{
880                        wm.run();
881                     } catch (WippogException e){
882                        Cve.errLog.error(e.toString());
883                      }
884                     System.out.println(" #E <WippogSentenza>: Ascoltatore SENT resourceProduced: Passo eseguito");
885               }
886               
887               //Transizione eseguita
888
public void stepExecuted( StepEvent event ) {
889                     Cve.errLog.debug("");
890                     System.out.println(" #E <WippogSentenza>: Ascoltatore SENT stepExecuted: Passo eseguito");
891
892                     rules = event.getRules();
893                     itRules = rules.iterator();;
894                     //Lettura PRima transizione Avvenuta
895
t = (Transition)itRules.next();
896                     // passo il controllo al thread principale per far eseguire wait()
897
Thread.yield();
898                     //System.out.println(" init Wippog Sent dopo yield");
899
Iterator itItems;
900                     //ViewLog.writeInLog(" <WippogSentenza> sono nell'ascolatore sentenza"+"\n");
901

902                     switch (contestoSentenza){
903                         case TRIGGER_NON_REL:
904                             //ViewLog.writeInLog(" <WippogS> creazione elemento non relazione"+"\n");
905
//ViewLog.writeInLog(" <WippogS> prendo IdTipo creato,relativa rappresentazione,nuovo id, creazione elemento"+"\n");
906
// 1) prendo IdTipo creato
907
// 2) prendo relativa rappresentazione
908
// 3) prendo l'identificatore associato alla risorsa che ho creato
909
// 4) creo elemento
910
String JavaDoc idTipo=((IResource)items.get(0)).getTypeName();
911                             Representation rapre=(Representation)rappresentations.get(idTipo);
912                             nameId=rapre.getAttribute("nameId");
913                             IWippogObject idIstanzaW=((IResource)items.get(0)).getAttribute(nameId);
914                             
915                             ViewLog.writeInLog(" #E <WippogSentenza>: Creazione Elemento NON RELAZIONE: idTipo: "+ idTipo + " nameId: " +nameId+" idIstanza: " +idIstanzaW+"\n");
916                             System.out.println(" #E <WippogSentenza>: Creazione Elemento NON RELAZIONE: idTipo: "+ idTipo + " nameId: " +nameId+" idIstanza: " +idIstanzaW);
917                             
918                             // se la rappresentazione dell'elemento e' di tipo icon
919
if (rapre.getAttribute("cpType").equals("icon")){
920                               //metto path assoluto risorsa icona e creo "icona"
921
String JavaDoc cp=path+"/"+rapre.getAttribute("cp");
922                               ComplexGraphicElement cge=new ComplexGraphicElement();
923                               ImageIcon icon=new ImageIcon(cp);
924                               //System.out.println(" 1) in eacesec prima new Icon");
925
IconElement ge=new IconElement(icon);
926                               cge.addGraficElement(ge);
927
928                               //GF Label
929
//Creazione Label per idIstanzaW
930
VisLabel lb_id = new VisLabel("id",idIstanzaW.toString());
931                               cge.addGraficElement(lb_id);
932
933                               diagrammaticLanguage.Entity ent=new diagrammaticLanguage.Entity("",idTipo,idIstanzaW.toString());
934                               ent.setComplexGraphicElement(cge);
935                               // aggiungo nella sentenza
936
//addDrawing(new IconElement(iconG,idTipo,idIstanzaW.toString()));
937
addDrawing((ReferrableElement)ent);
938                             }
939                             if (rapre.getAttribute("cpType").equals("adj")){
940                               try {
941                                  Class JavaDoc newIstanzaVis=Class.forName(rapre.getAttribute("cp"));
942                                  GraphicElement ge=(GraphicElement)newIstanzaVis.newInstance();
943                                  ge.setAttachZone(new BorderPlace(ge));
944                                  ComplexGraphicElement cge=new ComplexGraphicElement();
945                                  cge.addGraficElement(ge);
946
947                                  //Creazione Label per idIstanzaW
948
VisLabel lb_id = new VisLabel((int)ge.getX(), (int)ge.getY(), "id",idIstanzaW.toString());
949                                  cge.addGraficElement(lb_id);
950
951                                   //Verifica se ha l'attributo di limitazione
952
if (rapre.getAttribute("max_token") != null){
953                                    //Creazione Label per idIstanzaW
954
VisLabel lb_mt = new VisLabel((int)ge.getX(), (int)ge.getY()+15, "max token","1");
955                                    cge.addGraficElement(lb_mt);
956                                   }
957
958                                  
959                                  diagrammaticLanguage.Entity ent=new diagrammaticLanguage.Entity("",idTipo,idIstanzaW.toString());
960                                  ent.setComplexGraphicElement(cge);
961                                  //Drawing visualElement=(Drawing)newIstanzaVis.newInstance();
962
//visualElement.setIdTipo(idTipo);
963
//visualElement.setIdIstanza(idIstanzaW.toString());
964

965                                  addDrawing((ReferrableElement)ent);
966                                  
967                               } catch(InstantiationException JavaDoc e){
968                                  Cve.errLog.error(e.toString());
969                                  ViewLog.writeInLog(" #E <WippogSentenza>: newIstance() fallita creazione istanza"+"\n");
970                               } catch(IllegalAccessException JavaDoc e1){
971                                  Cve.errLog.error(e1.toString());
972                                  ViewLog.writeInLog(" #E <WippogSentenza>: newIstance() fallito accesso"+"\n");
973                               }
974                               catch(ClassNotFoundException JavaDoc e2){
975                                  Cve.errLog.error(e2.toString());
976                                  ViewLog.writeInLog(" #E <WippogSentenza>: newIstance() fallita ricerca classe"+"\n");
977                               }
978                             }
979                             break;
980                         case TRIGGER_REL:
981                             ViewLog.writeInLog(" #E <WippogSentenza>: Creazione Elemento RELAZIONE"+"\n");
982                             // 0) Conosco il idType associato pulsante cliccato (ad esempio freccia)
983
// 1) cerco rappresentazione associatata con idType (elemento relazione da creare)
984
// 2) controllo dalla rappresentazione se bisogna creare un "icon" o di "adj"
985
// 3) creo risorsa e prendo l'identificatore associato
986
// 4) creo elemento relazione (se "adj" istanzio classe specificata in cpRappresentation)
987
// 5) metto membri relazione
988
itItems=items.iterator();
989                             while (itItems.hasNext()){
990                                 IResource item=(IResource)itItems.next();
991                                 idTipo=item.getTypeName();
992                                 //idTipo=((IResource)items.get(0)).getTypeName();
993
rapre=(Representation)rappresentations.get(idTipo);
994                                 if ((rapre!=null)&&(rapre.getAttribute("relation").equals("true"))) { //trovata la relazione
995
nameId=rapre.getAttribute("nameId");
996                                     //ERRORE NAMEID SBAGLIATO visualizza target
997

998                                     //System.out.println(" items "+item.toString());
999
idIstanzaW=item.getAttribute(nameId);
1000                                    ViewLog.writeInLog(" #E <WippogSentenza>: RELAZIONE idIstanza: "+idIstanzaW.toString()+" nameId: "+nameId +"\n");
1001                                    System.out.println(" #E <WippogSentenza>: RELAZIONE idIstanza: "+idIstanzaW.toString()+" nameId: "+nameId);
1002                                    
1003                                    // creo elemento source e target trovati dentro automaW
1004
//String idIstanzaW1="idI";
1005
if (rapre.getAttribute("cpType").equals("adj")){
1006                                       try {
1007                                          
1008                                          //CREAZIONE OGGETTO VISUALE (Complesso)
1009
ViewLog.writeInLog(" #E <WippogSentenza>: RELAZIONE Tipo: "+idTipo+" Rappresentazione: "+rapre.getAttribute("cp")+"\n");
1010                                          System.out.println(" #E <WippogSentenza>: RELAZIONE Tipo: "+idTipo+" Rappresentazione: "+rapre.getAttribute("cp"));
1011
1012                                          //CALCOLO COORDINATE IN BASE A SOURCE,TARGET O MEMBERS
1013
/////CASO BINARIO
1014
ReferrableElement source = new ReferrableElement();
1015                                          ReferrableElement target = new ReferrableElement();
1016                                          
1017                                             //DA LISTA SELEZIONE
1018
String JavaDoc sourceId = listaSel.get(0).toString();
1019                                             String JavaDoc targetId = listaSel.get(1).toString();
1020                                             System.out.println(" #E <WippogSentenza>: TRIGGER_REL DA SEL: SOURCEID: "+sourceId+" TARGETID: "+targetId);
1021
1022                                             source=trovaDrawingDaId(sourceId);
1023                                             target=trovaDrawingDaId(targetId);
1024                                             
1025                                          System.out.println(" #E <WippogSentenza>: TRIGGER_REL: Tipo SOURCE: "+source.getIdType()+" TARGET: "+target.getIdType());
1026                                          Touches touches=new Touches(source, target);
1027                                          Class JavaDoc newIstanzaVis=Class.forName(rapre.getAttribute("cp"));
1028                                          
1029                                          GraphicElement graphicRel=(GraphicElement)newIstanzaVis.newInstance();
1030                                    
1031                                          //Impostazione coordinate
1032
//Point sourceCentre = source.getComplexGraphicElement().getCentre();
1033
//Point targetCentre = target.getComplexGraphicElement().getCentre();
1034

1035                                          ComplexGraphicElement cge=new ComplexGraphicElement();
1036                                          cge.addGraficElement(graphicRel);
1037
1038                                  //Creazione Label per idIstanzaW
1039
//Impostazione coordinate
1040
Point sourceCentre = source.getComplexGraphicElement().getCentre();
1041                                          Point targetCentre = target.getComplexGraphicElement().getCentre();
1042                                  
1043                                  VisLabel lb_id2 = new VisLabel(sourceCentre, targetCentre, "id",idIstanzaW.toString(),1);
1044                                  cge.addGraficElement(lb_id2);
1045
1046                                          //GF ERRORE INVERTITI ARGOMENTI IN CHIAMATA --> NON ASSOCIAVA ID ISTANZA MA ID TIPO
1047
ReferrableConnection con=new ReferrableConnection("",idTipo,idIstanzaW.toString());
1048                                          con.setComplexGraphicElement(cge);
1049
1050                                          con.setTouches(touches);
1051                                          
1052                                          //System.out.println("messo in touches source->"+source+" target"+target);
1053
//visualRel.setIdTipo(idTipo);
1054
//visualRel.setIdIstanza(idIstanzaW.toString());
1055
//visualRel.setSource(source);
1056
//visualRel.setTarget(target);
1057

1058                                          addDrawing((ReferrableElement)con);
1059                                          //System.out.println("sentence dim->"+sentence.size());
1060
} catch(InstantiationException JavaDoc e){
1061                                          Cve.errLog.error(e.toString());
1062                                          ViewLog.writeInLog(" #E <WippogSentenza>: newIstance() fallita creazione istanza"+"\n");
1063                                       } catch(IllegalAccessException JavaDoc e1){
1064                                          Cve.errLog.error(e1.toString());
1065                                          ViewLog.writeInLog(" #E <WippogSentenza>: newIstance() fallito accesso"+"\n");
1066                                       } catch(ClassNotFoundException JavaDoc e2){
1067                                          Cve.errLog.error(e2.toString());
1068                                          ViewLog.writeInLog(" #E <WippogSentenza>: newIstance() fallita ricerca classe"+"\n");
1069                                       }
1070                                    
1071                                       //addDrawing(new VisLinee(source,target,idIstanzaW.toString(),idTipo));
1072
//ViewLog.writeInLog(" #E# ho eseguito regola di creazione relazione in specifica sentenza"+"\n");
1073
//contestoAutoma=RELATION_CREATED;
1074
}
1075                                }
1076                            }
1077                            break;
1078                        case QUERY:
1079                            ViewLog.writeInLog(" #E <WippogSentenza>: QUERY ELEMENT"+"\n");
1080                            System.out.println(" #E <WippogSentenza>: QUERY ELEMENT");
1081
1082                            itItems=items.iterator();
1083                            while (itItems.hasNext()){
1084                                
1085                                IResource item=(IResource)itItems.next();
1086                                setQueryItem(item);
1087                                
1088                            }
1089                            
1090                           //******
1091
synchronized( sincronizzatoreSent ) {
1092                              System.out.println("RILASCIO RISORSE DA QUERY!!!");
1093                              sincronizzatoreSent.notifyAll();
1094                           }
1095                                
1096                        break;
1097                    } //chiudo switch
1098
synchronized( sincronizzatoreSent ) {
1099                        sincronizzatoreSent.notifyAll();
1100                    }
1101                }
1102            } ); // chiudo listener
1103
//sent.addItemGet("activity(generate=presenter)");
1104
}catch (Exception JavaDoc e) {
1105             Cve.errLog.error(e.toString());
1106             ViewLog.writeInLog(" #E# problemi in wippog sentenza"+"\n");
1107        }
1108    }
1109        
1110    /**
1111     * Restituisce il reference al drawing relativo all'idIstanza passato come parametro
1112     * @param idIstanza
1113     */

1114    private ReferrableElement trovaDrawingDaId(String JavaDoc idIstanza){
1115        Cve.errLog.debug("");
1116        for (int i=0;i<sentence.size();i++){
1117            ReferrableElement d=(ReferrableElement)sentence.elementAt(i);
1118            String JavaDoc idIst=d.getIdInstance();
1119            if(idIst.equals(idIstanza)){
1120                 //System.out.println(" trovato elmento source o target x "+d.getX()+" y "+d.getY());
1121
return d;
1122            }
1123        }
1124        return null;
1125    }
1126    
1127    /**
1128     * Metto come selezionati elementi inseriti in listaSel
1129     * @param listaSel: collezione di tutti gli elementi selezionati
1130     */

1131    private void setSelectCp(Collection listaSel){
1132        Cve.errLog.debug("");
1133        for (int i=0;i<sentence.size();i++){
1134            ReferrableElement d=(ReferrableElement)sentence.elementAt(i);
1135            String JavaDoc idIst=d.getIdInstance();
1136            if(isInListaSel(idIst)){
1137                ViewLog.writeInLog(" #E Selected Element (setSelectCp): configuro l'elemento " + idIst + " come selezionato" + "\n");
1138                d.setSelected(true);
1139            } else {
1140                ViewLog.writeInLog(" #E Selected Element (setSelectCp): configuro l'elemento " + idIst + " come NON selezionato" + "\n");
1141                d.setSelected(false);
1142           }
1143        }
1144        
1145        SentenceEvent sentEv=new SentenceEvent();
1146        sentEv.setActionUser("selected");
1147        sentEv.setSentence(sentence);
1148        ObservableCve ob=getObservable();
1149        ob.setDate(sentEv);
1150    }
1151        
1152}
Popular Tags