Skip to content

Commit

Permalink
ack the batches in order
Browse files Browse the repository at this point in the history
  • Loading branch information
erilong committed Mar 31, 2008
1 parent 7ea6399 commit d13cced
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions symmetric/src/main/java/org/jumpmind/symmetric/web/AckServlet.java
Expand Up @@ -23,6 +23,8 @@

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
Expand All @@ -34,6 +36,7 @@
import org.apache.commons.collections.IteratorUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jumpmind.symmetric.model.BatchInfo;
Expand All @@ -42,6 +45,8 @@
public class AckServlet extends
AbstractTransportResourceServlet<AckResourceHandler> {

private static final BatchIdComparator BATCH_ID_COMPARATOR = new BatchIdComparator();

private static final long serialVersionUID = 1L;

protected static final Log logger = LogFactory.getLog(AckServlet.class);
Expand Down Expand Up @@ -86,6 +91,7 @@ protected void handlePost(HttpServletRequest req, HttpServletResponse resp)
}
}
}
Collections.sort(batches, BATCH_ID_COMPARATOR);
getTransportResourceHandler().ack(batches);
}

Expand All @@ -99,6 +105,23 @@ private String getBatchIdFrom(String webParameter) {
}
}

private static class BatchIdComparator implements Comparator<BatchInfo> {
public int compare(final BatchInfo batchInfo1, final BatchInfo batchInfo2) {
final CompareToBuilder retVal = new CompareToBuilder();
if (batchInfo1 != null && StringUtils.isNotBlank(batchInfo1.getBatchId())
&& StringUtils.isNumeric(batchInfo1.getBatchId()) && batchInfo2 != null
&& StringUtils.isNotBlank(batchInfo2.getBatchId())
&& StringUtils.isNumeric(batchInfo2.getBatchId())) {
final Integer batchId1 = Integer.parseInt(batchInfo1.getBatchId());
final Integer batchId2 = Integer.parseInt(batchInfo2.getBatchId());
retVal.append(batchId1, batchId2);
} else {
retVal.append(batchInfo1.getBatchId(), batchInfo2.getBatchId());
}
return retVal.toComparison();
}
}

@Override
protected Log getLogger() {
return logger;
Expand Down

0 comments on commit d13cced

Please sign in to comment.