/* * 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) 2001 - 2013 Object Refinery Ltd, Pentaho Corporation and Contributors.. All rights reserved. */ package org.pentaho.reporting.engine.classic.core.modules.output.table.xls.helper; import org.pentaho.reporting.engine.classic.core.AttributeNames; import org.pentaho.reporting.engine.classic.core.layout.model.LogicalPageBox; import org.pentaho.reporting.engine.classic.core.layout.model.RenderBox; import org.pentaho.reporting.engine.classic.core.layout.output.OutputProcessorMetaData; import org.pentaho.reporting.engine.classic.core.modules.output.table.base.SheetLayout; import org.pentaho.reporting.engine.classic.core.modules.output.table.base.TableContentProducer; public class ExcelTableContentProducer extends TableContentProducer implements SheetPropertySource { private String pageHeaderCenter; private String pageFooterCenter; private String pageHeaderLeft; private String pageFooterLeft; private String pageHeaderRight; private String pageFooterRight; private Integer freezeTop; private Integer freezeLeft; public ExcelTableContentProducer( final SheetLayout sheetLayout, final OutputProcessorMetaData metaData ) { super( sheetLayout, metaData ); } public void compute( final LogicalPageBox logicalPage, final boolean iterativeUpdate ) { this.pageFooterLeft = null; this.pageFooterCenter = null; this.pageFooterRight = null; this.pageHeaderLeft = null; this.pageHeaderCenter = null; this.pageHeaderRight = null; super.compute( logicalPage, iterativeUpdate ); } public String getPageHeaderCenter() { return pageHeaderCenter; } public void setPageHeaderCenter( final String pageHeaderCenter ) { this.pageHeaderCenter = pageHeaderCenter; } public String getPageFooterCenter() { return pageFooterCenter; } public void setPageFooterCenter( final String pageFooterCenter ) { this.pageFooterCenter = pageFooterCenter; } public String getPageHeaderLeft() { return pageHeaderLeft; } public void setPageHeaderLeft( final String pageHeaderLeft ) { this.pageHeaderLeft = pageHeaderLeft; } public String getPageFooterLeft() { return pageFooterLeft; } public void setPageFooterLeft( final String pageFooterLeft ) { this.pageFooterLeft = pageFooterLeft; } public String getPageHeaderRight() { return pageHeaderRight; } public void setPageHeaderRight( final String pageHeaderRight ) { this.pageHeaderRight = pageHeaderRight; } public String getPageFooterRight() { return pageFooterRight; } public void setPageFooterRight( final String pageFooterRight ) { this.pageFooterRight = pageFooterRight; } protected void collectSheetStyleData( final RenderBox box ) { super.collectSheetStyleData( box ); this.pageHeaderCenter = lookup( box, AttributeNames.Excel.PAGE_HEADER_CENTER, this.pageHeaderCenter ); this.pageHeaderLeft = lookup( box, AttributeNames.Excel.PAGE_HEADER_LEFT, this.pageHeaderLeft ); this.pageHeaderRight = lookup( box, AttributeNames.Excel.PAGE_HEADER_RIGHT, this.pageHeaderRight ); this.pageFooterCenter = lookup( box, AttributeNames.Excel.PAGE_FOOTER_CENTER, this.pageFooterCenter ); this.pageFooterLeft = lookup( box, AttributeNames.Excel.PAGE_FOOTER_LEFT, this.pageFooterLeft ); this.pageFooterRight = lookup( box, AttributeNames.Excel.PAGE_FOOTER_RIGHT, this.pageFooterRight ); final Integer freezeTop = (Integer) box.getAttributes().getAttribute( AttributeNames.Excel.NAMESPACE, AttributeNames.Excel.FREEZING_TOP_POSITION ); if ( this.freezeTop == null && freezeTop != null ) { this.freezeTop = freezeTop; } final Integer freezeLeft = (Integer) box.getAttributes().getAttribute( AttributeNames.Excel.NAMESPACE, AttributeNames.Excel.FREEZING_LEFT_POSITION ); if ( this.freezeLeft == null && freezeLeft != null ) { this.freezeLeft = freezeLeft; } } public int getFreezeTop() { if ( freezeTop == null ) { return 0; } return freezeTop; } public int getFreezeLeft() { if ( freezeLeft == null ) { return 0; } return freezeLeft; } private String lookup( final RenderBox box, final String attribute, final String defaultValue ) { final Object value = box.getAttributes().getAttribute( AttributeNames.Excel.NAMESPACE, attribute ); if ( value != null && defaultValue == null ) { return String.valueOf( value ); } return defaultValue; } }