/*
* 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 java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.hibernate.Hibernate;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.web.servlet.ModelAndView;
import com.apress.progwt.client.domain.Application;
import com.apress.progwt.client.domain.User;
import com.apress.progwt.server.service.SchoolService;
public class ViewUserController extends BasicController {
private SchoolService schoolService;
private String notFoundView;
private static final Logger log = Logger
.getLogger(ViewUserController.class);
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest req,
HttpServletResponse arg1) throws Exception {
log.debug("SERVLET PATH: " + req.getServletPath() + " "
+ req.getPathInfo() + " " + req.getQueryString());
Map<String, Object> model = getDefaultModel(req);
String path = req.getPathInfo();
String[] pathParts = path.split("/");
log.debug("!path parts " + Arrays.toString(pathParts));
// "/user/jeff" splits to [,jeff]
if (pathParts.length < 2) {
return new ModelAndView(getNotFoundView());
}
String nickname = pathParts[1];
User fetchedUser = userService
.getUserByNicknameFullFetch(nickname);
if(log.isDebugEnabled()){
log.debug("user u: " + fetchedUser);
log.debug("isinit user " + Hibernate.isInitialized(fetchedUser));
log.debug("isinit schools "
+ Hibernate
.isInitialized(fetchedUser.getSchoolRankings()));
for (Application sap : fetchedUser.getSchoolRankings()) {
if(!Hibernate.isInitialized(sap)){
log.debug("Not initialized");
}
}
}
if (fetchedUser == null) {
return new ModelAndView(getNotFoundView(), "message",
"Couldn't find user with nickname: " + nickname);
}
model.put("viewUser", fetchedUser);
ModelAndView mav = getMav();
mav.addAllObjects(model);
return mav;
}
@Required
public void setSchoolService(SchoolService schoolService) {
this.schoolService = schoolService;
}
public String getNotFoundView() {
return notFoundView;
}
@Required
public void setNotFoundView(String notFoundView) {
this.notFoundView = notFoundView;
}
}