public Expression deserializeJsonArray()

in baremaps-core/src/main/java/org/apache/baremaps/vectortile/expression/Expressions.java [465:500]


    public Expression deserializeJsonArray(JsonNode node) {
      var arrayList = new ArrayList<JsonNode>();
      node.elements().forEachRemaining(arrayList::add);
      return switch (arrayList.get(0).asText()) {
        case "literal" -> new Literal(arrayList.get(1).asText());
        case "get" -> new Get(arrayList.get(1).asText());
        case "has" -> new Has(arrayList.get(1).asText());
        case ">" -> new Greater(deserializeJsonNode(arrayList.get(1)),
            deserializeJsonNode(arrayList.get(2)));
        case ">=" -> new GreaterOrEqual(deserializeJsonNode(arrayList.get(1)),
            deserializeJsonNode(arrayList.get(2)));
        case "<" -> new Less(deserializeJsonNode(arrayList.get(1)),
            deserializeJsonNode(arrayList.get(2)));
        case "<=" -> new LessOrEqual(deserializeJsonNode(arrayList.get(1)),
            deserializeJsonNode(arrayList.get(2)));
        case "==" -> new Equal(deserializeJsonNode(arrayList.get(1)),
            deserializeJsonNode(arrayList.get(2)));
        case "!=" -> new NotEqual(deserializeJsonNode(arrayList.get(1)),
            deserializeJsonNode(arrayList.get(2)));
        case "!" -> new Not(deserializeJsonNode(arrayList.get(1)));
        case "all" -> new All(arrayList.stream().skip(1).map(this::deserializeJsonNode).toList());
        case "any" -> new Any(arrayList.stream().skip(1).map(this::deserializeJsonNode).toList());
        case "case" -> new Case(deserializeJsonNode(arrayList.get(1)),
            deserializeJsonNode(arrayList.get(2)),
            deserializeJsonNode(arrayList.get(3)));
        case "coalesce" -> new Coalesce(
            arrayList.stream().skip(1).map(this::deserializeJsonNode).toList());
        case "match" -> new Match(
            deserializeJsonNode(arrayList.get(1)), arrayList.subList(2, arrayList.size() - 1)
                .stream().map(this::deserializeJsonNode).toList(),
            deserializeJsonNode(arrayList.get(arrayList.size() - 1)));
        case "within" -> new Within(deserializeJsonNode(arrayList.get(1)));
        default -> throw new IllegalArgumentException(
            "Unknown expression: " + arrayList.get(0).asText());
      };
    }