private static void processBatchUpdate()

in src/main/java/org/apache/datasketches/server/UpdateHandler.java [97:190]


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

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

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

      case KLL:
        for (final JsonElement e : data) { ((KllFloatsSketch) entry.sketch_).update(e.getAsFloat()); }
        break;

      case FREQUENCY:
        for (final JsonElement e : data) {
          if (e.isJsonObject()) {
            final JsonObject inputPair = e.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(e.getAsString());
          }
        }
        break;

      case RESERVOIR:
        for (final JsonElement e : data) { ((ReservoirItemsSketch<String>) entry.sketch_).update(e.getAsString()); }
        break;

      case VAROPT:
        for (final JsonElement e : data) {
          if (e.isJsonObject()) {
            final JsonObject inputPair = e.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(e.getAsString(), 1.0);
          }
        }
        break;

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