Skip to content

Method: equals(Object)

1: package simulation.SimulationsHelper;
2:
3: import com.google.common.base.Objects;
4: import tec.uom.se.ComparableQuantity;
5: import tec.uom.se.unit.Units;
6: import util.Fraction;
7: import util.Immutable;
8:
9: import javax.measure.Unit;
10: import javax.measure.quantity.Time;
11:
12: /**
13: * Beschreibt die Auslastung einer Maschine oder eines Mitarbeiters.
14: */
15: @Immutable
16: public final class Auslastung {
17:
18: private static final Unit<Time> DEFAULT_ZEITEINHEIT = Units.SECOND;
19: public static final Auslastung NEUTRAL_AUSLASTUNG = Auslastung.create(SimulationsKonstanten.NEUTRALE_ZEIT, SimulationsKonstanten.NEUTRALE_ZEIT);
20:
21: private final ComparableQuantity<Time> geleisteteArbeitszeit;
22: private final ComparableQuantity<Time> verfuegbareArbeitszeit;
23:
24: private Auslastung(final ComparableQuantity<Time> geleisteteArbeitszeit, final ComparableQuantity<Time> verfuegbareArbeitszeit) {
25: this.geleisteteArbeitszeit = geleisteteArbeitszeit;
26: this.verfuegbareArbeitszeit = verfuegbareArbeitszeit;
27: }
28:
29: /**
30: * @param geleisteteArbeitszeit die geleistete Arbeitszeit
31: * @param verfuegbareArbeitszeit die maximal verfügbare Arbeitszeit
32: * @return das erstellte Auslastungsobjekt
33: */
34: public static Auslastung create(final ComparableQuantity<Time> geleisteteArbeitszeit,
35: final ComparableQuantity<Time> verfuegbareArbeitszeit) {
36: return new Auslastung(geleisteteArbeitszeit, verfuegbareArbeitszeit);
37: }
38:
39: /**
40: * @return Auslastung als Bruch.
41: */
42: public Fraction asFraction() {
43: return Fraction.valueOf(this.geleisteteArbeitszeit.to(Auslastung.DEFAULT_ZEITEINHEIT).getValue().longValue())
44: .divide(Fraction.valueOf(this.verfuegbareArbeitszeit.to(Auslastung.DEFAULT_ZEITEINHEIT).getValue().longValue()));
45: }
46:
47: /**
48: * @param auslastung eine Auslastung
49: * @return die addierte Auslastung der beiden Auslastungen.
50: */
51: public Auslastung add(final Auslastung auslastung) {
52: return Auslastung.create(this.geleisteteArbeitszeit.add(auslastung.geleisteteArbeitszeit),
53: this.verfuegbareArbeitszeit.add(auslastung.verfuegbareArbeitszeit));
54: }
55:
56: @Override
57: public boolean equals(final Object o) {
58:• if (this == o) {
59: return true;
60: }
61:• if (!(o instanceof Auslastung)) {
62: return false;
63: }
64: final Auslastung that = (Auslastung) o;
65:• return Objects.equal(this.geleisteteArbeitszeit, that.geleisteteArbeitszeit)
66:• && Objects.equal(this.verfuegbareArbeitszeit, that.verfuegbareArbeitszeit);
67: }
68:
69: @Override
70: public int hashCode() {
71: return Objects.hashCode(this.geleisteteArbeitszeit, this.verfuegbareArbeitszeit);
72: }
73: }