KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > ca > mcgill > sable > soot > attributes > AttributeDomProcessor


1 /* Soot - a J*va Optimization Framework
2  * Copyright (C) 2003 Jennifer Lhotak
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */

19
20 package ca.mcgill.sable.soot.attributes;
21
22 import java.util.*;
23 //import javax.xml.parsers.*;
24

25 import org.w3c.dom.*;
26
27
28 public class AttributeDomProcessor {
29
30     Document domDoc;
31     ArrayList attributes;
32     private ArrayList keys;
33     private SootAttribute current;
34     
35     
36     /**
37      * Method AttributeDomProcessor.
38      * @param domDoc
39      */

40     public AttributeDomProcessor(Document domDoc) {
41         setDomDoc(domDoc);
42     }
43     
44     /**
45      * Method processAttributesDom.
46      */

47     public void processAttributesDom() {
48         processNode(getDomDoc());
49                 
50     }
51     
52
53     private void processNode(Node node) {
54
55         if (node.getNodeType() == Node.DOCUMENT_NODE) {
56             NodeList children = node.getChildNodes();
57             if (children != null) {
58                 setAttributes(new ArrayList());
59                 for (int i = 0; i < children.getLength(); i++) {
60                     processNode(children.item(i));
61                 }
62             }
63             
64         }
65         else if (node.getNodeType() == Node.ELEMENT_NODE) {
66             if ( node.getNodeName().equals("attribute")) {
67                 
68                 current = new SootAttribute();
69                 NodeList children = node.getChildNodes();
70                 for (int i = 0; i < children.getLength(); i++) {
71                     processAttributeNode(current, children.item(i));
72                 }
73                 getAttributes().add(current);
74             }
75             else if (node.getNodeName().equals("key")){
76                 if (keys == null){
77                     keys = new ArrayList();
78                 }
79                 NamedNodeMap map = node.getAttributes();
80                 AnalysisKey key = new AnalysisKey();
81                 key.setRed((new Integer JavaDoc(map.getNamedItem("red").getNodeValue())).intValue());
82                 key.setGreen((new Integer JavaDoc(map.getNamedItem("green").getNodeValue())).intValue());
83                 key.setBlue((new Integer JavaDoc(map.getNamedItem("blue").getNodeValue())).intValue());
84                 key.setKey(map.getNamedItem("key").getNodeValue());
85                 key.setType(map.getNamedItem("aType").getNodeValue());
86                 keys.add(key);
87             }
88             else {
89                 NodeList children = node.getChildNodes();
90                 for (int i = 0; i < children.getLength(); i++) {
91                     processNode(children.item(i));
92                 }
93             }
94             
95         }
96         
97     }
98     
99     private void processAttributeNode(SootAttribute current, Node node) {
100
101         if (node.getNodeType() == Node.ELEMENT_NODE) {
102             if (node.getNodeName().equals("link")){
103                 NamedNodeMap map = node.getAttributes();
104                 LinkAttribute la = new LinkAttribute();
105                 
106                 la.setLabel(map.getNamedItem("label").getNodeValue());
107                 la.setJavaLink((new Integer JavaDoc(map.getNamedItem("srcLink").getNodeValue()).intValue()));
108                 la.setJimpleLink((new Integer JavaDoc(map.getNamedItem("jmpLink").getNodeValue()).intValue()));
109                 la.setClassName(map.getNamedItem("clssNm").getNodeValue());
110                 la.setType(map.getNamedItem("aType").getNodeValue());
111                 current.addLinkAttr(la);
112             }
113             else if (node.getNodeName().equals("color")){
114                 NamedNodeMap map = node.getAttributes();
115                 int r = (new Integer JavaDoc(map.getNamedItem("r").getNodeValue())).intValue();
116                 int g = (new Integer JavaDoc(map.getNamedItem("g").getNodeValue())).intValue();
117                 int b = (new Integer JavaDoc(map.getNamedItem("b").getNodeValue())).intValue();
118                 int fgInt = (new Integer JavaDoc(map.getNamedItem("fg").getNodeValue())).intValue();
119                 boolean fg = false;
120                 if (fgInt == 1){
121                     fg = true;
122                 }
123                 ColorAttribute ca = new ColorAttribute(r, g, b, fg);
124                 ca.type(map.getNamedItem("aType").getNodeValue());
125                 current.addColorAttr(ca);//.setColor(ca);
126
}
127             else if (node.getNodeName().equals("srcPos")){
128                 NamedNodeMap map = node.getAttributes();
129                 int sline = (new Integer JavaDoc(map.getNamedItem("sline").getNodeValue())).intValue();
130                 int eline = (new Integer JavaDoc(map.getNamedItem("eline").getNodeValue())).intValue();
131                 int spos = (new Integer JavaDoc(map.getNamedItem("spos").getNodeValue())).intValue();
132                 int epos = (new Integer JavaDoc(map.getNamedItem("epos").getNodeValue())).intValue();
133                 
134                 current.setJavaStartLn(sline);
135                 current.setJavaEndLn(eline);
136                 current.setJavaStartPos(spos);
137                 current.setJavaEndPos(epos);
138             }
139             else if (node.getNodeName().equals("jmpPos")){
140                 NamedNodeMap map = node.getAttributes();
141                 int sline = (new Integer JavaDoc(map.getNamedItem("sline").getNodeValue())).intValue();
142                 int eline = (new Integer JavaDoc(map.getNamedItem("eline").getNodeValue())).intValue();
143                 int spos = (new Integer JavaDoc(map.getNamedItem("spos").getNodeValue())).intValue();
144                 int epos = (new Integer JavaDoc(map.getNamedItem("epos").getNodeValue())).intValue();
145     
146                 current.setJimpleStartLn(sline);
147                 current.setJimpleEndLn(eline);
148                 current.setJimpleStartPos(spos);
149                 current.setJimpleEndPos(epos);
150             }
151             else if (node.getNodeName().equals("text")){
152                 NamedNodeMap map = node.getAttributes();
153                 TextAttribute ta = new TextAttribute();
154                 ta.setInfo(map.getNamedItem("info").getNodeValue());
155                 ta.setType(map.getNamedItem("aType").getNodeValue());
156                 current.addTextAttr(ta);
157             }
158             else {
159                 NodeList children = node.getChildNodes();
160                 for (int i = 0; i < children.getLength(); i++) {
161                     processAttributeNode(current, children.item(i));
162                 }
163             }
164         }
165         else if (node.getNodeType() == Node.TEXT_NODE){
166             String JavaDoc type = node.getParentNode().getNodeName();
167         }
168     }
169     
170     
171     /**
172      * Returns the domDoc.
173      * @return Document
174      */

175     public Document getDomDoc() {
176         return domDoc;
177     }
178
179     /**
180      * Sets the domDoc.
181      * @param domDoc The domDoc to set
182      */

183     public void setDomDoc(Document domDoc) {
184         this.domDoc = domDoc;
185     }
186
187     /**
188      * Returns the attributes.
189      * @return Vector
190      */

191     public ArrayList getAttributes() {
192         return attributes;
193     }
194
195     /**
196      * Returns the current.
197      * @return SootAttribute
198      */

199     public SootAttribute getCurrent() {
200         return current;
201     }
202
203     /**
204      * Sets the attributes.
205      * @param attributes The attributes to set
206      */

207     public void setAttributes(ArrayList attributes) {
208         this.attributes = attributes;
209     }
210
211     /**
212      * Sets the current.
213      * @param current The current to set
214      */

215     public void setCurrent(SootAttribute current) {
216         this.current = current;
217     }
218
219     /**
220      * @return
221      */

222     public ArrayList getKeys() {
223         return keys;
224     }
225
226     /**
227      * @param list
228      */

229     public void setKeys(ArrayList list) {
230         keys = list;
231     }
232
233 }
234
Popular Tags