Example usage for org.springframework.jdbc.object SqlUpdate compile

List of usage examples for org.springframework.jdbc.object SqlUpdate compile

Introduction

In this page you can find the example usage for org.springframework.jdbc.object SqlUpdate compile.

Prototype

public final void compile() throws InvalidDataAccessApiUsageException 

Source Link

Document

Compile this query.

Usage

From source file:org.agnitas.dao.impl.ImportProfileDaoImpl.java

public int insertImportProfile(ImportProfile importProfile) {
    int profileId;
    if (AgnUtils.isOracleDB()) {
        logSqlStatement(logger, SELECT_NEXT_PROFILEID);
        profileId = getSimpleJdbcTemplate().queryForInt(SELECT_NEXT_PROFILEID);

        logSqlStatement(logger, INSERT_ORACLE);
        getSimpleJdbcTemplate().update(INSERT_ORACLE, profileId, importProfile.getCompanyId(),
                importProfile.getAdminId(), importProfile.getName(), importProfile.getSeparator(),
                importProfile.getTextRecognitionChar(), importProfile.getCharset(),
                importProfile.getDateFormat(), importProfile.getImportMode(),
                importProfile.getNullValuesAction(), importProfile.getKeyColumn(),
                ImportUtils.getBooleanAsInt(importProfile.getExtendedEmailCheck()),
                importProfile.getMailForReport(), importProfile.getCheckForDuplicates(),
                importProfile.getDefaultMailType(),
                ImportUtils.getBooleanAsInt(importProfile.getUpdateAllDuplicates()));
    } else {//from ww w  .  j a  v  a 2 s . c o  m
        logSqlStatement(logger, INSERT_MYSQL);
        SqlUpdate sqlUpdate = new SqlUpdate(getDataSource(), INSERT_MYSQL,
                new int[] { Types.INTEGER, Types.INTEGER, Types.VARCHAR, Types.INTEGER, Types.INTEGER,
                        Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.VARCHAR,
                        Types.BOOLEAN, Types.VARCHAR, Types.INTEGER, Types.INTEGER, Types.BOOLEAN });
        sqlUpdate.setReturnGeneratedKeys(true);
        sqlUpdate.setGeneratedKeysColumnNames(new String[] { FIELD_ID });
        sqlUpdate.compile();
        GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();
        Object[] values = new Object[] { importProfile.getCompanyId(), importProfile.getAdminId(),
                importProfile.getName(), importProfile.getSeparator(), importProfile.getTextRecognitionChar(),
                importProfile.getCharset(), importProfile.getDateFormat(), importProfile.getImportMode(),
                importProfile.getNullValuesAction(), importProfile.getKeyColumn(),
                ImportUtils.getBooleanAsInt(importProfile.getExtendedEmailCheck()),
                importProfile.getMailForReport(), importProfile.getCheckForDuplicates(),
                importProfile.getDefaultMailType(),
                ImportUtils.getBooleanAsInt(importProfile.getUpdateAllDuplicates()) };
        sqlUpdate.update(values, generatedKeyHolder);
        profileId = generatedKeyHolder.getKey().intValue();
    }

    importProfile.setId(profileId);
    insertColumnMappings(importProfile.getColumnMapping(), importProfile.getId());
    insertGenderMappings(importProfile.getGenderMapping(), importProfile.getId());

    return importProfile.getId();
}

From source file:org.agnitas.dao.impl.RecipientDaoImpl.java

/**
 * Inserts new customer record in Database with a fresh customer-id
 *
 * @return true on success//from  www. j a v a2  s .c o  m
 */
