List of usage examples for org.springframework.jdbc.core PreparedStatementSetter PreparedStatementSetter
PreparedStatementSetter
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); }