Examples of KeyHolder


Examples of org.springframework.jdbc.support.KeyHolder

  /**
   * Method to execute the insert generating single key
   */
  private Number executeInsertAndReturnKeyInternal(final List<Object> values) {
    KeyHolder kh = executeInsertAndReturnKeyHolderInternal(values);
    if (kh != null && kh.getKey() != null) {
      return kh.getKey();
    }
    else {
      throw new DataIntegrityViolationException("Unable to retreive the generated key for the insert: " +
          getInsertString());
    }
View Full Code Here

Examples of org.springframework.jdbc.support.KeyHolder

   */
  private KeyHolder executeInsertAndReturnKeyHolderInternal(final List<Object> values) {
    if (logger.isDebugEnabled()) {
      logger.debug("The following parameters are used for call " + getInsertString() + " with: " + values);
    }
    final KeyHolder keyHolder = new GeneratedKeyHolder();
    if (this.tableMetaDataContext.isGetGeneratedKeysSupported()) {
      jdbcTemplate.update(
          new PreparedStatementCreator() {
            public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
              PreparedStatement ps = prepareStatementForGeneratedKeys(con);
              setParameterValues(ps, values, null);
              return ps;
            }
          },
          keyHolder);
    }
    else {
      if (!this.tableMetaDataContext.isGetGeneratedKeysSimulated()) {
        throw new InvalidDataAccessResourceUsageException(
            "The getGeneratedKeys feature is not supported by this database");
      }
      if (getGeneratedKeyNames().length < 1) {
        throw new InvalidDataAccessApiUsageException("Generated Key Name(s) not specificed. " +
            "Using the generated keys features requires specifying the name(s) of the generated column(s)");
      }
      if (getGeneratedKeyNames().length > 1) {
        throw new InvalidDataAccessApiUsageException(
            "Current database only supports retreiving the key for a single column. There are " +
            getGeneratedKeyNames().length  + " columns specified: " + Arrays.asList(getGeneratedKeyNames()));
      }
      // This is a hack to be able to get the generated key from a database that doesn't support
      // get generated keys feature.  HSQL is one, PostgreSQL is another.  Postgres uses a RETURNING
      // clause while HSQL uses a second query that has to be executed with the same connection.
      final String keyQuery = tableMetaDataContext.getSimulationQueryForGetGeneratedKey(
          tableMetaDataContext.getTableName(),
          getGeneratedKeyNames()[0]);
      Assert.notNull(keyQuery, "Query for simulating get generated keys can't be null");
      if (keyQuery.toUpperCase().startsWith("RETURNING")) {
        Long key = jdbcTemplate.queryForLong(
            getInsertString() + " " + keyQuery,
            values.toArray(new Object[values.size()]));
        HashMap keys = new HashMap(1);
        keys.put(getGeneratedKeyNames()[0], key);
        keyHolder.getKeyList().add(keys);
      }
      else {
        jdbcTemplate.execute(new ConnectionCallback() {
          public Object doInConnection(Connection con) throws SQLException, DataAccessException {
            // Do the insert
            PreparedStatement ps = null;
            try {
              ps = con.prepareStatement(getInsertString());
              setParameterValues(ps, values, null);
              ps.executeUpdate();
            } finally {
              JdbcUtils.closeStatement(ps);
            }
            //Get the key
            Statement keyStmt = null;
            ResultSet rs = null;
            HashMap keys = new HashMap(1);
            try {
              keyStmt = con.createStatement();
              rs = keyStmt.executeQuery(keyQuery);
              if (rs.next()) {
                long key = rs.getLong(1);
                keys.put(getGeneratedKeyNames()[0], key);
                keyHolder.getKeyList().add(keys);
              }
            } finally {
              JdbcUtils.closeResultSet(rs);
              JdbcUtils.closeStatement(keyStmt);
            }
View Full Code Here

Examples of org.springframework.jdbc.support.KeyHolder

    replay();
    ctrlResultSet.replay();
    ctrlResultSetMetaData.replay();

    GeneratedKeysUpdater pc = new GeneratedKeysUpdater();
    KeyHolder generatedKeyHolder = new GeneratedKeyHolder();
    int rowsAffected = pc.run("rod", generatedKeyHolder);
    assertEquals(1, rowsAffected);
    assertEquals(1, generatedKeyHolder.getKeyList().size());
    assertEquals(11, generatedKeyHolder.getKey().intValue());
  }
View Full Code Here

Examples of org.springframework.jdbc.support.KeyHolder

          public void doInTransactionWithoutResult(TransactionStatus transactionStatus)
          {
            try
            {
              Date timestamp = new Date();
              KeyHolder keyHolder = new GeneratedKeyHolder();
              jdbcTemplate.update(
                  getEbMSMessagePreparedStatement(
                      timestamp,
                      message.getMessageHeader().getCPAId(),
                      message.getMessageHeader().getConversationId(),
                      message.getMessageOrder() == null ? null : message.getMessageOrder().getSequenceNumber().getValue().longValue(),
                      message.getMessageHeader().getMessageData().getMessageId(),
                      message.getMessageHeader().getMessageData().getRefToMessageId(),
                      message.getMessageHeader().getFrom().getRole(),
                      message.getMessageHeader().getTo().getRole(),
                      message.getMessageHeader().getService().getType(),
                      message.getMessageHeader().getService().getValue(),
                      message.getMessageHeader().getAction(),
                      XMLMessageBuilder.getInstance(MessageHeader.class).handle(message.getMessageHeader()),
                      XMLMessageBuilder.getInstance(SyncReply.class).handle(message.getSyncReply()),
                      XMLMessageBuilder.getInstance(MessageOrder.class).handle(message.getMessageOrder()),
                      XMLMessageBuilder.getInstance(AckRequested.class).handle(message.getAckRequested()),
                      XMLMessageBuilder.getInstance(Manifest.class).handle(message.getManifest())
                  ),
                  keyHolder
              );
         
              for (DataSource attachment : message.getAttachments())
              {
                simpleJdbcTemplate.update
                (
                  "insert into ebms_attachment (" +
                    "ebms_message_id," +
                    "name," +
                    "content_type," +
                    "content" +
                  ") values (?,?,?,?)",
                  keyHolder.getKey().longValue(),
                  attachment.getName() == null ? Constants.DEFAULT_FILENAME : attachment.getName(),
                  attachment.getContentType().split(";")[0].trim(),
                  IOUtils.toByteArray(attachment.getInputStream())
                );
              }

              List<Object[]> events = new ArrayList<Object[]>();
              for (EbMSSendEvent sendEvent : sendEvents)
              {
                //events.add(new Object[]{keyHolder.getKey().longValue(),String.format(getDateFormat(),sendEvent.getTime())});
                events.add(new Object[]{keyHolder.getKey().longValue(),sendEvent.getTime()});
              }
              simpleJdbcTemplate.batchUpdate
              (
                "insert into ebms_send_event (" +
                  "ebms_message_id," +
View Full Code Here

Examples of org.springframework.jdbc.support.KeyHolder

          public void doInTransactionWithoutResult(TransactionStatus transactionStatus)
          {
            try
            {
              Date timestamp = new Date();
              KeyHolder keyHolder = new GeneratedKeyHolder();
              jdbcTemplate.update(
                  getEbMSMessagePreparedStatement(
                      timestamp,
                      message.getMessageHeader().getCPAId(),
                      message.getMessageHeader().getConversationId(),
                      message.getMessageOrder() == null ? null : message.getMessageOrder().getSequenceNumber().getValue().longValue(),
                      message.getMessageHeader().getMessageData().getMessageId(),
                      message.getMessageHeader().getMessageData().getRefToMessageId(),
                      message.getMessageHeader().getFrom().getRole(),
                      message.getMessageHeader().getTo().getRole(),
                      message.getMessageHeader().getService().getType(),
                      message.getMessageHeader().getService().getValue(),
                      message.getMessageHeader().getAction(),
                      message.getOriginal(),
                      XMLMessageBuilder.getInstance(SignatureType.class).handle(new ObjectFactory().createSignature(message.getSignature())),
                      XMLMessageBuilder.getInstance(MessageHeader.class).handle(message.getMessageHeader()),
                      XMLMessageBuilder.getInstance(SyncReply.class).handle(message.getSyncReply()),
                      XMLMessageBuilder.getInstance(MessageOrder.class).handle(message.getMessageOrder()),
                      XMLMessageBuilder.getInstance(AckRequested.class).handle(message.getAckRequested()),
                      XMLMessageBuilder.getInstance(Manifest.class).handle(message.getManifest()),
                      status
                  ),
                  keyHolder
              );
         
              for (DataSource attachment : message.getAttachments())
              {
                simpleJdbcTemplate.update
                (
                  "insert into ebms_attachment (" +
                    "ebms_message_id," +
                    "name," +
                    "content_type," +
                    "content" +
                  ") values (?,?,?,?)",
                  keyHolder.getKey().longValue(),
                  attachment.getName() == null ? Constants.DEFAULT_FILENAME : attachment.getName(),
                  attachment.getContentType().split(";")[0].trim(),
                  IOUtils.toByteArray(attachment.getInputStream())
                );
              }
View Full Code Here

Examples of org.springframework.jdbc.support.KeyHolder

          public void doInTransactionWithoutResult(TransactionStatus transactionStatus)
          {
            try
            {
              Date timestamp = new Date();
              KeyHolder keyHolder = new GeneratedKeyHolder();
              jdbcTemplate.update(
                  getEbMSMessagePreparedStatement(
                      timestamp,
                      message.getMessageHeader().getCPAId(),
                      message.getMessageHeader().getConversationId(),
                      message.getMessageOrder() == null ? null : message.getMessageOrder().getSequenceNumber().getValue().longValue(),
                      message.getMessageHeader().getMessageData().getMessageId(),
                      message.getMessageHeader().getMessageData().getRefToMessageId(),
                      message.getMessageHeader().getFrom().getRole(),
                      message.getMessageHeader().getTo().getRole(),
                      message.getMessageHeader().getService().getType(),
                      message.getMessageHeader().getService().getValue(),
                      message.getMessageHeader().getAction(),
                      message.getOriginal(),
                      XMLMessageBuilder.getInstance(SignatureType.class).handle(new ObjectFactory().createSignature(message.getSignature())),
                      XMLMessageBuilder.getInstance(MessageHeader.class).handle(message.getMessageHeader()),
                      XMLMessageBuilder.getInstance(SyncReply.class).handle(message.getSyncReply()),
                      XMLMessageBuilder.getInstance(MessageOrder.class).handle(message.getMessageOrder()),
                      XMLMessageBuilder.getInstance(AckRequested.class).handle(message.getAckRequested()),
                      XMLMessageBuilder.getInstance(Manifest.class).handle(message.getManifest()),
                      status
                  ),
                  keyHolder
              );
         
              for (DataSource attachment : message.getAttachments())
              {
                simpleJdbcTemplate.update
                (
                  "insert into ebms_attachment (" +
                    "ebms_message_id," +
                    "name," +
                    "content_type," +
                    "content" +
                  ") values (?,?,?,?)",
                  keyHolder.getKey().longValue(),
                  attachment.getName() == null ? Constants.DEFAULT_FILENAME : attachment.getName(),
                  attachment.getContentType().split(";")[0].trim(),
                  IOUtils.toByteArray(attachment.getInputStream())
                );
              }
             
              jdbcTemplate.update(
                  getEbMSMessagePreparedStatement(
                      timestamp,
                      messageError.getMessageHeader().getCPAId(),
                      messageError.getMessageHeader().getConversationId(),
                      messageError.getMessageHeader().getMessageData().getMessageId(),
                      messageError.getMessageHeader().getMessageData().getRefToMessageId(),
                      messageError.getMessageHeader().getFrom().getRole(),
                      messageError.getMessageHeader().getTo().getRole(),
                      messageError.getMessageHeader().getService().getType(),
                      messageError.getMessageHeader().getService().getValue(),
                      messageError.getMessageHeader().getAction(),
                      XMLMessageBuilder.getInstance(MessageHeader.class).handle(messageError.getMessageHeader()),
                      XMLMessageBuilder.getInstance(ErrorList.class).handle(messageError.getErrorList())
                  ),
                  keyHolder
              );
         
              simpleJdbcTemplate.update
              (
                "insert into ebms_send_event (" +
                  "ebms_message_id," +
                  "time" +
                ") values (?,?)",
                keyHolder.getKey().longValue(),
                //String.format(getDateFormat(),sendEvent.getTime())
                sendEvent.getTime()
              );
            }
            catch (Exception e)
View Full Code Here

Examples of org.springframework.jdbc.support.KeyHolder

          public void doInTransactionWithoutResult(TransactionStatus transactionStatus)
          {
            try
            {
              Date timestamp = new Date();
              KeyHolder keyHolder = new GeneratedKeyHolder();
              jdbcTemplate.update(
                  getEbMSMessagePreparedStatement(
                      timestamp,
                      message.getMessageHeader().getCPAId(),
                      message.getMessageHeader().getConversationId(),
                      message.getMessageOrder() == null ? null : message.getMessageOrder().getSequenceNumber().getValue().longValue(),
                      message.getMessageHeader().getMessageData().getMessageId(),
                      message.getMessageHeader().getMessageData().getRefToMessageId(),
                      message.getMessageHeader().getFrom().getRole(),
                      message.getMessageHeader().getTo().getRole(),
                      message.getMessageHeader().getService().getType(),
                      message.getMessageHeader().getService().getValue(),
                      message.getMessageHeader().getAction(),
                      message.getOriginal(),
                      XMLMessageBuilder.getInstance(SignatureType.class).handle(new ObjectFactory().createSignature(message.getSignature())),
                      XMLMessageBuilder.getInstance(MessageHeader.class).handle(message.getMessageHeader()),
                      XMLMessageBuilder.getInstance(SyncReply.class).handle(message.getSyncReply()),
                      XMLMessageBuilder.getInstance(MessageOrder.class).handle(message.getMessageOrder()),
                      XMLMessageBuilder.getInstance(AckRequested.class).handle(message.getAckRequested()),
                      XMLMessageBuilder.getInstance(Manifest.class).handle(message.getManifest()),
                      status
                  ),
                  keyHolder
              );
         
              for (DataSource attachment : message.getAttachments())
              {
                simpleJdbcTemplate.update
                (
                  "insert into ebms_attachment (" +
                    "ebms_message_id," +
                    "name," +
                    "content_type," +
                    "content" +
                  ") values (?,?,?,?)",
                  keyHolder.getKey().longValue(),
                  attachment.getName() == null ? Constants.DEFAULT_FILENAME : attachment.getName(),
                  attachment.getContentType().split(";")[0].trim(),
                  IOUtils.toByteArray(attachment.getInputStream())
                );
              }
             
              jdbcTemplate.update(
                  getEbMSMessagePreparedStatement(
                      timestamp,
                      acknowledgment.getMessageHeader().getCPAId(),
                      acknowledgment.getMessageHeader().getConversationId(),
                      acknowledgment.getMessageHeader().getMessageData().getMessageId(),
                      acknowledgment.getMessageHeader().getMessageData().getRefToMessageId(),
                      acknowledgment.getMessageHeader().getFrom().getRole(),
                      acknowledgment.getMessageHeader().getTo().getRole(),
                      acknowledgment.getMessageHeader().getService().getType(),
                      acknowledgment.getMessageHeader().getService().getValue(),
                      acknowledgment.getMessageHeader().getAction(),
                      XMLMessageBuilder.getInstance(MessageHeader.class).handle(acknowledgment.getMessageHeader()),
                      XMLMessageBuilder.getInstance(Acknowledgment.class).handle(acknowledgment.getAcknowledgment())
                  ),
                  keyHolder
              );
         
              simpleJdbcTemplate.update
              (
                "insert into ebms_send_event (" +
                  "ebms_message_id," +
                  "time" +
                ") values (?,?)",
                keyHolder.getKey().longValue(),
                //String.format(getDateFormat(),sendTime)
                sendEvent.getTime()
              );
            }
            catch (Exception e)
View Full Code Here

Examples of org.springframework.jdbc.support.KeyHolder

          public void doInTransactionWithoutResult(TransactionStatus transactionStatus)
          {
            try
            {
              Date timestamp = new Date();
              KeyHolder keyHolder = new GeneratedKeyHolder();
              jdbcTemplate.update(
                  getEbMSMessagePreparedStatement(
                      timestamp,
                      messageError.getMessageHeader().getCPAId(),
                      messageError.getMessageHeader().getConversationId(),
View Full Code Here

Examples of org.springframework.jdbc.support.KeyHolder

          public void doInTransactionWithoutResult(TransactionStatus transactionStatus)
          {
            try
            {
              Date timestamp = new Date();
              KeyHolder keyHolder = new GeneratedKeyHolder();
              jdbcTemplate.update(
                  getEbMSMessagePreparedStatement(
                      timestamp,
                      acknowledgment.getMessageHeader().getCPAId(),
                      acknowledgment.getMessageHeader().getConversationId(),
View Full Code Here

Examples of org.springframework.jdbc.support.KeyHolder

   *
   * @param sql
   * @param args
   */
  protected long insertWithIdReturn(final String sql, final Object... args) {
    KeyHolder keyHolder = new GeneratedKeyHolder();
    jdbcTemplate.update(new PreparedStatementCreator() {
      @Override
      public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {
        PreparedStatement ps = conn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
        for (int i = 1; i <= args.length; i++) {
          ps.setObject(i, args[i - 1]);
        }
        return ps;
      }

    }, keyHolder);
    return keyHolder.getKey().longValue();
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.