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

fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest Maven / Gradle / Ivy

The newest version!
package fr.ird.observe.services.service.sql;

/*-
 * #%L
 * ObServe Toolkit :: Common Service
 * %%
 * Copyright (C) 2017 - 2020 IRD, Ultreia.io
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public
 * License along with this program.  If not, see
 * .
 * #L%
 */

import com.google.common.base.MoreObjects;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimaps;
import fr.ird.observe.dto.ObserveDto;
import fr.ird.observe.dto.reference.ReferentialDtoReference;
import org.nuiton.version.Version;

import java.util.Set;

/**
 * Created on 31/12/15.
 *
 * @author Tony Chemit - [email protected]
 */
public class AddSqlScriptProducerRequest implements ObserveDto {

    private final boolean postgres;
    private final Version dbVersion;

    private boolean addSchema;
    private boolean addReferential;
    private boolean addSomeReferential;
    private boolean addData;
    private ImmutableSet dataIds;
    private final ArrayListMultimap, String> referentialIds = ArrayListMultimap.create();

    public static AddSqlScriptProducerRequest forH2(Version dbVersion) {
        return new AddSqlScriptProducerRequest(false, dbVersion);
    }

    public static AddSqlScriptProducerRequest forPostgres(Version dbVersion) {
        return new AddSqlScriptProducerRequest(true, dbVersion);
    }

    public AddSqlScriptProducerRequest addSchema() {
        addSchema = true;
        return this;
    }

    public AddSqlScriptProducerRequest addReferential() {
        addReferential = true;
        return this;
    }

    public AddSqlScriptProducerRequest addAllData() {
        addData = true;
        return this;
    }

    public AddSqlScriptProducerRequest dataIdsToAdd(ImmutableSet dataIds) {
        addData = true;
        this.dataIds = dataIds;
        return this;
    }

    public  AddSqlScriptProducerRequest referentialIdsToAdd(Class referentialType, Set referentialIds) {
        addSomeReferential = true;
        this.referentialIds.putAll(referentialType, referentialIds);
        return this;
    }

    public boolean isAddSchema() {
        return addSchema;
    }

    public boolean isAddSomeReferential() {
        return addSomeReferential;
    }

    public boolean isAddReferential() {
        return addReferential;
    }

    public Version getDbVersion() {
        return dbVersion;
    }

    protected AddSqlScriptProducerRequest(boolean postgres, Version dbVersion) {
        this.postgres = postgres;
        this.dbVersion = dbVersion;
    }

    public boolean isAddData() {
        return addData;
    }

    public ImmutableSet getDataIds() {
        return dataIds;
    }

    public ListMultimap, String> getReferentialIds() {
        return Multimaps.unmodifiableListMultimap(referentialIds);
    }

    public boolean isH2() {
        return !postgres;
    }

    public boolean isPostgres() {
        return postgres;
    }

    @Override
    public String toString() {
        return MoreObjects.toStringHelper(this)
                .add("postgres", postgres)
                .add("addSchema", addSchema)
                .add("addReferential", addReferential)
                .add("addSomeReferential", addSomeReferential)
                .add("addData", addData)
                .add("dataIds", dataIds == null ? "" : "[" + String.join(", ", dataIds) + "]")
                .add("referentialIds", referentialIds.isEmpty() ? "" : "[" + String.join(", ", referentialIds.values()) + "]")
                .toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy