@Override protected void onPostExecute(TreeMap<Float, DropsiteLocation> result) { Log.d("GetDropsiteTask", result.size() + " total locations obtained"); int count = RETURN_COUNT; List<DropsiteLocation> locations = new ArrayList<DropsiteLocation>(); for (Map.Entry<Float, DropsiteLocation> l : result.entrySet()) { locations.add(l.getValue()); // only return a subset of the overall count if (--count == 0) break; } Log.d( "GetDropsitesTask", "Passing " + mGetDropsiteLocationsCompleteListeners.size() + " listeners " + locations.size() + " locations"); // notify all listeners that work is complete for (GetDropsiteLocationsCompleteListener listener : mGetDropsiteLocationsCompleteListeners) { listener.onDropsiteLocationFetchComplete(locations); } }
@Override protected TreeMap<Float, DropsiteLocation> doInBackground( android.location.Location... location) { TreeMap<Float, DropsiteLocation> locations = new TreeMap<Float, DropsiteLocation>(); try { if (location[0] != null) { android.location.Location currentLocation = location[0]; SelectResult result = SimpleDB.getInstance() .select(new SelectRequest("select * from `Dropsites` limit 25")); for (Item dropsite : result.getItems()) { android.location.Location dropsiteLocation = new android.location.Location(currentLocation.getProvider()); DropsiteLocation internalDropsiteLocation = new DropsiteLocation(); internalDropsiteLocation.setId(dropsite.getName()); // used to temporarily store hours of open and close for each location Hashtable<Integer, String> dateOpen = new Hashtable<Integer, String>(); Hashtable<Integer, String> dateClose = new Hashtable<Integer, String>(); for (Attribute attribute : dropsite.getAttributes()) { if (attribute.getName().equalsIgnoreCase("location")) internalDropsiteLocation.setLocation(attribute.getValue()); if (attribute.getName().equalsIgnoreCase("description")) internalDropsiteLocation.setDescription(attribute.getValue()); if (attribute.getName().equalsIgnoreCase("start_collection")) internalDropsiteLocation.setDateOpen(DateTime.parse(attribute.getValue())); if (attribute.getName().equalsIgnoreCase("end_collection")) internalDropsiteLocation.setDateClose(DateTime.parse(attribute.getValue())); if (attribute.getName().equalsIgnoreCase("lat")) dropsiteLocation.setLatitude(Double.parseDouble(attribute.getValue())); if (attribute.getName().equalsIgnoreCase("lng")) dropsiteLocation.setLongitude(Double.parseDouble(attribute.getValue())); if (attribute.getName().equalsIgnoreCase("city")) internalDropsiteLocation.setCityCode(attribute.getValue()); } // store the location of the lot internalDropsiteLocation.setPoint( new LatLng(dropsiteLocation.getLatitude(), dropsiteLocation.getLongitude())); // save it to our locations listing to return back to the consumer locations.put(currentLocation.distanceTo(dropsiteLocation), internalDropsiteLocation); } } } catch (Exception e) { Log.e("GetDropsitesTask", "Failure attempting to get locations", e); } return locations; }
@Override protected TreeMap<Float, LotLocation> doInBackground(android.location.Location... location) { TreeMap<Float, LotLocation> locations = new TreeMap<Float, LotLocation>(); try { // null checking party ahead, majority stems form no connection, perhaps a connection // manager could centralize this if (location[0] != null) { android.location.Location currentLocation = location[0]; AmazonSimpleDBClient instance = SimpleDB.getInstance(); if (instance != null) { SelectResult result = instance.select( new SelectRequest("select * from `Locations` where active = '1' limit 50")); if (result != null) { for (Item lot : result.getItems()) { android.location.Location lotLocation = new android.location.Location(currentLocation.getProvider()); LotLocation internalLotLocation = new LotLocation(); internalLotLocation.setId(lot.getName()); // used to temporarily store hours of open and close for each location Hashtable<Integer, String> hoursOpen = new Hashtable<Integer, String>(); Hashtable<Integer, String> hoursClose = new Hashtable<Integer, String>(); for (Attribute attribute : lot.getAttributes()) { if (attribute.getName().equalsIgnoreCase("location")) internalLotLocation.setLocation(attribute.getValue()); if (attribute.getName().equalsIgnoreCase("rating")) internalLotLocation.setRating(Float.parseFloat(attribute.getValue())); if (attribute.getName().equalsIgnoreCase("business")) internalLotLocation.setBusiness(attribute.getValue()); if (attribute.getName().equalsIgnoreCase("description")) internalLotLocation.setDescription(attribute.getValue()); if (attribute.getName().equalsIgnoreCase("amex")) internalLotLocation.setAcceptsAmex( com.experiment.trax.utils.Boolean.valueOf(attribute.getValue())); if (attribute.getName().equalsIgnoreCase("visa")) internalLotLocation.setAcceptsVisa( com.experiment.trax.utils.Boolean.valueOf(attribute.getValue())); if (attribute.getName().equalsIgnoreCase("mastercard")) internalLotLocation.setAcceptsMastercard( com.experiment.trax.utils.Boolean.valueOf(attribute.getValue())); if (attribute.getName().equalsIgnoreCase("discover")) internalLotLocation.setAcceptsDiscover( com.experiment.trax.utils.Boolean.valueOf(attribute.getValue())); if (attribute.getName().equalsIgnoreCase("phone")) internalLotLocation.setPhone(attribute.getValue()); if (attribute.getName().equalsIgnoreCase("verified")) internalLotLocation.setVerified( com.experiment.trax.utils.Boolean.valueOf(attribute.getValue())); // create a key -> value to day of week and time opened or closed if (attribute.getName().equalsIgnoreCase("1_open")) hoursOpen.put(1, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("1_close")) hoursClose.put(1, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("2_open")) hoursOpen.put(2, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("2_close")) hoursClose.put(2, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("3_open")) hoursOpen.put(3, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("3_close")) hoursClose.put(3, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("4_open")) hoursOpen.put(4, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("4_close")) hoursClose.put(4, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("5_open")) hoursOpen.put(5, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("5_close")) hoursClose.put(5, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("6_open")) hoursOpen.put(6, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("6_close")) hoursClose.put(6, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("7_open")) hoursOpen.put(7, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("7_close")) hoursClose.put(7, attribute.getValue()); if (attribute.getName().equalsIgnoreCase("lat")) lotLocation.setLatitude(Double.parseDouble(attribute.getValue())); if (attribute.getName().equalsIgnoreCase("lng")) lotLocation.setLongitude(Double.parseDouble(attribute.getValue())); } // store the times the lot is opened and closed internalLotLocation.setHoursOpen(hoursOpen); internalLotLocation.setHoursClose(hoursClose); // store the location of the lot internalLotLocation.setPoint( new LatLng(lotLocation.getLatitude(), lotLocation.getLongitude())); // save it to our locations listing to return back to the consumer locations.put(currentLocation.distanceTo(lotLocation), internalLotLocation); } } } } } catch (Exception e) { Log.e("GetLocationsTask", "Failure attempting to get locations", e); } return locations; }