at.spardat.xma.datasource.TabularDataRow Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2003, 2007 s IT Solutions AT Spardat GmbH .
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* s IT Solutions AT Spardat GmbH - initial API and implementation
*******************************************************************************/
// @(#) $Id: TabularDataRow.java 2089 2007-11-28 13:56:13Z s3460 $
package at.spardat.xma.datasource;
import java.util.ArrayList;
import at.spardat.xma.mdl.Atom;
/**
* A TabularDataRow stores the data for a row of a
* TabularData.
*/
public class TabularDataRow {
TabularData tabularData;
ArrayList data;
/**
* Creates a TabularDataRow for a TabularData.
*
* @param aTabularData - The TabularData for which the row is
* created.
*/
public TabularDataRow(TabularData aTabularData) {
tabularData = aTabularData;
}
/**
* Adds a column and sets the value for this column.
*
* @param value - The value for the column.
*/
public void add(Atom value) {
if (value == null) {
throw new IllegalArgumentException("Null not allowed.");
}
if (data == null) {
data = new ArrayList();
}
if (data.size() >= tabularData.header.size()) {
throw new IndexOutOfBoundsException("Column does not exist.");
}
data.add(value);
}
/**
* Fill empty columns of this row with values. All columns which have
* already values are not modified. These columns filled are with Atoms
* of the type "Types.T_STRING" and the values are empty strings.
*
*/
private void expandToFullSize() {
if (data == null) {
data = new ArrayList();
}
for (int col = data.size(); col < tabularData.numCols(); col++) {
data.add (Atom.EMPTY_STRING);
}
}
/**
* Sets the value for the column with a given index.
*
* @param col - The index of the column.
* @param value - The value to be set.
*/
public void set(int col, Atom value) {
if (value == null) {
throw new IllegalArgumentException("Null not allowed.");
}
if (data == null || data.size() <= col) {
expandToFullSize();
}
data.set(col, value);
}
/**
* Sets the value for a column with a given name.
*
* @param colName - The name of the column.
* @param value - The value for the column.
*/
public void set(String colName, Atom value) {
int col = tabularData.getColumnIndex(colName);
set(col, value);
}
/**
* Returns the value of this row for the column with a given column-index.
*
* @param col - The index of the column.
* @return non null Atom.
* @exception IllegalArgumentException if col greater than
* or equal to the number of columns in the table.
*/
public Atom get (int col) {
if (col < 0) throw new IllegalArgumentException();
if (col < data.size()) return (Atom) data.get(col);
if (col < tabularData.numCols()) return Atom.EMPTY_STRING;
throw new IllegalArgumentException();
}
/**
* Returns the value for a column with a given name.
*
* @param colName - The name of the column.
*/
public Atom get(String colName) {
int col = tabularData.getColumnIndex(colName);
return get(col);
}
/**
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
if (data == null) return 5;
return data.hashCode();
}
/**
* Returns the number of Atoms in this.
*/
public int size () {
return data == null ? 0 : data.size();
}
}