package com.juick.www.controllers; import com.juick.User; import com.juick.server.util.HttpNotFoundException; import com.juick.service.MessagesService; import com.juick.service.UserService; import com.juick.util.WebUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import javax.inject.Inject; /** * Created by aalexeev on 11/21/16. */ @Controller public class ShowMessageController { @Inject private UserService userService; @Inject private MessagesService messagesService; @RequestMapping("/{anything}") public String parseAnything( @PathVariable String anything, @RequestParam(required = false, defaultValue = "0") int before, Model model) { if (before == 0) { boolean isPostNumber = WebUtils.isPostNumber(anything); int messageId = isPostNumber ? NumberUtils.toInt(anything) : 0; if (isPostNumber && anything.equals(Integer.toString(messageId))) { if (messageId > 0) { com.juick.User author = messagesService.getMessageAuthor(messageId); if (author != null) return "redirect:/" + author.getName() + "/" + anything; } model.addAttribute("messageId", anything); throw new HttpNotFoundException(); } } return showUserMessages(anything, null, before, model); } //@RequestMapping("/{userName}/tag/{tagName}") public String showUserMessagesByTag( @PathVariable String userName, @PathVariable String tagName, @RequestParam(required = false, defaultValue = "0") int before, Model model) { return showUserMessages(userName, tagName, before, model); } private String showUserMessages( String userName, String tagName, int before, Model model) { // Check validity of user name before quering from database if (WebUtils.isNotUserName(userName)) { model.addAttribute("userName", userName); throw new HttpNotFoundException(); } User user = userService.getUserByName(userName); if (user.getUid() == 0) { model.addAttribute("userName", userName); throw new HttpNotFoundException(); } return "views/index"; } //@RequestMapping("/{userName}/friends") public String getFriends( @PathVariable String userName, Model model) { // Check validity of user name before quering from database if (WebUtils.isNotUserName(userName)) { model.addAttribute("userName", userName); throw new HttpNotFoundException(); } User user = userService.getUserByName(userName); if (user.getUid() == 0) { model.addAttribute("userName", userName); throw new HttpNotFoundException(); } return "views/index"; } //@RequestMapping("/{userName}/readers") public String getReaders( @PathVariable String userName, Model model) { // Check validity of user name before quering from database if (WebUtils.isNotUserName(userName)) { model.addAttribute("userName", userName); throw new HttpNotFoundException(); } User user = userService.getUserByName(userName); if (user.getUid() == 0) { model.addAttribute("userName", userName); throw new HttpNotFoundException(); } return "views/index"; } @RequestMapping("/{userName}/tags") public String geTags( @PathVariable String userName, Model model) { // Check validity of user name before quering from database if (WebUtils.isNotUserName(userName)) { model.addAttribute("userName", userName); throw new HttpNotFoundException(); } User user = userService.getUserByName(userName); if (user.getUid() == 0) { model.addAttribute("userName", userName); throw new HttpNotFoundException(); } return "views/index"; } //@RequestMapping("/{userName}/{postNumber}") public String checkShowPost( @PathVariable String userName, @PathVariable String postNumber, Model model) { // Check validity of post number before quering from database if (WebUtils.isNotPostNumber(postNumber)) { model.addAttribute("messageId", postNumber); throw new HttpNotFoundException(); } // Check validity of user name before quering from database if (WebUtils.isNotUserName(userName)) { model.addAttribute("userName", userName); throw new HttpNotFoundException(); } User user = userService.getUserByName(userName); if (user.getUid() == 0) { model.addAttribute("userName", userName); throw new HttpNotFoundException(); } return "views/thread"; } }