Example usage for org.springframework.jdbc.core PreparedStatementSetter PreparedStatementSetter

List of usage examples for org.springframework.jdbc.core PreparedStatementSetter PreparedStatementSetter

Introduction

In this page you can find the example usage for org.springframework.jdbc.core PreparedStatementSetter PreparedStatementSetter.

Prototype

PreparedStatementSetter

Source Link

Usage

From source file:org.springframework.integration.jdbc.JdbcMessageStore.java

@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public <T> Message<T> addMessage(final Message<T> message) {
    if (message.getHeaders().containsKey(SAVED_KEY)) {
        Message<T> saved = (Message<T>) getMessage(message.getHeaders().getId());
        if (saved != null) {
            if (saved.equals(message)) {
                return message;
            } // We need to save it under its own id
        }//from  ww  w  . j  a  va  2  s  .c  o  m
    }

    final long createdDate = System.currentTimeMillis();
    Message<T> result = MessageBuilder.fromMessage(message).setHeader(SAVED_KEY, Boolean.TRUE)
            .setHeader(CREATED_DATE_KEY, new Long(createdDate)).build();

    Map innerMap = (Map) new DirectFieldAccessor(result.getHeaders()).getPropertyValue("headers");
    // using reflection to set ID since it is immutable through MessageHeaders
    innerMap.put(MessageHeaders.ID, message.getHeaders().get(MessageHeaders.ID));

    final String messageId = getKey(result.getHeaders().getId());
    final byte[] messageBytes = serializer.convert(result);

    jdbcTemplate.update(getQuery(Query.CREATE_MESSAGE), new PreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement ps) throws SQLException {
            if (logger.isDebugEnabled()) {
                logger.debug("Inserting message with id key=" + messageId);
            }
            ps.setString(1, messageId);
            ps.setString(2, region);
            ps.setTimestamp(3, new Timestamp(createdDate));
            lobHandler.getLobCreator().setBlobAsBytes(ps, 4, messageBytes);
        }
    });
    return result;
}

From source file:org.springframework.integration.jdbc.JdbcMessageStore.java

@Override
public MessageGroup addMessageToGroup(Object groupId, Message<?> message) {
    final String groupKey = getKey(groupId);
    final String messageId = getKey(message.getHeaders().getId());
    boolean groupNotExist = jdbcTemplate.queryForInt(this.getQuery(Query.GROUP_EXISTS), groupKey, region) < 1;

    final Timestamp updatedDate = new Timestamp(System.currentTimeMillis());

    final Timestamp createdDate = groupNotExist ? updatedDate
            : jdbcTemplate.queryForObject(getQuery(Query.GET_GROUP_CREATED_DATE),
                    new Object[] { groupKey, region }, Timestamp.class);

    if (groupNotExist) {
        try {/* w w  w.ja v  a2  s.c o m*/
            this.doCreateMessageGroup(groupKey, createdDate);
        } catch (DuplicateKeyException e) {
            logger.warn("Lost race to create group; attempting update instead", e);
            this.doUpdateMessageGroup(groupKey, updatedDate);
        }
    } else {
        this.doUpdateMessageGroup(groupKey, updatedDate);
    }

    this.addMessage(message);

    jdbcTemplate.update(getQuery(Query.CREATE_GROUP_TO_MESSAGE), new PreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement ps) throws SQLException {
            if (logger.isDebugEnabled()) {
                logger.debug("Inserting message with id key=" + messageId + " and created date=" + createdDate);
            }
            ps.setString(1, groupKey);
            ps.setString(2, messageId);
            ps.setString(3, region);
        }
    });
    return getMessageGroup(groupId);

}

From source file:org.springframework.integration.jdbc.JdbcMessageStore.java

@Override
public MessageGroup removeMessageFromGroup(Object groupId, Message<?> messageToRemove) {
    final String groupKey = getKey(groupId);
    final String messageId = getKey(messageToRemove.getHeaders().getId());

    jdbcTemplate.update(getQuery(Query.REMOVE_MESSAGE_FROM_GROUP), new PreparedStatementSetter() {
        @Override/*  w  w  w .  j  av  a  2s.  co  m*/
        public void setValues(PreparedStatement ps) throws SQLException {
            if (logger.isDebugEnabled()) {
                logger.debug("Removing message from group with group key=" + groupKey);
            }
            ps.setString(1, groupKey);
            ps.setString(2, messageId);
            ps.setString(3, region);
        }
    });
    this.removeMessage(messageToRemove.getHeaders().getId());
    this.updateMessageGroup(groupKey);
    return getMessageGroup(groupId);
}

From source file:org.springframework.integration.jdbc.JdbcMessageStore.java

@Override
public void removeMessageGroup(Object groupId) {

    final String groupKey = getKey(groupId);

    for (UUID messageIds : this.getMessageIdsForGroup(groupId)) {
        this.removeMessage(messageIds);
    }/*  ww w .j a va  2s. co  m*/

    jdbcTemplate.update(getQuery(Query.REMOVE_GROUP_TO_MESSAGE_JOIN), new PreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement ps) throws SQLException {
            if (logger.isDebugEnabled()) {
                logger.debug("Removing relationships for the group with group key=" + groupKey);
            }
            ps.setString(1, groupKey);
            ps.setString(2, region);
        }
    });

    jdbcTemplate.update(getQuery(Query.DELETE_MESSAGE_GROUP), new PreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement ps) throws SQLException {
            if (logger.isDebugEnabled()) {
                logger.debug("Marking messages with group key=" + groupKey);
            }
            ps.setString(1, groupKey);
            ps.setString(2, region);
        }
    });
}

