import java.io.Serializable;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.annotations.Formula;
/**
*
* @author Riasat Abir
*/
@Entity
@Table(name = "SFT_STATUS")
public class SftStatus implements Serializable{
private static final long serialVersionUID = -6358872670353892991L;
/**
* Defined in SFT_STATUS view
*/
public enum StatusCode {
NONE(0),
IN_PROGRESS(1),
PAUSED(2),
CANCELLED(3),
ENDED(4);
private int code;
private StatusCode(int code) {
this.code = code;
}
public int getStatusCode() {
return code;
}
public void setStatusCode(int code) {
this.code = code;
}
}
@Id
@Column(name = "SESSION_ID")
private Integer sessionId;
@Formula(value = "INT_TO_SERIAL(NETWORK_ID)")
@NotNull
@Size(min=10, max=10)
private String deviceId;
@Formula("(CASE WHEN BLOCKS_TOTAL IS NULL OR BLOCKS_TOTAL = 0 THEN 0 ELSE 100 * BLOCKS_RECEIVED / BLOCKS_TOTAL END)")
private Integer completedPercentage;
@Column(name = "STATUS")
@Enumerated(EnumType.ORDINAL)
private StatusCode status;
@Override
public String toString() {
return "SftStatus{" + "sessionId=" + sessionId + ", deviceId=" + deviceId + ", completedPercentage=" + completedPercentage + ", status=" + status + '}';
}
public String getDeviceId() {
return deviceId;
}
public Integer getCompletedPercentage() {
return completedPercentage;
}
public StatusCode getStatus() {
return status;
}
@Override
public int hashCode() {
int hash = 7;
hash = 83 * hash + Objects.hashCode(this.sessionId);
hash = 83 * hash + Objects.hashCode(this.deviceId);
hash = 83 * hash + Objects.hashCode(this.completedPercentage);
hash = 83 * hash + Objects.hashCode(this.status);
return hash;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final SftStatus other = (SftStatus) obj;
if (!Objects.equals(this.deviceId, other.deviceId)) {
return false;
}
if (!Objects.equals(this.sessionId, other.sessionId)) {
return false;
}
if (!Objects.equals(this.completedPercentage, other.completedPercentage)) {
return false;
}
if (this.status != other.status) {
return false;
}
return true;
}
}