JobRating.java

package com.wilzwert.myjobs.core.domain.model.job;


import java.util.Objects;

/**
 * @author Wilhelm Zwertvaegher
 */

public class JobRating {
    private final int value;

    private JobRating(int value) {
        if (value < 0 || value > 5) {
            throw new IllegalArgumentException("Rating must be between 0 and 5, decimals are not allowed.");
        }
        this.value = value;
    }

    public static JobRating of(int value) {
        return new JobRating(value);
    }

    public int getValue() {
        return value;
    }

    public boolean isValid() {
        return value >= 0 && value <= 5;
    }

    @Override
    public String toString() {
        return String.format("Rating{value=%d}", value);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        JobRating rating = (JobRating) o;
        return rating.value == value;
    }

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