jxl.biff.DataValiditySettingsRecord Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jxl Show documentation
Show all versions of jxl Show documentation
JExcelApi is a java library which provides the ability to read, write, and modify Microsoft Excel spreadsheets.
The newest version!
/*********************************************************************
*
* Copyright (C) 2004 Andrew Khan
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
package jxl.biff;
import jxl.common.Assert;
import jxl.common.Logger;
import jxl.WorkbookSettings;
import jxl.biff.WorkbookMethods;
import jxl.biff.formula.ExternalSheet;
import jxl.biff.formula.FormulaException;
import jxl.read.biff.Record;
/**
* Data validity settings. Contains an individual Data validation (DV).
* All the computationa work is delegated to the DVParser object
*/
public class DataValiditySettingsRecord extends WritableRecordData
{
/**
* The logger
*/
private static Logger logger =
Logger.getLogger(DataValiditySettingsRecord.class);
/**
* The binary data
*/
private byte[] data;
/**
* The reader
*/
private DVParser dvParser;
/**
* Handle to the workbook
*/
private WorkbookMethods workbook;
/**
* Handle to the externalSheet
*/
private ExternalSheet externalSheet;
/**
* Handle to the workbook settings
*/
private WorkbookSettings workbookSettings;
/**
* Handle to the data validation record
*/
private DataValidation dataValidation;
/**
* Constructor
*/
public DataValiditySettingsRecord(Record t,
ExternalSheet es,
WorkbookMethods wm,
WorkbookSettings ws)
{
super(t);
data = t.getData();
externalSheet = es;
workbook = wm;
workbookSettings = ws;
}
/**
* Copy constructor
*/
DataValiditySettingsRecord(DataValiditySettingsRecord dvsr)
{
super(Type.DV);
data = dvsr.getData();
}
/**
* Constructor used when copying sheets
*
* @param dvsr the record copied from a writable sheet
*/
DataValiditySettingsRecord(DataValiditySettingsRecord dvsr,
ExternalSheet es,
WorkbookMethods w,
WorkbookSettings ws)
{
super(Type.DV);
workbook = w;
externalSheet = es;
workbookSettings = ws;
Assert.verify(w != null);
Assert.verify(es != null);
data = new byte[dvsr.data.length];
System.arraycopy(dvsr.data, 0, data, 0, data.length);
}
/**
* Constructor called when the API creates a writable data validation
*
* @param dvsr the record copied from a writable sheet
*/
public DataValiditySettingsRecord(DVParser dvp)
{
super(Type.DV);
dvParser = dvp;
}
/**
* Initializes the dvParser
*/
private void initialize()
{
if (dvParser == null)
{
dvParser = new DVParser(data, externalSheet,
workbook, workbookSettings);
}
}
/**
* Retrieves the data for output to binary file
*
* @return the data to be written
*/
public byte[] getData()
{
if (dvParser == null)
{
return data;
}
return dvParser.getData();
}
/**
* Inserts a row
*
* @param row the row to insert
*/
public void insertRow(int row)
{
if (dvParser == null)
{
initialize();
}
dvParser.insertRow(row);
}
/**
* Removes a row
*
* @param row the row to insert
*/
public void removeRow(int row)
{
if (dvParser == null)
{
initialize();
}
dvParser.removeRow(row);
}
/**
* Inserts a row
*
* @param col the row to insert
*/
public void insertColumn(int col)
{
if (dvParser == null)
{
initialize();
}
dvParser.insertColumn(col);
}
/**
* Removes a column
*
* @param col the row to insert
*/
public void removeColumn(int col)
{
if (dvParser == null)
{
initialize();
}
dvParser.removeColumn(col);
}
/**
* Accessor for first column
*
* @return the first column
*/
public int getFirstColumn()
{
if (dvParser == null)
{
initialize();
}
return dvParser.getFirstColumn();
}
/**
* Accessor for the last column
*
* @return the last column
*/
public int getLastColumn()
{
if (dvParser == null)
{
initialize();
}
return dvParser.getLastColumn();
}
/**
* Accessor for first row
*
* @return the first row
*/
public int getFirstRow()
{
if (dvParser == null)
{
initialize();
}
return dvParser.getFirstRow();
}
/**
* Accessor for the last row
*
* @return the last row
*/
public int getLastRow()
{
if (dvParser == null)
{
initialize();
}
return dvParser.getLastRow();
}
/**
* Sets the handle to the data validation record
*
* @param dv the data validation
*/
void setDataValidation(DataValidation dv)
{
dataValidation = dv;
}
/**
* Gets the DVParser. This is used when doing a deep copy of cells
* on the writable side of things
*/
DVParser getDVParser()
{
return dvParser;
}
public String getValidationFormula()
{
try
{
if (dvParser == null)
{
initialize();
}
return dvParser.getValidationFormula();
}
catch (FormulaException e)
{
logger.warn("Cannot read drop down range " + e.getMessage());
return "";
}
}
}