Package com.vst.webapp.action

Source Code of com.vst.webapp.action.BuildingObjectController

package com.vst.webapp.action;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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.BuildingObject;
import com.vst.model.ObjectPhoto;
import com.vst.service.BuildingObjectManager;
import com.vst.util.FileHelper;

public class BuildingObjectController extends AbstractVstController {
  protected static final Log log = LogFactory.getLog(BuildingObjectController.class);

  private BuildingObjectManager buildingObjectManager = null;
  private BuildingObject selectedBuildingObject = null;

  public void setBuildingObjectManager(
      BuildingObjectManager buildingObjectManager) {
    this.buildingObjectManager = buildingObjectManager;
  }

  private void processParamPageNumber(HttpServletRequest request,
      HttpServletResponse response) {
    String pageNumber = request.getParameter("d-4453885-p");
    if (pageNumber != null) {
      request.setAttribute("pageNumber", "d-4453885-p=" + pageNumber);
    }
  }

  private BuildingObject processParamObjectId(HttpServletRequest request,
      HttpServletResponse response) {
    BuildingObject buildingObject = null;
    String objectId = request.getParameter("objectId");
    if (objectId != null) {
      // setting the object to the context
      // buildingObject =
      // buildingObjectManager.getBuildingObject(objectId);
      buildingObject = buildingObjectManager
          .getBuildingObjectForList(new Integer(objectId));
      //buildingObjectManager.evict(buildingObject);
      request.setAttribute("currentObjectUserId", buildingObject
          .getUser().getId());
    }

    if (request.getParameter("objectId") != null) {
      // setting the object to the context
      request.getSession().setAttribute("buildingObjectName",
          buildingObject.getName());
      request.getSession().setAttribute(
          "buildingObjectNameRef",
          "buildingObjects.html?objectId="
              + buildingObject.getObjectId());
    } else {
      // destroying object breadcrump refference
      request.getSession().setAttribute("buildingObjectName", "");
      request.getSession().setAttribute("buildingObjectNameRef", "");

    }

    return buildingObject;
  }

  private boolean isSearchByNameParamPresent(HttpServletRequest request) {
    return request.getParameter("isSearched") != null;
  }

  private boolean isOnlyOneObjectInList(HttpServletRequest request) {
    return request.getParameter("type") != null
        && request.getParameter("type").equals("one");
  }

  private void doRemoveBuildingObject(HttpServletRequest request,
      HttpServletResponse response) {
    boolean hasFatalError = false;
    String buildingObjectId = request.getParameter("id");
    ResourceBundle bundle = ResourceBundle
        .getBundle("ApplicationResources");

    try {
      if (buildingObjectManager.removeBuildingObject(buildingObjectId)) {
        request.getSession().setAttribute("madeChanges",
            new Boolean(true));
        request.setAttribute("message",
            bundle.getString("buildingObject.deleted"));
      } else {
        request.setAttribute("errormessage",
            bundle.getString("buildingObject.isUsed"));

      }
    } catch (Exception e) {
      hasFatalError = true;
    }
    if (hasFatalError) {
      request.setAttribute("errormessage",
          bundle.getString("commonMistake"));
    }
  }

  private String buildCurrentPathParam(HttpServletRequest request) {
    char[] c = FileHelper.getCurrentPath(request).toCharArray();
    String s = "";
    for (int i = 0; i < c.length; i++) {
      s += c[i];
      if (c[i] == '\\') {
        s += '\\';
      }
    }
    return s;
  }

