@Override public JSONObject serialize(PartialExecution pe) { return new JSONObject() .put("millis", pe.measuredExecutionTime) .put("lowerCost", pe.lowerCost) .put("upperCost", pe.upperCost) .put("execGroups", JsonSerializables.serializeAll( pe.atomicExecutionGroups, false, new AtomicExecutionGroup.Serializer(this.configuration)) ) .putOpt( "initPlatforms", JsonSerializables.serializeAll(pe.initializedPlatforms, true, Platform.jsonSerializer) ); }
@Override public JSONObject serialize(AtomicExecutionGroup aeg) { AtomicExecution.KeyOrLoadSerializer atomicExecutionSerializer = new AtomicExecution.KeyOrLoadSerializer(null, aeg.estimationContext); return new JSONObject() .put("ctx", JsonSerializables.serialize(aeg.estimationContext, false, EstimationContext.defaultSerializer)) .put("platform", JsonSerializables.serialize(aeg.platform, true, Platform.jsonSerializer)) .put("executions", JsonSerializables.serializeAll(aeg.atomicExecutions, false, atomicExecutionSerializer)); }
@Override public JSONObject serialize(EstimationContext ctx) { JSONObject doubleProperties = new JSONObject(); for (String key : ctx.getPropertyKeys()) { double value = ctx.getDoubleProperty(key, 0); doubleProperties.put(key, value); } if (doubleProperties.length() == 0) doubleProperties = null; return new JSONObject() .put("inCards", JsonSerializables.serializeAll(Arrays.asList(ctx.getInputCardinalities()), false)) .put("outCards", JsonSerializables.serializeAll(Arrays.asList(ctx.getOutputCardinalities()), false)) .put("executions", ctx.getNumExecutions()) .putOpt("properties", doubleProperties); }