package de.tud.inf.example.table;
import java.util.LinkedList;
import java.util.List;
import com.rapidminer.example.Attribute;
import com.rapidminer.example.table.AbstractAttribute;
import com.rapidminer.example.table.DataRow;
import com.rapidminer.example.table.NominalMapping;
public class RelationalAttribute extends AbstractAttribute{
/**
*
*/
private static final long serialVersionUID = -2873557998011692767L;
private List<Attribute> innerAttributes = new LinkedList<Attribute>();
RelationalAttribute(RelationalAttribute attribute) {
super(attribute);
}
public RelationalAttribute(String name, int valueType) {
super(name, valueType);
}
@Override
public Object clone() {
// TODO Auto-generated method stub
return null;
}
public String getAsString(double value, int digits, boolean quoteWhitespace) {
return "NA";
}
public NominalMapping getMapping() {
return null;
}
public boolean isComplex() {
return false;
}
public boolean isNominal() {
return false;
}
public boolean isNumerical() {
return false;
}
public boolean isRelational() {
return true;
}
public void setInnerAttributes(List<Attribute> innerAttributes){
this.innerAttributes = innerAttributes;
}
public Attribute getInnerAttributeAt(int id){
return innerAttributes.get(id);
}
public List<Attribute> getInnerAttributes(){
return innerAttributes;
}
public int getInnerAttributeCount(){
return innerAttributes.size();
}
/**
* creates one tuple instance with values = value and stores it in relationalValueMap of this DataRow
*/
public void setValue(DataRow row, double value) {
double[][] values = new double[1][this.innerAttributes.size()];
for(int i =0;i<values.length;i++)
values[0][i] = value;
row.setRelationalValues(getTableIndex(), values);
}
/**
* this method is never used at the moment
* @param row
* @return
*/
public double[][] getRelationalValue(DataRow row){
return row.getRelativeValuesFor(this.getTableIndex());
}
/**
*
* @param row
* @return
*/
public void setRelationalValue(DataRow row, double[][] values){
row.setRelationalValues(getTableIndex(),values);
}
public void setMapping(NominalMapping nominalMapping) {
throw new UnsupportedOperationException();
}
public void addInnerAttribute(Attribute att){
this.innerAttributes.add(att);
}
}