/*! * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved. */ package org.pentaho.reporting.engine.classic.wizard.model; public class DefaultWizardSpecification implements WizardSpecification { private static final GroupDefinition[] EMPTY_GROUPS = new GroupDefinition[ 0 ]; private static final DetailFieldDefinition[] EMPTY_FIELDS = new DetailFieldDefinition[ 0 ]; private DetailFieldDefinition[] detailFieldDefinitions; private GroupDefinition[] groupDefinitions; private RootBandDefinition columnHeader; private RootBandDefinition columnFooter; private WatermarkDefinition watermarkDefinition; private boolean autoGenerateDetails; public DefaultWizardSpecification() { groupDefinitions = EMPTY_GROUPS; detailFieldDefinitions = EMPTY_FIELDS; watermarkDefinition = new DefaultWatermarkDefinition(); columnFooter = new DefaultRootBandDefinition(); columnHeader = new DefaultRootBandDefinition(); } public boolean isAutoGenerateDetails() { return autoGenerateDetails; } public void setAutoGenerateDetails( final boolean autoGenerateDetails ) { this.autoGenerateDetails = autoGenerateDetails; } public DetailFieldDefinition[] getDetailFieldDefinitions() { return (DetailFieldDefinition[]) detailFieldDefinitions.clone(); } public void setDetailFieldDefinitions( final DetailFieldDefinition[] detailFieldDefinitions ) { for ( int i = 0; i < detailFieldDefinitions.length; i++ ) { final DetailFieldDefinition fieldDefinition = detailFieldDefinitions[ i ]; if ( fieldDefinition == null ) { throw new NullPointerException(); } } this.detailFieldDefinitions = (DetailFieldDefinition[]) detailFieldDefinitions.clone(); } public GroupDefinition[] getGroupDefinitions() { return (GroupDefinition[]) groupDefinitions.clone(); } public void setGroupDefinitions( final GroupDefinition[] groups ) { for ( int i = 0; i < groups.length; i++ ) { final GroupDefinition group = groups[ i ]; if ( group == null ) { throw new NullPointerException(); } } groupDefinitions = (GroupDefinition[]) groups.clone(); } public RootBandDefinition getColumnHeader() { return columnHeader; } public RootBandDefinition getColumnFooter() { return columnFooter; } public WatermarkDefinition getWatermarkDefinition() { return watermarkDefinition; } public Object clone() throws CloneNotSupportedException { final DefaultWizardSpecification o = (DefaultWizardSpecification) super.clone(); o.watermarkDefinition = (WatermarkDefinition) watermarkDefinition.clone(); o.columnHeader = (RootBandDefinition) columnHeader.clone(); o.columnFooter = (RootBandDefinition) columnFooter.clone(); o.groupDefinitions = (GroupDefinition[]) groupDefinitions.clone(); for ( int i = 0; i < groupDefinitions.length; i++ ) { o.groupDefinitions[ i ] = (GroupDefinition) groupDefinitions[ i ].clone(); } o.detailFieldDefinitions = (DetailFieldDefinition[]) detailFieldDefinitions.clone(); for ( int i = 0; i < detailFieldDefinitions.length; i++ ) { o.detailFieldDefinitions[ i ] = (DetailFieldDefinition) detailFieldDefinitions[ i ].clone(); } return o; } }