package org.dcache.admin.webadmin.datacollector.datatypes;
import diskCacheV111.vehicles.IoDoorEntry;
import diskCacheV111.vehicles.IoDoorInfo;
import diskCacheV111.vehicles.IoJobInfo;
import static com.google.common.base.Preconditions.checkNotNull;
public class MoverInfo implements Comparable<MoverInfo> {
private final IoDoorInfo _ioDoorInfo;
private final IoDoorEntry _ioDoorEntry;
private IoJobInfo _ioJobInfo;
public MoverInfo(IoDoorInfo info, IoDoorEntry entry) {
_ioDoorInfo = checkNotNull(info);
_ioDoorEntry = checkNotNull(entry);
}
public void setIoJobInfo(IoJobInfo ioJobInfo) {
_ioJobInfo = ioJobInfo;
}
public IoJobInfo getIoJobInfo() {
return _ioJobInfo;
}
public IoDoorEntry getIoDoorEntry() {
return _ioDoorEntry;
}
public IoDoorInfo getIoDoorInfo() {
return _ioDoorInfo;
}
public boolean hasJobInfo() {
return _ioJobInfo != null;
}
@Override
public int compareTo(MoverInfo other) {
int tmp = _ioDoorInfo.getDomainName().compareTo(other._ioDoorInfo.getDomainName());
if (tmp != 0) {
return tmp;
}
tmp = _ioDoorInfo.getCellName().compareTo(other._ioDoorInfo.getCellName());
if (tmp != 0) {
return tmp;
}
return Long.compare(_ioDoorEntry.getSerialId(), other._ioDoorEntry.getSerialId());
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof MoverInfo)) {
return false;
}
MoverInfo other = (MoverInfo) obj;
return _ioDoorInfo.getDomainName().equals(other._ioDoorInfo.getDomainName()) &&
_ioDoorInfo.getCellName().equals(other._ioDoorInfo.getCellName()) &&
(_ioDoorEntry.getSerialId() == other._ioDoorEntry.getSerialId());
}
@Override
public int hashCode() {
return (int) _ioDoorEntry.getSerialId() ^
_ioDoorInfo.getCellName().hashCode() ^
_ioDoorInfo.getDomainName().hashCode();
}
}