// Copyright © 2015 HSL <https://www.hsl.fi>
// This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses.
package fi.hsl.parkandride.core.domain.prediction;
import com.google.common.base.MoreObjects;
import fi.hsl.parkandride.core.domain.UtilizationKey;
import org.joda.time.DateTime;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.Objects;
public class PredictorState {
@NotNull public final Long predictorId;
@NotNull public final String predictorType;
@NotNull @Valid public final UtilizationKey utilizationKey;
@NotNull public DateTime latestUtilization = new DateTime(0);
public boolean moreUtilizations = true;
@NotNull public String internalState = "";
public PredictorState(Long predictorId, String predictorType, UtilizationKey utilizationKey) {
this.predictorId = predictorId;
this.predictorType = predictorType;
this.utilizationKey = utilizationKey;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof PredictorState)) {
return false;
}
PredictorState that = (PredictorState) obj;
return Objects.equals(this.predictorId, that.predictorId)
&& Objects.equals(this.predictorType, that.predictorType)
&& Objects.equals(this.utilizationKey, that.utilizationKey)
&& Objects.equals(this.latestUtilization, that.latestUtilization)
&& Objects.equals(this.moreUtilizations, that.moreUtilizations)
&& Objects.equals(this.internalState, that.internalState);
}
@Override
public int hashCode() {
return Objects.hash(predictorId, predictorType, utilizationKey, latestUtilization, moreUtilizations, internalState);
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("predictorId", predictorId)
.add("predictorType", predictorType)
.add("utilizationKey", utilizationKey)
.add("latestUtilization", latestUtilization)
.add("moreUtilizations", moreUtilizations)
.add("internalState", internalState)
.toString();
}
}