package water.api;
import water.*;
import water.fvec.Frame;
import water.util.Log;
import water.util.RString;
public class OneHot extends Request2 {
static final int API_WEAVER = 1; // This file has auto-gen'd doc & json fields
static public DocGen.FieldDoc[] DOC_FIELDS; // Initialized from Auto-Gen code.
@API(help = "Data frame", required = true, filter = Default.class)
public Frame source;
@API(help = "Destination key", required = false, filter = Default.class)
protected final Key destination_key = Key.make("__OneHot_" + Key.make());
@API(help = "Ignored columns by name and zero-based index", filter=colsNamesIdxFilter.class, displayName="Ignored columns")
public int[] ignored_cols = new int[0];
class colsNamesIdxFilter extends MultiVecSelect { public colsNamesIdxFilter() {super("source", MultiVecSelectType.NAMES_THEN_INDEXES); } }
// public static String link(Key k, String content) {
// RString rs = new RString("<a href='OneHot.html?source=%$key'>%content</a>");
// rs.replace("key", k.toString());
// rs.replace("content", content);
// return rs.toString();
// }
@Override protected Response serve() {
try {
Frame fr = new Frame(destination_key,source._names.clone(),source.vecs().clone()).delete_and_lock(null);
fr.remove(ignored_cols);
Frame oneHotFrame = hex.OneHot.expandDataset(fr,destination_key);
for (int i : ignored_cols) oneHotFrame.add(source._names[i], source.vecs()[i]);
oneHotFrame.unlock(null);
} catch( Throwable t ) {
return Response.error(t);
}
return Inspect2.redirect(this, destination_key.toString());
}
}