1 package info.globalcode.sql.dk;
3 import static info.globalcode.sql.dk.Functions.isNotEmpty;
4 import java.util.ArrayList;
5 import java.util.Collection;
10 * @author Ing. František Kučera (frantovo.cz)
12 public class CLIOptions {
15 private String databaseName;
16 private boolean batch;
25 public enum COMMAND_TYPE {
29 /** INSERT, UPDATE, DELETE */
32 private COMMAND_TYPE commandType;
33 private final Collection<NamedParameter> namedParameters = new ArrayList<>();
34 private final List<Parameter> numberedParameters = new ArrayList<>();
36 public void validate() throws InvalidOptionsException {
37 InvalidOptionsException e = new InvalidOptionsException();
39 if (getMode() == null) {
40 e.addProblem(new InvalidOptionsException.OptionProblem("Invalid combination of DB, SQL and BATCH – please specify just 2 of this 3 options"));
43 if (!namedParameters.isEmpty() && !numberedParameters.isEmpty()) {
44 e.addProblem(new InvalidOptionsException.OptionProblem("Named and numbered parameters can not be used together in one command."));
48 if (e.hasProblems()) {
53 private boolean hasSql() {
54 return isNotEmpty(getSql(), true);
57 private boolean hasDb() {
58 return isNotEmpty(getDatabaseName(), true);
62 * Depends on options: DB, BATCH, SQL
64 * @return mode | or null if options are not yet initialized or combination of options is
67 public MODE getMode() {
68 if (hasDb() && !batch && hasSql()) {
69 return MODE.QUERY_NOW;
70 } else if (!hasDb() && batch && hasSql()) {
71 return MODE.PREPARE_BATCH;
72 } else if (hasDb() && batch && !hasSql()) {
73 return MODE.EXECUTE_BATCH;
79 public String getSql() {
83 public void setSql(String sql) {
87 public String getDatabaseName() {
91 public void setDatabaseName(String databaseName) {
92 this.databaseName = databaseName;
95 public void setBatch(boolean batch) {
99 public COMMAND_TYPE getCommandType() {
103 public void setCommandType(COMMAND_TYPE commandType) {
104 this.commandType = commandType;
107 public Collection<NamedParameter> getNamedParameters() {
108 return namedParameters;
111 public List<Parameter> getNumberedParameters() {
112 return numberedParameters;
115 public void addNumberedParameter(Parameter p) {
116 numberedParameters.add(p);
119 public void addNamedParameter(NamedParameter p) {
120 namedParameters.add(p);