
org.nuiton.topia.service.sql.batch.actions.AbstractSqlRequest Maven / Gradle / Ivy
package org.nuiton.topia.service.sql.batch.actions;
/*
* #%L
* ObServe Toolkit :: ToPIA Extension
* %%
* Copyright (C) 2008 - 2017 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.Preconditions;
import java.io.Writer;
import org.nuiton.topia.persistence.TopiaApplicationContext;
/**
* Support to create action request.
*
* Created on 29/12/15.
*
* @author Tony Chemit - [email protected]
* @since 3.0.1
*/
public abstract class AbstractSqlRequest {
protected TopiaApplicationContext sourceTopiaApplicationContext;
protected TopiaApplicationContext targetTopiaApplicationContext;
protected Writer writer;
public TopiaApplicationContext getTargetTopiaApplicationContext() {
return targetTopiaApplicationContext;
}
protected void setTargetTopiaApplicationContext(TopiaApplicationContext targetTopiaApplicationContext) {
this.targetTopiaApplicationContext = targetTopiaApplicationContext;
}
public TopiaApplicationContext getSourceTopiaApplicationContext() {
return sourceTopiaApplicationContext;
}
protected void setSourceTopiaApplicationContext(TopiaApplicationContext sourceTopiaApplicationContext) {
this.sourceTopiaApplicationContext = sourceTopiaApplicationContext;
}
public Writer getWriter() {
return writer;
}
protected void setWriter(Writer writer) {
this.writer = writer;
}
public static abstract class AbstractSqlRequestBuilder {
protected final R request;
protected AbstractSqlRequestBuilder(R request) {
this.request = request;
}
public B from(TopiaApplicationContext sourceTopiaApplicationContext) {
request.setSourceTopiaApplicationContext(sourceTopiaApplicationContext);
return returnThis();
}
public B to(TopiaApplicationContext targetTopiaApplicationContext) {
request.setTargetTopiaApplicationContext(targetTopiaApplicationContext);
return returnThis();
}
public B to(Writer writer) {
request.setWriter(writer);
return returnThis();
}
public R build() {
checkParams();
return request;
}
protected void checkParams() {
Preconditions.checkState(request.getSourceTopiaApplicationContext() != null, "No sourceTopiaApplicationContext defined");
Preconditions.checkState(request.getWriter() != null || request.getTargetTopiaApplicationContext() != null, "No targetTopiaApplicationContext, nor writer defined");
}
protected B returnThis() {
return (B) this;
}
}
}