diff options
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/models/PostLocation.java')
-rw-r--r-- | WordPress/src/main/java/org/wordpress/android/models/PostLocation.java | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/models/PostLocation.java b/WordPress/src/main/java/org/wordpress/android/models/PostLocation.java new file mode 100644 index 000000000..fb48e0bf6 --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/models/PostLocation.java @@ -0,0 +1,93 @@ +package org.wordpress.android.models; + +import java.io.Serializable; + +public class PostLocation implements Serializable { + static final double INVALID_LATITUDE = 9999; + static final double INVALID_LONGITUDE = 9999; + static final double MIN_LATITUDE = -90; + static final double MAX_LATITUDE = 90; + static final double MIN_LONGITUDE = -180; + static final double MAX_LONGITUDE = 180; + + private double mLatitude = INVALID_LATITUDE; + private double mLongitude = INVALID_LONGITUDE; + + public PostLocation() { } + + public PostLocation(double latitude, double longitude) { + setLatitude(latitude); + setLongitude(longitude); + } + + public boolean isValid() { + return isValidLatitude(mLatitude) && isValidLongitude(mLongitude); + } + + public double getLatitude() { + return mLatitude; + } + + public void setLatitude(double latitude) { + if (!isValidLatitude(latitude)) { + throw new IllegalArgumentException( + "Invalid latitude; must be between the range " + MIN_LATITUDE + " and " + MAX_LATITUDE + ); + } + + mLatitude = latitude; + } + + public double getLongitude() { + return mLongitude; + } + + public void setLongitude(double longitude) { + if (!isValidLongitude(longitude)) { + throw new IllegalArgumentException( + "Invalid longitude; must be between the range " + MIN_LONGITUDE + " and " + MAX_LONGITUDE + ); + } + + mLongitude = longitude; + } + + private boolean isValidLatitude(double latitude) { + return latitude >= MIN_LATITUDE && latitude <= MAX_LATITUDE; + } + + private boolean isValidLongitude(double longitude) { + return longitude >= MIN_LONGITUDE && longitude <= MAX_LONGITUDE; + } + + public int hashCode() { + final int prime = 31; + int hashCode = 1; + + hashCode = prime * hashCode + (Double.valueOf(mLatitude).hashCode()); + hashCode = prime * hashCode + (Double.valueOf(mLongitude).hashCode()); + + return hashCode; + } + + public boolean equals(Object other) { + if (other == this) { + return true; + } else if (other instanceof PostLocation) { + PostLocation otherLocation = (PostLocation) other; + return this.mLatitude == otherLocation.mLatitude + && this.mLongitude == otherLocation.mLongitude; + } + return false; + } + + public static boolean equals(Object a, Object b) { + if (a == b) { + return true; + } else if (a == null || b == null) { + return false; + } else { + return a.equals(b); + } + } +} |