Example usage for org.springframework.integration.store SimpleMessageGroup setLastReleasedMessageSequenceNumber

List of usage examples for org.springframework.integration.store SimpleMessageGroup setLastReleasedMessageSequenceNumber

Introduction

In this page you can find the example usage for org.springframework.integration.store SimpleMessageGroup setLastReleasedMessageSequenceNumber.

Prototype

@Override
    public void setLastReleasedMessageSequenceNumber(int sequenceNumber) 

Source Link

Usage

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

@Override
public MessageGroup getMessageGroup(Object groupId) {
    String key = getKey(groupId);
    final AtomicReference<Date> createDate = new AtomicReference<Date>();
    final AtomicReference<Date> updateDate = new AtomicReference<Date>();
    final AtomicReference<Boolean> completeFlag = new AtomicReference<Boolean>();
    final AtomicReference<Integer> lastReleasedSequenceRef = new AtomicReference<Integer>();

    List<Message<?>> messages = jdbcTemplate.query(getQuery(Query.LIST_MESSAGES_BY_GROUP_KEY),
            new Object[] { key, region }, mapper);

    jdbcTemplate.query(getQuery(Query.GET_GROUP_INFO), new Object[] { key, region }, new RowCallbackHandler() {
        @Override//from  w  w w  .  j  a  va 2 s.c  o m
        public void processRow(ResultSet rs) throws SQLException {
            updateDate.set(rs.getTimestamp("UPDATED_DATE"));

            createDate.set(rs.getTimestamp("CREATED_DATE"));

            completeFlag.set(rs.getInt("COMPLETE") > 0);

            lastReleasedSequenceRef.set(rs.getInt("LAST_RELEASED_SEQUENCE"));
        }
    });

    if (createDate.get() == null && updateDate.get() == null) {
        if (logger.isWarnEnabled()) {
            for (Message<?> message : messages) {
                logger.warn("Missing group row for message id: " + message.getHeaders().getId());
            }
        }
        return new SimpleMessageGroup(groupId);
    }

    long timestamp = createDate.get().getTime();
    boolean complete = completeFlag.get().booleanValue();

    SimpleMessageGroup messageGroup = new SimpleMessageGroup(messages, groupId, timestamp, complete);
    messageGroup.setLastModified(updateDate.get().getTime());

    int lastReleasedSequenceNumber = lastReleasedSequenceRef.get();
    messageGroup.setLastReleasedMessageSequenceNumber(lastReleasedSequenceNumber);

    return messageGroup;
}