package water.api.schemas3;
import hex.Model;
import water.api.*;
import water.api.ModelsHandler.Models;
public class ModelsV3 extends RequestSchemaV3<Models, ModelsV3> {
// Input fields
@API(help="Name of Model of interest", json=false)
public KeyV3.ModelKeyV3 model_id;
@API(help="Return potentially abridged model suitable for viewing in a browser", json=false, required=false, direction=API.Direction.INPUT)
public boolean preview = false;
@API(help="Find and return compatible frames?", json=false, direction=API.Direction.INPUT)
public boolean find_compatible_frames = false;
// Output fields
@API(help="Models", direction=API.Direction.OUTPUT)
public ModelSchemaBaseV3[] models;
@API(help="Compatible frames", direction=API.Direction.OUTPUT)
public FrameV3[] compatible_frames; // TODO: FrameBaseV3
// Non-version-specific filling into the impl
@Override
public Models fillImpl(Models m) {
super.fillImpl(m);
if (null != models) {
m.models = new Model[models.length];
int i = 0;
for (ModelSchemaBaseV3 model : this.models) {
m.models[i++] = (Model)model.createImpl();
}
}
return m;
}
@Override
public ModelsV3 fillFromImpl(Models m) {
// TODO: this is failing in PojoUtils with an IllegalAccessException. Why? Different class loaders?
// PojoUtils.copyProperties(this, m, PojoUtils.FieldNaming.CONSISTENT);
// Shouldn't need to do this manually. . .
this.model_id = new KeyV3.ModelKeyV3(m.model_id);
this.find_compatible_frames = m.find_compatible_frames;
if (null != m.models) {
this.models = new ModelSchemaBaseV3[m.models.length];
int i = 0;
for (Model model : m.models) {
this.models[i++] = (ModelSchemaV3)SchemaServer.schema(this.getSchemaVersion(), model).fillFromImpl(model);
}
}
return this;
}
public ModelsV3 fillFromImplWithSynopsis(Models m) {
this.model_id = new KeyV3.ModelKeyV3(m.model_id);
if (null != m.models) {
this.models = new ModelSchemaBaseV3[m.models.length];
int i = 0;
for (Model model : m.models) {
this.models[i++] = new ModelSynopsisV3(model);
}
}
return this;
}
}