package com.vst.webapp.action;
import com.vst.service.*;
import com.vst.model.*;
import com.vst.webapp.util.ImageUtil;
import com.vst.util.FileHelper;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.validation.BindException;
import org.hibernate.Hibernate;
import java.util.List;
import java.util.ArrayList;
import java.util.Locale;
import java.util.Date;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.IOException;
/**
* Created by IntelliJ IDEA. User: ������������� Date: 29.07.2009 Time: 17:59:42
* To change this template use File | Settings | File Templates.
*/
public class ConstructionDefectZoneFormController extends BaseFormController {
ObjectConstructionManager objectConstructionManager;
public ObjectConstructionManager getObjectConstructionManager() {
return objectConstructionManager;
}
public void setObjectConstructionManager(
ObjectConstructionManager objectConstructionManager) {
this.objectConstructionManager = objectConstructionManager;
}
private ConstructionDefectManager constructionDefectManager = null;
private ReasonManager reasonManager = null;
private DefectZoneManager defectZoneManager = null;
private DefectTypeManager defectTypeManager = null;
private DefectVarityManager defectVarityManager = null;
private ConstructionExampleManager constructionExampleManager = null;
private AuthentificationElementManager authentificationElementManager = null;
private ParameterManager parameterManager = null;
private DangerCategoryManager dangerCategoryManager = null;
public void setDangerCategoryManager(
DangerCategoryManager dangerCategoryManager) {
this.dangerCategoryManager = dangerCategoryManager;
}
public void setParameterManager(ParameterManager parameterManager) {
this.parameterManager = parameterManager;
}
public void setAuthentificationElementManager(
AuthentificationElementManager authentificationElementManager) {
this.authentificationElementManager = authentificationElementManager;
}
public void setConstructionExampleManager(
ConstructionExampleManager constructionExampleManager) {
this.constructionExampleManager = constructionExampleManager;
}
public void setReasonManager(ReasonManager reasonManager) {
this.reasonManager = reasonManager;
}
public void setDefectZoneManager(DefectZoneManager defectZoneManager) {
this.defectZoneManager = defectZoneManager;
}
public void setDefectTypeManager(DefectTypeManager defectTypeManager) {
this.defectTypeManager = defectTypeManager;
}
public void setDefectVarityManager(DefectVarityManager defectVarityManager) {
this.defectVarityManager = defectVarityManager;
}
public void setConstructionDefectManager(
ConstructionDefectManager constructionDefectManager) {
this.constructionDefectManager = constructionDefectManager;
}
public ConstructionDefectZoneFormController() {
setCommandName("constructionDefectZone");
setCommandClass(ConstructionDefectZone.class);
}
protected Object formBackingObject(HttpServletRequest request)
throws Exception {
System.out.println("Form backing object method started ...");
request.setAttribute("dangerCategoryList",
dangerCategoryManager.getDangerCategorys(null));
String constructionDefectId = request
.getParameter("constructionDefectId");
Integer constructionTypeId = null;
if (request.getParameter("objectConstructionId") != null) {
request.getSession().setAttribute("objectConstructionId",
request.getParameter("objectConstructionId"));
ObjectConstruction objectConstruction = objectConstructionManager
.getObjectConstruction(request
.getParameter("objectConstructionId"));
constructionTypeId = objectConstruction.getConstructionType()
.getConstructionTypeId();
request.setAttribute("constructionTypeId", constructionTypeId);
request.setAttribute("defectTypeList", defectTypeManager
.getDefectTypesByConstructionTypeId(constructionTypeId));
request.setAttribute("defectZoneList", defectZoneManager
.getDefectZonesByConstructionType(constructionTypeId
.toString()));
System.out.println("Construction Type"
+ constructionTypeId
+ "DEFECT TYPES SIZE:"
+ defectTypeManager.getDefectTypesByConstructionTypeId(
constructionTypeId).size()
+ "-"
+ defectZoneManager.getDefectZonesByConstructionType(
constructionTypeId.toString()).size());
}
if (!isFormSubmission(request)) {
ConstructionDefectZone constructionDefect = new ConstructionDefectZone();
ObjectConstruction objectConstruction = objectConstructionManager
.getObjectConstruction(request
.getParameter("objectConstructionId"));
System.out.println("Example list" + request
.getParameter("objectConstructionId"));
constructionDefect.setConstructionTypeId(objectConstruction
.getConstructionType().getConstructionTypeId().toString());
if(request.getParameter("exampleId")!=null){
constructionDefect.setExampleId(new Integer(request.getParameter("exampleId")));
}
System.out.println("DV" + constructionTypeId
+ "-construction defect-" + constructionDefect + "-typeID"
+ constructionDefect.getConstructionTypeId());
if (constructionDefectId != null) {
System.out.println("DV" + constructionDefect);
constructionDefect = constructionDefectManager
.getConstructionDefectZone(constructionDefectId);
System.out.println("DV" + constructionDefect);
request.setAttribute("defectVarityList", defectVarityManager
.getDefectVaritiesByType(constructionDefect
.getDefectType().getDefectTypeId().toString()));
request.setAttribute("reasonList", reasonManager
.getReasonsByType(constructionDefect.getDefectType()
.getDefectTypeId().toString(),
constructionDefect.getDefectVarity()
.getVarityId().toString(),
constructionDefect.getDefectZone()
.getDefectZoneId().toString(), String
.valueOf(constructionDefect
.getConstructionTypeId())));
} else {
List constructionExampleList = objectConstruction
.getConstructionExamples();
System.out.println("DV OC" + constructionExampleList);
for (int i = 0; i < constructionExampleList.size(); i++) {
ConstructionExample constructionExample = (ConstructionExample) constructionExampleList
.get(i);
constructionExample = constructionExampleManager
.getConstructionExample(constructionExample
.getExampleId().toString());
constructionExample.setSelected(false);
constructionExampleList.set(i, constructionExample);
}
constructionDefect
.setConstructionExampleList(constructionExampleList);
if (request.getAttribute("defectVarityList") == null) {
request.setAttribute("defectVarityList", new ArrayList());
request.setAttribute("noVarityList", "true");
}
if (request.getAttribute("reasonList") == null) {
request.setAttribute("reasonList", new ArrayList());
request.setAttribute("noReasonList", "true");
}
}
if (request.getParameter("edited") != null) {
request.setAttribute("addition", "?edited=1");
constructionDefect.setEdited(true);
}
constructionDefect.getDefectVarity().getVarityName();
constructionDefectManager.makeNotNull(constructionDefect);
if (request.getAttribute("defectZoneList") == null) {
request.setAttribute("defectZoneList", new ArrayList());
request.setAttribute("noDefectZoneList", "true");
}
constructionDefect.setDocLocation(request
.getParameter("docLocation"));
System.out.println("Before:" + constructionDefect);
return constructionDefect;
}
System.out.println("After:"
+ request
.getParameter("exampleId"));
return super.formBackingObject(request);
}
public ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
System.out.println("On submit method started ..." + command);
ConstructionDefectZone constructionDefect = (ConstructionDefectZone) command;
// boolean isNew = (constructionDefect.getConstructionDefectId() ==
// null);
Locale locale = request.getLocale();
if (request.getParameter("delete") != null) {
constructionDefectManager
.removeConstructionDefect(constructionDefect
.getConstructionDefectId().toString());
saveMessage(request, getText("constructionDefect.deleted", locale));
} else {
Integer reasonId = constructionDefect.getReason().getReasonId();
System.out.println("RID"+reasonId);
//reasonId = new Integer(0);
if (!reasonId.equals(new Integer(-1))) {
constructionDefect.setReason(reasonManager.getReason(reasonId
.toString()));
} else {
constructionDefect.setReason(null);
}
Integer defectZoneId = constructionDefect.getDefectZone()
.getDefectZoneId();
if (!defectZoneId.equals(new Integer(-1))) {
constructionDefect.setDefectZone(defectZoneManager
.getDefectZone(defectZoneId.toString()));
}
Integer defectTypeId = constructionDefect.getDefectType()
.getDefectTypeId();
if (!defectTypeId.equals(new Integer(-1))) {
constructionDefect.setDefectType(defectTypeManager
.getDefectType(defectTypeId.toString()));
}
Integer dangerCategoryId = constructionDefect.getDangerCategory()
.getDangerCategoryId();
if (!dangerCategoryId.equals(new Integer(-1))) {
constructionDefect.setDangerCategory(dangerCategoryManager
.getDangerCategory(dangerCategoryId.toString()));
}
Integer defectVarityId = constructionDefect.getDefectVarity()
.getVarityId();
if (!defectVarityId.equals(new Integer(-1))) {
constructionDefect.setDefectVarity(defectVarityManager
.getDefectVarity(defectVarityId.toString()));
}
List authentifications = new ArrayList();
List parameters = new ArrayList();
List parametersFromForm = constructionDefect.getDefectParameters();
for (int i = 0; i < parametersFromForm.size(); i++) {
DefectParameterZone defectParameter = (DefectParameterZone) parametersFromForm
.get(i);
defectParameter.setParameter(parameterManager
.getParameter(defectParameter.getParameter()
.getParameterId().toString()));
parameters.add(defectParameter);
}
constructionDefect.setDefectParameters(parameters);
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest
.getFile("file");
if (file.getSize() > 0) {
String fileName = ImageUtil.getUniqueJPEGFile(request);
FileOutputStream fileOutputStream = new FileOutputStream(
FileHelper.getCurrentPath(request) + fileName);
fileOutputStream.write(file.getBytes());
fileOutputStream.close();
InputStream imageStream = ImageUtil.scaleImage(
new FileInputStream(FileHelper.getCurrentPath(request)
+ fileName), 400, 400);
fileOutputStream = new FileOutputStream(
FileHelper.getCurrentPath(request) + fileName);
byte[] bufer = new byte[62000];
while (imageStream.read(bufer) != -1) {
fileOutputStream.write(bufer);
}
fileOutputStream.close();
constructionDefect.setWayToPhoto(fileName);
constructionDefect.setPhotoBlob(Hibernate
.createBlob(new FileInputStream(FileHelper
.getCurrentPath(request) + fileName)));
}
List exampleList = constructionDefect.getConstructionExampleList();
if(constructionDefect.getExampleId()!=null){
System.out.println("Example ID "+constructionDefect.getExampleId());
System.out.println("Defect ID "+constructionDefect.getConstructionDefectId());
ConstructionExample constructionExample = constructionExampleManager.getConstructionExample(constructionDefect.getExampleId().toString()) ;
constructionExample.setSelected(true);
exampleList.add(constructionExample);
}
if (constructionDefect.getConstructionDefectId() != null) {
Date date = new Date();
constructionDefect.setUniqueForExamples(String.valueOf(date
.getTime()));
System.out.println("Saving..." + constructionDefect);
constructionDefectManager
.saveConstructionDefectZone(constructionDefect);
ObjectConstruction objectConstruction = objectConstructionManager
.getObjectConstruction(request.getSession()
.getAttribute("objectConstructionId")
.toString());
return new ModelAndView(
"redirect:constructionExamples.html?typeId="
+ objectConstruction.getTypeId() + "&objectId="
+ objectConstruction.getObjectId());
} else {
System.out.println("Saving.id null ... exampleList ... " + exampleList + constructionDefect);
List listSave = new ArrayList();
for (int i = 0; i < exampleList.size(); i++) {
ConstructionExample constructionExample1 = (ConstructionExample) exampleList
.get(i);
if (constructionExample1.isSelected()) {
System.out.println("selected");
constructionExample1 = constructionExampleManager
.getConstructionExample(constructionExample1
.getExampleId().toString());
listSave.add(constructionExample1);
}
}
Date date = new Date();
for (int i = 0; i < listSave.size(); i++) {
ConstructionExample constructionExample = (ConstructionExample) listSave
.get(i);
ConstructionDefectZone constZone = getNewConstructionDefectZone(
constructionDefect, request);
constZone.setExampleId(constructionExample.getExampleId());
constZone.setUniqueForExamples(String.valueOf(date
.getTime()));
//constZone.setReason(0);
System.out.println("Saving.id null ... is" + constZone);
constructionDefectManager
.saveConstructionDefectZone(constZone);
//constructionExampleManager.evict(constructionExample);
//constructionExample.getExampleDefectsZone().add(constZone);
//constructionExampleManager
// .saveConstructionExample(constructionExample);
}
}
}
ObjectConstruction objectConstruction = objectConstructionManager
.getObjectConstruction(request.getSession()
.getAttribute("objectConstructionId").toString());
request.getSession().setAttribute("pType", "constructionExample" );
request.getSession().setAttribute("pId", request.getParameter("exampleId") );
return new ModelAndView("redirect:constructionExamples.html?typeId="
+ objectConstruction.getTypeId() + "&objectId="
+ objectConstruction.getObjectId() + "&exampleId="
+ request.getParameter("exampleId"));
}
public ModelAndView processFormSubmission(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
System.out.println("Process form submission method started ..."
+ command);
ConstructionDefectZone constructionDefect = (ConstructionDefectZone) command;
request.setAttribute("constructionTypeId",
constructionDefect.getConstructionTypeId());
request.setAttribute("defectTypeList", defectTypeManager
.getDefectTypesByConstructionTypeId(new Integer(
constructionDefect.getConstructionTypeId())));
request.setAttribute("defectZoneList", defectZoneManager
.getDefectZonesByConstructionType(constructionDefect
.getConstructionTypeId()));
String constructionType = constructionDefect.getConstructionTypeId();
request.setAttribute("constructionType", constructionType);
request.setAttribute("dangerCategoryList",
dangerCategoryManager.getDangerCategorys(null));
List exampleList = constructionDefect.getConstructionExampleList();
for (int i = 0; i < exampleList.size(); i++) {
ConstructionExample constructionExample1 = (ConstructionExample) exampleList
.get(i);
boolean selected = constructionExample1.isSelected();
constructionExample1.setSelected(selected);
exampleList.set(i, constructionExample1);
}
constructionDefect.setConstructionExampleList(exampleList);
System.out.println("DV 00" + constructionDefect);
if (!constructionDefect.getDefectType().getDefectTypeId()
.equals(new Integer(-1))) {
request.setAttribute("defectVarityList", defectVarityManager
.getDefectVaritiesByType(constructionDefect.getDefectType()
.getDefectTypeId().toString()));
request.setAttribute("reasonList", reasonManager.getReasonsByType(
constructionDefect.getDefectType().getDefectTypeId()
.toString(), constructionDefect.getDefectVarity()
.getVarityId().toString(), constructionDefect
.getDefectZone().getDefectZoneId().toString(),
String.valueOf(constructionType)));
} else {
request.setAttribute("defectVarityList", new ArrayList());
request.setAttribute("reasonList", new ArrayList());
}
if (request.getParameter("save") == null) {
if (!constructionDefect.getDefectVarity().getVarityId()
.equals(new Integer(-1))) {
// loading defect parameters
List parameterList = parameterManager
.getParametersByVarity(constructionDefect
.getDefectVarity().getVarityId().toString());
List parameterDefectList = new ArrayList();
for (int i = 0; i < parameterList.size(); i++) {
Parameter parameter = (Parameter) parameterList.get(i);
DefectParameterZone defectParameterZone = new DefectParameterZone();
defectParameterZone.setParameter(parameter);
parameterDefectList.add(defectParameterZone);
}
constructionDefect.setDefectParameters(parameterDefectList);
} else {
constructionDefect.setDefectParameters(new ArrayList());
}
/*
* if (request.getParameter("defectTypeSelect") != null) { return
* new ModelAndView("constructionDefectZoneForm",
* "constructionDefect", constructionDefect);
*
* }
*
* if (request.getParameter("defectVaritySelect") != null) { return
* new ModelAndView("constructionDefectZoneForm",
* "constructionDefect", constructionDefect);
*
* }
*
*
* if (request.getParameter("defectZoneSelect") != null) { return
* new ModelAndView("constructionDefectZoneForm",
* "constructionDefect", constructionDefect); }
*/
if (request.getParameter("cancel") != null) {
System.out.println("before :" + constructionDefect);
ObjectConstruction objectConstruction = objectConstructionManager
.getObjectConstruction(request.getSession()
.getAttribute("objectConstructionId")
.toString());
return new ModelAndView(
"redirect:constructionExamples.html?typeId="
+ objectConstruction.getTypeId() + "&objectId="
+ objectConstruction.getObjectId() + "&exampleId="
+ request.getParameter("exampleId"));
}
System.out.println("after :" + constructionDefect);
return new ModelAndView("constructionDefectZoneForm",
"constructionDefect", constructionDefect);
}
return super.processFormSubmission(request, response, command, errors);
}
protected void onBind(HttpServletRequest request, Object command)
throws Exception {
// if the user is being deleted, turn off validation
System.out.println("On bind method started ...");
if (request.getParameter("delete") != null
|| request.getParameter("defectZoneSelect") != null
|| request.getParameter("defectVaritySelect") != null
|| request.getParameter("defectTypeSelect") != null) {
super.setValidateOnBinding(false);
} else {
super.setValidateOnBinding(true);
}
System.out.println("On bind " + command);
}
private ConstructionDefectZone getNewConstructionDefectZone(
ConstructionDefectZone constructionDefect,
HttpServletRequest request) throws IOException {
System.out.println("Get New Construction Defect Zone");
ConstructionDefectZone constZone = new ConstructionDefectZone();
constZone.setComment(constructionDefect.getComment());
constZone.setConstructionDefectId(constructionDefect
.getConstructionDefectId());
constZone.setConstructionExampleList(constructionDefect
.getConstructionExampleList());
constZone.setConstructionTypeId(constructionDefect
.getConstructionTypeId());
constZone.setDangerCategory(constructionDefect.getDangerCategory());
constZone.setDefectNumber(constructionDefect.getDefectNumber());
constZone.setDefectParameters(constructionDefect.getDefectParameters());
constZone.setDefectType(constructionDefect.getDefectType());
constZone.setDefectVarity(constructionDefect.getDefectVarity());
constZone.setDefectZone(constructionDefect.getDefectZone());
constZone.setWayToPhoto(constructionDefect.getWayToPhoto());
constZone.setFile(constructionDefect.getFile());
constZone.setOtherReason(constructionDefect.getOtherReason());
// constZone.setPhotoBlob(Hibernate
// .createBlob(new FileInputStream(FileHelper
// .getCurrentPath(request) + constZone.getWayToPhoto())));
constZone.setPhotoRefference(constructionDefect.getPhotoRefference());
constZone.setReason(constructionDefect.getReason());
constZone.setType(constructionDefect.getType());
List parameters = constructionDefect.getDefectParameters();
List defectList = new ArrayList();
for (int i = 0; i < parameters.size(); i++) {
DefectParameterZone defectParameter = (DefectParameterZone) parameters
.get(i);
DefectParameterZone zone = new DefectParameterZone();
zone.setParameterValueSecond(defectParameter
.getParameterValueSecond());
zone.setParameterValue(defectParameter.getParameterValue());
zone.setParameter(defectParameter.getParameter());
defectList.add(zone);
}
constZone.setDefectParameters(defectList);
return constZone;
}
}