package com.vst.webapp.action;
import com.vst.model.DefectVarity;
import com.vst.model.Parameter;
import com.vst.service.DefectVarityManager;
import com.vst.service.MaterialManager;
import com.vst.service.ParameterManager;
import org.apache.commons.lang.StringUtils;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class DefectVarityFormController extends BaseFormController {
private DefectVarityManager defectVarityManager = null;
private ParameterManager parameterManager = null;
private MaterialManager materialManager = null;
public void setMaterialManager(MaterialManager materialManager) {
this.materialManager = materialManager;
}
public void setParameterManager(ParameterManager parameterManager) {
this.parameterManager = parameterManager;
}
public void setDefectVarityManager(DefectVarityManager defectVarityManager) {
this.defectVarityManager = defectVarityManager;
}
public DefectVarityFormController() {
setCommandName("defectVarity");
setCommandClass(DefectVarity.class);
}
protected Object formBackingObject(HttpServletRequest request)
throws Exception {
request.setAttribute("parameterList", parameterManager.getParameters(null));
request.setAttribute("materialList", materialManager.getMaterials(null));
if (!isFormSubmission(request)) {
String varityId = request.getParameter("varityId");
DefectVarity defectVarity = null;
if (!StringUtils.isEmpty(varityId)) {
defectVarity = defectVarityManager.getDefectVarity(varityId);
defectVarityManager.evict(defectVarity);
} else {
defectVarity = new DefectVarity();
}
if (request.getParameter("edited") != null) {
request.setAttribute("addition", "?edited=1");
defectVarity.setEdited(true);
}
defectVarity.setDocLocation(request.getParameter("docLocation"));
return defectVarity;
}
return super.formBackingObject(request);
}
public ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command,
BindException errors)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("entering 'onSubmit' method...");
}
DefectVarity defectVarity = (DefectVarity) command;
boolean isNew = (defectVarity.getVarityId() == null);
Locale locale = request.getLocale();
if (request.getParameter("delete") != null) {
defectVarityManager.removeDefectVarity(defectVarity.getVarityId().toString());
saveMessage(request, getText("defectVarity.deleted", locale));
} else {
List defectParameters = new ArrayList();
List defectParametersFromForm = defectVarity.getParameters();
for (int i = 0; i < defectParametersFromForm.size(); i++) {
Parameter parameter = (Parameter) defectParametersFromForm.get(i);
defectVarityManager.evict(parameter);
defectParameters.add(parameterManager.getParameter(parameter.getParameterId().toString()));
}
defectVarity.setParameters(defectParameters);
Integer materialId = defectVarity.getMaterial().getMaterialId();
if (!materialId.equals(new Integer(-1))) {
defectVarity.setMaterial(materialManager.getMaterial(materialId.toString()));
}
defectVarityManager.saveDefectVarity(defectVarity);
String key = (isNew) ? "defectVarity.added" : "defectVarity.updated";
saveMessage(request, getText(key, locale));
if (defectVarity.isEdited()) {
return new ModelAndView("redirect:updating.html?id=" + defectVarity.getVarityId() + "&fieldId=" + request.getParameter("fieldId"));
}
}
return new ModelAndView("redirect:" + defectVarity.getDocLocation());
}
public ModelAndView processFormSubmission(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {
DefectVarity defectVarity = (DefectVarity) command;
if (request.getParameter("addParameter") != null) {
defectVarity.getParameters().add(new Parameter());
return new ModelAndView("defectVarityForm", "defectVarity", defectVarity);
}
if (request.getParameter("deleteParameter") != null) {
defectVarity.getParameters().remove(defectVarity.getParameterNumber());
return new ModelAndView("defectVarityForm", "defectVarity", defectVarity);
}
return super.processFormSubmission(request, response, command, errors);
}
}