  private void doCacheBuildingImages(HttpServletRequest request,
      HttpServletResponse response, List<BuildingObject> buildingObjects)
      throws IOException, SQLException {
    // retrieving the first photo
    for (int i = 0; i < buildingObjects.size(); i++) {
      BuildingObject curObject = (BuildingObject) buildingObjects.get(i);
      List<ObjectPhoto> photoes = buildingObjectManager
          .getObjectPhotoes(curObject.getObjectId());
      if (photoes.size() > 0) {
        ObjectPhoto objectPhoto = (ObjectPhoto) photoes.get(0);
        File file = new File(FileHelper.getCurrentPath(request)
            + objectPhoto.getWayToPhoto());
        if (file.exists()) {
          file.delete();
        }
        file.createNewFile();
        FileOutputStream fileOutputStream = new FileOutputStream(
            FileHelper.getCurrentPath(request)
                + objectPhoto.getWayToPhoto());
        Blob blob = objectPhoto.getPhotoBlob();
        byte[] bufer = new byte[62000];
        InputStream inputStream = blob.getBinaryStream();
        while (inputStream.read(bufer) != -1) {
          fileOutputStream.write(bufer);
        }
        inputStream.close();
        fileOutputStream.close();
      }
    }
  }

  private List<?> findBuildingObjectsForView(HttpServletRequest request,
      HttpServletResponse response) {
    BuildingObject buildingObject;
    List buildingObjects = new ArrayList();
    request.setAttribute("searchWord", request.getParameter("searchWord"));
    buildingObject = new BuildingObject();
    buildingObject.setName(request.getParameter("searchWord"));
    if (("1".equals(request.getParameter("byFragments")))) {
      request.setAttribute("byFragments", "true");
      buildingObject.setByFragments(true);
    }

    if (isOnlyOneObjectInList(request)) {
      if (request.getParameter("objectId") != null) {
        buildingObjects.add(buildingObject);
      }
    } else {
      buildingObjects = buildingObjectManager
          .findBuildingObjectsByName(buildingObject);
    }
    return buildingObjects;
  }

  private List<?> fillBuildingObjectsForView(HttpServletRequest request,
      HttpServletResponse response) {
    List buildingObjects = new ArrayList();
    if (request.getParameter("objectId") != null) {
        buildingObjects.add(selectedBuildingObject);
    } else {
      buildingObjects = buildingObjectManager
          .getBuildingObjectsForList();
    }

    request.setAttribute("searchWord", "Укажите название объекта");
    return buildingObjects;
  }

  public ModelAndView handleRequest(HttpServletRequest request,
      HttpServletResponse response) throws Exception {

    selectedBuildingObject = null;
    // BasicDataSource basicDataSource = (BasicDataSource)
    // BeanUtils.getBean("dataSource", request);
    // System.out.println("basicDataSource.url====="+basicDataSource.getUrl());
    long start = System.currentTimeMillis();
    if (log.isDebugEnabled()) {
      log.debug("start 'BuildingObjectController.handleRequest' method...");
    }

    selectedBuildingObject = processParamObjectId(request, response);
    processParamPageNumber(request, response);

    if (isDeleteParamPresent(request)) {
      doRemoveBuildingObject(request, response);
    }

    // destroying constructiontypes, constructionexamples and defects
    request.getSession().setAttribute("constructionTypeName", "");
    request.getSession().setAttribute("constructionExampleName", "");
    request.getSession().setAttribute("constructionDefectName", "");

    processParamEdited(request, response);

    List buildingObjects;

    if (!isSearchByNameParamPresent(request)) {
      buildingObjects = fillBuildingObjectsForView(request, response);
    } else {
      buildingObjects = findBuildingObjectsForView(request, response);
    }

    doCacheBuildingImages(request, response, buildingObjects);

    // Deprecated call
    // buildingObjectManager.fillQuestionsLists(buildingObjects);
    ModelAndView modelAndView = new ModelAndView("buildingObjectList");
    modelAndView.addObject(Constants.BUILDINGOBJECT_LIST, buildingObjects);
    modelAndView.addObject("currentPath", buildCurrentPathParam(request));

    request.getSession().setAttribute("pType", "buildingObject");
    request.getSession().setAttribute("pId",   request.getParameter("objectId"));

    long end = System.currentTimeMillis();
    if (log.isDebugEnabled()) {
      log.debug("end 'BuildingObjectController.handleRequest' method. time="
          + (end - start));
    }

    return modelAndView;
  }
}
TOP

Related Classes of com.vst.webapp.action.BuildingObjectController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.