Frames | No Frames |
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: }