package water.api;
import java.util.*;
import dontweave.gson.*;
import water.DKV;
import water.Key;
import water.Request2;
import water.H2O;
import water.Value;
import water.Iced;
import water.fvec.Frame;
import water.util.Log;
public class ModelMetrics extends Request2 {
///////////////////////
// Request2 boilerplate
///////////////////////
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.
// This Request supports the HTML 'GET' command, and this is the help text
// for GET.
static final String DOC_GET = "Return the list of model metrics.";
public static String link(Key k, String content){
return "<a href='/2/ModelMetrics'>" + content + "</a>";
}
////////////////
// Query params:
////////////////
@API(help="An existing H2O ModelMetrics key.", required=false, filter=Default.class)
water.ModelMetrics key = null;
@API(help="Expand the referenced Model and Frame objects.", required=false, filter=Default.class)
boolean expand_references = false;
/////////////////
// The Code (tm):
/////////////////
public static final Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().setPrettyPrinting().create();
/**
* Fetch all ModelMetrics from the KV store.
*/
protected static List<water.ModelMetrics>fetchAll() {
return new ArrayList<water.ModelMetrics>(H2O.KeySnapshot.globalSnapshot().fetchAll(water.ModelMetrics.class).values());
}
/**
* For one or more water.ModelMetrics from the KV store return Response containing a map of them.
*/
private Response serveOneOrAll(List<water.ModelMetrics> list) {
JsonArray metricsArray = new JsonArray();
for (water.ModelMetrics metrics : list) {
JsonObject metricsJson = metrics.toJSON();
metricsArray.add(metricsJson);
}
JsonObject result = new JsonObject();
result.add("metrics", metricsArray);
return Response.done(result);
}
@Override
protected Response serve() {
if (null == this.key) {
return serveOneOrAll(fetchAll());
} else {
// just serve it
water.ModelMetrics mm = this.key;
List<water.ModelMetrics> list = new ArrayList();
list.add(mm);
return serveOneOrAll(list);
}
} // serve()
} // class Frames