package water.rapids;
import water.H2O;
import water.Key;
import water.Keyed;
import water.fvec.Frame;
import water.rapids.transforms.Transform;
/**
* Assemblies are essentially Pipelines.
* TODO: add in/out col names, in/out col types
*/
public class Assembly extends Keyed<Assembly> {
private Transform[] _steps;
public Assembly(Key key, Transform[] steps) {
super(key);
_steps = steps;
}
public String[] names() {
String[] names = new String[_steps.length];
for (int i = 0; i < names.length; ++i)
names[i] = _steps[i].name();
return names;
}
public Transform[] steps() {
return _steps;
}
public Frame fit(Frame f) {
for (Transform step: _steps)
f = step.fitTransform(f);
return f;
}
public String toJava(String pojoName) {
if (pojoName == null) pojoName = "GeneratedMungingPojo";
StringBuilder sb = new StringBuilder(
"import hex.genmodel.GenMunger;\n"+
"import hex.genmodel.easy.RowData;\n\n" +
"public class " + pojoName + " extends GenMunger {\n"+
" public " + pojoName + "() {\n"+
" _steps = new Step[" + _steps.length + "];\n"
);
int i=0;
for (Transform step: _steps)
sb.append(" _steps[").append(i++).append("] = new ").append(step.name()).append("();\n");
sb.append(" }\n");
for (Transform step: _steps)
sb.append(step.genClass());
sb.append("}\n");
return sb.toString();
}
@Override protected long checksum_impl() {
throw H2O.unimpl();
}
}