ReportMap.java :  » Report » jmagallanes-1.0 » com » calipso » reportgenerator » common » Java Open Source

Java Open Source » Report » jmagallanes 1.0 
jmagallanes 1.0 » com » calipso » reportgenerator » common » ReportMap.java
package com.calipso.reportgenerator.common;

import com.calipso.reportgenerator.reportcalculator.SharedInteger;
import com.calipso.reportgenerator.reportcalculator.SharedDate;
import com.calipso.reportgenerator.reportcalculator.SharedString;
import com.calipso.reportgenerator.reportcalculator.SharedFloat;
import com.calipso.reportgenerator.reportdefinitions.types.ReportDataType;
import com.calipso.reportgenerator.reportdefinitions.ViewParameterValues;
import com.calipso.reportgenerator.reportdefinitions.ViewParameterValue;
import com.calipso.common.DateEx;

import java.util.Map;
import java.util.Iterator;
import java.util.Date;
import java.util.HashMap;
import java.text.SimpleDateFormat;

/**
 *
 * User: Breto
 * Date: 20-abr-2004
 * Time: 15:03:57
 */
public class  ReportMap {

  public static Map setParametersToSimpleType(Map params){
    return doSetParametersToType(params, false);
  }

  public static Object getSimpleTypeValue(Object value) {
    if(value!=null){
      Object newValue;
      if(value.getClass()==SharedInteger.class){
        newValue = ((SharedInteger)value).getValue();
      } else if(value.getClass()==SharedDate.class){
        newValue = ((SharedDate)value).getValue();
        newValue = ((DateEx)newValue).getDate();
      } else if(value.getClass()==SharedString.class){
        newValue = ((SharedString)value).getValue();
      } else if(value.getClass()==SharedFloat.class){
        newValue = ((SharedFloat)value).getValue();
      } else if(value.getClass()==DateEx.class){
        newValue = ((DateEx)value).getDate();
      } else {
        newValue = value;
      }
      return newValue;
    }
    return null;
  }

  public static Class getJavaLangType(ReportDataType dataType) {
    switch(dataType.getType()){
      case ReportDataType.DATE_TYPE:
      case ReportDataType.DATETIME_TYPE:
        return Date.class;
      case ReportDataType.STRING_TYPE:
        return String.class;
      case ReportDataType.BOOLEAN_TYPE:
        return Boolean.class;
      case ReportDataType.FLOAT_TYPE:
        return Float.class;
      case ReportDataType.INTEGER_TYPE:
        return Integer.class;
      default:
        return String.class;
    }
  }

  /**
   * Mecanismo inverso a setParametersToSimpleType. Los parametros pasados por parametro ya deben estar en el tipo
   * correcto de Java (no se puede pasar un String y pretender que reconozca una fecha).
   * @param params
   * @return parametros en tipo "Shared..."
   */
  public static Map setParametersToReportManagerType(Map params) {
    return doSetParametersToType(params, true);
  }

  private static Map doSetParametersToType(Map params, boolean complex) {
    Iterator iterator = params.entrySet().iterator();
    Object value;
    Object newValue;
    while(iterator.hasNext()){
      Map.Entry current = (Map.Entry)iterator.next();
      value = current.getValue();
      if(complex){
        newValue = ReportMap.getComlexTypeValue(value);
      }else{
        newValue = ReportMap.getSimpleTypeValue(value);
      }
      current.setValue(newValue);
    }
    return params;
  }

  private static Object getComlexTypeValue(Object value) {
    Object newValue;
    if(value instanceof Integer){
      newValue = SharedInteger.newFrom((Integer)value);
    } else if(value instanceof Date){
      DateEx ex = new DateEx((Date)value);
      newValue = SharedDate.newFrom(ex);
    } else if(value instanceof String){
      newValue = ((String)value).intern();//SharedString.newFrom((String)value);
    } else if(value instanceof Float){
      newValue = SharedFloat.newFrom((Float)value);
    } else {
      newValue = value;
    }
    return newValue;
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.