package com.retailwave.fce.server.rpc;
/**
* $Id: UserServiceRemoteImpl.java 5 2010-06-03 11:07:35Z muthu $
* $HeadURL: svn://10.10.200.111:3691/Finance/tags/framework-snapshot1/fce/src/main/java/com/retailwave/fce/server/rpc/UserServiceRemoteImpl.java $
*/
import com.google.gwt.gen2.table.client.TableModelHelper;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.google.gwt.user.server.rpc.UnexpectedException;
import com.retailwave.fce.server.service.UserService;
import com.retailwave.fce.shared.domain.User;
import com.retailwave.fce.shared.dto.UserDTO;
import com.retailwave.fce.shared.rpc.UserServiceRemote;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.ServletContextAware;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class UserServiceRemoteImpl
extends RemoteServiceServlet
implements UserServiceRemote, Controller, ServletContextAware {
private static final long serialVersionUID = 1L;
// Instance fields
private ServletContext servletContext;
@Autowired
private UserService userService;
public UserServiceRemoteImpl() {
}
@Override
public ServletContext getServletContext() {
return servletContext;
}
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
/**
* Call GWT's RemoteService doPost() method and return null.
*
* @param request The current HTTP request
* @param response The current HTTP response
* @return A ModelAndView to render, or null if handled directly
* @throws Exception In case of errors
*/
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
doPost(request, response);
return null; // response handled by GWT RPC over XmlHttpRequest
}
@Override
public UserDTO getUser() {
UserDTO userDTO = new UserDTO();
// User serverUser = vscService.getUser(getThreadLocalRequest());
User serverUser = null;
if (null != serverUser) {
userDTO.setUserId(serverUser.getExternalId());
userDTO.setName(serverUser.getName());
userDTO.setFullName(serverUser.getFullName());
userDTO.setEmailAddress(serverUser.getEmailAddress());
}
return userDTO;
}
@Override
public UserDTO getUser(String id) {
UserDTO clientUserDTO = new UserDTO();
User domainUser = userService.getUser(id);
if (null != domainUser) {
clientUserDTO.setUserId(domainUser.getExternalId());
clientUserDTO.setName(domainUser.getName());
clientUserDTO.setFullName(domainUser.getFullName());
clientUserDTO.setEmailAddress(domainUser.getEmailAddress());
clientUserDTO.setActive(domainUser.isActive());
}
return clientUserDTO;
}
@Override
public void saveUser(UserDTO userDTO) {
// validate data
User serverUser = userService.getUserByName(userDTO.getName());
if (null == serverUser) {
// convert to domain data
User partnerUser = new User();
partnerUser.setName(userDTO.getName());
partnerUser.setActive(userDTO.isActive());
partnerUser.setEmailAddress(userDTO.getEmailAddress());
partnerUser.setFullName(userDTO.getFullName());
partnerUser.setExternalId(userDTO.getExternalId());
userService.saveUser(partnerUser);
} else {
throw new IllegalArgumentException("UserDTO already exists with name: " + userDTO.getName());
}
}
@Override
public void updateUser(UserDTO userDTO) {
}
@Override
public List<UserDTO> searchUsers(UserDTO userDTO, TableModelHelper.Request request) {
List<? extends User> serverUsers = null;
return toClientUsers(new ArrayList<UserDTO>(), serverUsers);
}
@Override
public int countUsers() {
return userService.countUsers();
}
@Override
public int countLexmarkUsers() {
return userService.countLexmarkUsers();
}
@Override
public int countPartnerUsers() {
return userService.countPartnerUsers();
}
private List<UserDTO> toClientUsers(List<UserDTO> userDTOs,
List<? extends User> serverUsers) {
for (User serverUser : serverUsers) {
UserDTO clientUserDTO = new UserDTO();
clientUserDTO.setUserId(serverUser.getExternalId());
clientUserDTO.setName(serverUser.getName());
clientUserDTO.setFullName(serverUser.getFullName());
clientUserDTO.setEmailAddress(serverUser.getEmailAddress());
clientUserDTO.setActive(serverUser.isActive());
userDTOs.add(clientUserDTO);
}
return userDTOs;
}
}