Example usage for org.apache.commons.fileupload DiskFileUpload setSizeMax

List of usage examples for org.apache.commons.fileupload DiskFileUpload setSizeMax

Introduction

In this page you can find the example usage for org.apache.commons.fileupload DiskFileUpload setSizeMax.

Prototype

public void setSizeMax(long sizeMax) 

Source Link

Document

Sets the maximum allowed upload size.

Usage

From source file:web.DirectoryaddblobController.java

/**
 * This method is called by the spring framework. The configuration
 * for this controller to be invoked is based on the pagetype and
 * is set in the urlMapping property in the spring config file.
 *
 * @param request the <code>HttpServletRequest</code>
 * @param response the <code>HttpServletResponse</code>
 * @throws ServletException/*from  ww w . j  a v  a  2 s .  co  m*/
 * @throws IOException
 * @return ModelAndView this instance is returned to spring
 */
public synchronized ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    try {
        ModelAndView m = super.handleRequest(request, response);
    } catch (Exception e) {
        return handleError("error in handleRequest" + e.getMessage(), e);
    }

    if (!WebUtil.isLicenseProfessional(login)) {
        return handleError("Cannot manage directory feature in deluxe version.");
    }

    // ***************************************************************************
    // This is the only line of code you need to get all session info initialized!
    // Always be the first line before anything else is done. Add to each controller's
    // handlRequest method. Also remember to extend SessionObject.
    // ***************************************************************************
    outOfSession(request, response);

    if (RegexStrUtil.isNull(login) || (loginInfo == null)) {
        return handleUserpageError("Login/loginInfo is null.");
    }
    String directoryid = request.getParameter(DbConstants.DIRECTORY_ID);

    DirectoryDao directoryDao = (DirectoryDao) daoMapper.getDao(DbConstants.DIRECTORY);
    if (directoryDao == null) {
        return handleError("DirectoryDao null, DirectoryaddblobController, login " + login + " directoryid = "
                + directoryid);
    }

    /**
    * if the user quota is enabled, check if the user quota is set
         * If the user quota is not yet set, dont allow the user
    * to upload the files.
         * If the user quota is set, check if the user has exceeded the limit for the
    * quota, if he has don't allow the user to upload the files
    */
    String userUsedQuota = null;
    String userQuotaSize = null;
    List userStructureList = null;
    if (WebUtil.isUserQuotaEnabled()) {
        String quotaSize = directoryDao.getQuotaSize(loginInfo.getValue(DbConstants.LOGIN_ID));
        if (RegexStrUtil.isNull(quotaSize) || quotaSize.equals("0")) {
            return handleError("user quota is net yet set, so cannot upload the files");
        } else {
            List qNames = null;
            String[] qTypes = null;
            LdapApi ldapConnection = null;
            try {
                ldapConnection = new LdapApi();
                if (ldapConnection == null) {
                    return handleError("ldapConnection is null, UserpageController");
                }
            } catch (Exception e) {
                return handleError("error ldapConnection, for login " + login + e.getMessage(), e);
            }

            try {
                String email = null;
                if (loginInfo != null) {
                    email = loginInfo.getValue(DbConstants.EMAIL);
                    logger.info("email = " + email);
                }
                qNames = ldapConnection.getUserStructure(LdapConstants.ldapAttrMail, email);
                qTypes = LdapUtil.getQTypes();
                logger.info("qNames = " + qNames.toString());
                logger.info("qTypes = " + qTypes[0] + " " + qTypes[1] + " " + qTypes[2] + " " + qTypes[3] + " "
                        + qTypes[4]);
            } catch (Exception e) {
                return handleError("ldapException, getUserStructure() for login " + login + e.getMessage(), e);
            }

            /**
             * If directoryid is null or not specified, show the 
             * top of the directory
             */
            String quotaMsg = null;
            try {
                // based on dirname=login
                Directory directory = null;
                String directoryId = directoryDao.getDirectoryId(login);
                if (!RegexStrUtil.isNull(directoryId)) {
                    directory = directoryDao.viewDirectory(directoryId,
                            loginInfo.getValue(DbConstants.LOGIN_ID), login, DbConstants.READ_FROM_SLAVE,
                            DbConstants.BLOB_READ_FROM_SLAVE, DbConstants.WEBSITE_READ_FROM_SLAVE);
                } else {
                    return handleError("directoryId is null, for dirname=" + login);
                }
                String loginId = loginInfo.getValue(DbConstants.LOGIN_ID);
                userQuotaSize = directoryDao.getQuotaSize(loginId);
                logger.info("userQuotaSize = " + userQuotaSize);
                userStructureList = directoryDao.getUserQuotas(loginId, qTypes, qNames,
                        DbConstants.READ_FROM_SLAVE);
                logger.info("userStructureList = " + userStructureList.toString());

                try {
                    //SanUtils sanUtils = new SanUtils();
                    //userUsedQuota = sanUtils.getUsedQuota(login, SanConstants.sanPath, directory.getValue(DbConstants.DIRPATH));   
                    String totalSize = directoryDao.getDirUsedQuota(loginInfo.getValue(DbConstants.LOGIN_ID));
                    logger.info("totalSize = " + totalSize);
                    userUsedQuota = LdapUtil.getSizeWithType(totalSize);
                    logger.info("userUsedQuota = " + userUsedQuota);
                } catch (SanException e) {
                    return handleError("getUsedQuota(),login=" + login + e.getMessage(), e);
                }
                try {
                    boolean exceeds = LdapUtil.checkMaxLimit(userQuotaSize, userStructureList, userUsedQuota);
                    logger.info("users's used quota exceeds the quota limit " + exceeds);
                    if (exceeds) {
                        return handleError(login + " exceeds quota, usedQuota=" + userUsedQuota);
                    }
                } catch (Exception e) {
                    return handleError(
                            "Exception LdapUtil.checkUserQuotaLimit() member " + login + " " + e.getMessage(),
                            e);
                }
            } catch (Exception e) {
                return handleError(
                        "Exception login in either viewDirectory()/getUserQuotas() " + login + e.getMessage(),
                        e);
            }
        }
    }

    // remember any request parameters have to be added thru the field list.
    // cannot use request.getParameter in this program.

    boolean isDirectory = false;
    if ((request.getParameter(DbConstants.IS_DIRECTORY) != null)
            && request.getParameter(DbConstants.IS_DIRECTORY).equals((Object) "1")) {
        isDirectory = true;
    }

    String collabrumid = request.getParameter(DbConstants.COLLABRUM_ID);
    if (isDirectory) {
        if (RegexStrUtil.isNull(directoryid)) {
            return handleError("directoryid is null in DirectoryaddblobController");
        }
        directoryid = RegexStrUtil.goodNameStr(directoryid);
    } else {
        if (RegexStrUtil.isNull(collabrumid)) {
            return handleError("collabrumid is null in DirectoryaddblobController");
        }
        collabrumid = RegexStrUtil.goodNameStr(collabrumid);
    }

    Integer blobtype = new Integer(request.getParameter(DbConstants.BLOBTYPE));
    if (blobtype < GlobalConst.categoryMinSize || blobtype > GlobalConst.categoryMaxSize) {
        return handleUserpageError(
                "category or blobtype is not appropriate type in DirectoryaddblobController");
    }

    byte[] blob = null;
    String mtype = null;
    String btitle = null;
    int zoom = 100;
    List fileList = null;
    DiskFileUpload upload = null;
    try {
        boolean isMultipart = FileUpload.isMultipartContent(request);
        // Create a new file upload handler
        upload = new DiskFileUpload();
        //upload.setSizeMax((long)10000000);
        //upload.setSizeMax(webConstants.getFileuploadsize());
        upload.setSizeMax(GlobalConst.fileUploadSize);

        // Parse the request
        fileList = upload.parseRequest(request);
    } catch (Exception e) {
        return handleError("Exception occurred in uploading the photo file." + e.getMessage(), e);
    }

    long fieldsize = 0;
    String fieldname, fieldvalue;
    fieldname = fieldvalue = null;

    // educate the fieldnames to this form by using the setFieldName() 
    String label = "btitle";
    String fileName = "";
    String tagsLabel = DbConstants.USER_TAGS;
    String usertags = "";
    String caption = "";

    for (int i = 0; i < fileList.size(); i++) {
        FileItem fileItem = (FileItem) fileList.get(i);
        if (fileItem.isFormField()) {
            fileItem.setFieldName(label);
            fieldname = fileItem.getFieldName();
            if (fieldname.equalsIgnoreCase(DbConstants.USER_TAGS)) {
                usertags = fileItem.getString();
                label = "";
            } else {
                if (fieldname.equalsIgnoreCase("btitle")) {
                    btitle = fileItem.getString();
                    label = DbConstants.CAPTION;
                } else {
                    if (fieldname.equalsIgnoreCase("caption")) {
                        caption = fileItem.getString();
                        label = DbConstants.USER_TAGS;
                    } else {
                        fieldvalue = fileItem.getString();
                    }
                }
            }
        } else {
            blob = fileItem.get();
            mtype = fileItem.getContentType();
            long maxSize = upload.getSizeMax();
            fileName = fileItem.getName();
            fieldsize = fileItem.getSize();
        }
    }

    logger.info("mtype = " + mtype);
    //logger.info("fileMimeTypes = " + GlobalConst.fileMimeTypes);
    if (RegexStrUtil.isNull(btitle)) {
        btitle = fileName;
    }
    boolean addBlob = true;
    if ((fieldsize <= 0) || (RegexStrUtil.isNull(mtype)) || (RegexStrUtil.isNull(btitle)) || (blob == null)) {
        addBlob = false;
    }

    logger.info("mtype = " + mtype);
    if (addBlob) {
        if (WebUtil.isUserQuotaEnabled()) {
            try {
                String newUsedQuota = LdapUtil.addUserSize(userUsedQuota, fieldsize);
                boolean exceeds = LdapUtil.checkMaxLimit(userQuotaSize, userStructureList, newUsedQuota);
                if (exceeds) {
                    return handleError(login + " file uploading exceeds quota, fileSize=" + fieldsize
                            + " newusedQuota=" + newUsedQuota);
                } else {
                    logger.info("file upload does not exceed the size fileSize=" + fieldsize + " newUsedQuota="
                            + newUsedQuota);
                }
            } catch (Exception e) {
                return handleError(
                        "Exception LdapUtil.addUserSize()/checkMaxLimit() login " + login + e.getMessage(), e);
            }
        }
    }

    /**
    * Donot allow the user to upload the files of these types
    * check if certain types of mime types are excluded 
    * in the xml configuration.
    */
    /*
            String contentType = MimeUtil.mimeType(blob);
       logger.info("contentType = " + contentType);
       mtype = contentType;
    logger.info("mtype = " + mtype);
    */

    if (GlobalConst.isFileMimeTypeEnabled) {
        if (WebUtil.isFileMimeTypeExcluded(mtype)) {
            return handleError(
                    "contentType is not supported in this configuration, to update the support file types, look at the xml configuration in web app. contentType= "
                            + mtype);
        }
    }

    logger.info("addBlob = " + addBlob);

    if (!RegexStrUtil.isNull(btitle)) {
        btitle = RegexStrUtil.goodDirName(btitle);
    }

    String loginid = loginInfo.getValue(DbConstants.LOGIN_ID);

    if (getDaoMapper() == null) {
        return handleError("DaoMapper is null in DirectoryaddblobController");
    }

    /**
     *   get the collabrum dao
     */
    CollabrumDao collDao = null;
    if (!isDirectory) {
        collDao = (CollabrumDao) getDaoMapper().getDao(DbConstants.COLLABRUM);
        if (collDao == null) {
            return handleError("CollabrumDao is null for daoMapper, DirectoryaddblobController");
        }
    }

    CobrandDao cobrandDao = (CobrandDao) getDaoMapper().getDao(DbConstants.COBRAND);
    if (cobrandDao == null) {
        return handleError("cobrandDao is null for DirectoryaddblobController");
    }

    String ftype = request.getParameter(DbConstants.TYPE);
    boolean isCobrand = false;
    if (!RegexStrUtil.isNull(request.getParameter(DbConstants.IS_COBRAND))) {
        isCobrand = request.getParameter(DbConstants.IS_COBRAND).equals((Object) "1");
    }

    if (isCobrand) {
        if (RegexStrUtil.isNull(ftype)) {
            return handleError("ftype is null for DirectoryaddblobController");
        }
        if (!ftype.equals(DbConstants.COBRAND_HEADER) && !ftype.equals(DbConstants.COBRAND_FOOTER)) {
            return handleError("cobrand filetype is neither a header nor footer DirectoryaddblobController");
        }
    }

    if (isDirectory) {
        if (directoryid.length() > GlobalConst.directoryidSize) {
            return handleError(
                    "directoryid.length() > WebConstants.directoryidSize,in DirectoryaddblobController");
        }
    }

    /**
     *  If the blob information is provided by the user, add the blob
     */
    Directory newDir = null;
    String blobtypeStr = request.getParameter(DbConstants.BLOBTYPE);
    String isOrganizer = "0";
    List tagList = null;
    List photos = null;
    Directory dir = null;
    if (isDirectory) {
        try {
            logger.info("calling viewDirectory");
            dir = directoryDao.viewDirectory(directoryid, loginid, login, DbConstants.READ_FROM_SLAVE,
                    DbConstants.BLOB_READ_FROM_MASTER, DbConstants.WEBSITE_READ_FROM_SLAVE);
        } catch (BaseDaoException e) {
            return handleError("Exception occured in viewDirectory() for directoryid = " + directoryid
                    + " loginid = " + loginid + " ErrorMsg = " + e.getMessage(), e);
        }
        if (dir == null) {
            return handleError("directory is null, viewDirectory() for directoryid = " + directoryid
                    + " loginid = " + loginid);
        }
    }

    /**
    * Blob has to be added either to directory or collabrum 
    */
    if (addBlob) {
        /**
        * addblob to directory and get the new directory 
        */
        logger.info("adding the blob");
        if (isDirectory) {
            DirectoryStreamBlobDao platzBlobDao = (DirectoryStreamBlobDao) getDaoMapper()
                    .getDao(DbConstants.DIR_BLOB);
            if (platzBlobDao == null) {
                return handleError("DirectoryStreamBlobDao is null for daoMapper");
            }
            try {
                if (isCobrand) {
                    cobrandDao.addCobrandDirStreamBlob(blob, directoryid, ftype, loginid, login);
                } else {
                    logger.info("adding stream blob" + btitle);
                    platzBlobDao.addStreamBlob(fieldsize, (int) blobtype, mtype, btitle, blob, zoom, loginid,
                            directoryid, login, usertags, caption, dir.getValue(DbConstants.DIRPATH),
                            dir.getValue(DbConstants.DIRNAME));
                    logger.info("getting the update onthe directory");
                    newDir = directoryDao.viewDirectory(directoryid, loginid, login,
                            DbConstants.READ_FROM_MASTER, DbConstants.BLOB_READ_FROM_MASTER,
                            DbConstants.WEBSITE_READ_FROM_SLAVE);
                    if (blobtype == 1) {
                        tagList = platzBlobDao.getAllTags(directoryid, DbConstants.READ_FROM_MASTER);
                    }
                }
            } catch (BaseDaoException e) {
                return handleError("Exception occurred in addBlob() directoryStreamBlob " + e.getMessage(), e);
            }
        } else {
            /**
                  *  addblob to collabrum and get collabrum view
                  */
            if (!RegexStrUtil.isNull(collabrumid)) {
                try {
                    if (collabrumid.length() > GlobalConst.collabrumidSize) {
                        return handleError("collabrumid.length > WebConstants.collabrumidSize");
                    }
                    if (isCobrand) {
                        cobrandDao.addCollabrumCobrand(blob, collabrumid, ftype, loginid, login);
                    } else {
                        collDao.addStreamBlob(fieldsize, (int) blobtype, mtype, btitle, blob, zoom, loginid,
                                collabrumid, login, usertags, caption);
                    }
                } catch (BaseDaoException e) {
                    return handleError("Exception occurred in addStreamBlob() for collabrum " + e.getMessage(),
                            e);
                }
            }
        }
    }

    /**
    * When the blob could not be added, send the existing directory
    */
    if (newDir == null) {
        newDir = dir;
    }

    Collabrum collabrum = null;
    if (!isDirectory) {
        try {
            collabrum = collDao.viewCollabrum(collabrumid, loginid, login, DbConstants.READ_FROM_SLAVE,
                    DbConstants.BLOB_READ_FROM_MASTER);
            photos = collDao.getBlobsByCategory(collabrumid, blobtypeStr, DbConstants.BLOB_READ_FROM_MASTER);
            if (blobtype == 1) {
                tagList = collDao.getAllTags(collabrumid, DbConstants.READ_FROM_MASTER);
            }
            if (loginInfo != null) {
                String loginId = loginInfo.getValue(DbConstants.LOGIN_ID);
                if (collDao.isOrganizerCollabrum(collabrumid, login, loginId)) {
                    isOrganizer = "1";
                }
            }
        } catch (BaseDaoException e) {
            return handleError("Exception occurred in viewCollabrum() for collabrum " + e.getMessage(), e);
        }
        if (collabrum == null) {
            return handleError("collabrum is null, viewCollabrum() for collabrum ");
        }
    }

    Directory dirCobrand = null;
    Collabrum collCobrand = null;
    if (isDirectory) {
        try {
            dirCobrand = cobrandDao.getDirCobrand(directoryid);
        } catch (Exception e) {
            return handleError("exception getDirCobrand(), DirectorygetblobController " + e.getMessage(), e);
        }
    } else {
        try {
            collCobrand = cobrandDao.getCollCobrand(collabrumid);
        } catch (Exception e) {
            return handleError("exception getDirCobrand(), DirectorygetblobController " + e.getMessage(), e);
        }
    }

    /**
          *  put the model and view
          */
    StringBuffer sb = new StringBuffer();
    if (tagList != null && tagList.size() > 0) {
        for (int i = 0; i < tagList.size(); i++) {
            Photo photo = (Photo) tagList.get(i);
            if (photo != null) {
                sb.append(photo.getValue(DbConstants.USER_TAGS));
                sb.append(" ");
            }
        }
    }

    Map myModel = new HashMap();
    if (isCobrand) {
        String viewName = DbConstants.VIEW_DIRECTORY;
        if (isDirectory) {
            myModel.put(DbConstants.DIRECTORY, newDir);
            myModel.put(DbConstants.COBRAND, dirCobrand);
        } else {
            viewName = DbConstants.VIEW_COLLABRUM;
            myModel.put(DbConstants.COLLABRUM, collabrum);
            myModel.put(DbConstants.COBRAND, collCobrand);
        }
        myModel.put(DbConstants.DIR_EXISTS, rbDirectoryExists);
        myModel.put(DbConstants.USER_PAGE, userpage);
        myModel.put(DbConstants.SHARE_INFO, shareInfo);
        myModel.put(DbConstants.VISITOR_PAGE, memberUserpage);
        myModel.put(DbConstants.LOGIN_INFO, loginInfo);
        myModel.put(DbConstants.BUSINESS_EXISTS, isBizExists(login));
        return new ModelAndView(viewName, "model", myModel);
    } else {
        String viewName = null;
        String pageNum = "1";
        if (isDirectory) {
            if (blobtypeStr.equals(DbConstants.FILE_CATEGORY)) {
                viewName = DbConstants.EDIT_DIR_BLOB_FILE;
                myModel.put(DbConstants.IS_DIRECTORY, "1");
            } else {
                viewName = DbConstants.DIR_PHOTO_FOLDER;
                //viewName = DbConstants.EDIT_DIR_BLOB_FILE;
                myModel.put(DbConstants.IS_DIRECTORY, "1");
                myModel.put(DbConstants.USER_TAGS, sb.toString());
            }
            myModel.put(DbConstants.LOGIN_INFO, loginInfo);
            myModel.put(DbConstants.DIRECTORY, newDir);
            myModel.put(DbConstants.DIRECTORY_ID, directoryid);
            myModel.put(DbConstants.PAGE_NUM, pageNum);
            myModel.put(DbConstants.COBRAND, dirCobrand);
            myModel.put(DbConstants.DIR_EXISTS, rbDirectoryExists);
            myModel.put(DbConstants.USER_PAGE, userpage);
            myModel.put(DbConstants.SHARE_INFO, shareInfo);
            myModel.put(DbConstants.VISITOR_PAGE, memberUserpage);
            myModel.put(DbConstants.BUSINESS_EXISTS, isBizExists(login));
            myModel.put(DbConstants.SORT_BY, DbConstants.DATEDESC);
            myModel.put(DbConstants.SELECTION, DbConstants.DATE_DESC_STR);
            return new ModelAndView(viewName, "model", myModel);
        } else {
            /** collabrum */
            if (blobtypeStr.equals(DbConstants.FILE_CATEGORY)) {
                viewName = DbConstants.EDIT_BLOB_FILE;
            } else {
                viewName = DbConstants.COLL_PHOTO_FOLDER;
                myModel.put(DbConstants.USER_TAGS, sb.toString());
            }
            if (sb != null) {
                myModel.put(DbConstants.USER_TAGS, sb.toString());
            }
            myModel.put(DbConstants.LOGIN_INFO, loginInfo);
            myModel.put(viewName, photos);
            myModel.put(DbConstants.COBRAND, collCobrand);
            myModel.put(DbConstants.STYLE, collabrum.getValue(DbConstants.STYLE));
            myModel.put(DbConstants.COL_NAME, collabrum.getValue(DbConstants.NAME));
            myModel.put(DbConstants.IS_ORGANIZER, isOrganizer);
            myModel.put(DbConstants.COLLABRUM_ID, collabrumid);
            myModel.put(DbConstants.PAGE_NUM, pageNum);
            myModel.put(DbConstants.DIR_EXISTS, rbDirectoryExists);
            myModel.put(DbConstants.USER_PAGE, userpage);
            myModel.put(DbConstants.SHARE_INFO, shareInfo);
            myModel.put(DbConstants.VISITOR_PAGE, memberUserpage);
            myModel.put(DbConstants.BUSINESS_EXISTS, isBizExists(login));
            return new ModelAndView(viewName, "model", myModel);
        }
    }
}