001: package com.calipso.reportgenerator.common;
002:
003: import com.calipso.reportgenerator.reportcalculator.SharedInteger;
004: import com.calipso.reportgenerator.reportcalculator.SharedDate;
005: import com.calipso.reportgenerator.reportcalculator.SharedString;
006: import com.calipso.reportgenerator.reportcalculator.SharedFloat;
007: import com.calipso.reportgenerator.reportdefinitions.types.ReportDataType;
008: import com.calipso.reportgenerator.reportdefinitions.ViewParameterValues;
009: import com.calipso.reportgenerator.reportdefinitions.ViewParameterValue;
010: import com.calipso.common.DateEx;
011:
012: import java.util.Map;
013: import java.util.Iterator;
014: import java.util.Date;
015: import java.util.HashMap;
016: import java.text.SimpleDateFormat;
017:
018: /**
019: *
020: * User: Breto
021: * Date: 20-abr-2004
022: * Time: 15:03:57
023: */
024: public class ReportMap {
025:
026: public static Map setParametersToSimpleType(Map params) {
027: return doSetParametersToType(params, false);
028: }
029:
030: public static Object getSimpleTypeValue(Object value) {
031: if (value != null) {
032: Object newValue;
033: if (value.getClass() == SharedInteger.class) {
034: newValue = ((SharedInteger) value).getValue();
035: } else if (value.getClass() == SharedDate.class) {
036: newValue = ((SharedDate) value).getValue();
037: newValue = ((DateEx) newValue).getDate();
038: } else if (value.getClass() == SharedString.class) {
039: newValue = ((SharedString) value).getValue();
040: } else if (value.getClass() == SharedFloat.class) {
041: newValue = ((SharedFloat) value).getValue();
042: } else if (value.getClass() == DateEx.class) {
043: newValue = ((DateEx) value).getDate();
044: } else {
045: newValue = value;
046: }
047: return newValue;
048: }
049: return null;
050: }
051:
052: public static Class getJavaLangType(ReportDataType dataType) {
053: switch (dataType.getType()) {
054: case ReportDataType.DATE_TYPE:
055: case ReportDataType.DATETIME_TYPE:
056: return Date.class;
057: case ReportDataType.STRING_TYPE:
058: return String.class;
059: case ReportDataType.BOOLEAN_TYPE:
060: return Boolean.class;
061: case ReportDataType.FLOAT_TYPE:
062: return Float.class;
063: case ReportDataType.INTEGER_TYPE:
064: return Integer.class;
065: default:
066: return String.class;
067: }
068: }
069:
070: /**
071: * Mecanismo inverso a setParametersToSimpleType. Los parametros pasados por parametro ya deben estar en el tipo
072: * correcto de Java (no se puede pasar un String y pretender que reconozca una fecha).
073: * @param params
074: * @return parametros en tipo "Shared..."
075: */
076: public static Map setParametersToReportManagerType(Map params) {
077: return doSetParametersToType(params, true);
078: }
079:
080: private static Map doSetParametersToType(Map params, boolean complex) {
081: Iterator iterator = params.entrySet().iterator();
082: Object value;
083: Object newValue;
084: while (iterator.hasNext()) {
085: Map.Entry current = (Map.Entry) iterator.next();
086: value = current.getValue();
087: if (complex) {
088: newValue = ReportMap.getComlexTypeValue(value);
089: } else {
090: newValue = ReportMap.getSimpleTypeValue(value);
091: }
092: current.setValue(newValue);
093: }
094: return params;
095: }
096:
097: private static Object getComlexTypeValue(Object value) {
098: Object newValue;
099: if (value instanceof Integer) {
100: newValue = SharedInteger.newFrom((Integer) value);
101: } else if (value instanceof Date) {
102: DateEx ex = new DateEx((Date) value);
103: newValue = SharedDate.newFrom(ex);
104: } else if (value instanceof String) {
105: newValue = ((String) value).intern();//SharedString.newFrom((String)value);
106: } else if (value instanceof Float) {
107: newValue = SharedFloat.newFrom((Float) value);
108: } else {
109: newValue = value;
110: }
111: return newValue;
112: }
113:
114: }
|