/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.datasource.formula.vtable;
import java.util.Arrays;
import java.util.List;
import org.diirt.datasource.formula.FormulaFunction;
import org.diirt.vtype.VString;
import org.diirt.vtype.VStringArray;
import org.diirt.vtype.table.Column;
import org.diirt.vtype.table.VTableFactory;
/**
* Constructs a table column from a string array.
*
* @author carcassi
*/
class ColumnFromVStringArrayFunction implements FormulaFunction {
@Override
public boolean isPure() {
return true;
}
@Override
public boolean isVarArgs() {
return false;
}
@Override
public String getName() {
return "column";
}
@Override
public String getDescription() {
return "Constructs a table column from a string array";
}
@Override
public List<Class<?>> getArgumentTypes() {
return Arrays.<Class<?>>asList(VString.class, VStringArray.class);
}
@Override
public List<String> getArgumentNames() {
return Arrays.asList("columnName", "stringArray");
}
@Override
public Class<?> getReturnType() {
return Column.class;
}
@Override
public Object calculate(final List<Object> args) {
VString name = (VString) args.get(0);
VStringArray data = (VStringArray) args.get(1);
if (name == null || data == null) {
return null;
}
return VTableFactory.column(name.getValue(), data);
}
}