KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cve > esecutori > components > specificaLV > AnalizzaRegoleW


1 package cve.esecutori.components.specificaLV;
2
3 import cve.esecutori.servizioEACesec.*;
4 import cve.staticLayout.*;
5
6 import java.io.*;
7 import java.util.*;
8
9 import org.jdom.*;
10 import org.jdom.input.SAXBuilder;
11 import org.jdom.output.XMLOutputter;
12
13 import org.apache.log4j.Logger;
14
15 public class AnalizzaRegoleW {
16    /**
17    * pre:
18    * post:result e' l'insieme degli elementi free creation (elementFree)
19    * Logica: un elemento dell'alfabeto e' free se all'interno delle regole
20    * ha almeno una volta l'antecedente vuoto
21    */

22    public static HashSet freeCreation(Element rootReg) {
23
24       Cve.errLog.debug("");
25       HashSet elementFree=new HashSet();
26       ViewLog.writeInLog(" Elenco degli elementi che possono essere creati liberamente ");
27       //Element rootReg=docReg.getRootElement();
28
List figliReg=rootReg.getChildren("Rule"); // prendo regole
29
for (int i=0; i<figliReg.size(); i++){
30          Element reg=(Element)(figliReg.get(i)); // prendo una regola
31
List ant=reg.getChild("Antecedent").getChildren(); // prendo antecedenti
32
if (ant.size()==0) {// se non ci sono antecedenti
33
Element eleXml=reg.getChild("Conseguente").getChild("ElementCons");// elemento
34
String JavaDoc name=reg.getChild("Conseguente").getChild("ElementCons").getAttributeValue("name");// nome
35
// elementFree.put((Object)name,eleXml);
36
elementFree.add(name);
37             ViewLog.writeInLog(" free elemento "+name );
38          }
39       }
40       return elementFree;
41    }
42
43    /**
44    * pre:
45    * post:result il referenze dell'elemento cercato, se e' nel conseguente
46    * della "rule", altrimenti result vale null
47    *
48    * @param rule e' una regola
49    * @param ele e' un elemento specificato nell'alfabeto
50    * Logica: la ricerca si basa sul nome dell'elemento (univoco
51    * per ipotesi)
52    *
53    */

54    public static Element isInConseguente(Element rule, Element ele) {
55       Cve.errLog.debug("");
56       Attribute attributeName=ele.getAttribute("name");
57       String JavaDoc nameEle=attributeName.getValue();
58       //prendo gli elementi del conseguente presenti nella regola esaminata
59
List setElem=rule.getChild("Conseguente").getChildren();
60       //System.out.println(" sono in isInConsegnete- num ele consegunete = "+ setElem.size() );
61
int i=0;
62       boolean trovatoEle=false;
63       // controllo se vi e' l'elemento nel conseguente
64
while ( (trovatoEle==false)&(i<setElem.size()) ){
65          String JavaDoc nameEleCons=((Attribute)((Element)(setElem.get(i))).getAttribute("name")).getValue();
66          //System.out.println(" name elemento esaminato= "+ nameEleCons );
67
if (nameEleCons.equals(nameEle) ){
68             trovatoEle=true;
69             // System.out.println(" trovato elemento "+ nameEle );
70
//l'elemento cercato e' nella regola che si sta esaminando
71
return ( (Element)(setElem.get(i)) );
72          }
73          i++;
74       }
75       return null;
76    }
77
78    /**
79    * pre:
80    * post:result l'elemento e il valore dell'attributo cercato. Se non viene trovato
81    * result vale null
82    *
83    * @param nomeAttrCerc il nome dell'attributo cercato
84    * @param ele elemento di cui si cerca l'attributo
85    * Logica:
86    *
87    */

88    public static String JavaDoc findValueAttriEle(String JavaDoc nomeAttrCerc ,Element ele) {
89       Cve.errLog.debug("");
90       List attributi=ele.getChildren("Attribute"); //attributi di un elemento
91
System.out.println(" cerco il valore attributo "+nomeAttrCerc+" Elemento:"+ ele.getName()+" Numero Attr:"+attributi.size());
92
93       int i=0;
94       boolean trovato=false;
95       while ((i<=attributi.size())&(trovato==false)){
96
97          String JavaDoc nomeAttrEsam= ((Element)attributi.get(i)).getAttributeValue("name");
98          System.out.println(" attributo esaminato e' "+nomeAttrEsam);
99          if (nomeAttrEsam.equals(nomeAttrCerc)){
100             trovato=true;
101             //GF
102
//String cont1=((Element)attributi.get(i)).getText();
103
String JavaDoc valueAttrEsam= ((Element)attributi.get(i)).getAttributeValue("value");
104             System.out.println(" Valore Trovato per "+nomeAttrEsam+": "+valueAttrEsam);
105             return valueAttrEsam;
106             //return ((Element)attributi.get(i)).getText();
107
// ritorna il valore dell'attributo
108
}
109          i++;
110       }
111       return null;
112    }
113
114    /**
115    * pre:
116    * post:result l'element presente nell'antecedente con l'id cercato.
117    * Se questo non esiste result vale null
118    *
119    * @param rule e' una regola
120    * @param idFind e' l'id identificativo e univoco dell'elemento cercato
121    * Logica: viene verificato se esiste un elemento nell'antecedente della
122    * regola "rule" che contiene l'id "idFind" cercato
123    *
124    */

125    public static Element findIdElementAnt(Element rule, String JavaDoc idFind) {
126       Cve.errLog.debug("");
127       System.out.println(" cerco antecedente con id voluto " + idFind+ " Regola: " +rule.getName());
128       List setEleAnt=rule.getChild ("Antecedent").getChildren();
129
130       int i=0;
131       boolean trovatoId=false;
132       while ( (i<setEleAnt.size())&(trovatoId==false) ){
133          Attribute id=(Attribute)((Element)(setEleAnt.get(i))).getAttribute("id");
134          String JavaDoc idEle=id.getValue();
135          System.out.println(" id Ele esaminato e' "+idEle+" mentre l'elemento cercato "+idFind);
136          if (idEle.equals(idFind)){
137             trovatoId=true;
138             // System.out.println(" trovato ");
139
return ((Element)(setEleAnt.get(i)));
140          }
141          i++;
142       }
143       //System.out.println("");
144
return null;
145    }
146 }
Popular Tags