Skip to content

Instantly share code, notes, and snippets.

@tyndallm
Created December 1, 2013 21:46
Show Gist options
  • Select an option

  • Save tyndallm/7741251 to your computer and use it in GitHub Desktop.

Select an option

Save tyndallm/7741251 to your computer and use it in GitHub Desktop.
This code snippet contains functions for retrieving check-in data from Facebook's SDK as well as expiring old data.
private void updateExpiredHits(){
Query<VenueDto> venueQuery = datastore.find(VenueDto.class);
Venues venues = new Venues();
for(VenueDto venueDto: venueQuery){
venues.add(venueDto);
}
Query<HitDto> hitQuery = datastore.find(HitDto.class, "expired", false);
Hits activeHits = new Hits();
activeHits.addAll(hitQuery.asList());
System.out.println("Hits returned: " + hitQuery.asList().size());
for(HitDto currentHitDto: hitQuery.asList()){
VenueDto currentVenue = venues.findVenue(currentHitDto.getVenueId());
long currentTime = System.currentTimeMillis();
long hitExpiration = currentHitDto.getCreateTime() + getVenueLifetime(currentVenue);
if(currentTime >= hitExpiration){
currentHitDto.setExpired(true);
datastore.save(currentHitDto);
System.out.println(currentVenue.getVenueName() + ", Hit expired");
}
}
}
private void fetchFacebookData() {
ArrayList<String> facebookIds = new ArrayList<String>();
ArrayList<FacebookObj> facebookObjsToUpdate = new ArrayList<FacebookObj>();
Venues venues = new Venues();
FacebookClient facebookClient = new DefaultFacebookClient(oAuthKey);
Query<VenueDto> query = datastore.find(VenueDto.class);
for(VenueDto venueDto: query){
venues.add(venueDto);
FacebookObj facebookObj = venueDto.getFacebookObj();
if(!facebookObj.getFacebookId().equals("null")){
facebookIds.add(facebookObj.getFacebookId());
facebookObjsToUpdate.add(facebookObj);
}
}
JsonObject fetchObjectsResults = facebookClient.fetchObjects(facebookIds, JsonObject.class);
JsonMapper jsonMapper = new DefaultJsonMapper();
for(int i = 0; i < facebookIds.size(); i ++){
Page page = jsonMapper.toJavaObject(fetchObjectsResults.getString(facebookIds.get(i)), Page.class);
for(FacebookObj facebookObj: facebookObjsToUpdate){
int numOfHitsToCreate = 0;
//determine what venueId were working with
if(page.getId().equals(facebookObj.getFacebookId())){
VenueDto venueDto = venues.findVenue(facebookObj.getVenueId());
// if there have been new checkins create hits
if(page.getCheckins() > facebookObj.getCurrentCheckins()){
numOfHitsToCreate = (page.getCheckins()) - (facebookObj.getCurrentCheckins());
facebookObj.setCurrentCheckins(page.getCheckins());
createHits(venueDto, fb_hit, numOfHitsToCreate);
}
venueDto.setFacebookObj(facebookObj);
datastore.save(venueDto);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment