160 lines
4.0 KiB
Java
160 lines
4.0 KiB
Java
package com.dougkeen.bart.model;
|
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
|
import android.database.Cursor;
|
|
import android.os.Parcel;
|
|
import android.os.Parcelable;
|
|
|
|
import com.dougkeen.bart.data.CursorUtils;
|
|
import com.dougkeen.bart.data.RoutesColumns;
|
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
|
|
public class StationPair implements Parcelable {
|
|
@JsonCreator
|
|
public StationPair(@JsonProperty("origin") Station origin,
|
|
@JsonProperty("destination") Station destination) {
|
|
super();
|
|
this.origin = origin;
|
|
this.destination = destination;
|
|
}
|
|
|
|
public StationPair(Parcel in) {
|
|
readFromParcel(in);
|
|
}
|
|
|
|
public static StationPair createFromCursor(Cursor cursor) {
|
|
StationPair pair = new StationPair(
|
|
Station.getByAbbreviation(CursorUtils.getString(cursor,
|
|
RoutesColumns.FROM_STATION)),
|
|
Station.getByAbbreviation(CursorUtils.getString(cursor,
|
|
RoutesColumns.TO_STATION)));
|
|
pair.fare = CursorUtils.getString(cursor, RoutesColumns.FARE);
|
|
pair.fareLastUpdated = CursorUtils.getLong(cursor,
|
|
RoutesColumns.FARE_LAST_UPDATED);
|
|
pair.averageTripLength = CursorUtils.getInteger(cursor,
|
|
RoutesColumns.AVERAGE_TRIP_LENGTH);
|
|
pair.averageTripSampleCount = CursorUtils.getInteger(cursor,
|
|
RoutesColumns.AVERAGE_TRIP_SAMPLE_COUNT);
|
|
return pair;
|
|
}
|
|
|
|
private Station origin;
|
|
private Station destination;
|
|
private String fare;
|
|
|
|
private long fareLastUpdated;
|
|
private int averageTripLength;
|
|
private int averageTripSampleCount;
|
|
|
|
public Station getOrigin() {
|
|
return origin;
|
|
}
|
|
|
|
public Station getDestination() {
|
|
return destination;
|
|
}
|
|
|
|
public String getFare() {
|
|
return fare;
|
|
}
|
|
|
|
public void setFare(String fare) {
|
|
this.fare = fare;
|
|
}
|
|
|
|
public long getFareLastUpdated() {
|
|
return fareLastUpdated;
|
|
}
|
|
|
|
public void setFareLastUpdated(long fareLastUpdated) {
|
|
this.fareLastUpdated = fareLastUpdated;
|
|
}
|
|
|
|
public int getAverageTripLength() {
|
|
return averageTripLength;
|
|
}
|
|
|
|
public void setAverageTripLength(int averageTripLength) {
|
|
this.averageTripLength = averageTripLength;
|
|
}
|
|
|
|
public int getAverageTripSampleCount() {
|
|
return averageTripSampleCount;
|
|
}
|
|
|
|
public void setAverageTripSampleCount(int averageTripSampleCount) {
|
|
this.averageTripSampleCount = averageTripSampleCount;
|
|
}
|
|
|
|
public boolean isBetweenStations(Station station1, Station station2) {
|
|
return (origin.equals(station1) && destination.equals(station2))
|
|
|| (origin.equals(station2) && destination.equals(station1));
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
final int prime = 31;
|
|
int result = 1;
|
|
result = prime * result
|
|
+ ((destination == null) ? 0 : destination.hashCode());
|
|
result = prime * result + ((origin == null) ? 0 : origin.hashCode());
|
|
return result;
|
|
}
|
|
|
|
public boolean fareEquals(StationPair other) {
|
|
if (other == null)
|
|
return false;
|
|
return ObjectUtils.equals(getFare(), other.getFare())
|
|
&& ObjectUtils.equals(getFareLastUpdated(),
|
|
other.getFareLastUpdated());
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj) {
|
|
if (this == obj)
|
|
return true;
|
|
if (obj == null)
|
|
return false;
|
|
if (getClass() != obj.getClass())
|
|
return false;
|
|
StationPair other = (StationPair) obj;
|
|
if (destination != other.destination)
|
|
return false;
|
|
if (origin != other.origin)
|
|
return false;
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "StationPair [origin=" + origin + ", destination=" + destination
|
|
+ "]";
|
|
}
|
|
|
|
@Override
|
|
public int describeContents() {
|
|
return 0;
|
|
}
|
|
|
|
public void writeToParcel(Parcel dest, int flags) {
|
|
dest.writeString(origin.abbreviation);
|
|
dest.writeString(destination.abbreviation);
|
|
}
|
|
|
|
private void readFromParcel(Parcel in) {
|
|
origin = Station.getByAbbreviation(in.readString());
|
|
destination = Station.getByAbbreviation(in.readString());
|
|
}
|
|
|
|
public static final Parcelable.Creator<StationPair> CREATOR = new Parcelable.Creator<StationPair>() {
|
|
public StationPair createFromParcel(Parcel in) {
|
|
return new StationPair(in);
|
|
}
|
|
|
|
public StationPair[] newArray(int size) {
|
|
return new StationPair[size];
|
|
}
|
|
};
|
|
} |