package org.reldb.rel.client;
import java.util.Vector;
public class Tuple extends Value {
private Vector<String> attributeNames = new Vector<String>();
private Vector<Value> attributeValues = new Vector<Value>();
Tuple() {}
void addAttributeName(String name) {
attributeNames.add(name);
}
void addValue(Value value, boolean b) {
attributeValues.add(value);
}
/** Get quantity of attributes in this Tuple. */
public int getAttributeCount() {
return attributeValues.size();
}
/** Get ith attribute name. */
public String getAttributeName(int i) {
return attributeNames.get(i);
}
/** Get ith attribute value. */
public Value getAttributeValue(int i) {
return attributeValues.get(i);
}
/** Get index of a given attribute name. -1 if not found. */
public int getIndexOf(String name) {
return attributeNames.indexOf(name);
}
/** Get attribute Value for given attribute Name. Return null if not found. */
public Value getAttributeValue(String name) {
int index = getIndexOf(name);
if (index < 0)
return null;
return getAttributeValue(index);
}
/** Shortcut for getAttributeValue */
public Value get(int i) {
return getAttributeValue(i);
}
/** Shortcut for getAttributeValue */
public Value get(String name) {
return getAttributeValue(name);
}
/** True if this is the end-of-list Tuple in a set of TupleS. */
public boolean isNull() {
return false;
}
public int toInt() throws InvalidValueException, NumberFormatException {
throw new InvalidValueException("Tuple can't be cast to int.");
}
public long toLong() throws InvalidValueException, NumberFormatException {
throw new InvalidValueException("Tuple can't be cast to long.");
}
public double toDouble() throws InvalidValueException, NumberFormatException {
throw new InvalidValueException("Tuple can't be cast to double.");
}
public float toFloat() throws InvalidValueException, NumberFormatException {
throw new InvalidValueException("Tuple can't be cast to float.");
}
public boolean toBoolean() throws InvalidValueException {
throw new InvalidValueException("Tuple can't be cast to boolean.");
}
public String toString(int depth) {
String tuples = "";
for (int i=0; i<getAttributeCount(); i++) {
if (tuples.length() > 0)
tuples += ", ";
tuples += getAttributeName(i) + " " + getAttributeValue(i).toString(depth + 1);
}
return "TUPLE {" + tuples + "}";
}
public String toString() {
return toString(0);
}
public String toCSV() {
String line = "";
for (int i=0; i<getAttributeCount(); i++) {
if (line.length() > 0)
line += ",";
line += "\"" + getAttributeValue(i).toString().replaceAll("\"", "\"\"") + "\"";
}
return line;
}
}