package com.vst.webapp.action;
import com.vst.model.*;
import com.vst.service.*;
import com.vst.util.FileHelper;
import com.vst.util.StringUtil;
import org.springframework.validation.BindException;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* User: And Lilia
* Date: 28.04.2009
* Time: 16:39:03
* To change this template use File | Settings | File Templates.
*/
public class InsertObjectInspectionController extends BaseFormController {
QuestionManager questionManager;
InspectionAnswerManager inspectionAnswerManager;
RegionManager regionManager;
ObjectInspectionManager objectInspectionManager;
ExpertManager expertManager;
ObjectAnswerManager objectAnswerManager;
ObjectExpertTypeManager objectExpertTypeManager;
PipelineSubtypeManager pipelineSubtypeManager;
PhotoManager photoManager;
public void setQuestionManager(QuestionManager questionManager) {
this.questionManager = questionManager;
}
public void setInspectionAnswerManager(InspectionAnswerManager inspectionAnswerManager) {
this.inspectionAnswerManager = inspectionAnswerManager;
}
public void setPhotoManager(PhotoManager photoManager) {
this.photoManager = photoManager;
}
public void setPipelineSubtypeManager(PipelineSubtypeManager pipelineSubtypeManager) {
this.pipelineSubtypeManager = pipelineSubtypeManager;
}
public void setObjectExpertTypeManager(ObjectExpertTypeManager objectExpertTypeManager) {
this.objectExpertTypeManager = objectExpertTypeManager;
}
public void setObjectAnswerManager(ObjectAnswerManager objectAnswerManager) {
this.objectAnswerManager = objectAnswerManager;
}
public void setExpertManager(ExpertManager expertManager) {
this.expertManager = expertManager;
}
public void setObjectInspectionManager(ObjectInspectionManager objectInspectionManager) {
this.objectInspectionManager = objectInspectionManager;
}
public void setRegionManager(RegionManager regionManager) {
this.regionManager = regionManager;
}
public InsertObjectInspectionController() {
setCommandName("inspection");
setCommandClass(ObjectInspection.class);
}
protected Object formBackingObject(HttpServletRequest request) throws Exception {
request.setAttribute("pipelineSubtypeSelect", pipelineSubtypeManager.getPipelineSubtype());
request.setAttribute("objectExpertTypeListSelect", objectExpertTypeManager.getObjectExpertTypeList());
request.setAttribute("expertTrueListSelect", expertManager.getTrueExpert());
request.setAttribute("expertFalseListSelect", expertManager.getFalseExpert());
request.setAttribute("customerRegionList", regionManager.getRegions(null));
if (!isFormSubmission(request)) {
if (request.getParameter("objectId") != null) {
int id = Integer.parseInt(request.getParameter("objectId"));
return objectInspectionManager.getObjectInspectionBy((Integer) id);
} else {
return new ObjectInspection();
}
}
return super.formBackingObject(request);
}
public ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response,
Object command,
BindException errors) throws Exception {
ModelAndView mav = new ModelAndView(getSuccessView());
if (request.getParameter("cansel") != null) {
return new ModelAndView("redirect:/lookObjectInspection.html");
}
ObjectInspection objectInspection = (ObjectInspection) command;
if (objectInspection.getObjectId() != null) {
objectInspection = objectInspectionManager.getObjectInspectionBy(objectInspection.getObjectId());
objectInspectionManager.evictObject(objectInspection);
}
objectInspection.setCustomerRegion(regionManager.getRegionById(objectInspection.getCustomerRegion().getRegionId()));
List l1 = objectInspection.getTrueexpertList();
if (l1 != null && !l1.isEmpty())
for (int i = 0; i < l1.size(); i++) {
Expert expert = (Expert) l1.get(i);
expert = expertManager.getExpertById(expert.getExpertId());
l1.set(i, expert);
}
objectInspection.setTrueexpertList(l1);
l1 = objectInspection.getFalseexpertList();
if (l1 != null && !l1.isEmpty())
for (int i = 0; i < l1.size(); i++) {
Expert expert = (Expert) l1.get(i);
expert = expertManager.getExpertById(expert.getExpertId());
l1.set(i, expert);
}
objectInspection.setFalseexpertList(l1);
/*List questionsList=questionManager.getAllQuestions();
List qList=new ArrayList();
for (int i=0; i<questionsList.size(); i++){
InspectionAnswer inspectionAnswer=new InspectionAnswer();
inspectionAnswer.setQuestion((Question)questionsList.get(i));
inspectionAnswerManager.insert(inspectionAnswer);
qList.add(inspectionAnswer);
}
objectInspection.setDocumentationQuestions(qList);
*/
List l2 = objectInspection.getObjectTypeList();
if (l2 != null && !l2.isEmpty())
for (int i = 0; i < l2.size(); i++) {
PracticalObjectExpertType type = (PracticalObjectExpertType) l2.get(i);
PipelineSubtype pipe = pipelineSubtypeManager.getPipelineSubtypeById(type.getPipelineSubtype().getPipelineId());
ObjectExpertType exp = objectExpertTypeManager.getObjectExpertTypeById(type.getObjectExpertType().getExpertId());
type.setObjectExpertType(exp);
type.setPipelineSubtype(pipe);
l2.set(i, type);
}
objectInspection.setObjectTypeList(l2);
Date d = objectInspection.getContractDate();
objectInspection.setDateForLook(StringUtil.formatDate(d));
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
CommonsMultipartFile fileCertificate = (CommonsMultipartFile) multipartRequest.getFile("certificate.file");
CommonsMultipartFile fileDemand = (CommonsMultipartFile) multipartRequest.getFile("demand.file");
if (objectInspection.getObjectId() != null) {
objectInspection = objectInspectionManager.getObjectInspectionBy(objectInspection.getObjectId());
Photo photo = photoManager.update(photoManager.getByIdPhoto(objectInspection.getCertificate().getPhotoId()), fileCertificate, FileHelper.getCurrentPath(request));
//objectInspection.setCertificate(photo);
photo = photoManager.update(photoManager.getByIdPhoto(objectInspection.getDemand().getPhotoId()), fileDemand, FileHelper.getCurrentPath(request));
//objectInspection.setDemand(photo);
objectInspectionManager.updateObjectInspection(objectInspection);
return new ModelAndView("redirect:/lookObjectInspection.html");
} else {
if (fileCertificate.getSize() > 0) {
Photo photo = photoManager.insertPhoto(fileCertificate, FileHelper.getCurrentPath(request));
objectInspection.setCertificate(photo);
}
if (fileDemand.getSize() > 0) {
Photo photo = photoManager.insertPhoto(fileDemand, FileHelper.getCurrentPath(request));
objectInspection.setDemand(photo);
}
objectInspectionManager.insertObjectInspection(objectInspection);
mav.addObject("pipelineSubtypeSelect", pipelineSubtypeManager.getPipelineSubtype());
mav.addObject("objectExpertTypeListSelect", objectExpertTypeManager.getObjectExpertTypeList());
mav.addObject("expertTrueListSelect", expertManager.getTrueExpert());
mav.addObject("expertFalseListSelect", expertManager.getFalseExpert());
mav.addObject("customerRegionList", regionManager.getRegions(null));
mav.addObject("inspection", new ObjectInspection());
mav.addObject("result", new Integer(1));
return mav;
}
/*mav.addObject("pipelineSubtypeSelect",pipelineSubtypeManager.getPipelineSubtype());
mav.addObject("objectExpertTypeListSelect",objectExpertTypeManager.getObjectExpertTypeList());
mav.addObject("expertListSelect", expertManager.getAllExpert());
mav.addObject("inspection",new ObjectInspection());
return mav;*/
}
public ModelAndView processFormSubmission(HttpServletRequest request,
HttpServletResponse response,
Object command,
BindException errors)
throws Exception {
/* super.setValidateOnBinding(true);
setValidateOnBinding(true);*/
ObjectInspection objectInspection = (ObjectInspection) command;
ModelAndView mav = new ModelAndView("insertObjectInspection");
if (request.getParameter("addTrueExpert") != null) {
// super.setValidateOnBinding(false);
List list = objectInspection.getTrueexpertList();
Expert exp = new Expert();
exp.setExpert(true);
list.add(exp);
mav.addObject("inspection", objectInspection);
return mav;
}
if (request.getParameter("deleteTrueExpert") != null) {
//super.setValidateOnBinding(false);
objectInspection.getTrueexpertList().remove(objectInspection.getTrueexpertList());
mav.addObject("inspection", objectInspection);
return mav;
}
if (request.getParameter("addFalseExpert") != null) {
// super.setValidateOnBinding(false);
List list = objectInspection.getFalseexpertList();
Expert exp = new Expert();
exp.setExpert(false);
list.add(exp);
mav.addObject("inspection", objectInspection);
return mav;
}
if (request.getParameter("deleteFalseExpert") != null) {
//super.setValidateOnBinding(false);
objectInspection.getFalseexpertList().remove(objectInspection.getFalseexpertList());
mav.addObject("inspection", objectInspection);
return mav;
}
if (request.getParameter("addObjectTypeList") != null) {
// super.setValidateOnBinding(false);
List list = objectInspection.getObjectTypeList();
PracticalObjectExpertType exp = new PracticalObjectExpertType();
exp.setPipelineSubtype(new PipelineSubtype());
exp.setObjectExpertType(new ObjectExpertType());
list.add(exp);
mav.addObject("inspection", objectInspection);
return mav;
}
if (request.getParameter("deleteObjectTypeList") != null) {
// super.setValidateOnBinding(false);
objectInspection.getObjectTypeList().remove(objectInspection.getObjectExpertTypeNumber());
mav.addObject("inspection", objectInspection);
return mav;
}
return super.processFormSubmission(request,
response,
command,
errors);
}
}