package org.rhq.core.pc.drift;
import java.io.Serializable;
import org.rhq.core.domain.drift.DriftDefinition;
public class DriftDetectionSchedule implements Comparable<DriftDetectionSchedule>, Serializable {
private static final long serialVersionUID = 1L;
private int resourceId;
private DriftDefinition driftDef;
private long nextScan;
public DriftDetectionSchedule(int resourceId, DriftDefinition definition) {
this.resourceId = resourceId;
this.driftDef = definition;
nextScan = -1;
}
public int getResourceId() {
return resourceId;
}
public DriftDefinition getDriftDefinition() {
return driftDef;
}
public long getNextScan() {
return nextScan;
}
public void updateShedule() {
nextScan = System.currentTimeMillis() + (driftDef.getInterval() * 1000);
}
public void resetSchedule() {
nextScan = -1;
}
public DriftDetectionSchedule copy() {
DriftDetectionSchedule copy = new DriftDetectionSchedule(resourceId, new DriftDefinition(driftDef
.getConfiguration().deepCopyWithoutProxies()));
copy.driftDef.setId(driftDef.getId());
copy.nextScan = nextScan;
return copy;
}
@Override
public int compareTo(DriftDetectionSchedule other) {
if (this.nextScan < other.nextScan) {
return -1;
}
if (this.nextScan > other.nextScan) {
return 1;
}
return 0;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj == null) {
return false;
}
if (obj instanceof DriftDetectionSchedule) {
DriftDetectionSchedule that = (DriftDetectionSchedule) obj;
return this.nextScan == that.nextScan;
}
return false;
}
@Override
public int hashCode() {
return Long.valueOf(nextScan).hashCode();
}
@Override
public String toString() {
return getClass().getSimpleName() + "[resourceId: " + resourceId + ", driftDefinitionId: " + driftDef.getId()
+ ", driftDefinitionName: " + driftDef.getName() + "]";
}
}