All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.SingularityMachineAbstraction Maven / Gradle / Ivy

The newest version!
package com.hubspot.singularity;

import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.google.common.base.Optional;

public abstract class SingularityMachineAbstraction> {

  private final String id;
  private final long firstSeenAt;
  private final SingularityMachineStateHistoryUpdate currentState;

  public SingularityMachineAbstraction(String id) {
    this(id, System.currentTimeMillis(), new SingularityMachineStateHistoryUpdate(id, MachineState.ACTIVE, System.currentTimeMillis(), Optional. absent(), Optional. absent()));
  }

  public SingularityMachineAbstraction(String id, long firstSeenAt, SingularityMachineStateHistoryUpdate currentState) {
    this.id = id;
    this.currentState = currentState;
    this.firstSeenAt = firstSeenAt;
  }

  public String getId() {
    return id;
  }

  @JsonIgnore
  public abstract String getName();

  @JsonIgnore
  public abstract String getTypeName();

  @Override
  public int hashCode() {
    return Objects.hashCode(id);
  }

  @Override
  public boolean equals(Object obj) {
    if (this == obj) {
      return true;
    }
    if (obj == null) {
      return false;
    }
    if (getClass() != obj.getClass()) {
      return false;
    }
    @SuppressWarnings("unchecked")
    SingularityMachineAbstraction other = (SingularityMachineAbstraction) obj;
    if (id == null) {
      if (other.id != null) {
        return false;
      }
    } else if (!id.equals(other.id)) {
      return false;
    }
    return true;
  }

  public long getFirstSeenAt() {
    return firstSeenAt;
  }

  public SingularityMachineStateHistoryUpdate getCurrentState() {
    return currentState;
  }

  public abstract T changeState(SingularityMachineStateHistoryUpdate newState);

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy