package com.vst.webapp.action;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import com.vst.Constants;
import com.vst.model.ConstructionType;
import com.vst.service.ConstructionTypeManager;
public class ConstructionTypeController extends AbstractVstController {
protected static final Log log = LogFactory.getLog(ConstructionTypeController.class);
private ConstructionTypeManager constructionTypeManager = null;
public void setConstructionTypeManager(ConstructionTypeManager constructionTypeManager) {
this.constructionTypeManager = constructionTypeManager;
}
private void processParamPageNumber(HttpServletRequest request,
HttpServletResponse response) {
String pageNumber = request.getParameter("d-6947071-p");
if (pageNumber != null) {
request.setAttribute("pageNumber", "d-6947071-p=" + pageNumber);
}
}
private void processParamDelete(HttpServletRequest request,
HttpServletResponse response) {
String constructionTypeId = request.getParameter("id");
ResourceBundle bundle = ResourceBundle.getBundle("ApplicationResources");
boolean hasFatalError = false;
try {
if (constructionTypeManager.removeConstructionType(constructionTypeId)) {
request.setAttribute("message", bundle.getString("constructionType.deleted"));
} else {
request.setAttribute("errormessage", bundle.getString("constructionType.isUsed"));
request.setAttribute("refferenceList", constructionTypeManager.getConnectedRefferences(constructionTypeId));
}
} catch (Exception e) {
e.printStackTrace();
hasFatalError = true;
}
if (hasFatalError) {
request.setAttribute("errormessage", bundle.getString("commonMistake"));
}
}
private List<?> prepareConstructionTypeListForView(HttpServletRequest request,
HttpServletResponse response) throws IllegalAccessException, InvocationTargetException{
ConstructionType constructionType = new ConstructionType();
// populate object with request parameters
BeanUtils.populate(constructionType, request.getParameterMap());
List constructionTypes = constructionTypeManager.getConstructionTypes(constructionType);
return constructionTypes;
}
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("entering 'handleRequest' method...");
}
processParamEdited(request, response);
processParamPageNumber(request, response);
if (isDeleteParamPresent(request)) {
processParamDelete(request, response);
}
List constructionTypes = prepareConstructionTypeListForView(request, response);
return new ModelAndView("constructionTypeList", Constants.CONSTRUCTIONTYPE_LIST, constructionTypes);
}
}