/*!
* 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;
}
}