Source for org.jfree.report.structure.Group

   1: /**
   2:  * ========================================
   3:  * JFreeReport : a free Java report library
   4:  * ========================================
   5:  *
   6:  * Project Info:  http://reporting.pentaho.org/
   7:  *
   8:  * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors.
   9:  *
  10:  * This library is free software; you can redistribute it and/or modify it under the terms
  11:  * of the GNU Lesser General Public License as published by the Free Software Foundation;
  12:  * either version 2.1 of the License, or (at your option) any later version.
  13:  *
  14:  * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  15:  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  16:  * See the GNU Lesser General Public License for more details.
  17:  *
  18:  * You should have received a copy of the GNU Lesser General Public License along with this
  19:  * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  20:  * Boston, MA 02111-1307, USA.
  21:  *
  22:  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
  23:  * in the United States and other countries.]
  24:  *
  25:  * ------------
  26:  * $Id: Group.java 2725 2007-04-01 18:49:29Z taqua $
  27:  * ------------
  28:  * (C) Copyright 2000-2005, by Object Refinery Limited.
  29:  * (C) Copyright 2005-2007, by Pentaho Corporation.
  30:  */
  31: 
  32: package org.jfree.report.structure;
  33: 
  34: import org.jfree.report.expressions.Expression;
  35: 
  36: /**
  37:  * A report group. A group is a repeated section which is bound to an
  38:  * expression.
  39:  * <p/>
  40:  * <h2>Default Behaviour</h2> Whether a new group should be started is evaluated
  41:  * by the group's expression. If that expression returns Boolean.TRUE, a new
  42:  * group instance is started. (That expression answers the Questions: 'Does this
  43:  * group instance end here?').
  44:  * <p/>
  45:  * If the group expression is invalid or there is no group expression at all, a
  46:  * group will consume all rows until the datasource is no longer advanceable.
  47:  *
  48:  * @author David Gilbert
  49:  * @author Thomas Morgner
  50:  */
  51: public class Group extends Section
  52: {
  53:   private Expression groupingExpression;
  54: 
  55:   /**
  56:    * Constructs a group with no fields, and an empty header and footer.
  57:    */
  58:   public Group()
  59:   {
  60:     setType("group");
  61:     setRepeat(true);
  62:   }
  63: 
  64:   /**
  65:    * Returns a string representation of the group (useful for debugging).
  66:    *
  67:    * @return A string.
  68:    */
  69:   public String toString()
  70:   {
  71:     final StringBuffer b = new StringBuffer();
  72:     b.append("Group={Name='");
  73:     b.append(getName());
  74:     b.append("} ");
  75:     return b.toString();
  76:   }
  77: 
  78:   public Expression getGroupingExpression()
  79:   {
  80:     return groupingExpression;
  81:   }
  82: 
  83:   public void setGroupingExpression(final Expression groupingExpression)
  84:   {
  85:     this.groupingExpression = groupingExpression;
  86:   }
  87: 
  88:   public Group getGroup()
  89:   {
  90:     return this;
  91:   }
  92: 
  93: 
  94:   public Object clone()
  95:       throws CloneNotSupportedException
  96:   {
  97:     final Group group = (Group) super.clone();
  98:     if (groupingExpression != null)
  99:     {
 100:       group.groupingExpression = (Expression) groupingExpression.clone();
 101:     }
 102:     return group;
 103:   }
 104: }