Tag: cws_src680_oj14
User: oj      
Date: 2007-06-07 08:46:52+0000
Added:
   
dba/reportdesign/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java

Log:
 first version

File Changes:

Directory: /dba/reportdesign/java/com/sun/star/report/pentaho/layoutprocessor/
==============================================================================

File [added]: FormatValueUtility.java
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java?rev=1.1.2.1&content-type=text/vnd.viewcvs-markup
Added lines: 136
----------------
package com.sun.star.report.pentaho.layoutprocessor;

import java.text.SimpleDateFormat;
import java.util.Date;

import com.sun.star.report.pentaho.OfficeNamespaces;
import com.sun.star.report.pentaho.model.FormattedTextElement;
import org.jfree.layouting.util.AttributeMap;
import org.jfree.report.DataFlags;
import org.jfree.report.DataSourceException;
import org.jfree.report.data.DefaultDataFlags;
import org.jfree.report.expressions.FormulaExpression;
import org.jfree.report.flow.FlowController;
import org.jfree.report.flow.layoutprocessor.LayoutControllerUtil;
import org.jfree.util.Log;

/**
 * Creation-Date: 06.06.2007, 17:03:30
 *
 * @author Thomas Morgner
 */
public class FormatValueUtility
{
  private static SimpleDateFormat dateFormat;

  private FormatValueUtility()
  {
  }

  public static void applyValueForVariable(final Object value, final 
AttributeMap variableSection)
  {
    if (value instanceof Date)
    {
      variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "value-type", 
"date");
      variableSection.setAttribute
          (OfficeNamespaces.OFFICE_NS, "date-value", formatDate((Date) value));
    }
    else if (value instanceof Number)
    {
      variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "value-type", 
"float");
      variableSection.setAttribute
          (OfficeNamespaces.OFFICE_NS, "value", String.valueOf(value));
    }
    else if (value instanceof Boolean)
    {
      variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "value-type", 
"boolean");
      if (Boolean.TRUE.equals(value))
      {
        variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, 
"boolean-value", "true");
      }
      else
      {
        variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, 
"boolean-value", "false");
      }
    }
    else if (value != null)
    {
      variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "value-type", 
"string");
      variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "string-value", 
String.valueOf(value));
    }
    else
    {
      variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "value-type", 
"string");
      variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "string-value", 
"");
    }
  }


  public static void applyValueForCell(final Object value, final AttributeMap 
variableSection)
  {
    if (value instanceof Date)
    {
      variableSection.setAttribute
          (OfficeNamespaces.OFFICE_NS, "date-value", formatDate((Date) value));
    }
    else if (value instanceof Number)
    {
      variableSection.setAttribute
          (OfficeNamespaces.OFFICE_NS, "value", String.valueOf(value));
    }
    else if (value instanceof Boolean)
    {
      if (Boolean.TRUE.equals(value))
      {
        variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, 
"boolean-value", "true");
      }
      else
      {
        variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, 
"boolean-value", "false");
      }
    }
    else if (value != null)
    {
      variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "string-value", 
String.valueOf(value));
    }
    else
    {
      variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "string-value", 
"");
    }
  }
  
  private static synchronized String formatDate(final Date date)
  {
    if (dateFormat == null)
    {
      dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'.'S'Z'");
    }
    return dateFormat.format(date);
  }

  public static DataFlags computeDataFlag(final FormattedTextElement element,
                                      final FlowController flowController)
      throws DataSourceException
  {
    // here it is relatively easy. We have to evaluate the expression, convert
    // the result into a string, and print that string.
    final FormulaExpression formulaExpression = element.getValueExpression();
    final Object result = LayoutControllerUtil.evaluateExpression
        (flowController, element, formulaExpression);
    if (result == null)
    {
      // ignore it. Ignoring it is much better than printing 'null'.
      Log.debug("Formula '" + formulaExpression.getFormula() + "' evaluated to 
null.");
      return null;
    }
    else if (result instanceof DataFlags)
    {
      return (DataFlags) result;
    }
    else
    {
      return new DefaultDataFlags(null, result, true);
    }
  }

}




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to