private void addNewFareRule(String orig, String dest, float price) { FareAttribute attr = getFareAttributeForCost(price); String origZone = getZoneForStopId(orig); String destZone = getZoneForStopId(dest); Pair<String> key = Tuples.pair(origZone, destZone); FareRule rule = newFareRules.get(key); if (rule != null) { if (rule.getFare().getId().equals(attr.getId())) { _log.debug("Fare rule already exists for stops {} -> {}, skipping", orig, dest); } else { throw new RuntimeException("Invalid fare matrix: stops with the same zone given different prices (zone " + origZone + ", " + destZone + ")"); } } rule = new FareRule(); rule.setFare(attr); rule.setRoute(route); rule.setOriginId(origZone); rule.setDestinationId(destZone); newFareRules.put(key, rule); }