/* * Copyright 2013-2015 Cenote GmbH. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.cenote.jasperstarter; import de.cenote.jasperstarter.types.AskFilter; import de.cenote.jasperstarter.types.DsType; import de.cenote.jasperstarter.types.Dest; import de.cenote.jasperstarter.types.OutputFormat; import java.io.File; import java.io.IOException; import java.util.List; import java.util.Locale; import java.util.Properties; import net.sourceforge.argparse4j.annotation.Arg; import org.apache.commons.lang.LocaleUtils; /** * This POJO is intended to contain all command line parameters and other * configuration values. * * @author Volker Voßkämper <vvo at cenote.de> * @version $Revision$ */ public class Config { Properties applicationProperties; String versionString; // argparse4j arguments @Arg(dest = Dest.ASK) AskFilter askFilter; @Arg(dest = Dest.COMMAND) String command; @Arg(dest = Dest.DB_DRIVER) String dbDriver; @Arg(dest = Dest.DB_HOST) String dbHost; @Arg(dest = Dest.DB_NAME) String dbName; @Arg(dest = Dest.DB_PASSWD) String dbPasswd; @Arg(dest = Dest.DB_PORT) Integer dbPort; @Arg(dest = Dest.DB_SID) String dbSid; @Arg(dest = Dest.DS_TYPE) DsType dbType; @Arg(dest = Dest.DB_URL) String dbUrl; @Arg(dest = Dest.DB_USER) String dbUser; @Arg(dest = Dest.DEBUG) boolean verbose; @Arg(dest = Dest.INPUT) String input; @Arg(dest = Dest.JDBC_DIR) File jdbcDir; @Arg(dest = Dest.DATA_FILE) File dataFile; @Arg(dest = Dest.CSV_FIRST_ROW) boolean csvFirstRow; @Arg(dest = Dest.CSV_COLUMNS) String csvColumns; @Arg(dest = Dest.CSV_RECORD_DEL) String csvRecordDel; @Arg(dest = Dest.CSV_FIELD_DEL) String csvFieldDel; //representing a char @Arg(dest = Dest.CSV_CHARSET) String csvCharset; @Arg(dest = Dest.XML_XPATH) String xmlXpath; @Arg(dest = Dest.JSON_QUERY) String jsonQuery; @Arg(dest = Dest.LOCALE) String locale; @Arg(dest = Dest.OUTPUT) String output; @Arg(dest = Dest.OUTPUT_FORMATS) List<OutputFormat> outputFormats; @Arg(dest = Dest.PARAMS) List<String> params; @Arg(dest = Dest.PRINTER_NAME) String printerName; @Arg(dest = Dest.REPORT_NAME) String reportName; @Arg(dest = Dest.RESOURCE) String resource; @Arg(dest = Dest.WITH_PRINT_DIALOG) boolean withPrintDialog; @Arg(dest = Dest.WRITE_JASPER) boolean writeJasper; @Arg(dest = Dest.COPIES) Integer copies; @Arg(dest = Dest.OUT_FIELD_DEL) String outFieldDel; @Arg(dest = Dest.OUT_CHARSET) String outCharset; // end of argparse4j arguments /** * * */ Config() { String jasperStarterVersion = ""; String jasperStarterRevision = ""; jasperStarterVersion = this.getClass().getPackage().getSpecificationVersion(); jasperStarterRevision = this.getClass().getPackage().getImplementationVersion(); String jasperReportsVersion = ""; try { jasperReportsVersion = Package.getPackage("net.sf.jasperreports.engine"). getImplementationVersion(); } catch (NullPointerException e) { // ignore NullPointerException while running TestNG // @todo: solve problem in test } StringBuffer sb = new StringBuffer("JasperStarter ").append(jasperStarterVersion) .append(" Rev ").append(jasperStarterRevision).append("\n") .append(" - JasperReports: ").append(jasperReportsVersion); versionString = sb.toString(); } /** * * @return JasperStarter version string including JasperReports library * version */ public String getVersionString() { return versionString; } // argparse4j argument getters public AskFilter getAskFilter() { return askFilter; } public boolean hasAskFilter() { if (askFilter != null) { return true; } else { return false; } } public String getCommand() { return command; } public String getDbDriver() { return dbDriver; } public String getDbHost() { return dbHost; } public String getDbName() { return dbName; } public String getDbPasswd() { return dbPasswd; } public Integer getDbPort() { return dbPort; } public String getDbSid() { return dbSid; } public DsType getDbType() { return dbType; } public boolean hasDbType() { if (dbType != null) { return true; } else { return false; } } public String getDbUrl() { return dbUrl; } public String getDbUser() { return dbUser; } public boolean isVerbose() { return verbose; } public String getInput() { return input; } public File getJdbcDir() { return jdbcDir; } public boolean hasJdbcDir() { if (jdbcDir != null && !jdbcDir.equals("")) { return true; } else { return false; } } public File getDataFile() { return dataFile; } public boolean getCsvFirstRow() { return csvFirstRow; } public String[] getCsvColumns() { if (csvColumns == null) { // return an empty array instead of null return new String[0]; } else { return csvColumns.split(","); } } public String getCsvRecordDel() { return csvRecordDel; } public char getCsvFieldDel() { return csvFieldDel.charAt(0); } public String getCsvCharset() { return csvCharset; } public Locale getLocale() { return LocaleUtils.toLocale(locale); } public boolean hasLocale() { if (locale != null && !locale.equals("")) { return true; } else { return false; } } public String getOutput() { return output; } public boolean hasOutput() { if (output != null && !output.equals("")) { return true; } else { return false; } } public List<OutputFormat> getOutputFormats() { return outputFormats; } public List<String> getParams() { return params; } public boolean hasParams() { if (params != null && !params.isEmpty()) { return true; } else { return false; } } public String getPrinterName() { return printerName; } public boolean hasPrinterName() { if (printerName != null && !printerName.equals("")) { return true; } else { return false; } } public String getReportName() { return reportName; } public boolean hasReportName() { if (reportName != null && !reportName.equals("")) { return true; } else { return false; } } public String getResource() { return resource; } public boolean hasResource() { // the resource default if set is "" .constant("") if (resource != null) { return true; } else { return false; } } public boolean isWithPrintDialog() { return withPrintDialog; } public boolean isWriteJasper() { return writeJasper; } public Integer getCopies() { return copies; } public boolean hasCopies() { if (copies != null) { return true; } else { return false; } } public String getOutFieldDel() { return outFieldDel; } public String getOutCharset() { return outCharset; } // END argparse4j arguments // TODO: overwrite toString() }