/*
* Copyright 2008 Jeff Dwyer
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.apress.progwt.server.web.controllers;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.apress.progwt.client.domain.GWTSerializer;
import com.apress.progwt.client.domain.School;
import com.apress.progwt.client.domain.dto.ForumBootstrap;
import com.apress.progwt.client.domain.dto.PostsList;
import com.apress.progwt.client.exception.InfrastructureException;
import com.apress.progwt.server.service.SchoolService;
import com.apress.progwt.server.service.UserService;
@Controller
public class CollegeController {
@Autowired
@Qualifier(value = "GWTSchoolService")
private GWTSerializer serializer;
@Autowired
private SchoolService schoolService;
@Autowired
private UserService userService;
private String notFoundView = "redirect:/search.html";
private String view = "college";
private static final Logger log = Logger
.getLogger(CollegeController.class);
@RequestMapping(method = RequestMethod.GET)
public String collegeHandler(HttpServletRequest req, ModelMap model)
throws InfrastructureException {
log.debug("SERVLET PATH: " + req.getServletPath() + " "
+ req.getPathInfo() + " " + req.getQueryString());
String path = req.getPathInfo();
path = path.replace('_', ' ');
String[] pathParts = path.split("/");
log.debug("!path parts " + Arrays.toString(pathParts));
// "/college/dartmouth" splits to [,dartmouth]
if (pathParts.length < 2) {
return getNotFoundView();
}
String schoolName = pathParts[1];
School school = schoolService.getSchoolDetails(schoolName);
if (school == null) {
model.addAttribute("message", "Couldn't find school "
+ schoolName);
return getNotFoundView();
}
PostsList forumPosts = schoolService.getForum(school, 0, 10);
ForumBootstrap forumBootstrap = new ForumBootstrap(serializer,
forumPosts, school);
model.addAttribute("forumBootstrap", forumBootstrap);
model.addAttribute("school", school);
model.addAttribute("interestedIn", schoolService
.getUsersInterestedIn(school));
ControllerUtil
.updateModelMapWithDefaults(model, req, userService);
return view;
}
public void setSchoolService(SchoolService schoolService) {
this.schoolService = schoolService;
}
public void setSerializer(GWTSerializer serializer) {
this.serializer = serializer;
}
public String getNotFoundView() {
return notFoundView;
}
public void setNotFoundView(String notFoundView) {
this.notFoundView = notFoundView;
}
}