All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.horizon.util.CFind Maven / Gradle / Ivy

The newest version!
package io.horizon.util;

import io.horizon.eon.VValue;
import io.horizon.fn.HFn;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;

import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.function.Predicate;

/**
 * @author lang : 2023/4/30
 */
class CFind {
    static JsonObject find(final JsonArray array, final String field, final Object value) {
        return HUt.itJArray(array).filter(item -> {
            if (Objects.isNull(value)) {
                return Objects.isNull(item.getValue(field));
            } else {
                return value.equals(item.getValue(field));
            }
        }).findAny().orElse(null);
    }

    static JsonObject find(final JsonArray array, final JsonObject subsetQ) {
        return HUt.itJArray(array).filter(item -> {
            final Set keys = subsetQ.fieldNames();
            final JsonObject subset = HUt.elementSubset(item, keys);
            return subset.equals(subsetQ);
        }).findAny().orElse(new JsonObject());
    }

    static  T find(final List list, final Predicate fnFilter) {
        return HFn.runOr(() -> {
            final List filtered = list.stream().filter(fnFilter).toList();
            return HFn.runOr(filtered.isEmpty(),
                () -> null,
                () -> filtered.get(VValue.IDX));
        }, list, fnFilter);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy