package water.api;
import water.Request2;
import water.fvec.Frame;
import water.fvec.Vec;
import water.util.Log;
public class ToInt2 extends Request2 {
@Override public RequestServer.API_VERSION[] supportedVersions() { return SUPPORTS_ONLY_V2; }
@Override protected void registered(RequestServer.API_VERSION version) { super.registered(version); }
@API(help="An existing H2O Frame key.", required=true, filter=Default.class)
public Frame src_key;
@API(help="The column index to perform the factorization on.", required = true, filter=Default.class)
public int column_index;
@Override
protected Response serve() {
try {
if (column_index <= 0 || column_index > src_key.numCols()) throw new IllegalArgumentException("Column index is 1 based. Please supply a valid column index in the range [1,"+ src_key.numCols()+"]");
Log.info("Integerizing column " + column_index);
Vec nv;
if ((nv= src_key.vecs()[column_index-1].masterVec()) == null) {
assert src_key.vecs()[column_index-1].isInt();
nv = src_key.vecs()[column_index-1];
nv._domain = null;
} else {
assert src_key.vecs()[column_index - 1].masterVec().isInt();
nv = src_key.vecs()[column_index - 1].masterVec();
}
src_key.replace(column_index - 1, nv);
} catch( Throwable e ) {
return Response.error(e);
}
return Inspect2.redirect(this, src_key._key.toString());
}
}