Inmate.java
package com.renomad.minum.security;
import com.renomad.minum.database.DbData;
import java.util.Objects;
import static com.renomad.minum.utils.SerializationUtils.deserializeHelper;
import static com.renomad.minum.utils.SerializationUtils.serializeHelper;
/**
* Represents an inmate in our "jail". If someone does something we don't like, they do their time here.
*/
public final class Inmate extends DbData<Inmate> {
/**
* Builds an empty version of this class, except
* that it has a current Context object
*/
public static final Inmate EMPTY = new Inmate(0L, "", 0L);
private Long index;
private final String clientId;
private final Long releaseTime;
/**
* Represents an inmate in our "jail". If someone does something we don't like, they do their time here.
* @param clientId a string representation of the client address plus a string representing the offense,
* for example, "1.2.3.4_vuln_seeking" - 1.2.3.4 was seeking out vulnerabilities.
* @param releaseTime the time, in milliseconds from the epoch, at which this inmate will be released
* from the brig.
*/
public Inmate(Long index, String clientId, Long releaseTime) {
this.index = index;
this.clientId = clientId;
this.releaseTime = releaseTime;
}
@Override
public long getIndex() {
return index;
}
@Override
public void setIndex(long index) {
this.index = index;
}
@Override
public String serialize() {
return serializeHelper(index, clientId, releaseTime);
}
@Override
public Inmate deserialize(String serializedText) {
final var tokens = deserializeHelper(serializedText);
return new Inmate(
Long.parseLong(tokens.get(0)),
tokens.get(1),
Long.parseLong(tokens.get(2)));
}
public String getClientId() {
return clientId;
}
public Long getReleaseTime() {
return releaseTime;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Inmate inmate = (Inmate) o;
return Objects.equals(index, inmate.index) && Objects.equals(clientId, inmate.clientId) && Objects.equals(releaseTime, inmate.releaseTime);
}
@Override
public int hashCode() {
return Objects.hash(index, clientId, releaseTime);
}
@Override
public String toString() {
return "Inmate{" +
"index=" + index +
", clientId='" + clientId + '\'' +
", releaseTime=" + releaseTime +
'}';
}
}