@Override
public int insertNewCust(Recipient cust) {
    StringBuffer Columns = new StringBuffer("(");
    StringBuffer Values = new StringBuffer(" VALUES (");
    String aColumn = null;
    String aParameter = null;
    String ColType = null;
    int intValue = 0;
    int day, month, year;
    int hour = 0;
    int minute = 0;
    int second = 0;
    StringBuffer insertCust = new StringBuffer("INSERT INTO customer_" + cust.getCompanyID() + "_tbl ");
    boolean appendIt = false;
    boolean hasDefault = false;
    String appendColumn = null;
    String appendValue = null;
    NumberFormat aFormat1 = null;
    NumberFormat aFormat2 = null;

    if (cust.getCustDBStructure() == null) {
        cust.loadCustDBStructure();
    }
    // logic from former method getNewCustomerID
    String sqlStatement = null;
    int customerID = 0;
    int companyID = cust.getCompanyID();
    if (companyID == 0) {
        return customerID;
    }
    if (mayAdd(companyID, 1) == false) {
        return customerID;
    }
    try {
        // set customerID for Oracle
        if (AgnUtils.isOracleDB()) {
            JdbcTemplate tmpl = new JdbcTemplate((DataSource) this.applicationContext.getBean("dataSource"));
            sqlStatement = "select customer_" + companyID + "_tbl_seq.nextval FROM dual";
            customerID = tmpl.queryForInt(sqlStatement);
            cust.setCustomerID(customerID);
        }
    } catch (Exception e) {
        logger.error("Error inserting new customer", e);
        customerID = 0;

        return customerID;
    }

    if (logger.isDebugEnabled()) {
        logger.debug("new customerID: " + customerID);
    }

    // Oracle: put customerID in SQL statement at first
    // (MySQL: no customerID available, yet)
    if (AgnUtils.isOracleDB()) {
        Columns.append("customer_id");
        Values.append(Integer.toString(cust.getCustomerID()));
    }
    Iterator<String> i = cust.getCustDBStructure().keySet().iterator();
    while (i.hasNext()) {
        aColumn = i.next();
        ColType = cust.getCustDBStructure().get(aColumn);
        appendIt = false;
        hasDefault = false;
        if (!aColumn.equalsIgnoreCase("customer_id")) {
            if (aColumn.equalsIgnoreCase("creation_date") || aColumn.equalsIgnoreCase("timestamp")
                    || aColumn.equalsIgnoreCase("change_date")) {
                appendValue = "current_timestamp";
                appendColumn = aColumn;
                appendIt = true;
            } else if (ColType.equalsIgnoreCase("DATE")) {
                if (cust.getCustParameters(aColumn + "_DAY_DATE") != null
                        && cust.getCustParameters(aColumn + "_MONTH_DATE") != null
                        && cust.getCustParameters(aColumn + "_YEAR_DATE") != null) {
                    aFormat1 = new DecimalFormat("00");
                    aFormat2 = new DecimalFormat("0000");
                    try {
                        if (!cust.getCustParameters(aColumn + "_DAY_DATE").trim().equals("")) {
                            day = Integer.parseInt(cust.getCustParameters(aColumn + "_DAY_DATE"));
                            month = Integer.parseInt(cust.getCustParameters(aColumn + "_MONTH_DATE"));
                            year = Integer.parseInt(cust.getCustParameters(aColumn + "_YEAR_DATE"));
                            if ((cust.getCustParameters(aColumn + "_HOUR_DATE") != null)
                                    && !cust.getCustParameters(aColumn + "_HOUR_DATE").trim().equals("")) {
                                hour = Integer.parseInt(cust.getCustParameters(aColumn + "_HOUR_DATE"));
                            }
                            if ((cust.getCustParameters(aColumn + "_MINUTE_DATE") != null)
                                    && !cust.getCustParameters(aColumn + "_MINUTE_DATE").trim().equals("")) {
                                minute = Integer.parseInt(cust.getCustParameters(aColumn + "_MINUTE_DATE"));
                            }
                            if ((cust.getCustParameters(aColumn + "_SECOND_DATE") != null)
                                    && !cust.getCustParameters(aColumn + "_SECOND_DATE").trim().equals("")) {
                                second = Integer.parseInt(cust.getCustParameters(aColumn + "_SECOND_DATE"));
                            }

                            if (AgnUtils.isOracleDB()) {
                                appendValue = "to_date('" + aFormat1.format(day) + "." + aFormat1.format(month)
                                        + "." + aFormat2.format(year) + " " + aFormat1.format(hour) + ":"
                                        + aFormat1.format(minute) + ":" + aFormat1.format(second)
                                        + "', 'DD.MM.YYYY HH24:MI:SS')";
                            } else {
                                appendValue = "STR_TO_DATE('" + aFormat1.format(day) + "-"
                                        + aFormat1.format(month) + "-" + aFormat2.format(year) + " "
                                        + aFormat1.format(hour) + ":" + aFormat1.format(minute) + ":"
                                        + aFormat1.format(second) + "', '%d-%m-%Y %H:%i:%s')";
                            }
                            appendColumn = aColumn;
                            appendIt = true;
                        } else {
                            ProfileField tmp = cust.getCustDBProfileStructure().get(aColumn);
                            if (tmp != null) {
                                String defaultValue = tmp.getDefaultValue();
                                if (!StringUtils.isBlank(defaultValue)) {
                                    appendValue = createDateDefaultValueExpression(defaultValue);

                                    hasDefault = true;
                                }
                            }
                            if (!hasDefault) {
                                appendValue = "null";
                            }
                            appendColumn = aColumn;
                            appendIt = true;
                        }
                    } catch (Exception e1) {
                        logger.error("insertNewCust: (" + aColumn + ") " + e1.getMessage(), e1);
                    }
                } else {
                    ProfileField tmp = cust.getCustDBProfileStructure().get(aColumn);

                    if (tmp != null) {
                        String defaultValue = tmp.getDefaultValue();

                        if (!StringUtils.isBlank(defaultValue)) {
                            appendValue = createDateDefaultValueExpression(defaultValue);

                            hasDefault = true;
                        }
                    }
                    if (hasDefault) {
                        appendColumn = aColumn;
                        appendIt = true;
                    }
                }
            }
            if (ColType.equalsIgnoreCase("INTEGER") || ColType.equalsIgnoreCase("DOUBLE")) {
                aParameter = cust.getCustParameters(aColumn);
                if (!StringUtils.isEmpty(aParameter)) {
                    try {
                        intValue = Integer.parseInt(aParameter);
                    } catch (Exception e1) {
                        intValue = 0;
                    }
                    appendValue = Integer.toString(intValue);
                    appendColumn = aColumn;
                    appendIt = true;
                } else {
                    ProfileField tmp = cust.getCustDBProfileStructure().get(aColumn);

                    if (tmp != null) {
                        String defaultValue = tmp.getDefaultValue();

                        if (!StringUtils.isBlank(defaultValue)) {
                            appendValue = defaultValue;
                            hasDefault = true;
                        }
                    }
                    if (hasDefault) {
                        appendColumn = aColumn;
                        appendIt = true;
                    }
                }
            }
            if (ColType.equalsIgnoreCase("VARCHAR") || ColType.equalsIgnoreCase("CHAR")) {
                aParameter = cust.getCustParameters(aColumn);
                if (!StringUtils.isEmpty(aParameter)) {
                    appendValue = "'" + SafeString.getSQLSafeString(aParameter) + "'";
                    appendColumn = aColumn;
                    appendIt = true;
                } else {
                    ProfileField tmp = cust.getCustDBProfileStructure().get(aColumn);
                    if (tmp != null) {
                        String defaultValue = tmp.getDefaultValue();
                        if (!StringUtils.isBlank(defaultValue)) {
                            appendValue = "'" + defaultValue + "'";
                            hasDefault = true;
                        }
                    }
                    if (hasDefault) {
                        appendColumn = aColumn;
                        appendIt = true;
                    }
                }
            }

            if (appendIt) {
                // if Columns contains more than "(", i.e. customerID was set
                if (!Columns.toString().equals("(")) {
                    Columns.append(", ");
                    Values.append(", ");
                }
                Columns.append(appendColumn.toLowerCase());
                Values.append(appendValue);
            }
        }
    }

    Columns.append(")");
    Values.append(")");

    insertCust.append(Columns.toString());
    insertCust.append(Values.toString());

    if (AgnUtils.isOracleDB()) {
        try {
            JdbcTemplate tmpl = new JdbcTemplate((DataSource) this.applicationContext.getBean("dataSource"));
            tmpl.execute(insertCust.toString());

            if (logger.isDebugEnabled()) {
                logger.debug("insertCust: " + insertCust.toString());
            }
        } catch (Exception e3) {
            logger.error("insertNewCustomer in Oracle", e3);
            cust.setCustomerID(0);
            return 0;
        }
    } else {
        try {
            SqlUpdate sqlUpdate = new SqlUpdate((DataSource) this.applicationContext.getBean("dataSource"),
                    insertCust.toString());
            sqlUpdate.setReturnGeneratedKeys(true);
            sqlUpdate.compile();
            GeneratedKeyHolder key = new GeneratedKeyHolder();
            sqlUpdate.update(null, key);
            customerID = key.getKey().intValue();
            cust.setCustomerID(customerID);
        } catch (Exception e3) {
            logger.error("insertNewCust in MySQL", e3);
            cust.setCustomerID(0);
            return 0;
        }
    }

    return cust.getCustomerID();
}