Skip to content

Instantly share code, notes, and snippets.

@leadVisionary
Created March 2, 2012 02:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leadVisionary/1954906 to your computer and use it in GitHub Desktop.
Save leadVisionary/1954906 to your computer and use it in GitHub Desktop.
Initial controller approach
package com.visionarysoftwaresolutions
class DatastoreService {
def parseService
def zapCardService
public Zapper createUser(String email){
parseService.createUser(email)
}
public ZapCard createCard(Zapper owner, String name, String phoneNumber){
parseService.createCard(owner,name,phoneNumber)
}
void collectRemoteData() {
def users = parseService.retrieveUsersFromParse()
if(users){
zapUserService.createUsersFromCollection(users)
}
def cards = parseService.retrieveCardsFromParse()
if(cards){
zapCardService.createCardsFromCollection(cards)
}
}
void exchangeCards(Zapper sender, ZapCard zappCard, Zapper recipient){
parseService.exchange(sender, zappCard, recipient)
}
}
package com.visionarysoftwaresolutions
class DemoController {
def datastoreService
def index(){
}
def live(){
def data = populate(params.email, params.name, params.phoneNumber)
def zapp = Zapper.findByEmail("zapp@zapapp.com")
def zappCard = ZapCard.findByOwner(zapp)
datastoreService.exchangeCards(data.demoZapper, data.card, zapp)
return [ card : zappCard ]
}
private def populate(String email, String name, String phoneNumber){
def parseData = [
card : ZapCard.findByPhoneNumber(phoneNumber),
demoZapper : Zapper.findByEmail(email)
]
if(!parseData.card && !parseData.demoZapper){
parseData = populateFromRemote(email,name, phoneNumber)
}
return parseData
}
private def populateFromRemote(String email, String name, String phoneNumber){
datastoreService.collectRemoteData()
def demoZapper = Zapper.findByEmail(email) ?:
datastoreService.createUser(email)
def card = ZapCard.findByPhoneNumber(phoneNumber) ?:
datastoreService.createCard(demoZapper,name, phoneNumber)
return [ card : card , demoZapper : demoZapper ]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment