package de.tud.inf.example.table;
import com.rapidminer.example.Attribute;
import com.rapidminer.example.table.DataRow;
import de.tud.inf.example.set.attributevalues.ArrayValue;
import de.tud.inf.example.set.attributevalues.ComplexValue;
import de.tud.inf.example.set.attributevalues.ComplexValueFactory;
/**
*
* manages (2)-dimensional arrays where inner and outer dimensions can change for each example, or can be static
* @author Antje Gruner
*
*/
public class ArrayAttribute extends ComplexProxyAttribute{
/**
*
*/
private static final long serialVersionUID = -3660839071790466716L;
private Attribute dim1;
private Attribute dim2;
public ArrayAttribute(String name, int valueType,
RelationalAttribute innerAttribute, String hint, Attribute dim1, Attribute dim2) {
super(name, valueType, innerAttribute, hint);
this.dim1 = dim1;
this.dim2 = dim2;
}
public ArrayAttribute(ArrayAttribute a){
super(a);
this.dim1 = a.dim1;
this.dim2 = a.dim2;
}
@Override
public ComplexValue getComplexValue(DataRow row) {
ArrayValue mv = (ArrayValue)ComplexValueFactory.getComplexValueFunction(1, getValueType(), this.getHint());
double[][] values = row.getRelativeValuesFor(this.innerAttribute.getTableIndex());
int x = (int)row.get(dim1);
int y = (int)row.get(dim2);
mv.setValues( x,y,values);
return null;
}
@Override
public int getParameterCount() {
return 2;
}
@Override
public void setComplexValue(DataRow row, ComplexValue value) {
// TODO Auto-generated method stub
}
@Override
public Object clone() {
return new ArrayAttribute(this);
}
}