public void getRate() { RouteId id = new RouteId(); HubEntity hub = hubsRegistry.findHubByName(selectedHub); CoefficientsInfo coef = hubsRegistry.getCoefficientsForHub(selectedHub); id.setDestName(Parser.getCity(destination)); id.setDestState(Parser.getState(destination)); id.setHubName(hub.getCity()); id.setHubState(hub.getState()); RouteEntity route = repo.findRoute(id); if (route == null) { try { route = GoogleHandler.createRouteEntity( id.getHubName(), id.getHubState(), id.getDestName(), id.getDestState()); route = repo.saveRoute(route, id); } catch (GoogleServiceParamException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (GoogleServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } } float interceptX = coef.getIntercept().getX(); float rate = 0; if (route.getDistanceInMiles() < interceptX) { rate = route.getDistanceInMiles() * coef.getCoef1().getBeta() + coef.getCoef1().getAlpha(); } else { rate = route.getDistanceInMiles() * coef.getCoef2().getBeta() + coef.getCoef2().getAlpha(); } Messanger.show( "Got rate ", route.getDestName() + " : " + route.getDistanceInMiles() + "mi, rate: " + rate); }
public void generateReport() { if (destinationsTA.isEmpty()) return; List<String> lines = Parser.getLines(destinationsTA); Map<String, Set<String>> existingRoutesByDestMap = new HashMap<String, Set<String>>(); Map<String, Set<String>> to = new HashMap<String, Set<String>>(); Map<String, Set<String>> from = new HashMap<String, Set<String>>(); Report report = new Report(); List<String> errors = new ArrayList<String>(); String destCity = "", destState = ""; State destStateEnm, hubStateEnm; for (String line : lines) { System.out.println(line); destCity = Parser.getCity(line); destState = Parser.getState(line); try { destStateEnm = State.valueOf(destState); } catch (IllegalArgumentException e) { continue; } for (String hubName : hubsRegistry.getHubsNames()) { String hubCity = Parser.getCity(hubName); String hubState = Parser.getState(hubName); try { hubStateEnm = State.valueOf(hubState); } catch (IllegalArgumentException e) { continue; } if (destStateEnm != hubStateEnm & !catchment.getDestinations().get(destStateEnm).contains(hubStateEnm)) continue; RouteId id = new RouteId(); id.setHubName(hubCity); id.setHubState(hubState); id.setDestName(destCity); id.setDestState(destState); RouteEntity route = repo.findRoute(id); System.out.println("Found route: " + route); // add to request if (route == null) { System.out.println("Adding to request"); if (to.containsKey(destState)) to.get(destState).add(destCity); else { Set<String> dCities = new HashSet<String>(); dCities.add(destCity); to.put(destState, dCities); } if (from.containsKey(hubState)) from.get(hubState).add(hubCity); else { Set<String> hCities = new HashSet<String>(); hCities.add(hubCity); from.put(hubState, hCities); } System.out.println("REquest : " + to + " / " + from); } // add to report else { // for(HubServiceEntity service : // hubsRegistry.getServicesForHub(hub.getShortName())){ try { report.add( route, hubsRegistry.getServicesForHub(hubName), hubsRegistry.getCoefficientsForHub(hubName)); if (existingRoutesByDestMap.containsKey(destCity + "," + destState)) existingRoutesByDestMap.get(destCity + "," + destState).add(hubName); else { Set<String> hubsList = new HashSet<String>(); hubsList.add(hubName); existingRoutesByDestMap.put(destCity + "," + destState, hubsList); } } catch (ReportEntryException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } List<RouteInfo> routeInfoList = getRouteInfoForDestinations(from, to, errors); List<RouteEntity> savedRoutes = repo.saveRoutes(routeInfoList); for (RouteEntity route : savedRoutes) { try { report.add( route, hubsRegistry.getServicesForHub(route.getHubName() + "," + route.getHubState()), hubsRegistry.getCoefficientsForHub(route.getHubName() + "," + route.getHubState())); } catch (ReportEntryException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println(routeInfoList); System.out.println(report); ReportRow row; for (Entry<String, ArrayList<ReportEntry>> next : report.entrySet()) { row = new ReportRow(); row.setDestInfo(next.getKey()); ArrayList<ReportEntry> list = next.getValue(); Collections.sort(list); row.setEntries(list); entries.add(row); } // } Messanger.show("Got rate ", report.size() + "/"); }