1 12 package org.openbravo.xmlEngine; 13 14 import java.util.Vector ; 15 import java.util.Enumeration ; 16 import java.text.DecimalFormat ; 17 18 import org.apache.log4j.Logger ; 19 20 25 class DataTemplate implements XmlComponentTemplate { 26 String strName; 28 Vector <Object > vecSectionTemplate; 29 XmlVectorTemplate vecDetailTemplate; Vector <Object > vecFieldTemplate; Vector <Object > vecParameterTemplate; Vector <Object > vecFunctionTemplateData; Vector <Object > vecFunctionTemplateOutSection; SectionTemplate firstSectionTemplate; 35 int intTotalLevels; 36 String strDriver; 38 String strURL; 39 String strSQL; 40 41 static Logger log4jDataTemplate = Logger.getLogger(DataTemplate.class); 42 43 public DataTemplate() { 44 intTotalLevels = -1; 45 log4jDataTemplate.debug("Initial value: " + intTotalLevels); 46 vecSectionTemplate = new Vector <Object >(); 47 vecDetailTemplate = new XmlVectorTemplate(); 48 vecFieldTemplate = new Vector <Object >(); 49 vecParameterTemplate = new Vector <Object >(); 50 firstSectionTemplate = null; 51 vecFunctionTemplateData = new Vector <Object >(); 52 vecFunctionTemplateOutSection = new Vector <Object >(); 53 } 54 55 56 public FieldTemplate addField(String name) { 57 return addField(name, null, null, null); 58 } 59 60 public FieldTemplate addField(String name, DecimalFormat formatOutput, DecimalFormat formatSimple, 61 Vector vecReplace) { 62 for (Enumeration e = vecFieldTemplate.elements() ; e.hasMoreElements() ;) { 63 FieldTemplate field = (FieldTemplate)e.nextElement(); 64 if (field.name().equals(name)) { log4jDataTemplate.debug("VECTOR addField, already exists:" + name); 68 if (formatOutput != null) field.formatOutput = formatOutput; 70 if (formatSimple != null) field.formatSimple = formatSimple; 71 if (vecReplace != null) field.vecReplace = vecReplace; 72 return field; 73 } 74 } 75 log4jDataTemplate.debug("(addField) Crear FieldTemplate:" + name); 76 FieldTemplate field = new FieldTemplate(name, formatOutput, formatSimple, vecReplace); log4jDataTemplate.debug("(addField) call a addElement:" + name); 80 vecFieldTemplate.addElement(field); 81 log4jDataTemplate.debug("VECTOR addField, created:" + name); 82 return field; 83 } 84 85 public FunctionTemplate addFunction(String strFunction, String name, DecimalFormat formatOutput, DecimalFormat formatSimple) { 86 return addFunction(strFunction, name, formatOutput, formatSimple, null, null, null); 87 } 88 89 public FunctionTemplate addFunction(String strFunction, String name, DecimalFormat formatOutput, DecimalFormat formatSimple, 90 XmlComponentTemplate arg1, XmlComponentTemplate arg2, String id) { 91 FieldTemplate field = null; 92 if (!name.equals("*") && arg1 == null) { log4jDataTemplate.debug("Call to addField: " + name + " " + strFunction); 94 field = addField(name); 95 log4jDataTemplate.debug("addField returns: " + name + " " + strFunction); 96 } 97 FunctionTemplate functionInstance = null; 98 if (strFunction.equals("COUNT")) { 99 functionInstance = new FunctionCountTemplate(name, field, null, this); 100 } else if (strFunction.equals("ORDER")) { 101 functionInstance = new FunctionOrderTemplate(name, field, null, this); 102 } else if (strFunction.equals("SUM")) { 103 functionInstance = new FunctionSumTemplate(name, field, formatOutput, formatSimple, this); 104 } else if (strFunction.equals("MED")) { 105 functionInstance = new FunctionMedTemplate(name, field, formatOutput, formatSimple, this); 106 } else if (strFunction.equals("EQUAL")) { 107 functionInstance = new FunctionEqualTemplate(id, formatOutput, formatSimple, this, arg1); 108 } else if (strFunction.equals("ADD")) { 109 functionInstance = new FunctionAddTemplate(id, formatOutput, formatSimple, this, arg1, arg2); 110 } else if (strFunction.equals("SUBTRACT")) { 111 functionInstance = new FunctionSubtractTemplate(id, formatOutput, formatSimple, this, arg1, arg2); 112 } else if (strFunction.equals("MULTIPLY")) { 113 functionInstance = new FunctionMultiplyTemplate(id, formatOutput, formatSimple, this, arg1, arg2); 114 } else if (strFunction.equals("DIVIDE")) { 115 functionInstance = new FunctionDivideTemplate(id, formatOutput, formatSimple, this, arg1, arg2); 116 } else if (strFunction.equals("MODULE")) { 117 functionInstance = new FunctionModuleTemplate(id, formatOutput, formatSimple, this, arg1, arg2); 118 } else if (strFunction.equals("GT")) { 119 functionInstance = new FunctionGtTemplate(id, formatOutput, formatSimple, this, arg1, arg2); 120 } else if (strFunction.equals("LT")) { 121 functionInstance = new FunctionLtTemplate(id, formatOutput, formatSimple, this, arg1, arg2); 122 } else if (strFunction.equals("MAX")) { 123 functionInstance = new FunctionMaxTemplate(id, formatOutput, formatSimple, this, arg1, arg2); 124 } else if (strFunction.equals("MIN")) { 125 functionInstance = new FunctionMinTemplate(id, formatOutput, formatSimple, this, arg1, arg2); 126 } else { 127 log4jDataTemplate.warn("Function " + strFunction + " not exists"); 128 } 129 vecFunctionTemplateData.addElement(functionInstance); 130 return functionInstance; 131 } 132 133 public DataValue createDataValue(XmlDocument xmlDocument) { 134 DataValue dataValue = new DataValue(this, xmlDocument); 135 return dataValue; 136 } 137 138 public XmlComponentValue createXmlComponentValue(XmlDocument xmlDocument) { 139 DataValue dataValue = xmlDocument.hasDataValue.get(strName); 140 if (dataValue == null) { 141 dataValue = new DataValue(this, xmlDocument); 142 dataValue.initialize(); 143 } 144 return dataValue; 145 } 146 147 } 148 149 | Popular Tags |