/** * Licensed to JumpMind Inc under one or more contributor * license agreements. See the NOTICE file distributed * with this work for additional information regarding * copyright ownership. JumpMind Inc licenses this file * to you under the GNU General Public License, version 3.0 (GPLv3) * (the "License"); you may not use this file except in compliance * with the License. * * You should have received a copy of the GNU General Public License, * version 3.0 (GPLv3) along with this library; if not, see * <http://www.gnu.org/licenses/>. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.jumpmind.symmetric.model; import java.io.Serializable; import java.util.Date; import org.jumpmind.symmetric.io.data.Batch; import org.jumpmind.symmetric.io.data.reader.DataReaderStatistics; import org.jumpmind.symmetric.io.data.writer.DataWriterStatisticConstants; import org.jumpmind.util.Statistics; public class IncomingBatch implements Serializable { private static final long serialVersionUID = 1L; public enum Status { OK("Ok"), ER("Error"), LD("Loading"), IG("Ignored"); private String description; Status(String desc) { this.description = desc; } @Override public String toString() { return description; } } private long batchId; private String nodeId; private String channelId; private Status status; private boolean errorFlag; private long byteCount; private long networkMillis; private long filterMillis; private long databaseMillis; private long statementCount; private long fallbackInsertCount; private long fallbackUpdateCount; private long ignoreCount; private long missingDeleteCount; private long skipCount; private long failedRowNumber; private long failedLineNumber; private String sqlState; private int sqlCode; private String sqlMessage; private String lastUpdatedHostName; private Date lastUpdatedTime; private Date createTime; private boolean retry; public IncomingBatch() { } public IncomingBatch(long batchId, String nodeId) { this.batchId = batchId; this.nodeId = nodeId; } public IncomingBatch(Batch batch) { this.batchId = batch.getBatchId(); this.nodeId = batch.getSourceNodeId(); this.channelId = batch.getChannelId(); this.status = Status.LD; } public void setValues(Statistics readerStatistics, Statistics writerStatistics, boolean isSuccess) { if (readerStatistics != null) { byteCount = readerStatistics.get(DataReaderStatistics.READ_BYTE_COUNT); } if (writerStatistics != null) { filterMillis = writerStatistics.get(DataWriterStatisticConstants.FILTERMILLIS); databaseMillis = writerStatistics.get(DataWriterStatisticConstants.DATABASEMILLIS); statementCount = writerStatistics.get(DataWriterStatisticConstants.STATEMENTCOUNT); fallbackInsertCount = writerStatistics .get(DataWriterStatisticConstants.FALLBACKINSERTCOUNT); fallbackUpdateCount = writerStatistics .get(DataWriterStatisticConstants.FALLBACKUPDATECOUNT); missingDeleteCount = writerStatistics .get(DataWriterStatisticConstants.MISSINGDELETECOUNT); ignoreCount = writerStatistics.get(DataWriterStatisticConstants.IGNORECOUNT); lastUpdatedTime = new Date(); if (!isSuccess) { failedRowNumber = statementCount; failedLineNumber = writerStatistics.get(DataWriterStatisticConstants.LINENUMBER); } } } public String getNodeBatchId() { return nodeId + "-" + batchId; } public long getBatchId() { return batchId; } public void setBatchId(long batchId) { this.batchId = batchId; } public Status getStatus() { return status; } public void setStatus(Status status) { this.status = status; } public String getNodeId() { return nodeId; } public void setNodeId(String nodeId) { this.nodeId = nodeId; } public boolean isRetry() { return retry; } public void setRetry(boolean isRetry) { this.retry = isRetry; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public long getByteCount() { return byteCount; } public void setByteCount(long byteCount) { this.byteCount = byteCount; } public long getNetworkMillis() { return networkMillis; } public void setNetworkMillis(long networkMillis) { this.networkMillis = networkMillis; } public long getFilterMillis() { return filterMillis; } public void setFilterMillis(long filterMillis) { this.filterMillis = filterMillis; } public long getDatabaseMillis() { return databaseMillis; } public void setDatabaseMillis(long databaseMillis) { this.databaseMillis = databaseMillis; } public long getStatementCount() { return statementCount; } public void setStatementCount(long statementCount) { this.statementCount = statementCount; } public long getFallbackInsertCount() { return fallbackInsertCount; } public void setFallbackInsertCount(long fallbackInsertCount) { this.fallbackInsertCount = fallbackInsertCount; } public long getFallbackUpdateCount() { return fallbackUpdateCount; } public void setFallbackUpdateCount(long fallbackUpdateCount) { this.fallbackUpdateCount = fallbackUpdateCount; } public long getMissingDeleteCount() { return missingDeleteCount; } public void setMissingDeleteCount(long missingDeleteCount) { this.missingDeleteCount = missingDeleteCount; } public void setSkipCount(long skipCount) { this.skipCount = skipCount; } public long getSkipCount() { return skipCount; } public long getFailedRowNumber() { return failedRowNumber; } public void setFailedRowNumber(long failedRowNumber) { this.failedRowNumber = failedRowNumber; } public String getSqlState() { return sqlState; } public void setSqlState(String sqlState) { this.sqlState = sqlState; } public int getSqlCode() { return sqlCode; } public void setSqlCode(int sqlCode) { this.sqlCode = sqlCode; } public String getSqlMessage() { return sqlMessage; } public void setSqlMessage(String sqlMessage) { this.sqlMessage = sqlMessage; } public String getLastUpdatedHostName() { return lastUpdatedHostName; } public void setLastUpdatedHostName(String lastUpdateHostName) { this.lastUpdatedHostName = lastUpdateHostName; } public Date getLastUpdatedTime() { return lastUpdatedTime; } public void setLastUpdatedTime(Date lastUpdateTime) { this.lastUpdatedTime = lastUpdateTime; } /** * An indicator to the incoming batch service as to whether this batch * should be saved off. * * @return */ public boolean isPersistable() { return batchId >= 0; } public String getChannelId() { return channelId; } public void setChannelId(String channelId) { this.channelId = channelId; } public void setErrorFlag(boolean errorFlag) { this.errorFlag = errorFlag; } public boolean isErrorFlag() { return errorFlag; } public void setFailedLineNumber(long failedLineNumber) { this.failedLineNumber = failedLineNumber; } public long getFailedLineNumber() { return failedLineNumber; } public void setIgnoreCount(long ignoreCount) { this.ignoreCount = ignoreCount; } public void incrementIgnoreCount() { this.ignoreCount++; } public long getIgnoreCount() { return ignoreCount; } @Override public String toString() { return Long.toString(batchId); } }