
/*
 *  ====================================================================
 *  The Apache Software License, Version 1.1
 *
 *  Copyright (c) 2002 The Apache Software Foundation.  All rights
 *  reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions
 *  are met:
 *
 *  1. Redistributions of source code must retain the above copyright
 *  notice, this list of conditions and the following disclaimer.
 *
 *  2. Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in
 *  the documentation and/or other materials provided with the
 *  distribution.
 *
 *  3. The end-user documentation included with the redistribution,
 *  if any, must include the following acknowledgment:
 *  "This product includes software developed by the
 *  Apache Software Foundation (http://www.apache.org/)."
 *  Alternately, this acknowledgment may appear in the software itself,
 *  if and wherever such third-party acknowledgments normally appear.
 *
 *  4. The names "Apache" and "Apache Software Foundation" and
 *  "Apache POI" must not be used to endorse or promote products
 *  derived from this software without prior written permission. For
 *  written permission, please contact apache@apache.org.
 *
 *  5. Products derived from this software may not be called "Apache",
 *  "Apache POI", nor may "Apache" appear in their name, without
 *  prior written permission of the Apache Software Foundation.
 *
 *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 *  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 *  DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 *  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 *  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 *  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 *  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 *  SUCH DAMAGE.
 *  ====================================================================
 *
 *  This software consists of voluntary contributions made by many
 *  individuals on behalf of the Apache Software Foundation.  For more
 *  information on the Apache Software Foundation, please see
 *  <http://www.apache.org/>.
 */
package org.apache.poi.hssf.usermodel.contrib;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 *  Various utility functions that make working with a cells and rows easier
 *
 *@author     Eric Pugh epugh@upstate.com
 *@created    July 29, 2002
 */

public class HSSFUtil {

	/**
	 *  Get a row of the database, or create it if it doesn't exist!
	 *
	 *@param  rowCounter  The 0 based row number
	 *@param  sheet       Description of Parameter
	 *@return             The row
	 */
	public static HSSFRow getRow( int rowCounter, HSSFSheet sheet ) {
		HSSFRow row = sheet.getRow( (short) rowCounter );
		if ( row == null ) {
			row = sheet.createRow( (short) rowCounter );
		}
		return row;
	}

	/**
	 *  Gets the cell attribute of the AbstractExcelReport class
	 *
	 *@param  row     Description of Parameter
	 *@param  column  Description of Parameter
	 *@return         The cell value
	 */
	public static HSSFCell getCell( HSSFRow row, int column ) {
		HSSFCell cell = row.getCell( (short) column );
		if ( cell == null ) {
			cell = row.createCell( (short) column );
		}
		return cell;
	}


	/**
	 *  Creates a cell and aligns it a certain way.
	 *
	 *@param  row     the row to create the cell in
	 *@param  column  the column number to create the cell in
	 *@param  value   Description of Parameter
	 *@param  style   Description of Parameter
	 *@return         Description of the Returned Value
	 */
	public static HSSFCell createCell( HSSFRow row, int column, String value, HSSFCellStyle style ) {
		HSSFCell cell = getCell( row, column );

		cell.setCellValue( value );
		if ( style != null ) {
			cell.setCellStyle( style );
		}
		return cell;
	}

	/**
	 *  Description of the Method
	 *
	 *@param  row     Description of Parameter
	 *@param  column  Description of Parameter
	 *@param  value   Description of Parameter
	 *@return         Description of the Returned Value
	 */
	public static HSSFCell createCell( HSSFRow row, int column, String value ) {
		return createCell( row, column, value, null );
	}

}

