KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openbravo > xmlEngine > XmlDocument


1 /*
2  ************************************************************************************
3  * Copyright (C) 2001-2006 Openbravo S.L.
4  * Licensed under the Apache Software License version 2.0
5  * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6  * Unless required by applicable law or agreed to in writing, software distributed
7  * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
8  * CONDITIONS OF ANY KIND, either express or implied. See the License for the
9  * specific language governing permissions and limitations under the License.
10  ************************************************************************************
11 */

12 package org.openbravo.xmlEngine;
13
14 import org.openbravo.data.FieldProvider;
15
16 import java.util.Enumeration JavaDoc;
17 import java.util.Hashtable JavaDoc;
18
19 import org.apache.log4j.Logger ;
20
21 public class XmlDocument implements XmlComponentValue {
22   XmlTemplate xmlTemplate;
23   XmlDocument parentXmlDocument;
24   Hashtable JavaDoc<String JavaDoc, XmlDocument> hasSubXmlDocuments; // hashtable of SubXmlDocuments corresponding to SubXmlTemplates
25
Hashtable JavaDoc<String JavaDoc, DataValue> hasDataValue; // hashtable of DataValue
26
Hashtable JavaDoc<String JavaDoc, ParameterValue> hasParameterValue; // contains the ParameterValue that not are for the SQL query
27
XmlVectorValue xmlVectorValue; //contains Xml Components before, after and between DataValues and the DataValues
28
Hashtable JavaDoc<Object JavaDoc, Object JavaDoc> hasXmlComponentValue; // contains the XmlComponentValues of the document CHX (Change to Hashtable of XmlComponentValue
29
// it store pairs of XmlComponentTemplate (key), XmlComponentValue (value)
30

31   static Logger log4jXmlDocument = Logger.getLogger(XmlDocument.class);
32
33   public XmlDocument(XmlTemplate xmlTemplate, XmlDocument parentXmlDocument) {
34     this.xmlTemplate = xmlTemplate;
35     this.parentXmlDocument = parentXmlDocument;
36     // }
37

38     // public void initialize() {
39

40     //hashtable of XmlComponenteValues
41
hasXmlComponentValue = new Hashtable JavaDoc<Object JavaDoc, Object JavaDoc>(); //CHX
42

43     //vector of Subdocuments
44
hasSubXmlDocuments = new Hashtable JavaDoc<String JavaDoc, XmlDocument>();
45     for (Enumeration JavaDoc e1 = xmlTemplate.hasSubXmlTemplates.elements() ; e1.hasMoreElements();) {
46       XmlTemplate subXmlTemplate = (XmlTemplate)e1.nextElement();
47       log4jXmlDocument.debug("Creation of SubXmlTemplate: " + subXmlTemplate.strName);
48       XmlDocument subXmlDocument = subXmlTemplate.createXmlDocument(this);
49       hasSubXmlDocuments.put(subXmlTemplate.strName, subXmlDocument);
50     }
51
52     // vector of Parameters (not for the SQL query's)
53
hasParameterValue = new Hashtable JavaDoc<String JavaDoc, ParameterValue>();
54     for (Enumeration JavaDoc<ParameterTemplate> e1 = xmlTemplate.hasParameterTemplate.elements() ; e1.hasMoreElements();) {
55       ParameterTemplate parameterTemplate = e1.nextElement();
56       ParameterValue parameterValue = parameterTemplate.createParameterValue(this);
57       parameterValue.strValue = parameterTemplate.strDefault;
58       hasParameterValue.put(parameterTemplate.strName, parameterValue);
59       log4jXmlDocument.debug("Parameter: " + parameterValue.parameterTemplate.strName + " valor: " + parameterValue.strValue );
60     }
61
62     //vector of Data
63
hasDataValue = new Hashtable JavaDoc<String JavaDoc, DataValue>();
64     for (Enumeration JavaDoc e1 = xmlTemplate.hasDataTemplate.elements() ; e1.hasMoreElements();) {
65       DataTemplate dataTemplate = (DataTemplate)e1.nextElement();
66       log4jXmlDocument.debug("Creation of Data: " + dataTemplate.strName);
67       DataValue dataValue = dataTemplate.createDataValue(this);
68       hasDataValue.put(dataTemplate.strName, dataValue);
69       dataValue.initialize();
70       log4jXmlDocument.debug("End of Data: " + dataValue.dataTemplate.strName);
71     }
72
73     //parameters of vector of Subdocuments
74
log4jXmlDocument.debug("parameters of subdocuments: ");
75     for (Enumeration JavaDoc<XmlDocument> e1 = hasSubXmlDocuments.elements() ; e1.hasMoreElements();) {
76       XmlDocument subXmlDocument = e1.nextElement();
77       log4jXmlDocument.debug("parameters of subdocument: " + subXmlDocument.xmlTemplate.strName);
78       subXmlDocument.setXmlComponentValueParameters();
79       log4jXmlDocument.debug("parameters of data values of subdocument: " + subXmlDocument.xmlTemplate.strName);
80       subXmlDocument.setXmlComponentValueParametersOfDataValues();
81     }
82
83     xmlVectorValue = new XmlVectorValue(xmlTemplate.vecXmlVector, this);
84
85
86     /* it comes from the XmlTemplate clear()
87        for (Enumeration e = hasDataTemplate.elements() ; e.hasMoreElements();) {
88        DataTemplate elementDataTemplate = (DataTemplate)e.nextElement();
89        elementDataTemplate.clear();
90        } //*** see if this loop necessary or if it is here whre the DataTemplate clear is executed
91        */

92
93     }
94
95 public XmlDocument() {
96   hasDataValue = new Hashtable JavaDoc<String JavaDoc, DataValue>();
97   hasParameterValue = new Hashtable JavaDoc<String JavaDoc, ParameterValue>();
98 }
99
100 private void setXmlComponentValueParameters() {
101   for (Enumeration JavaDoc<ParameterValue> e1 = hasParameterValue.elements() ; e1.hasMoreElements();) {
102     ParameterValue parameterValue = e1.nextElement();
103     parameterValue.setXmlComponentValue(this);
104     log4jXmlDocument.debug("setXmlComponentValue: " + parameterValue.parameterTemplate.strName);
105   }
106 }
107
108 private void setXmlComponentValueParametersOfDataValues() {
109   for (Enumeration JavaDoc<DataValue> e1 = hasDataValue.elements() ; e1.hasMoreElements();) {
110     DataValue dataValue = e1.nextElement();
111     for (Enumeration JavaDoc e2 = dataValue.vecParameterValue.elements() ; e2.hasMoreElements();) {
112       ParameterValue parameter = (ParameterValue)e2.nextElement();
113       parameter.setXmlComponentValue(this);
114       log4jXmlDocument.debug("setXmlComponentValue of Parameter of DataValue: " + parameter.parameterTemplate.strName);
115     }
116   }
117 }
118
119 public void setData(String JavaDoc dataName, FieldProvider[] data) {
120   DataValue dataValue = hasDataValue.get(dataName);
121   if (dataValue == null) {
122     log4jXmlDocument.warn("Data: " + dataName + " not found in " + xmlTemplate.strName );
123   }
124   dataValue.setData(data);
125 }
126
127 public void setDataArray(String JavaDoc dataName, FieldProvider[][] dataArray) {
128   DataValue dataValue = hasDataValue.get(dataName);
129   if (dataValue == null) {
130     log4jXmlDocument.warn("Data: " + dataName + " not found in " + xmlTemplate.strName );
131   }
132   dataValue.setDataArray(dataArray);
133 }
134
135 // setData for the subXmlDocuments
136
public void setData(String JavaDoc subXmlDocumentName, String JavaDoc dataName, FieldProvider[] data) {
137   log4jXmlDocument.debug("setData FieldProvider[] of dataName: " + dataName + " in subDocument " + subXmlDocumentName + " in " + xmlTemplate.strName );
138   XmlDocument xmlDocument = hasSubXmlDocuments.get(xmlTemplate.strName + "&" + subXmlDocumentName);
139   if (xmlDocument == null) {
140     log4jXmlDocument.warn("Subdocument: " + subXmlDocumentName + " not found in " + xmlTemplate.strName );
141   }
142   xmlDocument.setData(dataName, data);
143 }
144
145 public void setDataArray(String JavaDoc subXmlDocumentName, String JavaDoc dataName, FieldProvider[][] dataArray) {
146   log4jXmlDocument.debug("setData FieldProvider[][] of dataName: " + dataName + " in subDocument " + subXmlDocumentName + " in " + xmlTemplate.strName );
147   XmlDocument xmlDocument = hasSubXmlDocuments.get(xmlTemplate.strName + "&" + subXmlDocumentName);
148   if (xmlDocument == null) {
149     log4jXmlDocument.warn("Subdocument: " + subXmlDocumentName + " not found in " + xmlTemplate.strName );
150   }
151   xmlDocument.setDataArray(dataName, dataArray);
152 }
153
154 public void setParameter(String JavaDoc strName, String JavaDoc strValue) {
155   ParameterValue parameter = hasParameterValue.get(strName);
156   if (parameter != null) parameter.setValue(strValue);
157   if (!parameter.parameterTemplate.strName.equals("menu")) {
158     log4jXmlDocument.debug("Parameter: " + parameter.parameterTemplate.strName + " valor: " + parameter.print() );
159   }
160 }
161
162 public String JavaDoc print() {
163   return print(null);
164 }
165
166 public String JavaDoc print(String JavaDoc strBlank) {
167   log4jXmlDocument.info("Start of print of: "+ xmlTemplate.strName);
168
169   for (Enumeration JavaDoc<DataValue> e = hasDataValue.elements() ; e.hasMoreElements();) {
170     DataValue elementDataValue = e.nextElement();
171     if (strBlank != null) {
172       elementDataValue.executeBlank(strBlank);
173     } else {
174       elementDataValue.printGenerated();
175       // log4jXmlDocument.debug("printGenerated of "+ elementDataValue.dataTemplate.strName + " lng: " + elementDataValue.firstSectionValue.strSection.length());
176
}
177   }
178
179   StringBuffer JavaDoc strPrint = xmlVectorValue.printStringBuffer();
180   // log4jXmlDocument.debug("XmlDocument: StringBuffer length:" + strPrint.length() + " de " + xmlTemplate.strName);
181
/*String strStringPrint = new String(strPrint);
182     log4jXmlDocument.debug("XmlDocument: String length:" + strStringPrint.length());*/

183   return strPrint.toString();
184 }
185
186 public String JavaDoc printPrevious() {
187   return print();
188 }
189
190 public String JavaDoc printSimple() {
191   return print();
192 }
193
194 public String JavaDoc printPreviousSimple() {
195   return printPrevious();
196 }
197
198 public void connect() {
199   for (Enumeration JavaDoc<DataValue> e = hasDataValue.elements() ; e.hasMoreElements();) {
200     DataValue elementDataValue = e.nextElement();
201     elementDataValue.connect();
202   }
203 }
204
205 }
206
Popular Tags