KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cve > esecutori > components > specificaSem > Associations


1 package cve.esecutori.components.specificaSem;
2
3
4 import java.io.*;
5 import java.util.*;
6
7 import org.jdom.*;
8
9 import org.jdom.input.SAXBuilder;
10 import org.jdom.output.XMLOutputter;
11
12 import cve.staticLayout.*;
13
14 import org.apache.log4j.Logger;
15
16 /**
17 * Classe contenente informazioni rigurdante l'insieme delle
18 * Associazioni di Regole Sintattiche-Semantiche
19 *
20 * @author Francesco Guerrisi
21 */

22 public class Associations {
23
24    /**
25    * Elenco di istanze di Associazioni
26    */

27    private HashMap associations;
28    private Document docAssSem, docSem;
29
30    public Associations(){
31       Cve.errLog.debug("");
32       associations=new HashMap();
33    }
34
35    public void addAss(String JavaDoc idSint, Association ass){
36       Cve.errLog.debug("");
37       System.out.println(" #E @specificaSem.Associations.addAss: idSint: "+ idSint + " idSem: " + ass.getIdSem());
38       associations.put(idSint, ass);
39    }
40
41    public HashMap getAllAss(){
42       Cve.errLog.debug("");
43       return associations;
44    }
45
46    public Association getAss(String JavaDoc idSint){
47       Cve.errLog.debug("");
48       return (Association)associations.get(idSint);
49    }
50
51    /**
52    * Creazione Vettore elenco associazioni
53    */

54    public void loadAssociations(String JavaDoc fileSem, String JavaDoc fileAssSem){
55       Cve.errLog.debug("");
56       System.out.println(" #E @specificaSem.Associations.loadAss: fileSem: "+ fileSem);
57       System.out.println(" #E @specificaSem.Associations.loadAss: fileAssSem: "+ fileAssSem);
58
59       //Creazione Oggetti
60
Association appo_ass;
61       String JavaDoc appo_idSint, appo_idSem, appo_idAss, appo_NameResource;
62       Vector appo_parameter;
63       //HashMap appo_resource;
64

65       appo_idSint = new String JavaDoc();
66       appo_idSem = new String JavaDoc();
67       appo_idAss = new String JavaDoc();
68       appo_NameResource = new String JavaDoc();
69
70       //Scorrimento file di associazione e creazione vettore
71
try {
72          // vanno messi i controlli di correttezza
73
SAXBuilder builder = new SAXBuilder(false);
74          docAssSem = builder.build(new File(fileAssSem));
75          docSem = builder.build(new File(fileSem));
76
77       } catch (JDOMException e) {
78          Cve.errLog.error(e.toString());
79       } catch (Exception JavaDoc e) {
80          Cve.errLog.error(e.toString());
81       }
82       Element rootAssSem=docAssSem.getRootElement();
83       Element rootSem=docSem.getRootElement();
84
85       //Scorrimento file Associazione
86
//Prelevo tutti i figli
87
java.util.List JavaDoc setElement = rootAssSem.getChildren();
88       for (int j=0; j<setElement.size();j++){
89          Element elementFind=(Element)(setElement.get(j));
90
91          String JavaDoc nomeElement = elementFind.getName();
92          nomeElement = nomeElement.trim();
93          //Verifico se l'elemento figlio è tra quelli ricercati
94
if( nomeElement.equals("Association")){
95
96             //Creazione Oggetto Associazione
97
appo_ass = new Association();
98             //Prelevo gli attributi dell'elemento trovato
99
java.util.List JavaDoc attList = elementFind.getAttributes();
100
101             //Scorrimento Attributi
102
for (int i=0; i<attList.size();i++){
103                Attribute appoAttr = (Attribute)attList.get(i);
104                //Nome
105
String JavaDoc appoAttrName = appoAttr.getName();
106                appoAttrName = appoAttrName.trim();
107
108                //Valore
109
String JavaDoc appoAttrValue = appoAttr.getValue();
110                appoAttrValue = appoAttrValue.trim();
111
112                //Caricamento informazioni di Associazione
113
//idAss
114
if (appoAttrName.equals("idAss")){
115
116                   //prelevamento id Associazione
117
appo_idAss = appoAttrValue;
118                }
119             } //Scorrimento attributi
120

121             //CASO: ho trovato associazione
122
if (appo_idAss.equals("")==false){
123                //Prelevamento Figli dell'associazione
124
java.util.List JavaDoc setElementFind = elementFind.getChildren();
125                for (int k=0; k<setElementFind.size();k++){
126
127                   Element elementFindAss=(Element)(setElementFind.get(k));
128                   String JavaDoc nomeElementAss = elementFindAss.getName();
129                   nomeElementAss = nomeElementAss.trim();
130
131                   //SyntaxRule
132
if( nomeElementAss.equals("SyntaxRule")){
133                      //Prelevo gli attributi dell'elemento trovato
134
java.util.List JavaDoc attListFind = elementFindAss.getAttributes();
135                      //Scorrimento Attributi
136
for (int z=0; z<attListFind.size();z++){
137                         Attribute appoAttrFind = (Attribute)attListFind.get(z);
138
139                         //Nome
140
String JavaDoc appoAttrNameFind = appoAttrFind.getName();
141                         appoAttrNameFind = appoAttrNameFind.trim();
142
143                         //Valore
144
String JavaDoc appoAttrValueFind = appoAttrFind.getValue();
145                         appoAttrValueFind = appoAttrValueFind.trim();
146
147                         //idRule
148
if (appoAttrNameFind.equals("idRule")){
149                            //prelevamento id Regola Sintattica
150
appo_idSint = appoAttrValueFind;
151
152                         } //idRule
153
} //scorrimento attributi
154
} //Syntax Rule
155

156                   //SemanticRule
157
if( nomeElementAss.equals("SemanticRule")){
158                      //Prelevo gli attributi dell'elemento trovato
159
java.util.List JavaDoc attListFind2 = elementFindAss.getAttributes();
160                      //Scorrimento Attributi
161
for (int z1=0; z1<attListFind2.size();z1++){
162                         Attribute appoAttrFind2 = (Attribute)attListFind2.get(z1);
163
164                         //Nome
165
String JavaDoc appoAttrNameFind2 = appoAttrFind2.getName();
166                         appoAttrNameFind2 = appoAttrNameFind2.trim();
167
168                         //Valore
169
String JavaDoc appoAttrValueFind2 = appoAttrFind2.getValue();
170                         appoAttrValueFind2 = appoAttrValueFind2.trim();
171
172                         //idRule
173
if (appoAttrNameFind2.equals("idRule")){
174                            //prelevamento id Regola Semantica
175
appo_idSem = appoAttrValueFind2;
176                            //***Ricerca GET e Parametri nelle Regole Semantiche
177

178                            //Ricerca Transazione Semantica
179
java.util.List JavaDoc setElementSem = rootSem.getChildren();
180                            for (int j1=0; j1<setElementSem.size();j1++){
181                               Element elementFindSem = (Element)(setElementSem.get(j1));
182
183                               String JavaDoc nomeElementSem = elementFindSem.getName();
184                               nomeElementSem = nomeElementSem.trim();
185
186                               //Verifica se Transazione
187
if( nomeElementSem.equals("Transition")){
188
189                                  java.util.List JavaDoc attListFindSem = elementFindSem.getAttributes();
190                                  //Scorrimento Attributi
191
for (int z2=0; z2<attListFindSem.size();z2++){
192                                     Attribute appoAttrFindSem = (Attribute)attListFindSem.get(z2);
193
194                                     //Nome
195
String JavaDoc appoAttrNameFindSem = appoAttrFindSem.getName();
196                                     appoAttrNameFindSem = appoAttrNameFindSem.trim();
197
198                                     //Valore
199
String JavaDoc appoAttrValueFindSem = appoAttrFindSem.getValue();
200                                     appoAttrValueFindSem = appoAttrValueFindSem.trim();
201
202                                     //id Sem
203
if (appoAttrNameFindSem.equals("id") && appoAttrValueFindSem.equals(appo_idSem)){
204
205                                        //System.out.println(" #E @specificaSem.Associations.loadAss: Ass: "+ appo_idAss + " idSem: "+appo_idSem + " TROVATA Transazione in Semantica!");
206

207                                        //Transazione Trovata!
208
//Trovo GET
209
java.util.List JavaDoc setElementSemTra = elementFindSem.getChildren();
210                                        for (int j2=0; j2<setElementSemTra.size();j2++){
211                                           Element elementFindSemTra = (Element)(setElementSemTra.get(j2));
212
213                                           String JavaDoc nomeElementSemTra = elementFindSemTra.getName();
214                                           nomeElementSemTra = nomeElementSemTra.trim();
215
216                                           //Verifico se l'elemento figlio è tra quelli ricercati
217
if( nomeElementSemTra.equals("Get")){
218
219                                              //Prelevo Figlio GET
220
java.util.List JavaDoc setElementSemGet = elementFindSemTra.getChildren();
221                                              for (int j3=0; j3<setElementSemGet.size();j3++){
222                                                 Element elementFindSemGet = (Element)(setElementSemGet.get(j3));
223
224                                                 String JavaDoc nomeElementSemGet = elementFindSemGet.getName();
225                                                 nomeElementSemGet = nomeElementSemGet.trim();
226
227                                                 //Trovo Risorsa Get
228
if( nomeElementSemGet.equals("Item")){
229
230                                                    java.util.List JavaDoc attListFindSemItem = elementFindSemGet.getAttributes();
231                                                    //Scorrimento Attributi
232
for (int z3=0; z3<attListFindSemItem.size();z3++){
233                                                       Attribute appoAttrFindSemItem = (Attribute)attListFindSemItem.get(z3);
234
235                                                       //Nome
236
String JavaDoc appoAttrNameFindSemItem = appoAttrFindSemItem.getName();
237                                                       appoAttrNameFindSemItem = appoAttrNameFindSemItem.trim();
238
239                                                       //Valore
240
String JavaDoc appoAttrValueFindSemItem = appoAttrFindSemItem.getValue();
241                                                       appoAttrValueFindSemItem = appoAttrValueFindSemItem.trim();
242
243                                                       //Nome Risorsa
244
if (appoAttrNameFindSemItem.equals("typeName")){
245                                                          appo_NameResource = appoAttrValueFindSemItem;
246                                                          //System.out.println(" #E @specificaSem.Associations.loadAss: Ass: "+ appo_idAss + " idSem: "+appo_idSem + " Risorsa Get: "+appo_NameResource);
247

248                                                       }//Nome Risorsa
249
} //Scorrimento Attributi risorsa
250

251                                                    //Scorrimento Figli per parametri
252
appo_parameter = new Vector();
253                                                    java.util.List JavaDoc setElementSemPar = elementFindSemGet.getChildren();
254                                                    for (int j4=0; j4<setElementSemPar.size();j4++){
255                                                       Element elementFindSemPar = (Element)(setElementSemPar.get(j4));
256
257                                                       String JavaDoc nomeElementSemPar = elementFindSemPar.getName();
258                                                       nomeElementSemPar = nomeElementSemPar.trim();
259
260                                                       //Trovo Risorsa Parameter
261
if( nomeElementSemPar.equals("Parameter")){
262
263                                                          java.util.List JavaDoc attListFindSemPar = elementFindSemPar.getAttributes();
264                                                          //Scorrimento Attributi parameter
265

266                                                          for (int z4=0; z4<attListFindSemPar.size();z4++){
267                                                             Attribute appoAttrFindSemPar = (Attribute)attListFindSemPar.get(z4);
268
269                                                             //Nome -->name
270

271                                                             //Valore
272
String JavaDoc appoAttrValueFindSemPar = appoAttrFindSemPar.getValue();
273                                                             appoAttrValueFindSemPar = appoAttrValueFindSemPar.trim();
274
275                                                             //System.out.println(" #E @specificaSem.Associations.loadAss: Ass: "+ appo_idAss + " idSem: "+appo_idSem + " Risorsa Get: "+appo_NameResource+" Parameter: " +appoAttrValueFindSemPar);
276
//Inserimento in Vettore appoggio
277
appo_parameter.add(appoAttrValueFindSemPar);
278                                                             appo_parameter.add(null);
279
280                                                          } //Attributi parameter
281

282                                                       } //Trovato Parameter
283
} //Figli dell'Item in Get
284

285                                                    //--> Inserimento in appo_resource
286
appo_ass.putResource(appo_NameResource,appo_parameter);
287                                                 } //Risorsa Get
288

289                                              } // Elementi Get
290
}//Trovato Get
291

292                                        } //Figli Transazione
293

294                                     } //id Transition
295
} //Attirbuti Transition
296

297                               } //Transition
298

299                            } //Scorrimento Elementi Semantici
300

301
302                         } //id rule
303
} //scorrimento attributi
304
} //Semantic Rule
305
} //Scorrimento Figli Associazione
306
} //CASO: ho trovato associazione
307

308             //Valorizzazione Associazione
309
appo_ass.setIdAss(appo_idAss);
310             appo_ass.setIdSem(appo_idSem);
311             //appo_ass.putResource(appo_resource);
312

313             //Inserimento in HashMap
314
addAss(appo_idSint, appo_ass);
315
316          } //Trovata Associazione
317
} //Scorrimento File Associazioni
318

319    }
320
321    //Ritorno Risorsa da lanciare in WM Semantica
322
public String JavaDoc getResource(String JavaDoc idSint){
323
324       String JavaDoc appo_res;
325       Cve.errLog.debug("");
326       //Ricerco tutte le chiavi presenti nell'HashMap
327
Set setKey = associations.keySet();
328
329       Association appo_ass;
330       appo_ass = (Association)getAss(idSint);
331
332       appo_res = new String JavaDoc();
333
334       //Scorrimento Risorse da Creare in Semantica
335
Set setResource = appo_ass.getResource().keySet();
336       Iterator resIt = setResource.iterator();
337       String JavaDoc res;
338       Vector parameter = new Vector();
339       while (resIt.hasNext()){
340          res = (String JavaDoc)resIt.next();
341          parameter = (Vector)appo_ass.getResource().get(res);
342          appo_res = res +" ";
343
344          //Scorrimeno Parametri
345
if (parameter.size()>0){
346             int i=0;
347             appo_res = appo_res + "(";
348             while (i < parameter.size()-1){
349                appo_res = appo_res + parameter.get(i)+ "=";
350                i = i+1;
351                appo_res = appo_res + parameter.get(i) +";";
352                i = i+1;
353             }
354             //Elimino l'ultimo ;
355
appo_res = appo_res.substring(0, appo_res.length()-1) ;
356
357             appo_res = appo_res + ")";
358          }
359       }
360       return appo_res;
361    }
362
363    //Stampa Contenuto Vettore Associazione
364
public String JavaDoc toString(){
365
366       Cve.errLog.debug("");
367       String JavaDoc appo = new String JavaDoc();
368       //Ricerco tutte le chiavi presenti nell'HashMap
369
Set setKey = associations.keySet();
370       System.out.println("Numero Associazioni registrate : " + setKey.size());
371       //Scorro tutte le chiavi e prelevo info
372
Iterator assIt = setKey.iterator();
373       String JavaDoc idSint;
374       Association appo_ass;
375       while (assIt.hasNext()){
376          //Prelevo l'associazione relativa a quella chiave
377
idSint = (String JavaDoc)assIt.next();
378          appo_ass = (Association)getAss(idSint);
379
380          appo = appo + "ASSOCIAZIONE:"+ appo_ass.getIdAss() +"\r\n";
381          appo = appo + " idSint: " + idSint +"\r\n";
382          appo = appo + " idSem : " + appo_ass.getIdSem() +"\r\n";
383          appo = appo + " Resources "+"\r\n";
384
385          //Scorrimento Risorse da Creare in Semantica
386
Set setResource = appo_ass.getResource().keySet();
387          Iterator resIt = setResource.iterator();
388          String JavaDoc res;
389          Vector parameter = new Vector();
390          while (resIt.hasNext()){
391             res = (String JavaDoc)resIt.next();
392             parameter = (Vector)appo_ass.getResource().get(res);
393             appo = appo + " resource : "+ res +" Numero Parametri: "+parameter.size()/2 +"\r\n";
394
395             //Scorrimeno Parametri
396
int i=0;
397             while (i < parameter.size()-1){
398                appo = appo + " parameter : "+ parameter.get(i) +"\r\n";
399                i = i+1;
400                appo = appo + " value : "+ parameter.get(i) +"\r\n";
401                i = i+1;
402             }
403          }
404          appo = appo + " Risorsa in Semantica: " + getResource(idSint) + "\r\n";
405       }
406       return appo;
407    }
408
409    public void clear(){
410       Cve.errLog.debug("");
411       associations.clear();
412    }
413
414    //TEST
415
public static void main(String JavaDoc[] args){
416
417       Associations appo_a = new Associations();
418       String JavaDoc fileS, fileA;
419
420       fileS = new String JavaDoc("D:\\CVE_HOME\\VisualLanguage\\SpecificheWippog//Sent_PetriLanguageSem.xml");
421       fileA = new String JavaDoc("D:\\CVE_HOME\\VisualLanguage\\SpecificheWippog//Sent_PetriLanguageSemASS.xml");
422
423       appo_a.loadAssociations(fileS, fileA);
424       System.out.println(appo_a.toString());
425    }
426
427 }
Popular Tags