Search in sources :

Example 1 with SqlProcessingFunction

use of org.akaza.openclinica.bean.service.SqlProcessingFunction in project OpenClinica by OpenClinica.

the class CoreResources method findExtractProperties.

private ArrayList<ExtractPropertyBean> findExtractProperties() throws OpenClinicaSystemException {
    ArrayList<ExtractPropertyBean> ret = new ArrayList<ExtractPropertyBean>();
    // ExtractPropertyBean epbean = new ExtractPropertyBean();
    int i = 1;
    int maxExtractOption = getMaxExtractCounterValue();
    while (i <= maxExtractOption) {
        if (!getExtractField("extract." + i + ".file").equals("")) {
            ExtractPropertyBean epbean = new ExtractPropertyBean();
            epbean.setId(i);
            // we will implement a find by id function in the front end
            // check to make sure the file exists, if not throw an exception and system will abort to start.
            checkForFile(getExtractFields("extract." + i + ".file"));
            epbean.setFileName(getExtractFields("extract." + i + ".file"));
            // file name of the xslt stylesheet
            epbean.setFiledescription(getExtractField("extract." + i + ".fileDescription"));
            // description of the choice of format
            epbean.setHelpText(getExtractField("extract." + i + ".helpText"));
            // help text, currently in the alt-text of the link
            epbean.setLinkText(getExtractField("extract." + i + ".linkText"));
            // link text of the choice of format
            // epbean.setRolesAllowed(getExtractField("xsl.allowed." + i).split(","));
            // which roles are allowed to see the choice?
            epbean.setFileLocation(getExtractField("extract." + i + ".location"));
            // destination of the copied files
            // epbean.setFormat(getExtractField("xsl.format." + i));
            // if (("").equals(epbean.getFormat())) {
            // }
            // formatting choice. currently permenantly set at oc1.3
            /*
                 * String clinica = getExtractField("extract."+i+".odmType"); if(clinica!=null) {
                 * if(clinica.equalsIgnoreCase("clinical_data")) epbean.setFormat("occlinical_data"); else
                 * epbean.setFormat("oc1.3"); } else
                 */
            epbean.setOdmType(getExtractField("extract." + i + ".odmType"));
            epbean.setFormat("oc1.3");
            // destination file name of the copied files
            epbean.setExportFileName(getExtractFields("extract." + i + ".exportname"));
            // post-processing event after the creation
            String whichFunction = getExtractField("extract." + i + ".post").toLowerCase();
            // added by JN: Zipformat comes from extract properties returns true by default
            epbean.setZipFormat(getExtractFieldBoolean("extract." + i + ".zip"));
            epbean.setDeleteOld(getExtractFieldBoolean("extract." + i + ".deleteOld"));
            epbean.setSuccessMessage(getExtractField("extract." + i + ".success"));
            epbean.setFailureMessage(getExtractField("extract." + i + ".failure"));
            epbean.setZipName(getExtractField("extract." + i + ".zipName"));
            if (epbean.getFileName().length != epbean.getExportFileName().length)
                throw new OpenClinicaSystemException("The comma seperated values of file names and export file names should correspond 1 on 1 for the property number" + i);
            if ("sql".equals(whichFunction)) {
                // set the bean within, so that we can access the file locations etc
                SqlProcessingFunction function = new SqlProcessingFunction(epbean);
                String whichSettings = getExtractField("xsl.post." + i + ".sql");
                if (!"".equals(whichSettings)) {
                    function.setDatabaseType(getExtractFieldNoRep(whichSettings + ".dataBase").toLowerCase());
                    function.setDatabaseUrl(getExtractFieldNoRep(whichSettings + ".url"));
                    function.setDatabaseUsername(getExtractFieldNoRep(whichSettings + ".username"));
                    function.setDatabasePassword(getExtractFieldNoRep(whichSettings + ".password"));
                } else {
                    // set default db settings here
                    function.setDatabaseType(getField("dataBase"));
                    function.setDatabaseUrl(getField("url"));
                    function.setDatabaseUsername(getField("username"));
                    function.setDatabasePassword(getField("password"));
                }
                // also pre-set the database connection stuff
                epbean.setPostProcessing(function);
            // System.out.println("found db password: " + function.getDatabasePassword());
            } else if ("pdf".equals(whichFunction)) {
                // TODO add other functions here
                epbean.setPostProcessing(new PdfProcessingFunction());
            } else if ("sas".equals(whichFunction)) {
                epbean.setPostProcessing(new SasProcessingFunction());
            } else if (!whichFunction.isEmpty()) {
                String postProcessorName = getExtractField(whichFunction + ".postProcessor");
                if (postProcessorName.equals("pdf")) {
                    epbean.setPostProcessing(new PdfProcessingFunction());
                    epbean.setPostProcDeleteOld(getExtractFieldBoolean(whichFunction + ".deleteOld"));
                    epbean.setPostProcZip(getExtractFieldBoolean(whichFunction + ".zip"));
                    epbean.setPostProcLocation(getExtractField(whichFunction + ".location"));
                    epbean.setPostProcExportName(getExtractField(whichFunction + ".exportname"));
                } else // since the database is the last option TODO: think about custom post processing options
                {
                    SqlProcessingFunction function = new SqlProcessingFunction(epbean);
                    function.setDatabaseType(getExtractFieldNoRep(whichFunction + ".dataBase").toLowerCase());
                    function.setDatabaseUrl(getExtractFieldNoRep(whichFunction + ".url"));
                    function.setDatabaseUsername(getExtractFieldNoRep(whichFunction + ".username"));
                    function.setDatabasePassword(getExtractFieldNoRep(whichFunction + ".password"));
                    epbean.setPostProcessing(function);
                }
            } else {
                // add a null here
                epbean.setPostProcessing(null);
            }
            ret.add(epbean);
        }
        i++;
    }
    // System.out.println("found " + ret.size() + " records in extract.properties");
    return ret;
}
Also used : SasProcessingFunction(org.akaza.openclinica.bean.service.SasProcessingFunction) ExtractPropertyBean(org.akaza.openclinica.bean.extract.ExtractPropertyBean) ArrayList(java.util.ArrayList) PdfProcessingFunction(org.akaza.openclinica.bean.service.PdfProcessingFunction) OpenClinicaSystemException(org.akaza.openclinica.exception.OpenClinicaSystemException) SqlProcessingFunction(org.akaza.openclinica.bean.service.SqlProcessingFunction)

Aggregations

ArrayList (java.util.ArrayList)1 ExtractPropertyBean (org.akaza.openclinica.bean.extract.ExtractPropertyBean)1 PdfProcessingFunction (org.akaza.openclinica.bean.service.PdfProcessingFunction)1 SasProcessingFunction (org.akaza.openclinica.bean.service.SasProcessingFunction)1 SqlProcessingFunction (org.akaza.openclinica.bean.service.SqlProcessingFunction)1 OpenClinicaSystemException (org.akaza.openclinica.exception.OpenClinicaSystemException)1