1 12 package org.openbravo.xmlEngine; 13 14 import org.openbravo.data.FieldProvider; 15 16 import java.util.Enumeration ; 17 import java.util.Hashtable ; 18 19 import org.apache.log4j.Logger ; 20 21 public class XmlDocument implements XmlComponentValue { 22 XmlTemplate xmlTemplate; 23 XmlDocument parentXmlDocument; 24 Hashtable <String , XmlDocument> hasSubXmlDocuments; Hashtable <String , DataValue> hasDataValue; Hashtable <String , ParameterValue> hasParameterValue; XmlVectorValue xmlVectorValue; Hashtable <Object , Object > hasXmlComponentValue; 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 38 40 hasXmlComponentValue = new Hashtable <Object , Object >(); 43 hasSubXmlDocuments = new Hashtable <String , XmlDocument>(); 45 for (Enumeration 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 hasParameterValue = new Hashtable <String , ParameterValue>(); 54 for (Enumeration <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 hasDataValue = new Hashtable <String , DataValue>(); 64 for (Enumeration 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 log4jXmlDocument.debug("parameters of subdocuments: "); 75 for (Enumeration <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 92 93 } 94 95 public XmlDocument() { 96 hasDataValue = new Hashtable <String , DataValue>(); 97 hasParameterValue = new Hashtable <String , ParameterValue>(); 98 } 99 100 private void setXmlComponentValueParameters() { 101 for (Enumeration <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 <DataValue> e1 = hasDataValue.elements() ; e1.hasMoreElements();) { 110 DataValue dataValue = e1.nextElement(); 111 for (Enumeration 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 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 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 public void setData(String subXmlDocumentName, String 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 subXmlDocumentName, String 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 strName, String 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 print() { 163 return print(null); 164 } 165 166 public String print(String strBlank) { 167 log4jXmlDocument.info("Start of print of: "+ xmlTemplate.strName); 168 169 for (Enumeration <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 } 177 } 178 179 StringBuffer strPrint = xmlVectorValue.printStringBuffer(); 180 183 return strPrint.toString(); 184 } 185 186 public String printPrevious() { 187 return print(); 188 } 189 190 public String printSimple() { 191 return print(); 192 } 193 194 public String printPreviousSimple() { 195 return printPrevious(); 196 } 197 198 public void connect() { 199 for (Enumeration <DataValue> e = hasDataValue.elements() ; e.hasMoreElements();) { 200 DataValue elementDataValue = e.nextElement(); 201 elementDataValue.connect(); 202 } 203 } 204 205 } 206 | Popular Tags |