package org.fuzzydb.samples.mvc; import java.security.Principal; import javax.inject.Inject; import javax.inject.Provider; import org.fuzzydb.samples.MyCounter; import org.fuzzydb.samples.repositories.StatsRepository; import org.fuzzydb.samples.repositories.UserRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.social.connect.ConnectionRepository; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * Handles requests for the application home page. */ @Controller public class HomeController { private static final String HOME_PAGE = "/"; private final Provider<ConnectionRepository> connectionRepositoryProvider; private final UserRepository accountRepository; @Inject public HomeController(Provider<ConnectionRepository> connectionRepositoryProvider, UserRepository accountRepository) { this.connectionRepositoryProvider = connectionRepositoryProvider; this.accountRepository = accountRepository; } @Autowired private StatsRepository counterRepo; private static final Logger logger = LoggerFactory.getLogger(HomeController.class); private ConnectionRepository getConnectionRepository() { return connectionRepositoryProvider.get(); } /** * Simple scenario for updating one composite object */ @RequestMapping(value=HOME_PAGE, method=RequestMethod.GET) public String home(Principal currentUser, Model model) { model.addAttribute("connectionsToProviders", getConnectionRepository().findAllConnections()); if (currentUser != null) { model.addAttribute("account", accountRepository.findOne(currentUser.getName())); } logger.info("Welcome home!"); MyCounter counter = counterRepo.findOne(HOME_PAGE); if (counter == null) { counter = new MyCounter(HOME_PAGE); } counter.increment(); counterRepo.save(counter); model.addAttribute("count", counter.getCount()); return "home"; } }