Route.java (2537B)
1 package xyz.kebigon.housesearch.domain; 2 3 import java.util.Comparator; 4 5 import lombok.AllArgsConstructor; 6 import lombok.Data; 7 import lombok.NoArgsConstructor; 8 9 @AllArgsConstructor 10 @Data 11 @NoArgsConstructor 12 public class Route 13 { 14 /** 15 * the station of departure 16 */ 17 private String from; 18 19 /** 20 * the station of arrival 21 */ 22 private String to; 23 24 /** 25 * time in minutes between the two stations 26 */ 27 private int time; 28 29 /** 30 * price in yens between the two stations 31 */ 32 private int fare; 33 34 /** 35 * number of transfers between the two stations 36 */ 37 private int transfer; 38 39 /** 40 * Time > Fare > Transfer comparator 41 */ 42 public static final Comparator<Route> TIME_COMPARATOR = new Comparator<Route>() 43 { 44 @Override 45 public int compare(Route route1, Route route2) 46 { 47 int result; 48 if ((result = Integer.compare(route1.time, route2.time)) != 0) 49 return result; 50 else if ((result = Integer.compare(route1.fare, route2.fare)) != 0) 51 return result; 52 else 53 return Integer.compare(route1.transfer, route2.transfer); 54 } 55 }; 56 57 /** 58 * Fare > Transfer > Time comparator 59 */ 60 public static final Comparator<Route> FARE_COMPARATOR = new Comparator<Route>() 61 { 62 @Override 63 public int compare(Route route1, Route route2) 64 { 65 int result; 66 if ((result = Integer.compare(route1.fare, route2.fare)) != 0) 67 return result; 68 else if ((result = Integer.compare(route1.transfer, route2.transfer)) != 0) 69 return result; 70 else 71 return Integer.compare(route1.time, route2.time); 72 } 73 }; 74 75 /** 76 * Transfer > Time > Fare comparator 77 */ 78 public static final Comparator<Route> TRANSFER_COMPARATOR = new Comparator<Route>() 79 { 80 @Override 81 public int compare(Route route1, Route route2) 82 { 83 int result; 84 if ((result = Integer.compare(route1.transfer, route2.transfer)) != 0) 85 return result; 86 else if ((result = Integer.compare(route1.time, route2.time)) != 0) 87 return result; 88 else 89 return Integer.compare(route1.fare, route2.fare); 90 } 91 }; 92 93 /** 94 * Route to be used when no routes are found 95 */ 96 public static final Route IMPOSSIBLE_ROUTE = new Route(null, null, 9999, 9999, 9999); 97 }