package water.api.schemas3;
import water.api.API;
import water.api.FramesHandler.Frames;
import water.fvec.Frame;
public class FramesV3 extends RequestSchemaV3<Frames, FramesV3> {
// Input fields
@API(help="Name of Frame of interest", json=false)
public KeyV3.FrameKeyV3 frame_id;
@API(help="Name of column of interest", json=false)
public String column;
@API(help="Row offset to return", direction=API.Direction.INOUT)
public long row_offset;
@API(help="Number of rows to return", direction=API.Direction.INOUT)
public int row_count;
@API(help="Column offset to return", direction=API.Direction.INOUT)
public int column_offset;
@API(help="Number of columns to return", direction=API.Direction.INOUT)
public int column_count;
@API(help="Find and return compatible models?", json=false)
public boolean find_compatible_models = false;
@API(help="File output path",json=false)
public String path;
@API(help="Overwrite existing file",json=false)
public boolean force;
@API(help="Number of part files to use (1=single file,-1=automatic)",json=false)
public int num_parts = 1;
@API(help="Job for export file",direction=API.Direction.OUTPUT)
public JobV3 job;
// Output fields
@API(help="Frames", direction=API.Direction.OUTPUT)
public FrameBaseV3[] frames;
@API(help="Compatible models", direction=API.Direction.OUTPUT)
public ModelSchemaV3[] compatible_models;
@API(help="Domains", direction=API.Direction.OUTPUT)
public String[][] domain;
// Non-version-specific filling into the impl
@Override public Frames fillImpl(Frames f) {
super.fillImpl(f);
if (frames != null) {
f.frames = new Frame[frames.length];
int i = 0;
for (FrameBaseV3 frame : this.frames) {
f.frames[i++] = frame._fr;
}
}
return f;
}
@Override
public FramesV3 fillFromImpl(Frames f) {
this.frame_id = new KeyV3.FrameKeyV3(f.frame_id);
this.column = f.column; // NOTE: this is needed for request handling, but isn't really part of state
this.find_compatible_models = f.find_compatible_models;
if (f.frames != null) {
this.frames = new FrameV3[f.frames.length];
int i = 0;
for (Frame frame : f.frames) {
this.frames[i++] = new FrameV3(frame, f.row_offset, f.row_count);
}
}
return this;
}
public FramesV3 fillFromImplWithSynopsis(Frames f) {
this.frame_id = new KeyV3.FrameKeyV3(f.frame_id);
if (f.frames != null) {
this.frames = new FrameSynopsisV3[f.frames.length];
int i = 0;
for (Frame frame : f.frames) {
this.frames[i++] = new FrameSynopsisV3(frame);
}
}
return this;
}
}