Search in sources :

Example 1 with OutgoingLoadSummary

use of org.jumpmind.symmetric.model.OutgoingLoadSummary in project symmetric-ds by JumpMind.

the class OutgoingBatchService method getLoadSummaries.

public List<OutgoingLoadSummary> getLoadSummaries(boolean activeOnly) {
    final Map<String, OutgoingLoadSummary> loadSummaries = new TreeMap<String, OutgoingLoadSummary>();
    sqlTemplateDirty.query(getSql("getLoadSummariesSql"), new ISqlRowMapper<OutgoingLoadSummary>() {

        public OutgoingLoadSummary mapRow(Row rs) {
            long loadId = rs.getLong("load_id");
            String nodeId = rs.getString("node_id");
            String loadNodeId = String.format("%010d-%s", loadId, nodeId);
            OutgoingLoadSummary summary = loadSummaries.get(loadNodeId);
            if (summary == null) {
                summary = new OutgoingLoadSummary();
                summary.setLoadId(loadId);
                summary.setNodeId(nodeId);
                summary.setChannelId(rs.getString("channel_id"));
                summary.setCreateBy(rs.getString("create_by"));
                loadSummaries.put(loadNodeId, summary);
            }
            Status status = Status.valueOf(rs.getString("status"));
            int count = rs.getInt("cnt");
            Date lastUpdateTime = rs.getDateTime("last_update_time");
            if (summary.getLastUpdateTime() == null || summary.getLastUpdateTime().before(lastUpdateTime)) {
                summary.setLastUpdateTime(lastUpdateTime);
            }
            Date createTime = rs.getDateTime("create_time");
            if (summary.getCreateTime() == null || summary.getCreateTime().after(createTime)) {
                summary.setCreateTime(createTime);
            }
            summary.setReloadBatchCount(summary.getReloadBatchCount() + count);
            if (status == Status.OK || status == Status.IG) {
                summary.setFinishedBatchCount(summary.getFinishedBatchCount() + count);
            } else {
                summary.setPendingBatchCount(summary.getPendingBatchCount() + count);
                boolean inError = rs.getBoolean("error_flag");
                summary.setInError(inError || summary.isInError());
                if (status != Status.NE && count == 1) {
                    summary.setCurrentBatchId(rs.getLong("current_batch_id"));
                    summary.setCurrentDataEventCount(rs.getLong("current_data_event_count"));
                }
            }
            return null;
        }
    });
    List<OutgoingLoadSummary> loads = new ArrayList<OutgoingLoadSummary>(loadSummaries.values());
    Iterator<OutgoingLoadSummary> it = loads.iterator();
    while (it.hasNext()) {
        OutgoingLoadSummary loadSummary = it.next();
        if (activeOnly && !loadSummary.isActive()) {
            it.remove();
        }
    }
    return loads;
}
Also used : Status(org.jumpmind.symmetric.model.OutgoingBatch.Status) ArrayList(java.util.ArrayList) Row(org.jumpmind.db.sql.Row) TreeMap(java.util.TreeMap) OutgoingLoadSummary(org.jumpmind.symmetric.model.OutgoingLoadSummary) Date(java.util.Date)

Aggregations

ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 TreeMap (java.util.TreeMap)1 Row (org.jumpmind.db.sql.Row)1 Status (org.jumpmind.symmetric.model.OutgoingBatch.Status)1 OutgoingLoadSummary (org.jumpmind.symmetric.model.OutgoingLoadSummary)1