package swag49.web.service; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import swag49.dao.DataAccessObject; import swag49.model.Player; import swag49.transfer.model.MessageDTO; import swag49.transfer.model.PlayerDTO; import swag49.util.Log; import swag49.web.InternalMessageStore; import java.util.Collection; @Controller public class MessagingService { @Log private Logger log; @Autowired @Qualifier("playerDAO") private DataAccessObject<Player, Long> playerDAO; @Autowired private InternalMessageStore messageStore; @RequestMapping(value = "/messaging/user/{userId}", method = RequestMethod.GET) @ResponseBody @Transactional("swag49.map") public PlayerDTO getUser(@PathVariable("userId") String userId) { Player playerExample = new Player(); //noinspection NullableProblems playerExample.setResources(null); //noinspection NullableProblems playerExample.setUpkeep(null); //noinspection NullableProblems playerExample.setIncome(null); playerExample.setTroops(null); playerExample.setActions(null); playerExample.setOwns(null); playerExample.setUserId(userId); Collection<Player> queryResult = playerDAO.queryByExample(playerExample); if(queryResult.size() != 1) { log.warn("no or too many players with playerId {} found, sending message aborted", userId); return null; } Player player = queryResult.iterator().next(); return new PlayerDTO(player.getId(), userId, player.getOnline()); } @RequestMapping(value = "/messaging/receive", method = RequestMethod.PUT) @ResponseBody public void receiveMessage(@RequestBody MessageDTO message) { log.info("received message {}", message); messageStore.addReceivedMessage(message.getReceiver().getId(), message); } }