Package adams.data.io.input
Class ODFSpreadSheetReader
-
- All Implemented Interfaces:
AdditionalInformationHandler
,Destroyable
,ErrorProvider
,GlobalInfoSupporter
,EncodingSupporter
,FileFormatHandler
,LoggingLevelHandler
,LoggingSupporter
,OptionHandler
,SizeOfHandler
,Stoppable
,StoppableWithFeedback
,MissingValueSpreadSheetReader
,MultiSheetSpreadSheetReader<SheetRange>
,NoHeaderSpreadSheetReader
,SpreadSheetReader
,WindowedSpreadSheetReader
,DataRowTypeHandler
,SpreadSheetTypeHandler
,Serializable
public class ODFSpreadSheetReader extends AbstractMultiSheetSpreadSheetReaderWithMissingValueSupport<SheetRange> implements NoHeaderSpreadSheetReader, WindowedSpreadSheetReader
Reads ODF (Open Document Format) spreadsheet files.
If a row contains only empty cells, this is interpreted as the end of the sheet.
-logging-level <OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST> (property: loggingLevel) The logging level for outputting errors and debugging output. default: WARNING
-data-row-type <adams.data.spreadsheet.DataRow> (property: dataRowType) The type of row to use for the data. default: adams.data.spreadsheet.DenseDataRow
-spreadsheet-type <adams.data.spreadsheet.SpreadSheet> (property: spreadSheetType) The type of spreadsheet to use for the data. default: adams.data.spreadsheet.DefaultSpreadSheet
-sheets <adams.core.Range> (property: sheetRange) The range of sheets to load. default: first example: A range is a comma-separated list of single 1-based indices or sub-ranges of indices ('start-end'); 'inv(...)' inverts the range '...'; the following placeholders can be used as well: first, second, third, last_2, last_1, last
-missing <java.lang.String> (property: missingValue) The placeholder for missing values. default:
-text-columns <java.lang.String> (property: textColumns) The range of columns to treat as text. default:
-no-header <boolean> (property: noHeader) If enabled, all rows get added as data rows and a dummy header will get inserted. default: false
-custom-column-headers <java.lang.String> (property: customColumnHeaders) The custom headers to use for the columns instead (comma-separated list); ignored if empty. default:
-first-row <int> (property: firstRow) The index of the first row to retrieve (1-based). default: 1 minimum: 1
-num-rows <int> (property: numRows) The number of data rows to retrieve; use -1 for unlimited. default: -1 minimum: -1
- Author:
- fracpete (fracpete at waikato dot ac dot nz)
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class adams.data.io.input.AbstractSpreadSheetReader
AbstractSpreadSheetReader.InputType
-
-
Field Summary
Fields Modifier and Type Field Description protected String
m_CustomColumnHeaders
the comma-separated list of column header names.protected int
m_FirstRow
the first row to retrieve (1-based).protected boolean
m_NoHeader
whether the file has a header or not.protected int
m_NumRows
the number of rows to retrieve (less than 1 = unlimited).protected Range
m_TextColumns
the range of columns to force to be text.-
Fields inherited from class adams.data.io.input.AbstractMultiSheetSpreadSheetReaderWithMissingValueSupport
m_MissingValue
-
Fields inherited from class adams.data.io.input.AbstractMultiSheetSpreadSheetReader
m_SheetRange
-
Fields inherited from class adams.data.io.input.AbstractSpreadSheetReader
m_DataRowType, m_Encoding, m_LastError, m_SpreadSheetType, m_Stopped, OPTION_INPUT, OPTION_OUTPUT
-
Fields inherited from class adams.core.option.AbstractOptionHandler
m_OptionManager
-
Fields inherited from class adams.core.logging.LoggingObject
m_Logger, m_LoggingIsEnabled, m_LoggingLevel
-
-
Constructor Summary
Constructors Constructor Description ODFSpreadSheetReader()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description String
customColumnHeadersTipText()
Returns the tip text for this property.void
defineOptions()
Adds options to the internal list of options.protected List<SpreadSheet>
doReadRange(InputStream in)
Reads the spreadsheet content from the specified file.String
firstRowTipText()
Returns the tip text for this property.SpreadSheetWriter
getCorrespondingWriter()
Returns, if available, the corresponding writer.String
getCustomColumnHeaders()
Returns whether the file contains a header row or not.protected SheetRange
getDefaultSheetRange()
Returns the default sheet range.int
getFirstRow()
Returns the first row to return.String
getFormatDescription()
Returns a string describing the format (used in the file chooser).String[]
getFormatExtensions()
Returns the extension(s) of the format.protected AbstractSpreadSheetReader.InputType
getInputType()
Returns how to read the data, from a file, stream or reader.boolean
getNoHeader()
Returns whether the file contains a header row or not.int
getNumRows()
Returns the number of data rows to return.String
getTextColumns()
Returns the range of columns to treat as text.String
globalInfo()
Returns a string describing the object.protected void
initialize()
Initializes the members.static void
main(String[] args)
Runs the reader from the command-line.String
noHeaderTipText()
Returns the tip text for this property.protected String
numericToString(String s)
Turns a numeric cell into a string.String
numRowsTipText()
Returns the tip text for this property.void
setCustomColumnHeaders(String value)
Sets the custom headers to use.void
setFirstRow(int value)
Sets the first row to return.void
setNoHeader(boolean value)
Sets whether the file contains a header row or not.void
setNumRows(int value)
Sets the number of data rows to return.void
setTextColumns(String value)
Sets the range of columns to treat as text.String
textColumnsTipText()
Returns the tip text for this property.-
Methods inherited from class adams.data.io.input.AbstractMultiSheetSpreadSheetReaderWithMissingValueSupport
getDefaultMissingValue, getMissingValue, missingValueTipText, setMissingValue
-
Methods inherited from class adams.data.io.input.AbstractMultiSheetSpreadSheetReader
doRead, doRead, doRead, doReadRange, doReadRange, getSheetRange, readRange, readRange, readRange, readRange, setSheetRange, sheetRangeTipText
-
Methods inherited from class adams.data.io.input.AbstractSpreadSheetReader
canDecompress, check, dataRowTypeTipText, encodingTipText, getAdditionalInformation, getDataRowType, getDefaultDataRowType, getDefaultFormatExtension, getDefaultSpreadSheet, getEncoding, getLastError, getReaders, getSpreadSheetType, hasLastError, isStopped, read, read, read, read, runReader, setDataRowType, setEncoding, setLastError, setSpreadSheetType, spreadSheetTypeTipText, stopExecution, supportsCompressedInput
-
Methods inherited from class adams.core.option.AbstractOptionHandler
cleanUpOptions, destroy, finishInit, getDefaultLoggingLevel, getOptionManager, loggingLevelTipText, newOptionManager, reset, setLoggingLevel, toCommandLine, toString
-
Methods inherited from class adams.core.logging.LoggingObject
configureLogger, getLogger, getLoggingLevel, initializeLogging, isLoggingEnabled, sizeOf
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface adams.core.Destroyable
destroy
-
Methods inherited from interface adams.core.logging.LoggingLevelHandler
getLoggingLevel
-
Methods inherited from interface adams.core.option.OptionHandler
cleanUpOptions, getOptionManager, toCommandLine
-
Methods inherited from interface adams.data.io.input.SpreadSheetReader
dataRowTypeTipText, getDataRowType, getDefaultFormatExtension, getLastError, getSpreadSheetType, hasLastError, isStopped, read, read, read, read, setDataRowType, setSpreadSheetType, spreadSheetTypeTipText, stopExecution
-
-
-
-
Field Detail
-
m_TextColumns
protected Range m_TextColumns
the range of columns to force to be text.
-
m_NoHeader
protected boolean m_NoHeader
whether the file has a header or not.
-
m_CustomColumnHeaders
protected String m_CustomColumnHeaders
the comma-separated list of column header names.
-
m_FirstRow
protected int m_FirstRow
the first row to retrieve (1-based).
-
m_NumRows
protected int m_NumRows
the number of rows to retrieve (less than 1 = unlimited).
-
-
Method Detail
-
globalInfo
public String globalInfo()
Returns a string describing the object.- Specified by:
globalInfo
in interfaceGlobalInfoSupporter
- Specified by:
globalInfo
in classAbstractOptionHandler
- Returns:
- a description suitable for displaying in the gui
-
defineOptions
public void defineOptions()
Adds options to the internal list of options.- Specified by:
defineOptions
in interfaceOptionHandler
- Overrides:
defineOptions
in classAbstractMultiSheetSpreadSheetReaderWithMissingValueSupport<SheetRange>
-
getDefaultSheetRange
protected SheetRange getDefaultSheetRange()
Returns the default sheet range.- Specified by:
getDefaultSheetRange
in classAbstractMultiSheetSpreadSheetReader<SheetRange>
- Returns:
- the default
-
getFormatDescription
public String getFormatDescription()
Returns a string describing the format (used in the file chooser).- Specified by:
getFormatDescription
in interfaceFileFormatHandler
- Specified by:
getFormatDescription
in interfaceSpreadSheetReader
- Specified by:
getFormatDescription
in classAbstractSpreadSheetReader
- Returns:
- a description suitable for displaying in the file chooser
-
getFormatExtensions
public String[] getFormatExtensions()
Returns the extension(s) of the format.- Specified by:
getFormatExtensions
in interfaceFileFormatHandler
- Specified by:
getFormatExtensions
in interfaceSpreadSheetReader
- Specified by:
getFormatExtensions
in classAbstractSpreadSheetReader
- Returns:
- the extension (without the dot!)
-
getCorrespondingWriter
public SpreadSheetWriter getCorrespondingWriter()
Returns, if available, the corresponding writer.- Specified by:
getCorrespondingWriter
in interfaceSpreadSheetReader
- Returns:
- the writer, null if none available
-
initialize
protected void initialize()
Initializes the members.- Overrides:
initialize
in classAbstractSpreadSheetReader
-
setTextColumns
public void setTextColumns(String value)
Sets the range of columns to treat as text.- Parameters:
value
- the range of columns
-
getTextColumns
public String getTextColumns()
Returns the range of columns to treat as text.- Returns:
- the range of columns
-
textColumnsTipText
public String textColumnsTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
setNoHeader
public void setNoHeader(boolean value)
Sets whether the file contains a header row or not.- Specified by:
setNoHeader
in interfaceNoHeaderSpreadSheetReader
- Parameters:
value
- true if no header row available
-
getNoHeader
public boolean getNoHeader()
Returns whether the file contains a header row or not.- Specified by:
getNoHeader
in interfaceNoHeaderSpreadSheetReader
- Returns:
- true if no header row available
-
noHeaderTipText
public String noHeaderTipText()
Returns the tip text for this property.- Specified by:
noHeaderTipText
in interfaceNoHeaderSpreadSheetReader
- Returns:
- tip text for this property suitable for displaying in the gui
-
setCustomColumnHeaders
public void setCustomColumnHeaders(String value)
Sets the custom headers to use.- Specified by:
setCustomColumnHeaders
in interfaceNoHeaderSpreadSheetReader
- Parameters:
value
- the comma-separated list
-
getCustomColumnHeaders
public String getCustomColumnHeaders()
Returns whether the file contains a header row or not.- Specified by:
getCustomColumnHeaders
in interfaceNoHeaderSpreadSheetReader
- Returns:
- the comma-separated list
-
customColumnHeadersTipText
public String customColumnHeadersTipText()
Returns the tip text for this property.- Specified by:
customColumnHeadersTipText
in interfaceNoHeaderSpreadSheetReader
- Returns:
- tip text for this property suitable for displaying in the gui
-
setFirstRow
public void setFirstRow(int value)
Sets the first row to return.- Specified by:
setFirstRow
in interfaceWindowedSpreadSheetReader
- Parameters:
value
- the first row (1-based), greater than 0
-
getFirstRow
public int getFirstRow()
Returns the first row to return.- Specified by:
getFirstRow
in interfaceWindowedSpreadSheetReader
- Returns:
- the first row (1-based), greater than 0
-
firstRowTipText
public String firstRowTipText()
Returns the tip text for this property.- Specified by:
firstRowTipText
in interfaceWindowedSpreadSheetReader
- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setNumRows
public void setNumRows(int value)
Sets the number of data rows to return.- Specified by:
setNumRows
in interfaceWindowedSpreadSheetReader
- Parameters:
value
- the number of rows, -1 for unlimited
-
getNumRows
public int getNumRows()
Returns the number of data rows to return.- Specified by:
getNumRows
in interfaceWindowedSpreadSheetReader
- Returns:
- the number of rows, -1 for unlimited
-
numRowsTipText
public String numRowsTipText()
Returns the tip text for this property.- Specified by:
numRowsTipText
in interfaceWindowedSpreadSheetReader
- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
getInputType
protected AbstractSpreadSheetReader.InputType getInputType()
Returns how to read the data, from a file, stream or reader.- Specified by:
getInputType
in classAbstractSpreadSheetReader
- Returns:
- how to read the data
-
numericToString
protected String numericToString(String s)
Turns a numeric cell into a string. Tries to use "long" representation if possible.- Parameters:
s
- the string to process- Returns:
- the string representation
-
doReadRange
protected List<SpreadSheet> doReadRange(InputStream in)
Reads the spreadsheet content from the specified file.- Overrides:
doReadRange
in classAbstractMultiSheetSpreadSheetReader<SheetRange>
- Parameters:
in
- the input stream to read from- Returns:
- the spreadsheets or null in case of an error
- See Also:
AbstractSpreadSheetReader.getInputType()
-
main
public static void main(String[] args)
Runs the reader from the command-line. Use the optionAbstractSpreadSheetReader.OPTION_INPUT
to specify the input file. If the optionAbstractSpreadSheetReader.OPTION_OUTPUT
is specified then the read sheet gets output as .csv files in that directory.- Parameters:
args
- the command-line options to use
-
-