001package org.intellimate.izou.sdk.frameworks.music.player;
002
003import java.util.Optional;
004
005/**
006 * this class represents a symbolic volume (int from 0(=silent) to 100(=loudest) or -1 for mute)
007 * @author LeanderK
008 * @version 1.0
009 */
010public class Volume {
011    private final int volume;
012
013    private Volume(int volume) {
014        this.volume = volume;
015    }
016
017    /**
018     * returns the volume
019     * @return the volume
020     */
021    public int getVolume() {
022        return volume;
023    }
024
025    public static Optional<Volume> createVolume(int volume) {
026        if ((volume >= 0 && volume <= 100) || volume == -1) {
027            return Optional.of(new Volume(volume));
028        } else {
029            return Optional.empty();
030        }
031    }
032
033    @Override
034    public boolean equals(Object o) {
035        if (this == o) return true;
036        if (!(o instanceof Volume)) return false;
037
038        Volume volume1 = (Volume) o;
039
040        return volume == volume1.volume;
041
042    }
043
044    @Override
045    public int hashCode() {
046        return volume;
047    }
048}