package net.sf.appstatus.batch.jdbc;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import net.sf.appstatus.core.batch.IBatch;
import net.sf.appstatus.core.batch.IBatchProgressMonitor;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
public class Batch implements IBatch {
private Integer zombieInterval = 1000 * 60 * 10;
public void setZombieInterval(int zombieInterval) {
this.zombieInterval = zombieInterval;
}
BdBatch dbBatch = null;
JdbcBatchProgressMonitor monitor;
public Batch(BdBatch bdBatch) {
this.dbBatch = bdBatch;
}
public BdBatch getBdBatch() {
return dbBatch;
}
public String getCurrentItem() {
return dbBatch.getCurrentItem();
}
public String getCurrentTask() {
return dbBatch.getCurrentTask();
}
public Date getEndDate() {
return dbBatch.getEndDate();
}
public String getGroup() {
return dbBatch.getGroup();
}
public long getItemCount() {
return dbBatch.getItemCount();
}
public String getLastMessage() {
return dbBatch.getLastMessage();
}
public Date getLastUpdate() {
return dbBatch.getLastUpdate();
}
public String getName() {
return dbBatch.getName();
}
public IBatchProgressMonitor getProgressMonitor() {
return (IBatchProgressMonitor) monitor;
}
public float getProgressStatus() {
return dbBatch.getProgress();
}
public List<String> getRejectedItemsId() {
if (dbBatch.getReject() == null) {
return new ArrayList<String>();
}
return Arrays.asList(StringUtils.split(dbBatch.getReject(), "|"));
}
public Date getStartDate() {
return dbBatch.getStartDate();
}
public String getStatus() {
String status = dbBatch.getStatus();
if (IBatch.STATUS_RUNNING.equals(status)) {
Date lastUpdate = getLastUpdate();
if (lastUpdate == null)
lastUpdate = getStartDate();
if (new Date().getTime() - lastUpdate.getTime() > zombieInterval) {
return STATUS_ZOMBIE;
}
}
return status;
}
public String getUuid() {
return dbBatch.getUuid();
}
public boolean isSuccess() {
return BooleanUtils.isTrue(dbBatch.getSuccess());
}
public void setProgressMonitor(IBatchProgressMonitor monitor) {
this.monitor = (JdbcBatchProgressMonitor) monitor;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((dbBatch == null) ? 0 : dbBatch.hashCode());
return result;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Batch other = (Batch) obj;
if (dbBatch == null) {
if (other.dbBatch != null) {
return false;
}
} else if (!dbBatch.equals(other.dbBatch)) {
return false;
}
return true;
}
}