001 package org.nakedobjects.applib.value;
002
003 import java.io.Serializable;
004
005
006 public abstract class Magnitude implements Serializable {
007 private static final long serialVersionUID = 1L;
008
009 public boolean isBetween(final Magnitude minMagnitude, final Magnitude maxMagnitude) {
010 return isGreaterThanOrEqualTo(minMagnitude) && isLessThanOrEqualTo(maxMagnitude);
011 }
012
013 public abstract boolean isEqualTo(final Magnitude magnitude);
014
015 public boolean isGreaterThan(final Magnitude magnitude) {
016 return magnitude.isLessThan(this);
017 }
018
019 public boolean isGreaterThanOrEqualTo(final Magnitude magnitude) {
020 return !isLessThan(magnitude);
021 }
022
023 public abstract boolean isLessThan(final Magnitude magnitude);
024
025 public boolean isLessThanOrEqualTo(final Magnitude magnitude) {
026 return !isGreaterThan(magnitude);
027 }
028
029 public Magnitude max(final Magnitude magnitude) {
030 return isGreaterThan(magnitude) ? this : magnitude;
031 }
032
033 public Magnitude min(final Magnitude magnitude) {
034 return isLessThan(magnitude) ? this : magnitude;
035 }
036
037 }
038 // Copyright (c) Naked Objects Group Ltd.