Re: cayenne+jasperreports problem

From: Juergen Saar (juerge..saar.org)
Date: Fri May 12 2006 - 04:57:39 EDT

  • Next message: Alan Baltazar: "Re: cayenne+jasperreports problem"

    Here a simple JRDataSource template:

    /*
     * Created on 12.05.2006
     */
    package org.jsaar.report;

    import java.util.Iterator;
    import java.util.List;

    import org.apache.commons.jxpath.JXPathContext;
    import org.objectstyle.cayenne.DataObject;

    import net.sf.jasperreports.engine.JRDataSource;
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JRField;

    public class JsDataSource extends Object implements JRDataSource {
      private List data = null;
      private Iterator iterator = null;
      private DataObject dataObject = null;

      /**
       * Constructor with List usually from SelectQuery
       *
       *..aram businessObjects
       */
      public JsDataSource(List businessObjects) {
        super();
        setData(businessObjects);
      }

      /**
       * setter for List
       *
       *..aram list
       */
      public void setData(List list) {
        data = list;
        iterator = data.iterator();
      }

      /* (non-Javadoc)
       *..ee net.sf.jasperreports.engine.JRDataSource#getFieldValue(
    net.sf.jasperreports.engine.JRField)
       */
      public Object getFieldValue(JRField field) throws JRException {
        String name = field.getName();
        JXPathContext context = JXPathContext.newContext(dataObject);
        Object obj = context.getValue(name);
        return (obj == null) ? null : obj.toString();
      }

      /* (non-Javadoc)
       *..ee net.sf.jasperreports.engine.JRDataSource#next()
       */
      public boolean next() throws JRException {
        boolean result = iterator.hasNext();
        if (result) {
          dataObject = (DataObject) iterator.next();
        }
        return result;
      }

    }

    2006/5/12, Alan Baltazar <acatalan..ahoo.com>:
    >
    >
    > DataRows seem to be the only solution i could think of to wrap the
    > JRDataSource
    > implementation, which is required by jasperreports to read the datasource
    > data.
    > JRDataSource is a wrapper hashmap for reading the rows from a datasource.
    > i don't know
    > much about dataobjects to implement this .... if you do, please let me
    > know how.
    >
    > --- Juergen Saar <juerge..saar.org> wrote:
    >
    > > Why do you work on DataRows ... DataObjects are much more like
    > > BusinessObjects.
    > >
    > > If you work on DataObjects and there are some getters for
    > > transient informations coming from business-logic
    > > it can help a lot.
    > >
    > > Just one more hint:
    > > reading content of DataObjects with jxpath is really cool.
    > >
    >



    This archive was generated by hypermail 2.0.0 : Fri May 12 2006 - 04:58:06 EDT