From source file:org.springframework.integration.jdbc.JdbcMessageStore.java

@Override
public void completeGroup(Object groupId) {
    final long updatedDate = System.currentTimeMillis();
    final String groupKey = getKey(groupId);

    jdbcTemplate.update(getQuery(Query.COMPLETE_GROUP), new PreparedStatementSetter() {
        @Override//from   w  w w.ja  v a  2s. c  om
        public void setValues(PreparedStatement ps) throws SQLException {
            if (logger.isDebugEnabled()) {
                logger.debug("Completing MessageGroup: " + groupKey);
            }
            ps.setTimestamp(1, new Timestamp(updatedDate));
            ps.setString(2, groupKey);
            ps.setString(3, region);
        }
    });
}

From source file:org.springframework.integration.jdbc.JdbcMessageStore.java

@Override
public void setLastReleasedSequenceNumberForGroup(Object groupId, final int sequenceNumber) {
    Assert.notNull(groupId, "'groupId' must not be null");
    final long updatedDate = System.currentTimeMillis();
    final String groupKey = getKey(groupId);

    jdbcTemplate.update(getQuery(Query.UPDATE_LAST_RELEASED_SEQUENCE), new PreparedStatementSetter() {
        @Override/* w  w w.  ja  v  a2  s  . c  o  m*/
        public void setValues(PreparedStatement ps) throws SQLException {
            if (logger.isDebugEnabled()) {
                logger.debug("Updating  the sequence number of the last released Message in the MessageGroup: "
                        + groupKey);
            }
            ps.setTimestamp(1, new Timestamp(updatedDate));
            ps.setInt(2, sequenceNumber);
            ps.setString(3, groupKey);
            ps.setString(4, region);
        }
    });
    this.updateMessageGroup(groupKey);
}

From source file:org.springframework.integration.jdbc.JdbcMessageStore.java

private void doCreateMessageGroup(final String groupKey, final Timestamp createdDate) {
    jdbcTemplate.update(getQuery(Query.CREATE_MESSAGE_GROUP), new PreparedStatementSetter() {
        @Override//from w  w  w  .j a v  a2 s  . co m
        public void setValues(PreparedStatement ps) throws SQLException {
            if (logger.isDebugEnabled()) {
                logger.debug(
                        "Creating message group with id key=" + groupKey + " and created date=" + createdDate);
            }
            ps.setString(1, groupKey);
            ps.setString(2, region);
            ps.setTimestamp(3, createdDate);
            ps.setTimestamp(4, createdDate);
        }
    });
}

From source file:org.springframework.integration.jdbc.JdbcMessageStore.java

private void doUpdateMessageGroup(final String groupKey, final Timestamp updatedDate) {
    jdbcTemplate.update(getQuery(Query.UPDATE_MESSAGE_GROUP), new PreparedStatementSetter() {
        @Override//from   www . j a  v  a  2  s.c o m
        public void setValues(PreparedStatement ps) throws SQLException {
            if (logger.isDebugEnabled()) {
                logger.debug(
                        "Updating message group with id key=" + groupKey + " and updated date=" + updatedDate);
            }
            ps.setTimestamp(1, updatedDate);
            ps.setString(2, groupKey);
            ps.setString(3, region);
        }
    });
}

From source file:org.springframework.integration.jdbc.JdbcMessageStore.java

private void updateMessageGroup(final String groupId) {
    jdbcTemplate.update(getQuery(Query.UPDATE_GROUP), new PreparedStatementSetter() {
        @Override//from  w ww.  j a v  a 2 s .co m
        public void setValues(PreparedStatement ps) throws SQLException {
            if (logger.isDebugEnabled()) {
                logger.debug("Updating MessageGroup: " + groupId);
            }
            ps.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
            ps.setString(2, groupId);
            ps.setString(3, region);
        }
    });
}

From source file:org.springframework.integration.jdbc.store.JdbcChannelMessageStore.java

/**
 * Store a message in the database. The groupId identifies the channel for which
 * the message is to be stored./*from   www . j  a va  2 s  .  co  m*/
 *
 * Keep in mind that the actual groupdId (Channel
 * Identifier) is converted to a String-based UUID identifier.
 *
 * @param groupId the group id to store the message under
 * @param message a message
 */
@SuppressWarnings({ "rawtypes", "unchecked" })
public MessageGroup addMessageToGroup(Object groupId, Message<?> message) {

    final String groupKey = getKey(groupId);

    final long createdDate = System.currentTimeMillis();
    final Message<?> result = MessageBuilder.fromMessage(message).setHeader(SAVED_KEY, Boolean.TRUE)
            .setHeader(CREATED_DATE_KEY, new Long(createdDate)).build();

    final Map innerMap = (Map) new DirectFieldAccessor(result.getHeaders()).getPropertyValue("headers");
    // using reflection to set ID since it is immutable through MessageHeaders
    innerMap.put(MessageHeaders.ID, message.getHeaders().get(MessageHeaders.ID));

    final String messageId = getKey(result.getHeaders().getId());
    final byte[] messageBytes = serializer.convert(result);

    jdbcTemplate.update(getQuery(channelMessageStoreQueryProvider.getCreateMessageQuery()),
            new PreparedStatementSetter() {
                public void setValues(PreparedStatement ps) throws SQLException {
                    if (logger.isDebugEnabled()) {
                        logger.debug("Inserting message with id key=" + messageId);
                    }
                    ps.setString(1, messageId);
                    ps.setString(2, groupKey);
                    ps.setString(3, region);
                    ps.setLong(4, createdDate);
                    lobHandler.getLobCreator().setBlobAsBytes(ps, 5, messageBytes);
                }
            });

    return getMessageGroup(groupId);
}