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

net.dongliu.dbutils.sqlbuilder.HubNode Maven / Gradle / Ivy

There is a newer version: 6.0.2
Show newest version
package net.dongliu.dbutils.sqlbuilder;

import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

/**
 * SQL node to hold other nodes
 *
 * @author Liu Dong
 */
public class HubNode extends SQLNode implements BuilderMixin {
    private final List nodes = new ArrayList<>();

    protected HubNode() {
    }

    void addNode(SQLNode node) {
        nodes.add(node);
    }

    @Nonnull
    @Override
    protected SQLSegment segment() {
        List clauses = new ArrayList<>();
        List params = new ArrayList<>();
        for (SQLNode node : nodes) {
            SQLSegment segment = node.segment();
            List iClauses = segment.getClauses();
            List iParams = segment.getParams();
            clauses.addAll(iClauses);
            params.addAll(iParams);
        }
        return new SQLSegment(clauses, params);
    }


    @Override
    public HubNode hubNode() {
        return this;
    }

    @Override
    public HubNode self() {
        return this;
    }

    /**
     * Build dynamic where
     */
    @SafeVarargs
    public final HubNode whereAllEquals(Map.Entry... equalConditions) {
        return whereAllEquals(Arrays.asList(equalConditions));
    }

    /**
     * Build dynamic set
     */
    @SafeVarargs
    public final HubNode setAll(Map.Entry... setValues) {
        return setAll(Arrays.asList(setValues));
    }

    /**
     * Combine insert into and values
     */
    @SafeVarargs
    public final HubNode insertValues(String table, Map.Entry... values) {
        return insertValues(table, Arrays.asList(values));
    }
}