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.