silentbalanceyh/vertx-zero

View on GitHub
vertx-gaia/vertx-ams/src/main/modeler/io/modello/atom/normalize/RDao.java

Summary

Maintainability
A
55 mins
Test Coverage
package io.modello.atom.normalize;

import io.vertx.core.Future;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;

import java.util.Objects;
import java.util.function.Function;

/**
 * ##「Pojo」DataAtom Key Replaced
 *
 * @author <a href="http://www.origin-x.cn">Lang</a>
 */
public class RDao {
    /**
     * Source identifier that has been mapped `source` field of `M_ATTRIBUTE`.
     */
    private final String source;

    private Function<JsonObject, JsonArray> actionS;

    private Function<JsonObject, Future<JsonArray>> actionA;

    public RDao(final String source) {
        this.source = source;
    }

    public RDao actionS(final Function<JsonObject, JsonArray> executor) {
        this.actionS = executor;
        return this;
    }

    public RDao actionA(final Function<JsonObject, Future<JsonArray>> executor) {
        this.actionA = executor;
        return this;
    }

    public JsonArray fetchBy(final JsonObject condition) {
        return Objects.requireNonNull(this.actionS).apply(condition);
    }

    public Future<JsonArray> fetchByAsync(final JsonObject condition) {
        return Objects.requireNonNull(this.actionA).apply(condition);
    }

    @Override
    public boolean equals(final Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || this.getClass() != o.getClass()) {
            return false;
        }
        final RDao rDao = (RDao) o;
        return this.source.equals(rDao.source);
    }

    @Override
    public int hashCode() {
        return Objects.hash(this.source);
    }
}