private static void processSingleUpdate()

in src/main/java/org/apache/datasketches/server/UpdateHandler.java [193:282]


  private static void processSingleUpdate(final SketchStorage.SketchEntry entry,
                                          final JsonElement data) {
    switch (entry.family_) {
      case UNION:
        assert(entry.type_ != null);
        switch (entry.type_) {
          case FLOAT: case DOUBLE:
            ((Union) entry.sketch_).update(data.getAsDouble());
            break;
          case INT: case LONG:
            ((Union) entry.sketch_).update(data.getAsLong());
            break;
          case STRING: default:
            ((Union) entry.sketch_).update(data.getAsString());
            break;
        }
        break;

      case CPC:
        assert(entry.type_ != null);
        switch (entry.type_) {
          case FLOAT: case DOUBLE:
            ((CpcSketch) entry.sketch_).update(data.getAsDouble());
            break;
          case INT: case LONG:
            ((CpcSketch) entry.sketch_).update(data.getAsLong());
            break;
          case STRING: default:
            ((CpcSketch) entry.sketch_).update(data.getAsString());
            break;
        }
        break;

      case HLL:
        assert(entry.type_ != null);
        switch (entry.type_) {
          case FLOAT: case DOUBLE:
            ((HllSketch) entry.sketch_).update(data.getAsDouble());
            break;
          case INT: case LONG:
            ((HllSketch) entry.sketch_).update(data.getAsLong());
            break;
          case STRING: default:
            ((HllSketch) entry.sketch_).update(data.getAsString());
            break;
        }
        break;

      case KLL:
        ((KllFloatsSketch) entry.sketch_).update(data.getAsFloat());
        break;

      case FREQUENCY:
        if (data.isJsonObject()) {
          final JsonObject inputPair = data.getAsJsonObject();
          if (!inputPair.has(QUERY_PAIR_ITEM_FIELD) || !inputPair.has(QUERY_PAIR_WEIGHT_FIELD)) {
            throw new IllegalArgumentException("Frequent Items input pairs must include both "
                + QUERY_PAIR_ITEM_FIELD + " and " + QUERY_PAIR_WEIGHT_FIELD + " values");
          }
          final String item = inputPair.get(QUERY_PAIR_ITEM_FIELD).getAsString();
          final int weight = inputPair.get(QUERY_PAIR_WEIGHT_FIELD).getAsInt();
          ((ItemsSketch<String>) entry.sketch_).update(item, weight);
        } else {
          ((ItemsSketch<String>) entry.sketch_).update(data.getAsString());
        }
        break;

      case RESERVOIR:
        ((ReservoirItemsSketch<String>) entry.sketch_).update(data.getAsString());
        break;

      case VAROPT:
        if (data.isJsonObject()) {
          final JsonObject inputPair = data.getAsJsonObject();
          if (!inputPair.has(QUERY_PAIR_ITEM_FIELD) || !inputPair.has(QUERY_PAIR_WEIGHT_FIELD)) {
            throw new IllegalArgumentException("VarOpt input pairs must include both "
                + QUERY_PAIR_ITEM_FIELD + " and " + QUERY_PAIR_WEIGHT_FIELD + " values");
          }
          final String item = inputPair.get(QUERY_PAIR_ITEM_FIELD).getAsString();
          final double weight = inputPair.get(QUERY_PAIR_WEIGHT_FIELD).getAsDouble();
          ((VarOptItemsSketch<String>) entry.sketch_).update(item, weight);
        } else {
          ((VarOptItemsSketch<String>) entry.sketch_).update(data.getAsString(), 1.0);
        }
        break;

      default:
        throw new IllegalArgumentException("Unsupported sketch type: " + entry.family_);
    }
  }