// 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;
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import static java.util.Collections.emptyList;
import static java.util.Collections.emptyMap;
public class FacilityCapacity {
public final Map<CapacityType, Integer> builtCapacity;
public final List<UnavailableCapacity> unavailableCapacities;
public FacilityCapacity(Map<CapacityType, Integer> builtCapacity, List<UnavailableCapacity> unavailableCapacities) {
this.builtCapacity = Optional.ofNullable(builtCapacity).orElse(emptyMap());
this.unavailableCapacities = Optional.ofNullable(unavailableCapacities).orElse(emptyList());
}
public FacilityCapacity(FacilityCapacityHistory entry) {
this(entry.builtCapacity, entry.unavailableCapacities);
}
public FacilityCapacity(Facility facility) {
this(facility.builtCapacity, facility.unavailableCapacities);
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("builtCapacity", builtCapacity)
.add("unavailableCapacities", unavailableCapacities)
.toString();
}
@Override
public final boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof FacilityCapacity)) {
return false;
}
FacilityCapacity that = (FacilityCapacity) o;
return Objects.equal(builtCapacity, that.builtCapacity) &&
Objects.equal(unavailableCapacities, that.unavailableCapacities);
}
@Override
public final int hashCode() {
return Objects.hashCode(builtCapacity, unavailableCapacities);
}
}