de.otto.edison.status.domain.SystemInfo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of edison-core Show documentation
Show all versions of edison-core Show documentation
Core library for all Edison libraries.
package de.otto.edison.status.domain;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import net.jcip.annotations.Immutable;
import java.time.OffsetDateTime;
import static java.time.Duration.between;
import static java.time.OffsetDateTime.now;
import static java.time.format.DateTimeFormatter.ISO_DATE_TIME;
@Immutable
@JsonIgnoreProperties(ignoreUnknown = true)
public class SystemInfo {
private static final OffsetDateTime START_TIME = now();
public final String hostname;
public final int port;
private SystemInfo(final String hostname, final int port) {
this.hostname = hostname;
this.port = port;
}
public static SystemInfo systemInfo(final String hostname, final int port) {
return new SystemInfo(hostname, port);
}
public String getHostname() {
return hostname;
}
public String getSystemTime() {
return now().format(ISO_DATE_TIME);
}
public String getSystemStartTime() {
return START_TIME.format(ISO_DATE_TIME);
}
public String getSystemUpTime() {
final long seconds = between(START_TIME, now()).getSeconds();
return String.format("%d:%02d:%02d", seconds / 3600, (seconds % 3600) / 60, (seconds % 60));
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SystemInfo that = (SystemInfo) o;
if (port != that.port) return false;
return !(hostname != null ? !hostname.equals(that.hostname) : that.hostname != null);
}
@Override
public int hashCode() {
int result = hostname != null ? hostname.hashCode() : 0;
result = 31 * result + port;
return result;
}
@Override
public String toString() {
return "SystemInfo{" +
"hostname='" + hostname + '\'' +
", port=" + port +
'}';
}
}