2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
* ScriptHandler.java |
2 |
26 Feb 07 |
jari |
3 |
* |
2 |
26 Feb 07 |
jari |
* Created on February 14, 2004, 10:44 PM |
2 |
26 Feb 07 |
jari |
5 |
*/ |
2 |
26 Feb 07 |
jari |
6 |
|
2 |
26 Feb 07 |
jari |
7 |
package org.tigr.microarray.mev.script; |
2 |
26 Feb 07 |
jari |
8 |
|
2 |
26 Feb 07 |
jari |
9 |
import java.io.IOException; |
2 |
26 Feb 07 |
jari |
10 |
import java.io.Writer; |
2 |
26 Feb 07 |
jari |
11 |
import java.util.Iterator; |
2 |
26 Feb 07 |
jari |
12 |
import java.util.Map; |
2 |
26 Feb 07 |
jari |
13 |
import java.util.Set; |
2 |
26 Feb 07 |
jari |
14 |
|
2 |
26 Feb 07 |
jari |
15 |
import org.apache.xerces.dom.DOMImplementationImpl; |
2 |
26 Feb 07 |
jari |
16 |
import org.tigr.microarray.mev.cluster.algorithm.AlgorithmData; |
2 |
26 Feb 07 |
jari |
17 |
import org.tigr.microarray.mev.cluster.algorithm.AlgorithmParameters; |
2 |
26 Feb 07 |
jari |
18 |
import org.tigr.util.FloatMatrix; |
2 |
26 Feb 07 |
jari |
19 |
import org.w3c.dom.Document; |
2 |
26 Feb 07 |
jari |
20 |
import org.w3c.dom.Element; |
2 |
26 Feb 07 |
jari |
21 |
import org.w3c.dom.NamedNodeMap; |
2 |
26 Feb 07 |
jari |
22 |
import org.w3c.dom.Node; |
2 |
26 Feb 07 |
jari |
23 |
import org.w3c.dom.NodeList; |
2 |
26 Feb 07 |
jari |
24 |
import org.w3c.dom.Text; |
2 |
26 Feb 07 |
jari |
25 |
|
2 |
26 Feb 07 |
jari |
26 |
|
2 |
26 Feb 07 |
jari |
27 |
/** |
2 |
26 Feb 07 |
jari |
28 |
* |
2 |
26 Feb 07 |
jari |
* @author braisted |
2 |
26 Feb 07 |
jari |
30 |
*/ |
2 |
26 Feb 07 |
jari |
31 |
public class ScriptHandler { |
2 |
26 Feb 07 |
jari |
32 |
|
2 |
26 Feb 07 |
jari |
33 |
String tm4ScriptVersion = "1.0"; |
2 |
26 Feb 07 |
jari |
34 |
String mevScriptVersion = "1.0"; |
2 |
26 Feb 07 |
jari |
35 |
|
2 |
26 Feb 07 |
jari |
36 |
Document document; |
2 |
26 Feb 07 |
jari |
37 |
Element root; |
2 |
26 Feb 07 |
jari |
38 |
Element mevElement; |
2 |
26 Feb 07 |
jari |
39 |
Element primaryDataElement; |
2 |
26 Feb 07 |
jari |
40 |
|
2 |
26 Feb 07 |
jari |
41 |
Element analysisElement; |
2 |
26 Feb 07 |
jari |
42 |
int currAnalysisID = 1; |
2 |
26 Feb 07 |
jari |
43 |
int currDataID = 1; |
2 |
26 Feb 07 |
jari |
44 |
String lineSeparator = "\n"; |
2 |
26 Feb 07 |
jari |
45 |
String indent = " "; |
2 |
26 Feb 07 |
jari |
46 |
|
2 |
26 Feb 07 |
jari |
/** Creates a new instance of ScriptHandler */ |
2 |
26 Feb 07 |
jari |
48 |
public ScriptHandler() { |
2 |
26 Feb 07 |
jari |
49 |
DOMImplementationImpl impl = new DOMImplementationImpl(); |
2 |
26 Feb 07 |
jari |
50 |
document = impl.createDocument(null, "tm4", null); |
2 |
26 Feb 07 |
jari |
51 |
|
2 |
26 Feb 07 |
jari |
52 |
root = document.getDocumentElement(); |
2 |
26 Feb 07 |
jari |
53 |
root.setAttribute("version", tm4ScriptVersion); |
2 |
26 Feb 07 |
jari |
54 |
|
2 |
26 Feb 07 |
jari |
55 |
mevElement = document.createElement("mev"); |
2 |
26 Feb 07 |
jari |
56 |
mevElement.setAttribute("version", mevScriptVersion); |
2 |
26 Feb 07 |
jari |
57 |
root.appendChild(mevElement); |
2 |
26 Feb 07 |
jari |
58 |
|
2 |
26 Feb 07 |
jari |
59 |
analysisElement = document.createElement("analysis"); |
2 |
26 Feb 07 |
jari |
60 |
|
2 |
26 Feb 07 |
jari |
61 |
primaryDataElement = document.createElement("primary_data"); |
2 |
26 Feb 07 |
jari |
62 |
Element fileListElement = document.createElement("file_list"); |
2 |
26 Feb 07 |
jari |
63 |
primaryDataElement.appendChild(fileListElement); |
2 |
26 Feb 07 |
jari |
64 |
|
2 |
26 Feb 07 |
jari |
65 |
mevElement.appendChild(primaryDataElement); |
2 |
26 Feb 07 |
jari |
66 |
mevElement.appendChild(analysisElement); |
2 |
26 Feb 07 |
jari |
67 |
|
2 |
26 Feb 07 |
jari |
// Element rootElement = new Element("tm4"); |
2 |
26 Feb 07 |
jari |
// document = new Document(rootElement); |
2 |
26 Feb 07 |
jari |
70 |
} |
2 |
26 Feb 07 |
jari |
71 |
|
2 |
26 Feb 07 |
jari |
72 |
public Document getDocument() { |
2 |
26 Feb 07 |
jari |
73 |
return this.document; |
2 |
26 Feb 07 |
jari |
74 |
} |
2 |
26 Feb 07 |
jari |
75 |
|
2 |
26 Feb 07 |
jari |
76 |
public void createAlgorithmSet(int setID, int dataRef){ |
2 |
26 Feb 07 |
jari |
77 |
Element algSetElement = document.createElement("alg_set"); |
2 |
26 Feb 07 |
jari |
78 |
algSetElement.setAttribute("set_id", String.valueOf(setID)); |
2 |
26 Feb 07 |
jari |
79 |
algSetElement.setAttribute("input_data_ref", String.valueOf(dataRef)); |
2 |
26 Feb 07 |
jari |
80 |
analysisElement.appendChild(algSetElement); |
2 |
26 Feb 07 |
jari |
81 |
} |
2 |
26 Feb 07 |
jari |
82 |
|
2 |
26 Feb 07 |
jari |
83 |
public Element getAlgorithmSetByID(int setID){ |
2 |
26 Feb 07 |
jari |
84 |
String id = String.valueOf(setID); |
2 |
26 Feb 07 |
jari |
85 |
NodeList elements = analysisElement.getElementsByTagName("alg_set"); |
2 |
26 Feb 07 |
jari |
86 |
|
2 |
26 Feb 07 |
jari |
87 |
for(int i = 0; i < elements.getLength(); i++) { |
2 |
26 Feb 07 |
jari |
88 |
if(id.equals(((Element)elements.item(i)).getAttribute("set_id"))) |
2 |
26 Feb 07 |
jari |
89 |
return (Element)elements.item(i); |
2 |
26 Feb 07 |
jari |
90 |
} |
2 |
26 Feb 07 |
jari |
91 |
return null; |
2 |
26 Feb 07 |
jari |
92 |
} |
2 |
26 Feb 07 |
jari |
93 |
|
2 |
26 Feb 07 |
jari |
94 |
|
2 |
26 Feb 07 |
jari |
95 |
public boolean appendAlgorithm(AlgorithmData data, int algID, int algSetRef, int inputDataRef) { |
2 |
26 Feb 07 |
jari |
96 |
|
2 |
26 Feb 07 |
jari |
97 |
Element algElement = document.createElement("algorithm"); |
2 |
26 Feb 07 |
jari |
98 |
Element currElement; |
2 |
26 Feb 07 |
jari |
// Element nameElement;, paramsElement, paramElement, keyElement, valueElement; |
2 |
26 Feb 07 |
jari |
100 |
|
2 |
26 Feb 07 |
jari |
101 |
Element algSetElement = this.getAlgorithmSetByID(algSetRef); |
2 |
26 Feb 07 |
jari |
102 |
if(algSetElement == null) |
2 |
26 Feb 07 |
jari |
103 |
return false; |
2 |
26 Feb 07 |
jari |
104 |
|
2 |
26 Feb 07 |
jari |
105 |
Text nameText, keyText, valueText; |
2 |
26 Feb 07 |
jari |
106 |
|
2 |
26 Feb 07 |
jari |
107 |
AlgorithmParameters params = data.getParams(); |
2 |
26 Feb 07 |
jari |
108 |
String name = params.getString("name"); |
2 |
26 Feb 07 |
jari |
109 |
|
2 |
26 Feb 07 |
jari |
110 |
|
2 |
26 Feb 07 |
jari |
111 |
if(name != null){ |
2 |
26 Feb 07 |
jari |
112 |
|
2 |
26 Feb 07 |
jari |
//set attributes, name and input ref |
2 |
26 Feb 07 |
jari |
114 |
algElement.setAttribute("name", name); |
2 |
26 Feb 07 |
jari |
115 |
algElement.setAttribute("input_data_ref", String.valueOf(inputDataRef)); |
2 |
26 Feb 07 |
jari |
116 |
algElement.setAttribute("alg_id", String.valueOf(algID)); |
2 |
26 Feb 07 |
jari |
117 |
|
2 |
26 Feb 07 |
jari |
//add parameter list with params |
2 |
26 Feb 07 |
jari |
119 |
addParameterList(algElement, params); |
2 |
26 Feb 07 |
jari |
120 |
|
2 |
26 Feb 07 |
jari |
121 |
|
2 |
26 Feb 07 |
jari |
//add matrices (or arrays, one dim matrices) |
2 |
26 Feb 07 |
jari |
123 |
Element matrices = document.createElement("mlist"); |
2 |
26 Feb 07 |
jari |
124 |
|
2 |
26 Feb 07 |
jari |
//Int arrays |
2 |
26 Feb 07 |
jari |
126 |
Map map = data.getIntArrays(); |
2 |
26 Feb 07 |
jari |
127 |
if(map.size() > 0) { |
2 |
26 Feb 07 |
jari |
128 |
addIntArrays(map, matrices); |
2 |
26 Feb 07 |
jari |
129 |
} |
2 |
26 Feb 07 |
jari |
130 |
|
2 |
26 Feb 07 |
jari |
//String arrays |
2 |
26 Feb 07 |
jari |
132 |
map = data.getStringArrays(); |
2 |
26 Feb 07 |
jari |
133 |
if(map.size() > 0) { |
2 |
26 Feb 07 |
jari |
134 |
addStringArrays(map, matrices); |
2 |
26 Feb 07 |
jari |
135 |
} |
2 |
26 Feb 07 |
jari |
136 |
|
2 |
26 Feb 07 |
jari |
//matrices |
2 |
26 Feb 07 |
jari |
138 |
map = data.getMatrixes(); |
2 |
26 Feb 07 |
jari |
139 |
if(map.size() > 0) { |
2 |
26 Feb 07 |
jari |
140 |
addMatrices(map, matrices); |
2 |
26 Feb 07 |
jari |
141 |
} |
2 |
26 Feb 07 |
jari |
142 |
|
2 |
26 Feb 07 |
jari |
//if there are matrices, add them |
2 |
26 Feb 07 |
jari |
144 |
if(matrices.getChildNodes().getLength() > 0) |
2 |
26 Feb 07 |
jari |
145 |
algElement.appendChild(matrices); |
2 |
26 Feb 07 |
jari |
146 |
|
2 |
26 Feb 07 |
jari |
//add output nodes |
2 |
26 Feb 07 |
jari |
148 |
String [] outputNodes = data.getStringArray("output-nodes"); |
2 |
26 Feb 07 |
jari |
149 |
Element outputNodeElement, dataElement; |
2 |
26 Feb 07 |
jari |
150 |
if(outputNodes != null){ |
2 |
26 Feb 07 |
jari |
151 |
outputNodeElement = document.createElement("output_data"); |
2 |
26 Feb 07 |
jari |
152 |
for(int i = 0; i < outputNodes.length; i++) { |
2 |
26 Feb 07 |
jari |
153 |
dataElement = document.createElement("data_node"); |
2 |
26 Feb 07 |
jari |
154 |
dataElement.setAttribute("data_node_id", String.valueOf(this.currDataID)); |
2 |
26 Feb 07 |
jari |
155 |
dataElement.setAttribute("name", outputNodes[i]); |
2 |
26 Feb 07 |
jari |
156 |
outputNodeElement.appendChild(dataElement); |
2 |
26 Feb 07 |
jari |
157 |
currDataID++; |
2 |
26 Feb 07 |
jari |
158 |
} |
2 |
26 Feb 07 |
jari |
159 |
algElement.appendChild(outputNodeElement); |
2 |
26 Feb 07 |
jari |
160 |
} |
2 |
26 Feb 07 |
jari |
161 |
|
2 |
26 Feb 07 |
jari |
//keySet. |
2 |
26 Feb 07 |
jari |
163 |
} |
2 |
26 Feb 07 |
jari |
164 |
algSetElement.appendChild(algElement); |
2 |
26 Feb 07 |
jari |
165 |
|
2 |
26 Feb 07 |
jari |
166 |
return true; |
2 |
26 Feb 07 |
jari |
167 |
} |
2 |
26 Feb 07 |
jari |
168 |
|
2 |
26 Feb 07 |
jari |
169 |
|
2 |
26 Feb 07 |
jari |
170 |
public void addParameterList(Element algElement, AlgorithmParameters params) { |
2 |
26 Feb 07 |
jari |
171 |
Map paramMap = params.getMap(); |
2 |
26 Feb 07 |
jari |
172 |
String key = "", value = ""; |
2 |
26 Feb 07 |
jari |
173 |
Element paramsElement, paramElement, keyElement, valueElement; |
2 |
26 Feb 07 |
jari |
174 |
|
2 |
26 Feb 07 |
jari |
175 |
if(paramMap.size() > 1) { |
2 |
26 Feb 07 |
jari |
176 |
Set keySet = paramMap.keySet(); |
2 |
26 Feb 07 |
jari |
177 |
Iterator iter = keySet.iterator(); |
2 |
26 Feb 07 |
jari |
178 |
paramsElement = document.createElement("plist"); |
2 |
26 Feb 07 |
jari |
179 |
|
2 |
26 Feb 07 |
jari |
180 |
while(iter.hasNext()){ |
2 |
26 Feb 07 |
jari |
181 |
key = (String)iter.next(); |
2 |
26 Feb 07 |
jari |
182 |
value = ((String)(paramMap.get(key))); |
2 |
26 Feb 07 |
jari |
183 |
|
2 |
26 Feb 07 |
jari |
//if key is name move on |
2 |
26 Feb 07 |
jari |
185 |
if(key.equals("name")) |
2 |
26 Feb 07 |
jari |
186 |
continue; |
2 |
26 Feb 07 |
jari |
187 |
|
2 |
26 Feb 07 |
jari |
//make a param element |
2 |
26 Feb 07 |
jari |
189 |
paramElement = document.createElement("param"); |
2 |
26 Feb 07 |
jari |
190 |
|
2 |
26 Feb 07 |
jari |
//set key and value attributes |
2 |
26 Feb 07 |
jari |
192 |
paramElement.setAttribute("key", key); |
2 |
26 Feb 07 |
jari |
193 |
paramElement.setAttribute("val", value); |
2 |
26 Feb 07 |
jari |
194 |
|
2 |
26 Feb 07 |
jari |
//append param to params |
2 |
26 Feb 07 |
jari |
196 |
paramsElement.appendChild(paramElement); |
2 |
26 Feb 07 |
jari |
197 |
} |
2 |
26 Feb 07 |
jari |
198 |
algElement.appendChild(paramsElement); |
2 |
26 Feb 07 |
jari |
199 |
} |
2 |
26 Feb 07 |
jari |
200 |
} |
2 |
26 Feb 07 |
jari |
201 |
|
2 |
26 Feb 07 |
jari |
202 |
|
2 |
26 Feb 07 |
jari |
203 |
public void addIntArrays(Map map, Element mlist) { |
2 |
26 Feb 07 |
jari |
204 |
Object [] arrayObjectNames = map.keySet().toArray(); |
2 |
26 Feb 07 |
jari |
205 |
Element matrixElement, elementElement; |
2 |
26 Feb 07 |
jari |
206 |
int [] currentArray; |
2 |
26 Feb 07 |
jari |
207 |
|
2 |
26 Feb 07 |
jari |
208 |
String [] arrayNames = new String[arrayObjectNames.length]; |
2 |
26 Feb 07 |
jari |
209 |
|
2 |
26 Feb 07 |
jari |
210 |
for (int i = 0; i < arrayNames.length; i++) |
2 |
26 Feb 07 |
jari |
211 |
arrayNames[i] = (String)arrayObjectNames[i]; |
2 |
26 Feb 07 |
jari |
212 |
|
2 |
26 Feb 07 |
jari |
213 |
|
2 |
26 Feb 07 |
jari |
214 |
for(int i = 0; i < arrayNames.length; i++) { |
2 |
26 Feb 07 |
jari |
215 |
currentArray = (int [])map.get(arrayNames[i]); |
2 |
26 Feb 07 |
jari |
216 |
|
2 |
26 Feb 07 |
jari |
217 |
matrixElement = document.createElement("matrix"); |
2 |
26 Feb 07 |
jari |
218 |
matrixElement.setAttribute("name", arrayNames[i]); |
2 |
26 Feb 07 |
jari |
219 |
matrixElement.setAttribute("type", "int"); |
2 |
26 Feb 07 |
jari |
220 |
matrixElement.setAttribute("row_dim", String.valueOf(currentArray.length)); |
2 |
26 Feb 07 |
jari |
221 |
|
2 |
26 Feb 07 |
jari |
222 |
for(int j = 0; j < currentArray.length; j++){ |
2 |
26 Feb 07 |
jari |
223 |
elementElement = document.createElement("element"); |
2 |
26 Feb 07 |
jari |
224 |
elementElement.setAttribute("row", String.valueOf(j)); |
2 |
26 Feb 07 |
jari |
225 |
elementElement.setAttribute("col", "0"); |
2 |
26 Feb 07 |
jari |
226 |
elementElement.setAttribute("val", String.valueOf(currentArray[i])); |
2 |
26 Feb 07 |
jari |
227 |
matrixElement.appendChild(elementElement); |
2 |
26 Feb 07 |
jari |
228 |
} |
2 |
26 Feb 07 |
jari |
229 |
|
2 |
26 Feb 07 |
jari |
230 |
mlist.appendChild(matrixElement); |
2 |
26 Feb 07 |
jari |
231 |
} |
2 |
26 Feb 07 |
jari |
232 |
} |
2 |
26 Feb 07 |
jari |
233 |
|
2 |
26 Feb 07 |
jari |
234 |
public void addStringArrays(Map map, Element mlist) { |
2 |
26 Feb 07 |
jari |
235 |
Object [] arrayObjectNames = map.keySet().toArray(); |
2 |
26 Feb 07 |
jari |
236 |
Element matrixElement, elementElement; |
2 |
26 Feb 07 |
jari |
237 |
String [] currentArray; |
2 |
26 Feb 07 |
jari |
238 |
|
2 |
26 Feb 07 |
jari |
239 |
String [] arrayNames = new String[arrayObjectNames.length]; |
2 |
26 Feb 07 |
jari |
240 |
|
2 |
26 Feb 07 |
jari |
241 |
for (int i = 0; i < arrayNames.length; i++) |
2 |
26 Feb 07 |
jari |
242 |
arrayNames[i] = (String)arrayObjectNames[i]; |
2 |
26 Feb 07 |
jari |
243 |
|
2 |
26 Feb 07 |
jari |
244 |
|
2 |
26 Feb 07 |
jari |
245 |
for(int i = 0; i < arrayNames.length; i++) { |
2 |
26 Feb 07 |
jari |
246 |
currentArray = (String [])map.get(arrayNames[i]); |
2 |
26 Feb 07 |
jari |
247 |
|
2 |
26 Feb 07 |
jari |
248 |
matrixElement = document.createElement("matrix"); |
2 |
26 Feb 07 |
jari |
249 |
matrixElement.setAttribute("name", arrayNames[i]); |
2 |
26 Feb 07 |
jari |
250 |
matrixElement.setAttribute("type", "String"); |
2 |
26 Feb 07 |
jari |
251 |
matrixElement.setAttribute("row_dim", String.valueOf(currentArray.length)); |
2 |
26 Feb 07 |
jari |
252 |
|
2 |
26 Feb 07 |
jari |
253 |
for(int j = 0; j < currentArray.length; j++){ |
2 |
26 Feb 07 |
jari |
254 |
elementElement = document.createElement("element"); |
2 |
26 Feb 07 |
jari |
255 |
elementElement.setAttribute("row", String.valueOf(j)); |
2 |
26 Feb 07 |
jari |
256 |
elementElement.setAttribute("col", "0"); |
2 |
26 Feb 07 |
jari |
257 |
elementElement.setAttribute("val", currentArray[i]); |
2 |
26 Feb 07 |
jari |
258 |
matrixElement.appendChild(elementElement); |
2 |
26 Feb 07 |
jari |
259 |
} |
2 |
26 Feb 07 |
jari |
260 |
|
2 |
26 Feb 07 |
jari |
261 |
mlist.appendChild(matrixElement); |
2 |
26 Feb 07 |
jari |
262 |
} |
2 |
26 Feb 07 |
jari |
263 |
} |
2 |
26 Feb 07 |
jari |
264 |
|
2 |
26 Feb 07 |
jari |
265 |
public void addMatrices(Map map, Element mlist) { |
2 |
26 Feb 07 |
jari |
266 |
Object [] matrixObjectNames = map.keySet().toArray(); |
2 |
26 Feb 07 |
jari |
267 |
Element matrixElement; |
2 |
26 Feb 07 |
jari |
268 |
|
2 |
26 Feb 07 |
jari |
269 |
FloatMatrix currentFM; |
2 |
26 Feb 07 |
jari |
270 |
|
2 |
26 Feb 07 |
jari |
271 |
String [] matrixNames = new String[matrixObjectNames.length]; |
2 |
26 Feb 07 |
jari |
272 |
|
2 |
26 Feb 07 |
jari |
273 |
for (int i = 0; i < matrixNames.length; i++) |
2 |
26 Feb 07 |
jari |
274 |
matrixNames[i] = (String)matrixObjectNames[i]; |
2 |
26 Feb 07 |
jari |
275 |
|
2 |
26 Feb 07 |
jari |
276 |
|
2 |
26 Feb 07 |
jari |
277 |
for(int i = 0; i < matrixNames.length; i++) { |
2 |
26 Feb 07 |
jari |
278 |
currentFM = (FloatMatrix)map.get(matrixNames[i]); |
2 |
26 Feb 07 |
jari |
279 |
|
2 |
26 Feb 07 |
jari |
280 |
matrixElement = document.createElement("matrix"); |
2 |
26 Feb 07 |
jari |
281 |
matrixElement.setAttribute("name", matrixNames[i]); |
2 |
26 Feb 07 |
jari |
282 |
matrixElement.setAttribute("type", "FloatMatrix"); |
2 |
26 Feb 07 |
jari |
283 |
matrixElement.setAttribute("row_dim", String.valueOf(currentFM.getRowDimension())); |
2 |
26 Feb 07 |
jari |
284 |
|
2 |
26 Feb 07 |
jari |
285 |
addMatrixElements(currentFM, matrixElement); |
2 |
26 Feb 07 |
jari |
286 |
|
2 |
26 Feb 07 |
jari |
287 |
mlist.appendChild(matrixElement); |
2 |
26 Feb 07 |
jari |
288 |
} |
2 |
26 Feb 07 |
jari |
289 |
} |
2 |
26 Feb 07 |
jari |
290 |
|
2 |
26 Feb 07 |
jari |
291 |
public void addMatrixElements(FloatMatrix matrix, Element matrixElement) { |
2 |
26 Feb 07 |
jari |
292 |
Element elementElement; |
2 |
26 Feb 07 |
jari |
293 |
|
2 |
26 Feb 07 |
jari |
294 |
float [][] data = matrix.A; |
2 |
26 Feb 07 |
jari |
295 |
|
2 |
26 Feb 07 |
jari |
296 |
for(int i = 0; i < data.length; i++) { |
2 |
26 Feb 07 |
jari |
297 |
for(int j = 0; j < data[i].length; j++) { |
2 |
26 Feb 07 |
jari |
298 |
elementElement = document.createElement("element"); |
2 |
26 Feb 07 |
jari |
299 |
elementElement.setAttribute("row", String.valueOf(i)); |
2 |
26 Feb 07 |
jari |
300 |
elementElement.setAttribute("col", String.valueOf(j)); |
2 |
26 Feb 07 |
jari |
301 |
elementElement.setAttribute("val", String.valueOf(data[i][j])); |
2 |
26 Feb 07 |
jari |
302 |
matrixElement.appendChild(elementElement); |
2 |
26 Feb 07 |
jari |
303 |
} |
2 |
26 Feb 07 |
jari |
304 |
} |
2 |
26 Feb 07 |
jari |
305 |
} |
2 |
26 Feb 07 |
jari |
306 |
|
2 |
26 Feb 07 |
jari |
307 |
public void writeDocument(String fileName) throws IOException { |
2 |
26 Feb 07 |
jari |
308 |
java.io.FileWriter writer = new java.io.FileWriter(fileName); |
2 |
26 Feb 07 |
jari |
309 |
serialize(document, writer); |
2 |
26 Feb 07 |
jari |
310 |
|
2 |
26 Feb 07 |
jari |
311 |
writer.flush(); |
2 |
26 Feb 07 |
jari |
312 |
writer.close(); |
2 |
26 Feb 07 |
jari |
313 |
} |
2 |
26 Feb 07 |
jari |
314 |
|
2 |
26 Feb 07 |
jari |
315 |
public void writeDocument(Document doc, Writer writer) throws IOException { |
2 |
26 Feb 07 |
jari |
316 |
serialize(doc, writer); |
2 |
26 Feb 07 |
jari |
317 |
} |
2 |
26 Feb 07 |
jari |
318 |
|
2 |
26 Feb 07 |
jari |
319 |
private void serialize(Document doc, Writer writer) throws IOException { |
2 |
26 Feb 07 |
jari |
320 |
serializeNode(doc, writer, ""); |
2 |
26 Feb 07 |
jari |
321 |
} |
2 |
26 Feb 07 |
jari |
322 |
|
2 |
26 Feb 07 |
jari |
323 |
private void serializeNode(Node node, Writer writer, String indentLevel) throws IOException { |
2 |
26 Feb 07 |
jari |
324 |
String name; |
2 |
26 Feb 07 |
jari |
325 |
|
2 |
26 Feb 07 |
jari |
326 |
switch(node.getNodeType()) { |
2 |
26 Feb 07 |
jari |
327 |
case Node.DOCUMENT_NODE: |
2 |
26 Feb 07 |
jari |
328 |
writer.write("<?xml version=\"1.0\"?>"); |
2 |
26 Feb 07 |
jari |
329 |
writer.write(lineSeparator); |
2 |
26 Feb 07 |
jari |
330 |
|
2 |
26 Feb 07 |
jari |
331 |
Document doc = (Document)node; |
2 |
26 Feb 07 |
jari |
332 |
serializeNode(doc.getDocumentElement(), writer, " "); |
2 |
26 Feb 07 |
jari |
333 |
break; |
2 |
26 Feb 07 |
jari |
334 |
case Node.ELEMENT_NODE: |
2 |
26 Feb 07 |
jari |
335 |
name = node.getNodeName(); |
2 |
26 Feb 07 |
jari |
336 |
writer.write(indentLevel + "<" + name); |
2 |
26 Feb 07 |
jari |
337 |
|
2 |
26 Feb 07 |
jari |
//posible attributes |
2 |
26 Feb 07 |
jari |
339 |
NamedNodeMap attrs = node.getAttributes(); |
2 |
26 Feb 07 |
jari |
340 |
for(int i = 0; i < attrs.getLength(); i++) { |
2 |
26 Feb 07 |
jari |
341 |
Node attr = attrs.item(i); |
2 |
26 Feb 07 |
jari |
342 |
writer.write(" "+ attr.getNodeName()+"=\""+attr.getNodeValue()+"\""); |
2 |
26 Feb 07 |
jari |
343 |
} |
2 |
26 Feb 07 |
jari |
344 |
|
2 |
26 Feb 07 |
jari |
345 |
NodeList children = node.getChildNodes(); |
2 |
26 Feb 07 |
jari |
346 |
if(children.getLength() > 0) { |
2 |
26 Feb 07 |
jari |
347 |
|
2 |
26 Feb 07 |
jari |
348 |
writer.write(">"); |
2 |
26 Feb 07 |
jari |
349 |
|
2 |
26 Feb 07 |
jari |
350 |
if((children.item(0) != null) && |
2 |
26 Feb 07 |
jari |
351 |
(children.item(0).getNodeType() == Node.ELEMENT_NODE )){ |
2 |
26 Feb 07 |
jari |
352 |
writer.write(lineSeparator); |
2 |
26 Feb 07 |
jari |
353 |
} |
2 |
26 Feb 07 |
jari |
354 |
for(int i = 0; i < children.getLength(); i++){ |
2 |
26 Feb 07 |
jari |
355 |
serializeNode(children.item(i), writer, indentLevel + indent); |
2 |
26 Feb 07 |
jari |
356 |
} |
2 |
26 Feb 07 |
jari |
357 |
if((children.item(0) != null) && |
2 |
26 Feb 07 |
jari |
358 |
(children.item(children.getLength()-1).getNodeType() == Node.ELEMENT_NODE)) { |
2 |
26 Feb 07 |
jari |
359 |
writer.write(indentLevel); |
2 |
26 Feb 07 |
jari |
360 |
} |
2 |
26 Feb 07 |
jari |
361 |
|
2 |
26 Feb 07 |
jari |
362 |
writer.write("</" + name + ">"); |
2 |
26 Feb 07 |
jari |
363 |
|
2 |
26 Feb 07 |
jari |
364 |
} else { |
2 |
26 Feb 07 |
jari |
365 |
writer.write("/>"); |
2 |
26 Feb 07 |
jari |
366 |
} |
2 |
26 Feb 07 |
jari |
367 |
|
2 |
26 Feb 07 |
jari |
368 |
writer.write(lineSeparator); |
2 |
26 Feb 07 |
jari |
369 |
break; |
2 |
26 Feb 07 |
jari |
370 |
case Node.TEXT_NODE: |
2 |
26 Feb 07 |
jari |
371 |
writer.write(node.getNodeValue()); |
2 |
26 Feb 07 |
jari |
372 |
break; |
2 |
26 Feb 07 |
jari |
373 |
case Node.COMMENT_NODE: |
2 |
26 Feb 07 |
jari |
374 |
break; |
2 |
26 Feb 07 |
jari |
375 |
} |
2 |
26 Feb 07 |
jari |
376 |
} |
2 |
26 Feb 07 |
jari |
377 |
|
2 |
26 Feb 07 |
jari |
378 |
} |