package org.ovirt.engine.core.common.businessentities.gluster;
import java.util.ArrayList;
import java.util.Objects;
import org.ovirt.engine.core.common.businessentities.BusinessEntityWithStatus;
import org.ovirt.engine.core.common.businessentities.IVdcQueryable;
import org.ovirt.engine.core.compat.Guid;
public class GlusterGeoRepSession implements IVdcQueryable, BusinessEntityWithStatus<Guid, GeoRepSessionStatus>{
private static final long serialVersionUID = 1L;
private Guid masterVolumeId;
private String masterVolumeName;
private String sessionKey;
private String slaveHostName;
private Guid slaveNodeUuid;
private String slaveVolumeName;
private Guid sessionId;
private Guid slaveVolumeId;
private GeoRepSessionStatus status;
private String userName;
private ArrayList<GlusterGeoRepSessionDetails> sessionDetails;
public Guid getMasterVolumeId() {
return masterVolumeId;
}
public void setMasterVolumeId(Guid masterVolumeId) {
this.masterVolumeId = masterVolumeId;
}
public String getMasterVolumeName() {
return masterVolumeName;
}
public void setMasterVolumeName(String masterVolumeName) {
this.masterVolumeName = masterVolumeName;
}
public String getSessionKey() {
return sessionKey;
}
public void setSessionKey(String sessionKey) {
this.sessionKey = sessionKey;
}
public String getSlaveHostName() {
return slaveHostName;
}
public void setSlaveHostName(String slaveHostName) {
this.slaveHostName = slaveHostName;
}
public Guid getSlaveNodeUuid() {
return slaveNodeUuid;
}
public void setSlaveNodeUuid(Guid slaveNodeUuid) {
this.slaveNodeUuid = slaveNodeUuid;
}
public String getSlaveVolumeName() {
return slaveVolumeName;
}
public void setSlaveVolumeName(String slaveVolumeName) {
this.slaveVolumeName = slaveVolumeName;
}
public Guid getSlaveVolumeId() {
return slaveVolumeId;
}
public void setSlaveVolumeId(Guid slaveVolumeId) {
this.slaveVolumeId = slaveVolumeId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public GeoRepSessionStatus getStatus() {
return status;
}
@Override
public void setStatus(GeoRepSessionStatus status) {
this.status = status;
}
@Override
public Guid getId() {
return sessionId;
}
@Override
public void setId(Guid id) {
this.sessionId = id;
}
public ArrayList<GlusterGeoRepSessionDetails> getSessionDetails() {
return sessionDetails;
}
public void setSessionDetails(ArrayList<GlusterGeoRepSessionDetails> sessionDetails) {
this.sessionDetails = sessionDetails;
}
public boolean isCheckPointCompleted(){
for (GlusterGeoRepSessionDetails details : getSessionDetails()) {
if (details.getStatus() == GeoRepSessionStatus.ACTIVE && !details.isCheckpointCompleted()) {
return false;
}
}
return this.status != GeoRepSessionStatus.FAULTY;
}
@Override
public Object getQueryableId() {
return sessionId;
}
@Override
public int hashCode() {
return Objects.hash(
sessionId,
masterVolumeId,
sessionKey,
slaveHostName,
slaveNodeUuid,
slaveVolumeId,
slaveVolumeName,
userName,
status
);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof GlusterGeoRepSession)) {
return false;
}
GlusterGeoRepSession other = (GlusterGeoRepSession) obj;
return Objects.equals(sessionId, other.sessionId)
&& Objects.equals(masterVolumeId, other.masterVolumeId)
&& Objects.equals(sessionKey, other.sessionKey)
&& Objects.equals(slaveHostName, other.slaveHostName)
&& Objects.equals(slaveNodeUuid, other.slaveNodeUuid)
&& Objects.equals(slaveVolumeId, other.slaveVolumeId)
&& Objects.equals(slaveVolumeName, other.slaveVolumeName)
&& Objects.equals(userName, other.userName)
&& Objects.equals(status, other.status);
}
}