Example usage for org.apache.commons.fileupload FileItem getContentType

List of usage examples for org.apache.commons.fileupload FileItem getContentType

Introduction

In this page you can find the example usage for org.apache.commons.fileupload FileItem getContentType.

Prototype

String getContentType();

Source Link

Document

Returns the content type passed by the browser or null if not defined.

Usage

From source file:fr.paris.lutece.plugins.suggest.web.SuggestJspBean.java

/**
 * Get the request data and if there is no error insert the data in the suggest
 * specified in parameter. return null if there is no error or else return
 * the error page url/*from  w  w w .j  a va 2  s. co m*/
 *
 * @param request
 *            the request
 * @param suggest
 *            suggest
 *
 * @return null if there is no error or else return the error page url
 */
private String getSuggestData(MultipartHttpServletRequest request, Suggest suggest) {

    String strDefaultRole = AppPropertiesService.getProperty(PROPERTY_DEFAULT_ROLE_CODE);
    String strUpdateFile = request.getParameter(PARAMETER_UPDATE_FILE);
    String strTitle = request.getParameter(PARAMETER_TITLE);
    String strLibelleContribution = request.getParameter(PARAMETER_LIBELLE_CONTRIBUTION);
    String strUnavailabilityMessage = request.getParameter(PARAMETER_UNAVAILABILITY_MESSAGE);
    String strWorkgroup = request.getParameter(PARAMETER_WORKGROUP);
    String strIdVoteType = request.getParameter(PARAMETER_ID_VOTE_TYPE);
    String strActivePropositionState = request.getParameter(PARAMETER_ACTIVE_PROPOSITION_STATE);
    String strNumberVoteRequired = request.getParameter(PARAMETER_NUMBER_VOTE_REQUIRED);
    String strNumberDayRequired = request.getParameter(PARAMETER_NUMBER_DAY_REQUIRED);
    String strNumberSuggestSubmitInTopScore = request
            .getParameter(PARAMETER_NUMBER_SUGGEST_SUBMIT_IN_TOP_SCORE);
    String strNumberSuggestSubmitCaractersShown = request
            .getParameter(PARAMETER_NUMBER_SUGGEST_SUBMIT_CARACTERS_SHOWN);
    String strNumberSuggestSubmitInTopComment = request
            .getParameter(PARAMETER_NUMBER_SUGGEST_SUBMIT_IN_TOP_COMMENT);
    String strThemeXpage = request.getParameter(PARAMETER_THEME_XPAGE);

    String strActiveSuggestSubmitAuthentification = request
            .getParameter(PARAMETER_ACTIVE_SUGGEST_SUBMIT_AUTHENTIFICATION);
    String strActiveVoteAuthentification = request.getParameter(PARAMETER_ACTIVE_VOTE_AUTHENTIFICATION);
    String strActiveCommentAuthentification = request.getParameter(PARAMETER_ACTIVE_COMMENT_AUTHENTIFICATION);

    String strDisableNewSuggestSubmit = request.getParameter(PARAMETER_DISABLE_NEW_SUGGEST_SUBMIT);
    String strEnableMailNewSuggestSubmit = request.getParameter(PARAMETER_ENABLE_MAIL_NEW_SUGGEST_SUBMIT);
    String strIdMailingListSuggestSubmit = request.getParameter(PARAMETER_ID_MAILING_LIST_SUGGEST_SUBMIT);

    String strAuthorizedComment = request.getParameter(PARAMETER_AUTHORIZED_COMMENT);
    String strActiveEditorBbcode = request.getParameter(PARAMETER_ACTIVE_EDITOR_BBCODE_ON_COMMENT);
    String strDisableNewComment = request.getParameter(PARAMETER_DISABLE_NEW_COMMENT);
    String strLimitNumberVote = request.getParameter(PARAMETER_LIMIT_NUMBER_VOTE);
    String strActiveCaptcha = request.getParameter(PARAMETER_ACTIVE_CAPTCHA);
    String strLibelleValidateButton = request.getParameter(PARAMETER_LIBELLE_VALIDATE_BUTTON);
    String strShowCategoryBlock = request.getParameter(PARAMETER_SHOW_CATEGORY_BLOCK);
    String strShowTopScoreBlock = request.getParameter(PARAMETER_SHOW_TOP_SCORE_BLOCK);
    String strShowTopCommentBlock = request.getParameter(PARAMETER_SHOW_TOP_COMMENT_BLOCK);
    String strActiveSuggestSubmitPaginator = request.getParameter(PARAMETER_ACTIVE_SUGGEST_SUBMIT_PAGINATOR);
    String strNumberSuggestSubmitPerPage = request.getParameter(PARAMETER_NUMBER_SUGGEST_SUBMIT_PER_PAGE);
    String strRole = request.getParameter(PARAMETER_ROLE);
    String strHeader = request.getParameter(PARAMETER_HEADER);
    String strConfirmationMessage = request.getParameter(PARAMETER_CONFIRMATION_MESSAGE);
    String strIdDefaultSort = request.getParameter(PARAMETER_ID_DEFAULT_SORT);
    String strDisableVote = request.getParameter(PARAMETER_DISABLE_VOTE);
    String strDisplayCommentInSuggestSubmitList = request
            .getParameter(PARAMETER_DISPLAY_COMMENT_IN_SUGGEST_SUBMIT_LIST);
    String strNumberCommentDisplayInSuggestSubmitList = request
            .getParameter(PARAMETER_NUMBER_COMMENT_DISPLAY_IN_SUGGEST_SUBMIT_LIST);
    String strNumberCharCommentDisplayInSuggestSubmitList = request
            .getParameter(PARAMETER_NUMBER_CHAR_COMMENT_DISPLAY_IN_SUGGEST_SUBMIT_LIST);
    String strEnableMailNewCommentSubmit = request.getParameter(PARAMETER_ENABLE_MAIL_NEW_COMMENT_SUBMIT);
    String strEnableMailNewReportedSubmit = request.getParameter(PARAMETER_ENABLE_MAIL_NEW_REPORTED_SUBMIT);
    String strEnableTermsOfUse = request.getParameter(PARAMETER_ENABLE_TERMS_OF_USE);
    String strTermsOfUse = request.getParameter(PARAMETER_TERMS_OF_USE);
    String strEnableReports = request.getParameter(PARAMETER_ENABLE_REPORTS);
    String strDescription = request.getParameter(PARAMETER_DESCRIPTION);
    String strNotificationNewCommentSenderName = request
            .getParameter(PARAMETER_NOTIFICATION_NEW_COMMENT_SENDER_NAME);
    String strNotificationNewCommentTitle = request.getParameter(PARAMETER_NOTIFICATION_NEW_COMMENT_TITLE);
    String strNotificationNewCommentBody = request.getParameter(PARAMETER_NOTIFICATION_NEW_COMMENT_BODY);
    String strNotificationNewSuggestSubmitSenderName = request
            .getParameter(PARAMETER_NOTIFICATION_NEW_SUGGEST_SUBMIT_SENDER_NAME);
    String strNotificationNewSuggestSubmitTitle = request
            .getParameter(PARAMETER_NOTIFICATION_NEW_SUGGEST_SUBMIT_TITLE);
    String strNotificationNewSuggestSubmitBody = request
            .getParameter(PARAMETER_NOTIFICATION_NEW_SUGGEST_SUBMIT_BODY);

    int nIdVoteType = SuggestUtils.getIntegerParameter(strIdVoteType);
    int nIdMailingListSuggestSubmit = SuggestUtils.getIntegerParameter(strIdMailingListSuggestSubmit);
    int nNumberDayRequired = SuggestUtils.getIntegerParameter(strNumberDayRequired);
    int nNumberVoteRequired = SuggestUtils.getIntegerParameter(strNumberVoteRequired);
    int nNumberSuggestSubmitInTopScore = SuggestUtils.getIntegerParameter(strNumberSuggestSubmitInTopScore);
    int nNumberSuggestSubmitCaractersShown = SuggestUtils
            .getIntegerParameter(strNumberSuggestSubmitCaractersShown);
    int nNumberSuggestSubmitInTopComment = SuggestUtils.getIntegerParameter(strNumberSuggestSubmitInTopComment);
    int nNumberSuggestSubmitPerPage = SuggestUtils.getIntegerParameter(strNumberSuggestSubmitPerPage);
    int nIdDefaultSort = SuggestUtils.getIntegerParameter(strIdDefaultSort);
    int nNumberCommentDisplayInSuggestSubmitList = SuggestUtils
            .getIntegerParameter(strNumberCommentDisplayInSuggestSubmitList);
    int nNumberCharCommentDisplayInSuggestSubmitList = SuggestUtils
            .getIntegerParameter(strNumberCharCommentDisplayInSuggestSubmitList);

    String strFieldError = EMPTY_STRING;

    if (StringUtils.isEmpty(strTitle)) {
        strFieldError = FIELD_TITLE;
    }

    else if (StringUtils.isEmpty(strLibelleContribution)) {
        strFieldError = FIELD_LIBELLE_CONTRIBUTION;
    }

    else if (StringUtils.isEmpty(strUnavailabilityMessage)) {
        strFieldError = FIELD_UNAVAILABILITY_MESSAGE;
    } else if (nIdVoteType == -1) {
        strFieldError = FIELD_VOTE_TYPE;
    } else if (StringUtils.isEmpty(strNumberSuggestSubmitCaractersShown)) {
        strFieldError = FIELD_NUMBER_SUGGEST_SUBMIT_CARACTERS_SHOWN;
    } else if ((((strShowTopScoreBlock != null) && strShowTopScoreBlock.trim().equals(CONSTANTE_YES_VALUE))
            && (strNumberSuggestSubmitInTopScore == null))
            || strNumberSuggestSubmitInTopScore.trim().equals(EMPTY_STRING)) {
        strFieldError = FIELD_NUMBER_SUGGEST_SUBMIT_IN_TOP_SCORE;
    }

    else if (((strAuthorizedComment != null) && strAuthorizedComment.trim().equals(CONSTANTE_YES_VALUE))
            && ((strNumberSuggestSubmitInTopComment == null)
                    || strNumberSuggestSubmitInTopComment.trim().equals(EMPTY_STRING))) {
        strFieldError = FIELD_NUMBER_SUGGEST_SUBMIT_IN_TOP_COMMENT;
    }

    else if (((strActiveSuggestSubmitPaginator != null)
            && strActiveSuggestSubmitPaginator.trim().equals(CONSTANTE_YES_VALUE))
            && ((strNumberSuggestSubmitPerPage == null)
                    || strNumberSuggestSubmitPerPage.trim().equals(EMPTY_STRING))) {
        strFieldError = FIELD_NUMBER_SUGGEST_SUBMIT_PER_PAGE;
    }

    else if ((strLibelleValidateButton == null) || strLibelleValidateButton.trim().equals(EMPTY_STRING)) {
        strFieldError = FIELD_LIBELE_VALIDATE_BUTTON;
    } else if (((strDisplayCommentInSuggestSubmitList != null)
            && ((strNumberCommentDisplayInSuggestSubmitList == null)
                    || strNumberCommentDisplayInSuggestSubmitList.trim().equals(EMPTY_STRING)))) {
        strFieldError = FIELD_NUMBER_COMMENT_DISPLAY_IN_SUGGEST_SUBMIT_LIST;
    } else if (((strDisplayCommentInSuggestSubmitList != null)
            && ((strNumberCharCommentDisplayInSuggestSubmitList == null)
                    || strNumberCharCommentDisplayInSuggestSubmitList.trim().equals(EMPTY_STRING)))) {
        strFieldError = FIELD_NUMBER_CHAR_COMMENT_DISPLAY_IN_SUGGEST_SUBMIT_LIST;
    }

    else if (StringUtils.isEmpty(strNotificationNewCommentTitle)) {
        strFieldError = FIELD_NOTIFICATION_NEW_COMMENT_TITLE;

    } else if (StringUtils.isEmpty(strNotificationNewCommentBody)) {
        strFieldError = FIELD_NOTIFICATION_NEW_COMMENT_BODY;

    }

    else if (StringUtils.isEmpty(strNotificationNewSuggestSubmitTitle)) {

        strFieldError = FIELD_NOTIFICATION_NEW_SUGGEST_DUBMIT_TITLE;
    } else if (StringUtils.isEmpty(strNotificationNewSuggestSubmitBody)) {

        strFieldError = FIELD_NOTIFICATION_NEW_SUGGEST_DUBMIT_BODY;
    }

    if (!strFieldError.equals(EMPTY_STRING)) {
        Object[] tabRequiredFields = { I18nService.getLocalizedString(strFieldError, getLocale()) };

        return AdminMessageService.getMessageUrl(request, MESSAGE_MANDATORY_FIELD, tabRequiredFields,
                AdminMessage.TYPE_STOP);
    }

    if (nNumberSuggestSubmitCaractersShown < 0) {
        return AdminMessageService.getMessageUrl(request,
                MESSAGE_ILLOGICAL_NUMBER_SUGGEST_SUBMIT_CARACTERS_SHOWN, AdminMessage.TYPE_STOP);
    }

    if ((strNumberSuggestSubmitInTopScore != null)
            && !strNumberSuggestSubmitInTopScore.trim().equals(EMPTY_STRING)
            && (nNumberSuggestSubmitInTopScore < 0)) {
        return AdminMessageService.getMessageUrl(request, MESSAGE_ILLOGICAL_NUMBER_SUGGEST_SUBMIT_IN_TOP_SCORE,
                AdminMessage.TYPE_STOP);
    }

    if ((strActivePropositionState != null) && strActivePropositionState.trim().equals(CONSTANTE_YES_VALUE)
            && (strNumberVoteRequired != null) && !strNumberVoteRequired.trim().equals(EMPTY_STRING)
            && (nNumberVoteRequired < 0)) {
        return AdminMessageService.getMessageUrl(request, MESSAGE_ILLOGICAL_NUMBER_VOTE_REQUIRED,
                AdminMessage.TYPE_STOP);
    }

    if ((strNumberDayRequired != null) && !strNumberDayRequired.trim().equals(EMPTY_STRING)
            && (nNumberDayRequired < 0)) {
        return AdminMessageService.getMessageUrl(request, MESSAGE_ILLOGICAL_NUMBER_DAY_REQUIRED,
                AdminMessage.TYPE_STOP);
    }

    if ((strNumberSuggestSubmitInTopComment != null)
            && !strNumberSuggestSubmitInTopComment.trim().equals(EMPTY_STRING)
            && (nNumberSuggestSubmitInTopComment < 0)) {
        return AdminMessageService.getMessageUrl(request,
                MESSAGE_ILLOGICAL_NUMBER_SUGGEST_SUBMIT_IN_TOP_COMMENT, AdminMessage.TYPE_STOP);
    }

    if ((strNumberSuggestSubmitPerPage != null) && !strNumberSuggestSubmitPerPage.trim().equals(EMPTY_STRING)
            && (nNumberSuggestSubmitPerPage < 0)) {
        return AdminMessageService.getMessageUrl(request, MESSAGE_ILLOGICAL_NUMBER_SUGGEST_SUBMIT_PER_PAGE,
                AdminMessage.TYPE_STOP);
    }

    if ((strDisplayCommentInSuggestSubmitList != null) && (strNumberCommentDisplayInSuggestSubmitList != null)
            && !strNumberCommentDisplayInSuggestSubmitList.trim().equals(EMPTY_STRING)
            && (nNumberCommentDisplayInSuggestSubmitList < 0)) {
        return AdminMessageService.getMessageUrl(request,
                MESSAGE_ILLOGICAL_NUMBER_COMMENT_DISPLAY_IN_SUGGEST_SUBMIT_LIST, AdminMessage.TYPE_STOP);
    }

    if ((strDisplayCommentInSuggestSubmitList != null)
            && (strNumberCharCommentDisplayInSuggestSubmitList != null)
            && !strNumberCharCommentDisplayInSuggestSubmitList.trim().equals(EMPTY_STRING)
            && (nNumberCommentDisplayInSuggestSubmitList < 0)) {
        return AdminMessageService.getMessageUrl(request,
                MESSAGE_ILLOGICAL_NUMBER_CHAR_COMMENT_DISPLAY_IN_SUGGEST_SUBMIT_LIST, AdminMessage.TYPE_STOP);
    }

    suggest.setTitle(strTitle);
    suggest.setLibelleContribution(strLibelleContribution);
    suggest.setUnavailabilityMessage(strUnavailabilityMessage);
    suggest.setWorkgroup(strWorkgroup);

    if (suggest.getVoteType() == null) {
        suggest.setVoteType(new VoteType());
    }

    suggest.getVoteType().setIdVoteType(nIdVoteType);

    if ((strActivePropositionState != null) && strActivePropositionState.trim().equals(CONSTANTE_YES_VALUE)) {
        suggest.setActiveSuggestPropositionState(true);
        suggest.setNumberVoteRequired(nNumberVoteRequired);
    } else {
        suggest.setActiveSuggestPropositionState(false);
        suggest.setNumberVoteRequired(-1);
    }

    suggest.setNumberDayRequired(nNumberDayRequired);
    suggest.setActiveSuggestSubmitAuthentification(strActiveSuggestSubmitAuthentification != null);
    suggest.setActiveVoteAuthentification(strActiveVoteAuthentification != null);
    suggest.setActiveCommentAuthentification(strActiveCommentAuthentification != null);
    suggest.setActiveCaptcha(strActiveCaptcha != null);
    suggest.setDisableNewSuggestSubmit(strDisableNewSuggestSubmit != null);
    suggest.setEnableMailNewSuggestSubmit(strEnableMailNewSuggestSubmit != null);
    suggest.setEnableMailNewCommentSubmit(strEnableMailNewCommentSubmit != null);
    suggest.setEnableMailNewReportedSubmit(strEnableMailNewReportedSubmit != null);
    suggest.setIdMailingListSuggestSubmit(nIdMailingListSuggestSubmit);
    suggest.setAuthorizedComment(strAuthorizedComment != null);
    suggest.setDisableNewComment(strDisableNewComment != null);
    suggest.setActiveEditorBbcode(strActiveEditorBbcode != null);
    suggest.setLimitNumberVote(strLimitNumberVote != null);
    suggest.setShowCategoryBlock(strShowCategoryBlock != null);
    suggest.setShowTopScoreBlock(strShowTopScoreBlock != null);
    suggest.setShowTopCommentBlock(strShowTopCommentBlock != null);
    suggest.setActiveSuggestSubmitPaginator(strActiveSuggestSubmitPaginator != null);

    if (strThemeXpage != null) {
        suggest.setCodeTheme(strThemeXpage);
    }

    suggest.setLibelleValidateButton(strLibelleValidateButton);
    suggest.setNumberSuggestSubmitInTopScore(nNumberSuggestSubmitInTopScore);
    suggest.setNumberSuggestSubmitInTopComment(nNumberSuggestSubmitInTopComment);
    suggest.setNumberSuggestSubmitCaractersShown(nNumberSuggestSubmitCaractersShown);
    suggest.setNumberSuggestSubmitPerPage(nNumberSuggestSubmitPerPage);
    if (strDefaultRole != null && !strRole.equals(strDefaultRole)) {
        suggest.setRole(strRole);
    } else {
        suggest.setRole(null);
    }
    suggest.setHeader(strHeader);
    suggest.setConfirmationMessage(strConfirmationMessage);
    suggest.setIdDefaultSort(nIdDefaultSort);
    suggest.setDisableVote(strDisableVote != null);
    suggest.setDisplayCommentInSuggestSubmitList(strDisplayCommentInSuggestSubmitList != null);
    suggest.setNumberCommentDisplayInSuggestSubmitList(nNumberCommentDisplayInSuggestSubmitList);
    suggest.setNumberCharCommentDisplayInSuggestSubmitList(nNumberCharCommentDisplayInSuggestSubmitList);
    suggest.setEnableReports(strEnableReports != null);
    suggest.setEnableTermsOfUse(strEnableTermsOfUse != null);
    suggest.setTermsOfUse(strTermsOfUse);
    suggest.setDescription(strDescription);
    suggest.setNotificationNewCommentSenderName(strNotificationNewCommentSenderName);
    suggest.setNotificationNewCommentTitle(strNotificationNewCommentTitle);
    suggest.setNotificationNewCommentBody(strNotificationNewCommentBody);
    suggest.setNotificationNewSuggestSubmitSenderName(strNotificationNewSuggestSubmitSenderName);
    suggest.setNotificationNewSuggestSubmitTitle(strNotificationNewSuggestSubmitTitle);
    suggest.setNotificationNewSuggestSubmitBody(strNotificationNewSuggestSubmitBody);

    if ((suggest.getIdSuggest() == SuggestUtils.CONSTANT_ID_NULL) || (strUpdateFile != null)) {
        FileItem imageSource = request.getFile(PARAMETER_IMAGE_SOURCE);
        String strImageName = FileUploadService.getFileNameOnly(imageSource);

        ImageResource image = new ImageResource();
        byte[] baImageSource = imageSource.get();

        if ((strImageName != null) && !strImageName.equals("")) {
            image.setImage(baImageSource);
            image.setMimeType(imageSource.getContentType());
        }

        suggest.setImage(image);
    }

    return null; // No error
}

From source file:it.infn.ct.nuclemd.Nuclemd.java

public String[] uploadNuclemdSettings(ActionRequest actionRequest, ActionResponse actionResponse,
        String username) {/*from   w  ww.j a  va 2s . c  o m*/
    String[] NUCLEMD_Parameters = new String[9];
    boolean status;

    // Check that we have a file upload request
    boolean isMultipart = PortletFileUpload.isMultipartContent(actionRequest);

    if (isMultipart) {
        // Create a factory for disk-based file items.
        DiskFileItemFactory factory = new DiskFileItemFactory();

        // Set factory constrains
        File NUCLEMD_Repository = new File("/tmp");
        if (!NUCLEMD_Repository.exists())
            status = NUCLEMD_Repository.mkdirs();
        factory.setRepository(NUCLEMD_Repository);

        // Create a new file upload handler.
        PortletFileUpload upload = new PortletFileUpload(factory);

        try {
            // Parse the request
            List items = upload.parseRequest(actionRequest);
            // Processing items
            Iterator iter = items.iterator();

            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();
                String fieldName = item.getFieldName();

                DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
                String timeStamp = dateFormat.format(Calendar.getInstance().getTime());

                // Processing a regular form field
                if (item.isFormField()) {
                    if (fieldName.equals("nuclemd_release"))
                        NUCLEMD_Parameters[8] = item.getString();

                    if (fieldName.equals("nuclemd_desc"))
                        if (item.getString().equals("Please, insert here a description"))
                            NUCLEMD_Parameters[0] = "NUCLEMD Simulation Started";
                        else
                            NUCLEMD_Parameters[0] = item.getString();

                    if (fieldName.equals("nuclemd_CE"))
                        NUCLEMD_Parameters[1] = item.getString();

                } else {
                    // Processing a file upload
                    if (fieldName.equals("nuclemd_fileinp")) {
                        log.info("\n- Uploading the input file: " + "\n[ " + item.getName() + " ]" + "\n[ "
                                + item.getContentType() + " ]" + "\n[ " + item.getSize() + "KBytes ]");

                        // Writing the file to disk
                        String uploadNuclemdFile = NUCLEMD_Repository + "/" + timeStamp + "_" + username + "_"
                                + item.getName();

                        log.info("\n- Writing the file: [ " + uploadNuclemdFile.toString() + " ] to disk");

                        item.write(new File(uploadNuclemdFile));

                        // Writing the file to disk
                        String uploadNuclemdFile_stripped = NUCLEMD_Repository + "/" + timeStamp + "_"
                                + username + "_" + item.getName() + "_stripped";

                        NUCLEMD_Parameters[2] = RemoveCarriageReturn(uploadNuclemdFile,
                                uploadNuclemdFile_stripped);
                    }

                    if (fieldName.equals("nuclemd_fileconf_1")) {
                        log.info("\n- Uploading the input file: " + "\n[ " + item.getName() + " ]" + "\n[ "
                                + item.getContentType() + " ]" + "\n[ " + item.getSize() + "KBytes ]");

                        // Writing the file to disk
                        String uploadNuclemdFile = NUCLEMD_Repository + "/" + timeStamp + "_" + username + "_"
                                + item.getName();

                        log.info("\n- Writing the file: [ " + uploadNuclemdFile.toString() + " ] to disk");

                        item.write(new File(uploadNuclemdFile));

                        // Writing the file to disk
                        String uploadNuclemdFile_stripped = NUCLEMD_Repository + "/" + timeStamp + "_"
                                + username + "_" + item.getName() + "_stripped";

                        NUCLEMD_Parameters[3] = RemoveCarriageReturn(uploadNuclemdFile,
                                uploadNuclemdFile_stripped);
                    }

                    if (fieldName.equals("nuclemd_fileconf_2")) {
                        log.info("\n- Uploading the input file: " + "\n[ " + item.getName() + " ]" + "\n[ "
                                + item.getContentType() + " ]" + "\n[ " + item.getSize() + "KBytes ]");

                        // Writing the file to disk
                        String uploadNuclemdFile = NUCLEMD_Repository + "/" + timeStamp + "_" + username + "_"
                                + item.getName();

                        log.info("\n- Writing the file: [ " + uploadNuclemdFile.toString() + " ] to disk");

                        item.write(new File(uploadNuclemdFile));

                        // Writing the file to disk
                        String uploadNuclemdFile_stripped = NUCLEMD_Repository + "/" + timeStamp + "_"
                                + username + "_" + item.getName() + "_stripped";

                        NUCLEMD_Parameters[4] = RemoveCarriageReturn(uploadNuclemdFile,
                                uploadNuclemdFile_stripped);
                    }
                }

                if (fieldName.equals("EnableNotification"))
                    NUCLEMD_Parameters[5] = item.getString();

                if (fieldName.equals("nuclemd_maxwallclocktime"))
                    NUCLEMD_Parameters[6] = item.getString();

                if (fieldName.equals("EnableDemo"))
                    NUCLEMD_Parameters[7] = item.getString();

            } // end while
        } catch (FileUploadException ex) {
            Logger.getLogger(Nuclemd.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(Nuclemd.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    return NUCLEMD_Parameters;
}

From source file:com.stratelia.webactiv.kmelia.servlets.KmeliaRequestRouter.java

/**
  * Process Form Upload for publications import
  */* w  w w  .  j a  v a 2 s.  c  o m*/
  * @param kmeliaScc
  * @param request
  * @param routeDestination
  * @return destination
  */
private String processFormUpload(KmeliaSessionController kmeliaScc, HttpRequest request,
        String routeDestination, boolean isMassiveMode) {
    String destination = "";
    String topicId = "";
    String importMode;
    boolean draftMode = false;
    String logicalName;
    String message;
    boolean error = false;

    String tempFolderName;
    String tempFolderPath = null;

    String fileType;
    long fileSize;
    long processStart = new Date().getTime();
    ResourceLocator attachmentResourceLocator = new ResourceLocator(
            "org.silverpeas.util.attachment.multilang.attachment", kmeliaScc.getLanguage());
    FileItem fileItem;
    int versionType = DocumentVersion.TYPE_DEFAULT_VERSION;

    try {
        List<FileItem> items = request.getFileItems();
        topicId = FileUploadUtil.getParameter(items, "topicId");
        importMode = FileUploadUtil.getParameter(items, "opt_importmode");

        String sVersionType = FileUploadUtil.getParameter(items, "opt_versiontype");
        if (StringUtil.isDefined(sVersionType)) {
            versionType = Integer.parseInt(sVersionType);
        }

        String sDraftMode = FileUploadUtil.getParameter(items, "chk_draft");
        if (StringUtil.isDefined(sDraftMode)) {
            draftMode = StringUtil.getBooleanValue(sDraftMode);
        }

        fileItem = FileUploadUtil.getFile(items, "file_name");

        if (fileItem != null) {
            logicalName = fileItem.getName();
            if (logicalName != null) {
                boolean runOnUnix = !FileUtil.isWindows();
                if (runOnUnix) {
                    logicalName = logicalName.replace('\\', File.separatorChar);
                    SilverTrace.info("kmelia", "KmeliaRequestRouter.processFormUpload",
                            "root.MSG_GEN_PARAM_VALUE", "fileName on Unix = " + logicalName);
                }

                logicalName = logicalName.substring(logicalName.lastIndexOf(File.separator) + 1,
                        logicalName.length());

                // Name of temp folder: timestamp and userId
                tempFolderName = Long.toString(System.currentTimeMillis()) + "_" + kmeliaScc.getUserId();

                // Mime type of the file
                fileType = fileItem.getContentType();

                // Zip contentType not detected under Firefox !
                if (!ClientBrowserUtil.isInternetExplorer(request)) {
                    fileType = MimeTypes.ARCHIVE_MIME_TYPE;
                }

                fileSize = fileItem.getSize();

                // Directory Temp for the uploaded file
                tempFolderPath = FileRepositoryManager.getAbsolutePath(kmeliaScc.getComponentId())
                        + GeneralPropertiesManager.getString("RepositoryTypeTemp") + File.separator
                        + tempFolderName;
                if (!new File(tempFolderPath).exists()) {
                    FileRepositoryManager.createAbsolutePath(kmeliaScc.getComponentId(),
                            GeneralPropertiesManager.getString("RepositoryTypeTemp") + File.separator
                                    + tempFolderName);
                }

                // Creation of the file in the temp folder
                File fileUploaded = new File(FileRepositoryManager.getAbsolutePath(kmeliaScc.getComponentId())
                        + GeneralPropertiesManager.getString("RepositoryTypeTemp") + File.separator
                        + tempFolderName + File.separator + logicalName);
                fileItem.write(fileUploaded);

                // Is a real file ?
                if (fileSize <= 0L) {
                    // File access failed
                    message = attachmentResourceLocator.getString("liaisonInaccessible");
                    error = true;
                } else {
                    SilverTrace.debug("kmelia", "KmeliaRequestRouter.processFormUpload()",
                            "root.MSG_GEN_PARAM_VALUE",
                            "fileUploaded = " + fileUploaded + " fileSize=" + fileSize + " fileType=" + fileType
                                    + " importMode=" + importMode + " draftMode=" + draftMode);

                    // Import !!
                    ImportReport importReport = kmeliaScc.importFile(fileUploaded, fileType, topicId,
                            importMode, draftMode, versionType);
                    long processDuration = new Date().getTime() - processStart;

                    // Compute nbPublication created
                    int nbPublication = kmeliaScc.getNbPublicationImported(importReport);

                    // nbFiles imported (only in unitary Import mode)
                    int nbFiles = importReport.getNbFilesProcessed();

                    // Title for popup report
                    String importModeTitle;
                    if (importMode.equals(KmeliaSessionController.UNITARY_IMPORT_MODE)) {
                        importModeTitle = kmeliaScc.getString("kmelia.ImportModeUnitaireTitre");
                    } else {
                        importModeTitle = kmeliaScc.getString("kmelia.ImportModeMassifTitre");
                    }
                    SilverTrace.debug("kmelia", "KmeliaRequestRouter.processFormUpload()",
                            "root.MSG_GEN_PARAM_VALUE",
                            "nbFiles = " + nbFiles + " nbPublication=" + nbPublication + " ProcessDuration="
                                    + processDuration + " ImportMode=" + importMode + " Draftmode=" + draftMode
                                    + " Title=" + importModeTitle);

                    message = kmeliaScc.getErrorMessageImportation(importReport, importMode);

                    if (message != null && importMode.equals(KmeliaSessionController.UNITARY_IMPORT_MODE)) {
                        error = true;
                    }

                    request.setAttribute("NbPublication", nbPublication);
                    request.setAttribute("NbFiles", nbFiles);
                    request.setAttribute("ProcessDuration",
                            FileRepositoryManager.formatFileUploadTime(processDuration));
                    request.setAttribute("ImportMode", importMode);
                    request.setAttribute("DraftMode", draftMode);
                    request.setAttribute("Title", importModeTitle);
                    request.setAttribute("Context", URLManager.getApplicationURL());
                    request.setAttribute("Message", message);

                    destination = routeDestination + "reportImportFiles.jsp";

                    String componentId = kmeliaScc.getComponentId();
                    if (kmeliaScc.isDefaultClassificationModifiable(topicId, componentId)) {
                        List<PublicationDetail> publicationDetails = kmeliaScc
                                .getListPublicationImported(importReport, importMode);
                        if (publicationDetails.size() > 0) {
                            request.setAttribute("PublicationsDetails", publicationDetails);
                            destination = routeDestination + "validateImportedFilesClassification.jsp";
                        }
                    }
                }

                // Delete temp folder
                FileFolderManager.deleteFolder(tempFolderPath);

            } else {
                // the field did not contain a file
                message = attachmentResourceLocator.getString("liaisonInaccessible");
                error = true;
            }
        } else {
            // the field did not contain a file
            message = attachmentResourceLocator.getString("liaisonInaccessible");
            error = true;
        }

        if (error) {
            request.setAttribute("Message", message);
            request.setAttribute("TopicId", topicId);
            destination = routeDestination + "importOneFile.jsp";
            if (isMassiveMode) {
                destination = routeDestination + "importMultiFiles.jsp";
            }
        }
    } catch (Exception e) {
        String exMessage = SilverpeasTransverseErrorUtil.performExceptionMessage(e, kmeliaScc.getLanguage());
        if (StringUtil.isNotDefined(exMessage)) {
            request.setAttribute("Message", e.getMessage());
        }
        // Other exception
        request.setAttribute("TopicId", topicId);
        destination = routeDestination + "importOneFile.jsp";
        if (isMassiveMode) {
            destination = routeDestination + "importMultiFiles.jsp";
        }

        SilverTrace.warn("kmelia", "KmeliaRequestRouter.processFormUpload()", "root.EX_LOAD_ATTACHMENT_FAILED",
                e);
    } finally {
        if (tempFolderPath != null) {
            FileFolderManager.deleteFolder(tempFolderPath);
        }
    }
    return destination;
}

From source file:it.infn.ct.wrf.Wrf.java

public String[] uploadSettings(ActionRequest actionRequest, ActionResponse actionResponse, String username) {
    String[] _Parameters = new String[7];
    boolean status;

    // Check that we have a file upload request
    boolean isMultipart = PortletFileUpload.isMultipartContent(actionRequest);

    if (isMultipart) {
        // Create a factory for disk-based file items.
        DiskFileItemFactory factory = new DiskFileItemFactory();

        // Set factory constrains
        File _Repository = new File("/tmp");
        if (!_Repository.exists())
            status = _Repository.mkdirs();
        factory.setRepository(_Repository);

        // Create a new file upload handler.
        PortletFileUpload upload = new PortletFileUpload(factory);

        try {/*  w ww.jav  a  2  s  .  c  om*/
            // Parse the request
            List items = upload.parseRequest(actionRequest);

            // Processing items
            Iterator iter = items.iterator();

            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();

                String fieldName = item.getFieldName();

                DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
                String timeStamp = dateFormat.format(Calendar.getInstance().getTime());

                // Processing a regular form field
                if (item.isFormField()) {
                    if (fieldName.equals("wrf_textarea_OCTAVE")) {
                        _Parameters[0] = _Repository + "/" + timeStamp + "_" + username + ".m";

                        // Store the textarea in a ASCII file
                        storeString(_Parameters[0], item.getString());
                    }

                    if (fieldName.equals("wrf_textarea_R")) {
                        _Parameters[0] = _Repository + "/" + timeStamp + "_" + username + ".r";

                        // Store the textarea in a ASCII file
                        storeString(_Parameters[0], item.getString());
                    }

                    if (fieldName.equals("wrftype"))
                        _Parameters[1] = item.getString();

                    if (fieldName.equals("wrf_CR"))
                        _Parameters[2] = item.getString();

                    if (fieldName.equals("wrfvmtemplate"))
                        _Parameters[5] = item.getString();

                    if (fieldName.equals("wrf_vmname"))
                        _Parameters[6] = item.getString();

                } else {
                    // Processing a file upload
                    if (fieldName.equals("wrf_file_OCTAVE") || fieldName.equals("wrf_file_R")) {
                        log.info("\n- Uploading the following user's file: " + "\n[ " + item.getName() + " ]"
                                + "\n[ " + item.getContentType() + " ]" + "\n[ " + item.getSize() + "KBytes ]");

                        // Writing the file to disk
                        String uploadFile = _Repository + "/" + timeStamp + "_" + username + "_"
                                + item.getName();

                        log.info("\n- Writing the user's file: [ " + uploadFile.toString() + " ] to disk");

                        item.write(new File(uploadFile));

                        _Parameters[0] = uploadFile;
                    }
                }

                if (fieldName.equals("EnableNotification"))
                    _Parameters[3] = item.getString();

                if (fieldName.equals("wrf_desc"))
                    if (item.getString().equals("Please, insert here a description for your run"))
                        _Parameters[4] = "Cloud Simulation Started";
                    else
                        _Parameters[4] = item.getString();

            } // end while
        } catch (FileUploadException ex) {
            Logger.getLogger(Wrf.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(Wrf.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    return _Parameters;
}

From source file:es.sm2.openppm.front.servlets.MaintenanceServlet.java

/**
 * Save a document or manual//from  w  w  w .  j  a  v a2 s .co m
 * @param req
 * @param resp
 * @throws IOException
 * @throws ServletException
 */
private void saveDocumentation(HttpServletRequest req, HttpServletResponse resp)
        throws IOException, ServletException {

    int docId = Integer.parseInt(getMultipartField("idDocumentation"));
    int idManten = Integer.parseInt(getMultipartField("idManten"));
    String namePopup = getMultipartField("namePopup");

    try {
        FileItem dataFile = getMultipartFields().get("file");

        if (dataFile != null) {

            Documentation doc = new Documentation();
            Contentfile docFile = new Contentfile();

            // Declare logics
            DocumentationLogic docLogic = new DocumentationLogic();
            ContentFileLogic fileLogic = new ContentFileLogic();

            if (docId != -1) {

                // Logic find doc
                doc = docLogic.findById(docId);

                infoUpdated(req, "maintenance.documentation_manuals.documentation");
            } else {
                infoCreated(req, "maintenance.documentation_manuals.documentation");
            }

            if (dataFile.getSize() > 0) {

                // Delete old file if update doc
                if (docId != -1) {
                    fileLogic.delete(fileLogic.findByDocumentation(doc));
                }

                // Set data content file
                docFile.setExtension(FilenameUtils.getExtension(dataFile.getName()));
                docFile.setMime(dataFile.getContentType());
                docFile.setContent(dataFile.get());

                // Logic save content file
                docFile = fileLogic.save(docFile);

                // Update doc
                doc.setNameFile(dataFile.getName());
                doc.setContentfile(docFile);
            }

            doc.setNamePopup(namePopup);
            doc.setCompany(getCompany(req));

            // Logic save doc
            docLogic.save(doc);
        }
    } catch (Exception e) {
        ExceptionUtil.evalueException(req, getResourceBundle(req), LOGGER, e);
    }

    consMaintenance(req, resp, idManten);
}

From source file:com.stratelia.webactiv.kmelia.servlets.KmeliaRequestRouter.java

/**
 * This method has to be implemented by the component request rooter it has to compute a
 * destination page/*w ww . ja va  2s.co  m*/
 *
 *
 * @param function The entering request function ( : "Main.jsp")
 * @param kmelia The component Session Control, build and initialised.
 * @param request The entering request. The request rooter need it to get parameters
 * @return The complete destination URL for a forward (ex :
 * "/almanach/jsp/almanach.jsp?flag=user")
 */
@Override
public String getDestination(String function, KmeliaSessionController kmelia, HttpRequest request) {
    SilverTrace.info("kmelia", "KmeliaRequestRouter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
            "function = " + function);
    String destination = "";
    String rootDestination = "/kmelia/jsp/";
    boolean profileError = false;
    boolean kmaxMode = false;
    boolean toolboxMode;
    try {
        SilverTrace.info("kmelia", "KmeliaRequestRouter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                "getComponentRootName() = " + kmelia.getComponentRootName());
        if ("kmax".equals(kmelia.getComponentRootName())) {
            kmaxMode = true;
            kmelia.isKmaxMode = true;
        }
        request.setAttribute("KmaxMode", kmaxMode);

        toolboxMode = KmeliaHelper.isToolbox(kmelia.getComponentId());

        // Set language choosen by the user
        setLanguage(request, kmelia);

        if (function.startsWith("Main")) {
            resetWizard(kmelia);
            if (kmaxMode) {
                destination = getDestination("KmaxMain", kmelia, request);
                kmelia.setSessionTopic(null);
                kmelia.setSessionPath("");
            } else {
                destination = getDestination("GoToTopic", kmelia, request);
            }
        } else if (function.startsWith("validateClassification")) {
            String[] publicationIds = request.getParameterValues("pubid");
            Collection<KmeliaPublication> publications = kmelia
                    .getPublications(asPks(kmelia.getComponentId(), publicationIds));
            request.setAttribute("Context", URLManager.getApplicationURL());
            request.setAttribute("PublicationsDetails", publications);
            destination = rootDestination + "validateImportedFilesClassification.jsp";
        } else if (function.startsWith("portlet")) {
            kmelia.setSessionPublication(null);
            String flag = kmelia.getUserRoleLevel();
            if (kmaxMode) {
                destination = rootDestination + "kmax_portlet.jsp?Profile=" + flag;
            } else {
                destination = rootDestination + "portlet.jsp?Profile=user";
            }
        } else if (function.equals("FlushTrashCan")) {
            kmelia.flushTrashCan();
            if (kmaxMode) {
                destination = getDestination("KmaxMain", kmelia, request);
            } else {
                destination = getDestination("GoToCurrentTopic", kmelia, request);
            }
        } else if (function.equals("GoToDirectory")) {
            String topicId = request.getParameter("Id");

            String path;
            if (StringUtil.isDefined(topicId)) {
                NodeDetail topic = kmelia.getNodeHeader(topicId);
                path = topic.getPath();
            } else {
                path = request.getParameter("Path");
            }

            FileFolder folder = new FileFolder(path);
            request.setAttribute("Directory", folder);
            request.setAttribute("LinkedPathString", kmelia.getSessionPath());

            destination = rootDestination + "repository.jsp";
        } else if ("GoToTopic".equals(function)) {
            String topicId = (String) request.getAttribute("Id");
            if (!StringUtil.isDefined(topicId)) {
                topicId = request.getParameter("Id");
                if (!StringUtil.isDefined(topicId)) {
                    topicId = NodePK.ROOT_NODE_ID;
                }
            }
            kmelia.setCurrentFolderId(topicId, true);
            resetWizard(kmelia);
            request.setAttribute("CurrentFolderId", topicId);
            request.setAttribute("DisplayNBPublis", kmelia.displayNbPublis());
            request.setAttribute("DisplaySearch", kmelia.isSearchOnTopicsEnabled());

            // rechercher si le theme a un descripteur
            request.setAttribute("HaveDescriptor", kmelia.isTopicHaveUpdateChainDescriptor());

            request.setAttribute("Profile", kmelia.getUserTopicProfile(topicId));
            request.setAttribute("IsGuest", kmelia.getUserDetail().isAccessGuest());
            request.setAttribute("RightsOnTopicsEnabled", kmelia.isRightsOnTopicsEnabled());
            request.setAttribute("WysiwygDescription", kmelia.getWysiwygOnTopic());
            request.setAttribute("PageIndex", kmelia.getIndexOfFirstPubToDisplay());

            if (kmelia.isTreeviewUsed()) {
                destination = rootDestination + "treeview.jsp";
            } else if (kmelia.isTreeStructure()) {
                destination = rootDestination + "oneLevel.jsp";
            } else {
                destination = rootDestination + "simpleListOfPublications.jsp";
            }
        } else if ("GoToCurrentTopic".equals(function)) {
            if (!NodePK.ROOT_NODE_ID.equals(kmelia.getCurrentFolderId())) {
                request.setAttribute("Id", kmelia.getCurrentFolderId());
                destination = getDestination("GoToTopic", kmelia, request);
            } else {
                destination = getDestination("Main", kmelia, request);
            }
        } else if (function.equals("GoToBasket")) {
            destination = rootDestination + "basket.jsp";
        } else if (function.equals("ViewPublicationsToValidate")) {
            destination = rootDestination + "publicationsToValidate.jsp";
        } else if ("GoBackToResults".equals(function)) {
            request.setAttribute("SearchContext", kmelia.getSearchContext());
            destination = getDestination("GoToCurrentTopic", kmelia, request);
        } else if (function.startsWith("searchResult")) {
            resetWizard(kmelia);
            String id = request.getParameter("Id");
            String type = request.getParameter("Type");
            String fileAlreadyOpened = request.getParameter("FileOpened");
            String from = request.getParameter("From");
            if ("Search".equals(from)) {
                // identify clearly access from global search
                // because same URL is used from portlet, permalink...
                request.setAttribute("SearchScope", SearchContext.GLOBAL);
            }

            if (type != null && ("Publication".equals(type)
                    || "com.stratelia.webactiv.calendar.backbone.TodoDetail".equals(type)
                    || "Attachment".equals(type) || "Document".equals(type) || type.startsWith("Comment"))) {
                KmeliaSecurity security = new KmeliaSecurity(kmelia.getOrganisationController());
                try {
                    boolean accessAuthorized = security.isAccessAuthorized(kmelia.getComponentId(),
                            kmelia.getUserId(), id, "Publication");
                    if (accessAuthorized) {
                        processPath(kmelia, id);
                        if ("Attachment".equals(type)) {
                            String attachmentId = request.getParameter("AttachmentId");
                            request.setAttribute("AttachmentId", attachmentId);
                            destination = getDestination("ViewPublication", kmelia, request);
                        } else if ("Document".equals(type)) {
                            String documentId = request.getParameter("DocumentId");
                            request.setAttribute("DocumentId", documentId);
                            destination = getDestination("ViewPublication", kmelia, request);
                        } else {
                            if (kmaxMode) {
                                request.setAttribute("FileAlreadyOpened", fileAlreadyOpened);
                                destination = getDestination("ViewPublication", kmelia, request);
                            } else if (toolboxMode) {
                                // we have to find which page contains the right publication
                                List<KmeliaPublication> publications = kmelia.getSessionPublicationsList();
                                int pubIndex = -1;
                                for (int p = 0; p < publications.size() && pubIndex == -1; p++) {
                                    KmeliaPublication publication = publications.get(p);
                                    if (id.equals(publication.getDetail().getPK().getId())) {
                                        pubIndex = p;
                                    }
                                }
                                int nbPubliPerPage = kmelia.getNbPublicationsPerPage();
                                if (nbPubliPerPage == 0) {
                                    nbPubliPerPage = pubIndex;
                                }
                                int ipage = pubIndex / nbPubliPerPage;
                                kmelia.setIndexOfFirstPubToDisplay(Integer.toString(ipage * nbPubliPerPage));
                                request.setAttribute("PubIdToHighlight", id);
                                request.setAttribute("Id", kmelia.getCurrentFolderId());
                                destination = getDestination("GoToTopic", kmelia, request);
                            } else {
                                request.setAttribute("FileAlreadyOpened", fileAlreadyOpened);
                                destination = getDestination("ViewPublication", kmelia, request);
                            }
                        }
                    } else {
                        destination = "/admin/jsp/accessForbidden.jsp";
                    }
                } catch (Exception e) {
                    SilverTrace.error("kmelia", "KmeliaRequestRouter.getDestination()",
                            "root.MSG_GEN_PARAM_VALUE", "Document Not Found = " + e.getMessage(), e);
                    destination = getDocumentNotFoundDestination(kmelia, request);
                }
            } else if ("Node".equals(type)) {
                if (kmaxMode) {
                    // Simuler l'action d'un utilisateur ayant slectionn la valeur id d'un axe
                    // SearchCombination est un chemin /0/4/i
                    NodeDetail node = kmelia.getNodeHeader(id);
                    String path = node.getPath() + id;
                    request.setAttribute("SearchCombination", path);
                    destination = getDestination("KmaxSearch", kmelia, request);
                } else {
                    try {
                        request.setAttribute("Id", id);
                        destination = getDestination("GoToTopic", kmelia, request);
                    } catch (Exception e) {
                        SilverTrace.error("kmelia", "KmeliaRequestRouter.getDestination()",
                                "root.MSG_GEN_PARAM_VALUE", "Document Not Found = " + e.getMessage(), e);
                        destination = getDocumentNotFoundDestination(kmelia, request);
                    }
                }
            } else if ("Wysiwyg".equals(type)) {
                if (id.startsWith("Node")) {
                    id = id.substring("Node_".length(), id.length());
                    request.setAttribute("Id", id);
                    destination = getDestination("GoToTopic", kmelia, request);
                } else {
                    destination = getDestination("ViewPublication", kmelia, request);
                }
            } else {
                request.setAttribute("Id", NodePK.ROOT_NODE_ID);
                destination = getDestination("GoToTopic", kmelia, request);
            }
        } else if (function.startsWith("GoToFilesTab")) {
            String id = request.getParameter("Id");
            try {
                processPath(kmelia, id);
                if (toolboxMode) {
                    KmeliaPublication kmeliaPublication = kmelia.getPublication(id);
                    kmelia.setSessionPublication(kmeliaPublication);
                    kmelia.setSessionOwner(true);
                    destination = getDestination("ViewAttachments", kmelia, request);
                } else {
                    destination = getDestination("ViewPublication", kmelia, request);
                }
            } catch (Exception e) {
                SilverTrace.error("kmelia", "KmeliaRequestRouter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                        "Document Not Found = " + e.getMessage(), e);
                destination = getDocumentNotFoundDestination(kmelia, request);
            }
        } else if ("ToUpdatePublicationHeader".equals(function)) {
            request.setAttribute("Action", "UpdateView");
            destination = getDestination("publicationManager.jsp", kmelia, request);
        } else if ("publicationManager.jsp".equals(function)) {
            String action = (String) request.getAttribute("Action");
            if ("UpdateView".equals(action)) {
                request.setAttribute("TaxonomyOK", kmelia.isPublicationTaxonomyOK());
                request.setAttribute("ValidatorsOK", kmelia.isPublicationValidatorsOK());
                request.setAttribute("Publication", kmelia.getSessionPubliOrClone());
            } else if ("New".equals(action)) {
                request.setAttribute("TaxonomyOK", true);
                request.setAttribute("ValidatorsOK", true);
            }

            request.setAttribute("Wizard", kmelia.getWizard());
            request.setAttribute("Path", kmelia.getTopicPath(kmelia.getCurrentFolderId()));
            request.setAttribute("Profile", kmelia.getProfile());

            destination = rootDestination + "publicationManager.jsp";
            // thumbnail error for front explication
            if (request.getParameter("errorThumbnail") != null) {
                destination = destination + "&resultThumbnail=" + request.getParameter("errorThumbnail");
            }
        } else if (function.equals("ToAddTopic")) {
            String topicId = request.getParameter("Id");
            if (!SilverpeasRole.admin.isInRole(kmelia.getUserTopicProfile(topicId))) {
                destination = "/admin/jsp/accessForbidden.jsp";
            } else {
                String isLink = request.getParameter("IsLink");
                if (StringUtil.isDefined(isLink)) {
                    request.setAttribute("IsLink", Boolean.TRUE);
                }

                List<NodeDetail> path = kmelia.getTopicPath(topicId);
                request.setAttribute("Path", kmelia.displayPath(path, false, 3));
                request.setAttribute("PathLinked", kmelia.displayPath(path, true, 3));
                request.setAttribute("Translation", kmelia.getCurrentLanguage());
                request.setAttribute("NotificationAllowed", kmelia.isNotificationAllowed());
                request.setAttribute("Parent", kmelia.getNodeHeader(topicId));

                if (kmelia.isRightsOnTopicsEnabled()) {
                    request.setAttribute("Profiles", kmelia.getTopicProfiles());

                    // Rights of the component
                    request.setAttribute("RightsDependsOn", "ThisComponent");
                }

                destination = rootDestination + "addTopic.jsp";
            }
        } else if ("ToUpdateTopic".equals(function)) {
            String id = request.getParameter("Id");
            NodeDetail node = kmelia.getSubTopicDetail(id);
            if (!SilverpeasRole.admin.isInRole(kmelia.getUserTopicProfile(id))
                    && !SilverpeasRole.admin.isInRole(kmelia.getUserTopicProfile(node.getFatherPK().getId()))) {
                destination = "/admin/jsp/accessForbidden.jsp";
            } else {
                request.setAttribute("NodeDetail", node);

                List<NodeDetail> path = kmelia.getTopicPath(id);
                request.setAttribute("Path", kmelia.displayPath(path, false, 3));
                request.setAttribute("PathLinked", kmelia.displayPath(path, true, 3));
                request.setAttribute("Translation", kmelia.getCurrentLanguage());
                request.setAttribute("NotificationAllowed", kmelia.isNotificationAllowed());

                if (kmelia.isRightsOnTopicsEnabled()) {
                    request.setAttribute("Profiles", kmelia.getTopicProfiles(id));

                    if (node.haveInheritedRights()) {
                        request.setAttribute("RightsDependsOn", "AnotherTopic");
                    } else if (node.haveLocalRights()) {
                        request.setAttribute("RightsDependsOn", "ThisTopic");
                    } else {
                        // Rights of the component
                        request.setAttribute("RightsDependsOn", "ThisComponent");
                    }
                }

                destination = rootDestination + "updateTopicNew.jsp";
            }
        } else if (function.equals("AddTopic")) {
            String name = request.getParameter("Name");
            String description = request.getParameter("Description");
            String alertType = request.getParameter("AlertType");
            if (!StringUtil.isDefined(alertType)) {
                alertType = "None";
            }
            String rightsUsed = request.getParameter("RightsUsed");
            String path = request.getParameter("Path");
            String parentId = request.getParameter("ParentId");

            NodeDetail topic = new NodeDetail("-1", name, description, null, null, null, "0", "X");
            I18NHelper.setI18NInfo(topic, request);

            if (StringUtil.isDefined(path)) {
                topic.setType(NodeDetail.FILE_LINK_TYPE);
                topic.setPath(path);
            }

            int rightsDependsOn = -1;
            if (StringUtil.isDefined(rightsUsed)) {
                if ("father".equalsIgnoreCase(rightsUsed)) {
                    NodeDetail father = kmelia.getCurrentFolder();
                    rightsDependsOn = father.getRightsDependsOn();
                } else {
                    rightsDependsOn = 0;
                }
                topic.setRightsDependsOn(rightsDependsOn);
            }
            NodePK nodePK = kmelia.addSubTopic(topic, alertType, parentId);
            if (kmelia.isRightsOnTopicsEnabled()) {
                if (rightsDependsOn == 0) {
                    request.setAttribute("NodeId", nodePK.getId());
                    destination = getDestination("ViewTopicProfiles", kmelia, request);
                } else {
                    destination = getDestination("GoToCurrentTopic", kmelia, request);
                }
            } else {
                destination = getDestination("GoToCurrentTopic", kmelia, request);
            }
        } else if ("UpdateTopic".equals(function)) {
            String name = request.getParameter("Name");
            String description = request.getParameter("Description");
            String alertType = request.getParameter("AlertType");
            if (!StringUtil.isDefined(alertType)) {
                alertType = "None";
            }
            String id = request.getParameter("ChildId");
            String path = request.getParameter("Path");
            NodeDetail topic = new NodeDetail(id, name, description, null, null, null, "0", "X");
            I18NHelper.setI18NInfo(topic, request);
            if (StringUtil.isDefined(path)) {
                topic.setType(NodeDetail.FILE_LINK_TYPE);
                topic.setPath(path);
            }
            boolean goToProfilesDefinition = false;
            if (kmelia.isRightsOnTopicsEnabled()) {
                int rightsUsed = Integer.parseInt(request.getParameter("RightsUsed"));
                topic.setRightsDependsOn(rightsUsed);

                // process destination
                NodeDetail oldTopic = kmelia.getNodeHeader(id);
                if (oldTopic.getRightsDependsOn() != rightsUsed) {
                    // rights dependency have changed
                    if (rightsUsed != -1) {
                        // folder uses its own rights
                        goToProfilesDefinition = true;
                    }
                }
            }
            kmelia.updateTopicHeader(topic, alertType);

            if (goToProfilesDefinition) {
                request.setAttribute("NodeId", id);
                destination = getDestination("ViewTopicProfiles", kmelia, request);
            } else {
                destination = getDestination("GoToCurrentTopic", kmelia, request);
            }
        } else if (function.equals("DeleteTopic")) {
            String id = request.getParameter("Id");
            kmelia.deleteTopic(id);
            destination = getDestination("GoToCurrentTopic", kmelia, request);
        } else if (function.equals("ViewClone")) {
            PublicationDetail pubDetail = kmelia.getSessionPublication().getDetail();

            // Reload clone and put it into session
            String cloneId = pubDetail.getCloneId();
            KmeliaPublication kmeliaPublication = kmelia.getPublication(cloneId);
            kmelia.setSessionClone(kmeliaPublication);

            request.setAttribute("Publication", kmeliaPublication);
            request.setAttribute("Profile", kmelia.getProfile());
            request.setAttribute("VisiblePublicationId", pubDetail.getPK().getId());
            request.setAttribute("UserCanValidate", kmelia.isUserCanValidatePublication());
            request.setAttribute("TaxonomyOK", kmelia.isPublicationTaxonomyOK());
            request.setAttribute("ValidatorsOK", kmelia.isPublicationValidatorsOK());

            putXMLDisplayerIntoRequest(kmeliaPublication.getDetail(), kmelia, request);

            // Attachments area must be displayed or not ?
            request.setAttribute("AttachmentsEnabled", kmelia.isAttachmentsEnabled());

            destination = rootDestination + "clone.jsp";
        } else if ("ViewPublication".equals(function)) {
            String id = request.getParameter("PubId");
            if (!StringUtil.isDefined(id)) {
                id = request.getParameter("Id");
                if (!StringUtil.isDefined(id)) {
                    id = (String) request.getAttribute("PubId");
                }
            }

            if (!kmaxMode) {
                boolean checkPath = StringUtil.getBooleanValue(request.getParameter("CheckPath"));
                if (checkPath || KmeliaHelper.isToValidateFolder(kmelia.getCurrentFolderId())) {
                    processPath(kmelia, id);
                } else {
                    processPath(kmelia, null);
                }
            }

            // view publication from global search ?
            Integer searchScope = (Integer) request.getAttribute("SearchScope");
            if (searchScope == null) {
                if (kmelia.getSearchContext() != null) {
                    request.setAttribute("SearchScope", SearchContext.LOCAL);
                } else {
                    request.setAttribute("SearchScope", SearchContext.NONE);
                }
            }

            KmeliaPublication kmeliaPublication;
            if (StringUtil.isDefined(id)) {
                kmeliaPublication = kmelia.getPublication(id, true);
                kmelia.setSessionPublication(kmeliaPublication);

                PublicationDetail pubDetail = kmeliaPublication.getDetail();
                if (pubDetail.haveGotClone()) {
                    KmeliaPublication clone = kmelia.getPublication(pubDetail.getCloneId());
                    kmelia.setSessionClone(clone);
                }
            } else {
                kmeliaPublication = kmelia.getSessionPublication();
                id = kmeliaPublication.getDetail().getPK().getId();
            }
            if (toolboxMode) {
                destination = getDestination("ToUpdatePublicationHeader", kmelia, request);
            } else {
                List<String> publicationLanguages = kmelia.getPublicationLanguages(); // languages of
                // publication
                // header and attachments
                if (publicationLanguages.contains(kmelia.getCurrentLanguage())) {
                    request.setAttribute("ContentLanguage", kmelia.getCurrentLanguage());
                } else {
                    request.setAttribute("ContentLanguage",
                            checkLanguage(kmelia, kmeliaPublication.getDetail()));
                }
                request.setAttribute("Languages", publicationLanguages);

                // see also management
                Collection<ForeignPK> links = kmeliaPublication.getCompleteDetail().getLinkList();
                HashSet<String> linkedList = new HashSet<String>(links.size());
                for (ForeignPK link : links) {
                    linkedList.add(link.getId() + "-" + link.getInstanceId());
                }
                // put into session the current list of selected publications (see also)
                request.getSession().setAttribute(KmeliaConstants.PUB_TO_LINK_SESSION_KEY, linkedList);

                request.setAttribute("Publication", kmeliaPublication);
                request.setAttribute("PubId", id);
                request.setAttribute("UserCanValidate",
                        kmelia.isUserCanValidatePublication() && kmelia.getSessionClone() == null);
                request.setAttribute("ValidationStep", kmelia.getValidationStep());
                request.setAttribute("ValidationType", kmelia.getValidationType());

                // check if user is writer with approval right (versioning case)
                request.setAttribute("WriterApproval", kmelia.isWriterApproval(id));
                request.setAttribute("NotificationAllowed", kmelia.isNotificationAllowed());

                // check is requested publication is an alias
                checkAlias(kmelia, kmeliaPublication);

                if (kmeliaPublication.isAlias()) {
                    request.setAttribute("Profile", "user");
                    request.setAttribute("TaxonomyOK", false);
                    request.setAttribute("ValidatorsOK", false);
                    request.setAttribute("IsAlias", "1");
                } else {
                    request.setAttribute("Profile", kmelia.getProfile());
                    request.setAttribute("TaxonomyOK", kmelia.isPublicationTaxonomyOK());
                    request.setAttribute("ValidatorsOK", kmelia.isPublicationValidatorsOK());
                }

                request.setAttribute("Wizard", kmelia.getWizard());

                request.setAttribute("Rang", kmelia.getRang());
                if (kmelia.getSessionPublicationsList() != null) {
                    request.setAttribute("NbPublis", kmelia.getSessionPublicationsList().size());
                } else {
                    request.setAttribute("NbPublis", 1);
                }
                putXMLDisplayerIntoRequest(kmeliaPublication.getDetail(), kmelia, request);
                String fileAlreadyOpened = (String) request.getAttribute("FileAlreadyOpened");
                boolean alreadyOpened = "1".equals(fileAlreadyOpened);
                String attachmentId = (String) request.getAttribute("AttachmentId");
                String documentId = (String) request.getAttribute("DocumentId");
                if (!alreadyOpened && kmelia.openSingleAttachmentAutomatically()
                        && !kmelia.isCurrentPublicationHaveContent()) {
                    request.setAttribute("SingleAttachmentURL",
                            kmelia.getFirstAttachmentURLOfCurrentPublication());
                } else if (!alreadyOpened && attachmentId != null) {
                    request.setAttribute("SingleAttachmentURL", kmelia.getAttachmentURL(attachmentId));
                } else if (!alreadyOpened && documentId != null) {
                    request.setAttribute("SingleAttachmentURL", kmelia.getAttachmentURL(documentId));
                }

                // Attachments area must be displayed or not ?
                request.setAttribute("AttachmentsEnabled", kmelia.isAttachmentsEnabled());

                // option Actualits dcentralises
                request.setAttribute("NewsManage", kmelia.isNewsManage());
                if (kmelia.isNewsManage()) {
                    request.setAttribute("DelegatedNews", kmelia.getDelegatedNews(id));
                    request.setAttribute("IsBasket", NodePK.BIN_NODE_ID.equals(kmelia.getCurrentFolderId()));
                }

                request.setAttribute("LastAccess", kmelia.getLastAccess(kmeliaPublication.getPk()));
                request.setAttribute("PublicationRatingsAllowed", kmelia.isPublicationRatingAllowed());

                destination = rootDestination + "publication.jsp";
            }
        } else if (function.equals("PreviousPublication")) {
            // rcupration de la publication prcdente
            String pubId = kmelia.getPrevious();
            request.setAttribute("PubId", pubId);
            destination = getDestination("ViewPublication", kmelia, request);
        } else if (function.equals("NextPublication")) {
            // rcupration de la publication suivante
            String pubId = kmelia.getNext();
            request.setAttribute("PubId", pubId);
            destination = getDestination("ViewPublication", kmelia, request);
        } else if (function.startsWith("copy")) {
            String objectType = request.getParameter("Object");
            String objectId = request.getParameter("Id");
            if (StringUtil.isDefined(objectType) && "Node".equalsIgnoreCase(objectType)) {
                kmelia.copyTopic(objectId);
            } else {
                kmelia.copyPublication(objectId);
            }

            destination = URLManager.getURL(URLManager.CMP_CLIPBOARD, null, null)
                    + "Idle.jsp?message=REFRESHCLIPBOARD";
        } else if (function.startsWith("cut")) {
            String objectType = request.getParameter("Object");
            String objectId = request.getParameter("Id");
            if (StringUtil.isDefined(objectType) && "Node".equalsIgnoreCase(objectType)) {
                kmelia.cutTopic(objectId);
            } else {
                kmelia.cutPublication(objectId);
            }

            destination = URLManager.getURL(URLManager.CMP_CLIPBOARD, null, null)
                    + "Idle.jsp?message=REFRESHCLIPBOARD";
        } else if (function.startsWith("paste")) {
            kmelia.paste();
            destination = URLManager.getURL(URLManager.CMP_CLIPBOARD, null, null) + "Idle.jsp";
        } else if (function.startsWith("ToAlertUserAttachment")) { // utilisation de alertUser et
            // alertUserPeas
            SilverTrace.debug("kmelia", "KmeliaRequestRooter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                    "ToAlertUserAttachment: function = " + function + " spaceId=" + kmelia.getSpaceId()
                            + " componentId=" + kmelia.getComponentId());
            try {
                String attachmentId = request.getParameter("AttachmentOrDocumentId");
                destination = kmelia.initAlertUserAttachment(attachmentId);
            } catch (Exception e) {
                SilverTrace.warn("kmelia", "KmeliaRequestRooter.getDestination()", "root.EX_USERPANEL_FAILED",
                        "function = " + function, e);
            }
            SilverTrace.debug("kmelia", "KmeliaRequestRooter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                    "ToAlertUserAttachment: function = " + function + "=> destination=" + destination);
        } else if (function.startsWith("ToAlertUserDocument")) { // utilisation de alertUser et
            // alertUserPeas
            SilverTrace.debug("kmelia", "KmeliaRequestRooter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                    "ToAlertUserDocument: function = " + function + " spaceId=" + kmelia.getSpaceId()
                            + " componentId=" + kmelia.getComponentId());
            try {
                String documentId = request.getParameter("AttachmentOrDocumentId");
                destination = kmelia.initAlertUserAttachment(documentId);
            } catch (Exception e) {
                SilverTrace.warn("kmelia", "KmeliaRequestRooter.getDestination()", "root.EX_USERPANEL_FAILED",
                        "function = " + function, e);
            }
            SilverTrace.debug("kmelia", "KmeliaRequestRooter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                    "ToAlertUserDocument: function = " + function + "=> destination=" + destination);
        } else if (function.startsWith("ToAlertUser")) { // utilisation de alertUser et alertUserPeas
            SilverTrace.debug("kmelia", "KmeliaRequestRooter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                    "ToAlertUser: function = " + function + " spaceId=" + kmelia.getSpaceId() + " componentId="
                            + kmelia.getComponentId());
            try {
                destination = kmelia.initAlertUser();
            } catch (Exception e) {
                SilverTrace.warn("kmelia", "KmeliaRequestRooter.getDestination()", "root.EX_USERPANEL_FAILED",
                        "function = " + function, e);
            }
            SilverTrace.debug("kmelia", "KmeliaRequestRooter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                    "ToAlertUser: function = " + function + "=> destination=" + destination);
        } else if (function.equals("ReadingControl")) {
            PublicationDetail publication = kmelia.getSessionPublication().getDetail();
            request.setAttribute("LinkedPathString", kmelia.getSessionPath());
            request.setAttribute("Publication", publication);
            request.setAttribute("UserIds", kmelia.getUserIdsOfTopic());

            // paramtre du wizard
            request.setAttribute("Wizard", kmelia.getWizard());

            destination = rootDestination + "readingControlManager.jsp";
        } else if (function.startsWith("ViewAttachments")) {
            String flag = kmelia.getProfile();

            // Versioning is out of "Always visible publication" mode
            if (kmelia.isCloneNeeded() && !kmelia.isVersionControlled()) {
                kmelia.clonePublication();
            }

            // put current publication
            if (!kmelia.isVersionControlled()) {
                request.setAttribute("CurrentPublicationDetail", kmelia.getSessionPubliOrClone().getDetail());
            } else {
                request.setAttribute("CurrentPublicationDetail", kmelia.getSessionPublication().getDetail());
            }
            // Paramtres du wizard
            setWizardParams(request, kmelia);

            // Paramtres de i18n
            List<String> attachmentLanguages = kmelia.getAttachmentLanguages();
            if (attachmentLanguages.contains(kmelia.getCurrentLanguage())) {
                request.setAttribute("Language", kmelia.getCurrentLanguage());
            } else {
                request.setAttribute("Language", checkLanguage(kmelia));
            }
            request.setAttribute("Languages", attachmentLanguages);

            request.setAttribute("XmlFormForFiles", kmelia.getXmlFormForFiles());

            destination = rootDestination + "attachmentManager.jsp?profile=" + flag;
        } else if (function.equals("DeletePublication")) {
            String pubId = request.getParameter("PubId");
            kmelia.deletePublication(pubId);

            if (kmaxMode) {
                destination = getDestination("Main", kmelia, request);
            } else {
                destination = getDestination("GoToCurrentTopic", kmelia, request);
            }
        } else if (function.equals("DeleteClone")) {
            kmelia.deleteClone();

            destination = getDestination("ViewPublication", kmelia, request);
        } else if (function.equals("ViewValidationSteps")) {
            request.setAttribute("LinkedPathString", kmelia.getSessionPath());
            request.setAttribute("Publication", kmelia.getSessionPubliOrClone().getDetail());
            request.setAttribute("ValidationSteps", kmelia.getValidationSteps());

            request.setAttribute("Role", kmelia.getProfile());

            destination = rootDestination + "validationSteps.jsp";
        } else if ("ValidatePublication".equals(function)) {
            String pubId = kmelia.getSessionPublication().getDetail().getPK().getId();

            SilverTrace.debug("kmelia", "KmeliaRequestRooter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                    "function = " + function + " pubId=" + pubId);

            boolean validationComplete = kmelia.validatePublication(pubId);
            if (validationComplete) {
                request.setAttribute("Action", "ValidationComplete");
                destination = getDestination("ViewPublication", kmelia, request);
            } else {
                request.setAttribute("Action", "ValidationInProgress");
                if (kmelia.getSessionClone() != null) {
                    destination = getDestination("ViewClone", kmelia, request);
                } else {
                    destination = getDestination("ViewPublication", kmelia, request);
                }
            }
        } else if (function.equals("ForceValidatePublication")) {
            String pubId = kmelia.getSessionPublication().getDetail().getPK().getId();
            kmelia.forcePublicationValidation(pubId);
            request.setAttribute("Action", "ValidationComplete");

            request.setAttribute("PubId", pubId);
            destination = getDestination("ViewPublication", kmelia, request);
        } else if ("Unvalidate".equals(function)) {
            String motive = request.getParameter("Motive");
            String pubId = kmelia.getSessionPublication().getDetail().getPK().getId();

            SilverTrace.debug("kmelia", "KmeliaRequestRooter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                    "function = " + function + " pubId=" + pubId);

            kmelia.unvalidatePublication(pubId, motive);

            request.setAttribute("Action", "Unvalidate");

            if (kmelia.getSessionClone() != null) {
                destination = getDestination("ViewClone", kmelia, request);
            } else {
                destination = getDestination("ViewPublication", kmelia, request);
            }
        } else if (function.equals("WantToSuspendPubli")) {
            String pubId = request.getParameter("PubId");

            PublicationDetail pubDetail = kmelia.getPublicationDetail(pubId);

            request.setAttribute("PublicationToSuspend", pubDetail);

            destination = rootDestination + "defermentMotive.jsp";
        } else if (function.equals("SuspendPublication")) {
            String motive = request.getParameter("Motive");
            String pubId = request.getParameter("PubId");

            kmelia.suspendPublication(pubId, motive);

            request.setAttribute("Action", "Suspend");

            destination = getDestination("ViewPublication", kmelia, request);
        } else if (function.equals("DraftIn")) {
            kmelia.draftInPublication();
            if (kmelia.getSessionClone() != null) {
                // draft have generate a clone
                destination = getDestination("ViewClone", kmelia, request);
            } else {
                String from = request.getParameter("From");
                if (StringUtil.isDefined(from)) {
                    destination = getDestination(from, kmelia, request);
                } else {
                    destination = getDestination("ToUpdatePublicationHeader", kmelia, request);
                }
            }
        } else if (function.equals("DraftOut")) {
            kmelia.draftOutPublication();

            destination = getDestination("ViewPublication", kmelia, request);
        } else if (function.equals("ToTopicWysiwyg")) {
            String topicId = request.getParameter("Id");
            String subTopicId = request.getParameter("ChildId");
            String flag = kmelia.getProfile();

            NodeDetail topic = kmelia.getSubTopicDetail(subTopicId);

            request.setAttribute("SpaceId", kmelia.getSpaceId());
            request.setAttribute("SpaceName", URLEncoder.encode(kmelia.getSpaceLabel(), CharEncoding.UTF_8));
            request.setAttribute("ComponentId", kmelia.getComponentId());
            request.setAttribute("ComponentName",
                    URLEncoder.encode(kmelia.getComponentLabel(), CharEncoding.UTF_8));
            String browseInfo = kmelia.getSessionPathString();
            if (browseInfo != null && !browseInfo.contains(topic.getName())) {
                browseInfo += topic.getName();
            }
            if (!StringUtil.isDefined(browseInfo)) {
                browseInfo = kmelia.getString("TopicWysiwyg");
            } else {
                browseInfo += " > " + kmelia.getString("TopicWysiwyg");
            }
            request.setAttribute("BrowseInfo", browseInfo);
            request.setAttribute("ObjectId", "Node_" + subTopicId);
            request.setAttribute("Language", kmelia.getLanguage());
            request.setAttribute("ContentLanguage", kmelia.getCurrentLanguage());
            request.setAttribute("ReturnUrl",
                    URLManager.getApplicationURL()
                            + URLManager.getURL(kmelia.getSpaceId(), kmelia.getComponentId())
                            + "FromTopicWysiwyg?Action=Search&Id=" + topicId + "&ChildId=" + subTopicId
                            + "&Profile=" + flag);
            destination = "/wysiwyg/jsp/htmlEditor.jsp";
        } else if (function.equals("FromTopicWysiwyg")) {
            String subTopicId = request.getParameter("ChildId");

            kmelia.processTopicWysiwyg(subTopicId);

            destination = getDestination("GoToCurrentTopic", kmelia, request);
        } else if (function.equals("ChangeTopicStatus")) {
            String subTopicId = request.getParameter("ChildId");
            String newStatus = request.getParameter("Status");
            String recursive = request.getParameter("Recursive");

            if (recursive != null && recursive.equals("1")) {
                kmelia.changeTopicStatus(newStatus, subTopicId, true);
            } else {
                kmelia.changeTopicStatus(newStatus, subTopicId, false);
            }

            destination = getDestination("GoToCurrentTopic", kmelia, request);
        } else if (function.equals("ViewOnly")) {
            String id = request.getParameter("Id");
            destination = rootDestination + "publicationViewOnly.jsp?Id=" + id;
        } else if (function.equals("SeeAlso")) {
            String action = request.getParameter("Action");
            if (!StringUtil.isDefined(action)) {
                action = "LinkAuthorView";
            }

            request.setAttribute("Action", action);

            // check if requested publication is an alias
            String pubId = request.getParameter("PubId");
            KmeliaPublication kmeliaPublication = kmelia.getSessionPublication();
            if (StringUtil.isDefined(pubId)) {
                kmeliaPublication = kmelia.getPublication(pubId);
                kmelia.setSessionPublication(kmeliaPublication);
            }
            checkAlias(kmelia, kmeliaPublication);

            if (kmeliaPublication.isAlias()) {
                request.setAttribute("Profile", "user");
                request.setAttribute("IsAlias", "1");
            } else {
                request.setAttribute("Profile", kmelia.getProfile());
            }

            // paramtres du wizard
            request.setAttribute("Wizard", kmelia.getWizard());

            destination = rootDestination + "seeAlso.jsp";
        } else if (function.equals("DeleteSeeAlso")) {
            String[] pubIds = request.getParameterValues("PubIds");

            if (pubIds != null) {
                List<ForeignPK> infoLinks = new ArrayList<ForeignPK>();
                for (String pubId : pubIds) {
                    StringTokenizer tokens = new StringTokenizer(pubId, "-");
                    infoLinks.add(new ForeignPK(tokens.nextToken(), tokens.nextToken()));

                    // removing deleted pks from session
                    Set<String> list = (Set<String>) request.getSession()
                            .getAttribute(KmeliaConstants.PUB_TO_LINK_SESSION_KEY);
                    if (list != null) {
                        list.remove(pubId);
                    }
                }

                if (!infoLinks.isEmpty()) {
                    kmelia.deleteInfoLinks(kmelia.getSessionPublication().getId(), infoLinks);
                }
            }

            destination = getDestination("SeeAlso", kmelia, request);
        } else if (function.equals("ImportFileUpload")) {
            destination = processFormUpload(kmelia, request, rootDestination, false);
        } else if (function.equals("ImportFilesUpload")) {
            destination = processFormUpload(kmelia, request, rootDestination, true);
        } else if (function.equals("ExportAttachementsToPDF")) {
            String topicId = request.getParameter("TopicId");
            // build an exploitable list by importExportPeas
            SilverTrace.info("kmelia", "KmeliaSessionController.getAllVisiblePublicationsByTopic()",
                    "root.MSG_PARAM_VALUE", "topicId =" + topicId);
            List<WAAttributeValuePair> publicationsIds = kmelia.getAllVisiblePublicationsByTopic(topicId);
            request.setAttribute("selectedResultsWa", publicationsIds);
            request.setAttribute("RootPK", new NodePK(topicId, kmelia.getComponentId()));
            // Go to importExportPeas
            destination = "/RimportExportPeas/jsp/ExportPDF";
        } else if (function.equals("NewPublication")) {
            request.setAttribute("Action", "New");
            destination = getDestination("publicationManager.jsp", kmelia, request);
        } else if (function.equals("ManageSubscriptions")) {
            destination = kmelia.manageSubscriptions();
        } else if (function.equals("AddPublication")) {
            List<FileItem> parameters = request.getFileItems();

            // create publication
            String positions = FileUploadUtil.getParameter(parameters, "Positions");
            PdcClassificationEntity withClassification = PdcClassificationEntity.undefinedClassification();
            if (StringUtil.isDefined(positions)) {
                withClassification = PdcClassificationEntity.fromJSON(positions);
            }
            PublicationDetail pubDetail = getPublicationDetail(parameters, kmelia);
            String newPubId = kmelia.createPublication(pubDetail, withClassification);
            // create thumbnail if exists
            boolean newThumbnail = ThumbnailController.processThumbnail(
                    new ForeignPK(newPubId, kmelia.getComponentId()), PublicationDetail.getResourceType(),
                    parameters);
            // force indexation to taking into account new thumbnail
            if (newThumbnail && pubDetail.isIndexable()) {
                kmelia.getPublicationBm().createIndex(pubDetail.getPK());
            }
            request.setAttribute("PubId", newPubId);
            processPath(kmelia, newPubId);
            String wizard = kmelia.getWizard();
            if ("progress".equals(wizard)) {
                KmeliaPublication kmeliaPublication = kmelia.getPublication(newPubId);
                kmelia.setSessionPublication(kmeliaPublication);
                String position = FileUploadUtil.getParameter(parameters, "Position");
                setWizardParams(request, kmelia);
                request.setAttribute("Position", position);
                request.setAttribute("Publication", kmeliaPublication);
                request.setAttribute("Profile", kmelia.getProfile());
                destination = getDestination("WizardNext", kmelia, request);
            } else {
                StringBuffer requestURI = request.getRequestURL();
                destination = requestURI.substring(0, requestURI.indexOf("AddPublication"))
                        + "ViewPublication?PubId=" + newPubId;
            }
        } else if ("UpdatePublication".equals(function)) {
            List<FileItem> parameters = request.getFileItems();

            PublicationDetail pubDetail = getPublicationDetail(parameters, kmelia);
            String id = pubDetail.getPK().getId();
            ThumbnailController.processThumbnail(new ForeignPK(id, kmelia.getComponentId()),
                    PublicationDetail.getResourceType(), parameters);

            kmelia.updatePublication(pubDetail);

            String wizard = kmelia.getWizard();
            if (wizard.equals("progress")) {
                KmeliaPublication kmeliaPublication = kmelia.getPublication(id);
                String position = FileUploadUtil.getParameter(parameters, "Position");
                setWizardParams(request, kmelia);
                request.setAttribute("Position", position);
                request.setAttribute("Publication", kmeliaPublication);
                request.setAttribute("Profile", kmelia.getProfile());
                destination = getDestination("WizardNext", kmelia, request);
            } else {
                if (kmelia.getSessionClone() != null) {
                    destination = getDestination("ViewClone", kmelia, request);
                } else {
                    request.setAttribute("PubId", id);
                    request.setAttribute("CheckPath", "1");
                    destination = getDestination("ViewPublication", kmelia, request);
                }
            }
        } else if (function.equals("SelectValidator")) {
            destination = kmelia.initUPToSelectValidator("");
        } else if (function.equals("PublicationPaths")) {
            // paramtre du wizard
            request.setAttribute("Wizard", kmelia.getWizard());

            PublicationDetail publication = kmelia.getSessionPublication().getDetail();
            String pubId = publication.getPK().getId();
            request.setAttribute("Publication", publication);
            request.setAttribute("LinkedPathString", kmelia.getSessionPath());
            request.setAttribute("PathList", kmelia.getPublicationFathers(pubId));

            if (toolboxMode) {
                request.setAttribute("Topics", kmelia.getAllTopics());
            } else {
                List<Alias> aliases = kmelia.getAliases();
                request.setAttribute("Aliases", aliases);
                request.setAttribute("Components", kmelia.getComponents(aliases));
            }

            destination = rootDestination + "publicationPaths.jsp";
        } else if (function.equals("SetPath")) {
            String[] topics = request.getParameterValues("topicChoice");
            String loadedComponentIds = request.getParameter("LoadedComponentIds");

            Alias alias;
            List<Alias> aliases = new ArrayList<Alias>();
            for (int i = 0; topics != null && i < topics.length; i++) {
                String topicId = topics[i];
                SilverTrace.debug("kmelia", "KmeliaRequestRouter.setPath()", "root.MSG_GEN_PARAM_VALUE",
                        "topicId = " + topicId);
                StringTokenizer tokenizer = new StringTokenizer(topicId, ",");
                String nodeId = tokenizer.nextToken();
                String instanceId = tokenizer.nextToken();

                alias = new Alias(nodeId, instanceId);
                alias.setUserId(kmelia.getUserId());
                aliases.add(alias);
            }

            // Tous les composants ayant un alias n'ont pas forcment t chargs
            List<Alias> oldAliases = kmelia.getAliases();
            for (Alias oldAlias : oldAliases) {
                if (!loadedComponentIds.contains(oldAlias.getInstanceId())) {
                    // le composant de l'alias n'a pas t charg
                    aliases.add(oldAlias);
                }
            }

            kmelia.setAliases(aliases);

            destination = getDestination("ViewPublication", kmelia, request);
        } else if (function.equals("ShowAliasTree")) {
            String componentId = request.getParameter("ComponentId");

            request.setAttribute("Tree", kmelia.getAliasTreeview(componentId));
            request.setAttribute("Aliases", kmelia.getAliases());

            destination = rootDestination + "treeview4PublicationPaths.jsp";
        } else if (function.equals("AddLinksToPublication")) {
            String id = request.getParameter("PubId");
            String topicId = request.getParameter("TopicId");
            //noinspection unchecked
            HashSet<String> list = (HashSet) request.getSession()
                    .getAttribute(KmeliaConstants.PUB_TO_LINK_SESSION_KEY);

            int nb = kmelia.addPublicationsToLink(id, list);

            request.setAttribute("NbLinks", Integer.toString(nb));

            destination = rootDestination + "publicationLinksManager.jsp?Action=Add&Id=" + topicId;
        } else if (function.equals("ExportTopic")) {
            String topicId = request.getParameter("TopicId");
            boolean exportFullApp = !StringUtil.isDefined(topicId) || NodePK.ROOT_NODE_ID.equals(topicId);
            if (kmaxMode) {
                if (exportFullApp) {
                    destination = getDestination("KmaxExportComponent", kmelia, request);
                } else {
                    destination = getDestination("KmaxExportPublications", kmelia, request);
                }
            } else {
                // build an exploitable list by importExportPeas
                SilverTrace.info("kmelia", "KmeliaRequestRouter.ExportTopic", "root.MSG_PARAM_VALUE",
                        "topicId =" + topicId);
                final List<WAAttributeValuePair> publicationsIds;
                if (exportFullApp) {
                    publicationsIds = kmelia.getAllVisiblePublications();
                } else {
                    publicationsIds = kmelia.getAllVisiblePublicationsByTopic(topicId);
                }
                request.setAttribute("selectedResultsWa", publicationsIds);
                request.setAttribute("RootPK", new NodePK(topicId, kmelia.getComponentId()));
                // Go to importExportPeas
                destination = "/RimportExportPeas/jsp/SelectExportMode";
            }
        } else if (function.equals("ExportPublications")) {
            String selectedIds = request.getParameter("SelectedIds");
            String notSelectedIds = request.getParameter("NotSelectedIds");
            List<PublicationPK> pks = kmelia.processSelectedPublicationIds(selectedIds, notSelectedIds);

            List<WAAttributeValuePair> publicationIds = new ArrayList<WAAttributeValuePair>();
            for (PublicationPK pk : pks) {
                publicationIds.add(new WAAttributeValuePair(pk.getId(), pk.getInstanceId()));
            }
            request.setAttribute("selectedResultsWa", publicationIds);
            request.setAttribute("RootPK", new NodePK(kmelia.getCurrentFolderId(), kmelia.getComponentId()));
            kmelia.resetSelectedPublicationPKs();
            // Go to importExportPeas
            destination = "/RimportExportPeas/jsp/SelectExportMode";
        } else if (function.equals("ToPubliContent")) {
            CompletePublication completePublication = kmelia.getSessionPubliOrClone().getCompleteDetail();
            if (completePublication.getModelDetail() != null) {
                destination = getDestination("ToDBModel", kmelia, request);
            } else if (WysiwygController.haveGotWysiwyg(kmelia.getComponentId(),
                    completePublication.getPublicationDetail().getPK().getId(), kmelia.getCurrentLanguage())) {

                destination = getDestination("ToWysiwyg", kmelia, request);
            } else {
                String infoId = completePublication.getPublicationDetail().getInfoId();
                if (infoId == null || "0".equals(infoId)) {
                    List<String> usedModels = (List<String>) kmelia.getModelUsed();
                    if (usedModels.size() == 1) {
                        String modelId = usedModels.get(0);
                        if ("WYSIWYG".equals(modelId)) {
                            // Wysiwyg content
                            destination = getDestination("ToWysiwyg", kmelia, request);
                        } else if (StringUtil.isInteger(modelId)) {
                            // DB template
                            ModelDetail model = kmelia.getModelDetail(modelId);
                            request.setAttribute("ModelDetail", model);
                            destination = getDestination("ToDBModel", kmelia, request);
                        } else {
                            // XML template
                            request.setAttribute("Name", modelId);
                            destination = getDestination("GoToXMLForm", kmelia, request);
                        }
                    } else {
                        destination = getDestination("ListModels", kmelia, request);
                    }
                } else {
                    destination = getDestination("GoToXMLForm", kmelia, request);
                }
            }
        } else if (function.equals("ListModels")) {
            setTemplatesUsedIntoRequest(kmelia, request);

            // put current publication
            request.setAttribute("CurrentPublicationDetail", kmelia.getSessionPublication().getDetail());

            // Paramtres du wizard
            setWizardParams(request, kmelia);
            destination = rootDestination + "modelsList.jsp";
        } else if (function.equals("ModelUsed")) {
            request.setAttribute("XMLForms", kmelia.getForms());
            // put dbForms
            Collection<ModelDetail> dbForms = kmelia.getAllModels();
            request.setAttribute("DBForms", dbForms);

            Collection<String> modelUsed = kmelia.getModelUsed();
            request.setAttribute("ModelUsed", modelUsed);

            destination = rootDestination + "modelUsedList.jsp";
        } else if (function.equals("SelectModel")) {
            Object o = request.getParameterValues("modelChoice");
            if (o != null) {
                kmelia.addModelUsed((String[]) o);
            }
            destination = getDestination("GoToCurrentTopic", kmelia, request);
        } else if ("ChangeTemplate".equals(function)) {
            kmelia.removePublicationContent();
            destination = getDestination("ToPubliContent", kmelia, request);
        } else if ("ToWysiwyg".equals(function)) {
            if (kmelia.isCloneNeeded()) {
                kmelia.clonePublication();
            }
            // put current publication
            PublicationDetail publication = kmelia.getSessionPubliOrClone().getDetail();

            // Parametres du Wizard
            setWizardParams(request, kmelia);
            request.setAttribute("SpaceId", kmelia.getSpaceId());
            request.setAttribute("SpaceName", URLEncoder.encode(kmelia.getSpaceLabel(), CharEncoding.UTF_8));
            request.setAttribute("ComponentId", kmelia.getComponentId());
            request.setAttribute("ComponentName",
                    URLEncoder.encode(kmelia.getComponentLabel(), CharEncoding.UTF_8));
            if (kmaxMode) {
                request.setAttribute("BrowseInfo", publication.getName());
            } else {
                request.setAttribute("BrowseInfo",
                        kmelia.getSessionPathString() + " > " + publication.getName());
            }
            request.setAttribute("ObjectId", publication.getId());
            request.setAttribute("Language", kmelia.getLanguage());
            request.setAttribute("ContentLanguage", checkLanguage(kmelia, publication));
            request.setAttribute("ReturnUrl", URLManager.getApplicationURL() + kmelia.getComponentUrl()
                    + "FromWysiwyg?PubId=" + publication.getId());
            request.setAttribute("UserId", kmelia.getUserId());
            request.setAttribute("IndexIt", "false");

            destination = "/wysiwyg/jsp/htmlEditor.jsp";
        } else if ("FromWysiwyg".equals(function)) {
            String id = request.getParameter("PubId");

            // Parametres du Wizard
            String wizard = kmelia.getWizard();
            setWizardParams(request, kmelia);
            if (wizard.equals("progress")) {
                request.setAttribute("Position", "Content");
                destination = getDestination("WizardNext", kmelia, request);
            } else {
                if (kmelia.getSessionClone() != null
                        && id.equals(kmelia.getSessionClone().getDetail().getPK().getId())) {
                    destination = getDestination("ViewClone", kmelia, request);
                } else {
                    destination = getDestination("ViewPublication", kmelia, request);
                }
            }
        } else if (function.equals("ToDBModel")) {
            String modelId = request.getParameter("ModelId");
            if (StringUtil.isDefined(modelId)) {
                ModelDetail model = kmelia.getModelDetail(modelId);
                request.setAttribute("ModelDetail", model);
            }

            // put current publication
            request.setAttribute("CompletePublication", kmelia.getSessionPubliOrClone().getCompleteDetail());
            request.setAttribute("NotificationAllowed", kmelia.isNotificationAllowed());

            // Paramtres du wizard
            setWizardParams(request, kmelia);

            destination = rootDestination + "modelManager.jsp";
        } else if (function.equals("UpdateDBModelContent")) {
            ResourceLocator publicationSettings = kmelia.getPublicationSettings();

            List<InfoTextDetail> textDetails = new ArrayList<InfoTextDetail>();
            List<InfoImageDetail> imageDetails = new ArrayList<InfoImageDetail>();
            int imageOrder = 0;
            boolean imageTrouble = false;
            List<FileItem> parameters = request.getFileItems();
            String modelId = FileUploadUtil.getParameter(parameters, "ModelId");
            // Parametres du Wizard
            setWizardParams(request, kmelia);

            for (FileItem item : parameters) {
                if (item.isFormField() && item.getFieldName().startsWith("WATXTVAR")) {
                    String theText = item.getString();
                    int textOrder = Integer
                            .parseInt(item.getFieldName().substring(8, item.getFieldName().length()));
                    textDetails.add(new InfoTextDetail(null, Integer.toString(textOrder), null, theText));
                } else if (!item.isFormField()) {
                    String logicalName = item.getName();
                    if (logicalName != null && logicalName.length() > 0) {
                        if (!FileUtil.isWindows()) {
                            logicalName = logicalName.replace('\\', File.separatorChar);
                            SilverTrace.info("kmelia", "KmeliaRequestRouter.UpdateDBModelContent",
                                    "root.MSG_GEN_PARAM_VALUE", "fileName on Unix = " + logicalName);
                        }
                        logicalName = FilenameUtils.getName(logicalName);
                        String physicalName = Long.toString(System.currentTimeMillis()) + "."
                                + FilenameUtils.getExtension(logicalName);
                        String mimeType = item.getContentType();
                        long size = item.getSize();

                        File dir = new File(FileRepositoryManager.getAbsolutePath(kmelia.getComponentId())
                                + publicationSettings.getString("imagesSubDirectory") + File.separatorChar
                                + physicalName);
                        if (FileUtil.isImage(logicalName)) {
                            item.write(dir);
                            imageOrder++;
                            if (size > 0L) {
                                imageDetails.add(new InfoImageDetail(null, Integer.toString(imageOrder), null,
                                        physicalName, logicalName, "", mimeType, size));
                                imageTrouble = false;
                            } else {
                                imageTrouble = true;
                            }
                        } else {
                            imageTrouble = true;
                        }
                    } else {
                        // the field did not contain a file
                    }
                }
            }

            InfoDetail infos = new InfoDetail(null, textDetails, imageDetails, null, "");
            CompletePublication completePub = kmelia.getSessionPubliOrClone().getCompleteDetail();
            if (completePub.getModelDetail() == null) {
                kmelia.createInfoModelDetail("useless", modelId, infos);
            } else {
                kmelia.updateInfoDetail("useless", infos);
            }
            if (imageTrouble) {
                request.setAttribute("ImageTrouble", Boolean.TRUE);
            }

            String wizard = kmelia.getWizard();
            if (wizard.equals("progress")) {
                request.setAttribute("Position", "Content");
                destination = getDestination("WizardNext", kmelia, request);
            } else {
                destination = getDestination("ToDBModel", kmelia, request);
            }
        } else if (function.equals("GoToXMLForm")) {
            String xmlFormName = request.getParameter("Name");
            if (!StringUtil.isDefined(xmlFormName)) {
                xmlFormName = (String) request.getAttribute("Name");
            }
            setXMLForm(request, kmelia, xmlFormName);
            // put current publication
            request.setAttribute("CurrentPublicationDetail", kmelia.getSessionPubliOrClone().getDetail());
            // Parametres du Wizard
            setWizardParams(request, kmelia);
            // template can be changed only if current topic is using at least two templates
            setTemplatesUsedIntoRequest(kmelia, request);
            @SuppressWarnings("unchecked")
            Collection<PublicationTemplate> templates = (Collection<PublicationTemplate>) request
                    .getAttribute("XMLForms");
            boolean wysiwygUsable = (Boolean) request.getAttribute("WysiwygValid");
            request.setAttribute("IsChangingTemplateAllowed",
                    templates.size() >= 2 || (!templates.isEmpty() && wysiwygUsable));

            destination = rootDestination + "xmlForm.jsp";
        } else if (function.equals("UpdateXMLForm")) {
            if (kmelia.isCloneNeeded()) {
                kmelia.clonePublication();
            }

            if (!StringUtil.isDefined(request.getCharacterEncoding())) {
                request.setCharacterEncoding("UTF-8");
            }
            String encoding = request.getCharacterEncoding();
            List<FileItem> items = request.getFileItems();

            PublicationDetail pubDetail = kmelia.getSessionPubliOrClone().getDetail();

            String xmlFormShortName;

            // Is it the creation of the content or an update ?
            String infoId = pubDetail.getInfoId();
            if (infoId == null || "0".equals(infoId)) {
                String xmlFormName = FileUploadUtil.getParameter(items, "Name", null, encoding);

                // The publication have no content
                // We have to register xmlForm to publication
                xmlFormShortName = xmlFormName.substring(xmlFormName.indexOf('/') + 1,
                        xmlFormName.indexOf('.'));
                pubDetail.setInfoId(xmlFormShortName);
                kmelia.updatePublication(pubDetail);
            } else {
                xmlFormShortName = pubDetail.getInfoId();
            }
            String pubId = pubDetail.getPK().getId();
            PublicationTemplate pub = getPublicationTemplateManager()
                    .getPublicationTemplate(kmelia.getComponentId() + ":" + xmlFormShortName);
            RecordSet set = pub.getRecordSet();
            Form form = pub.getUpdateForm();
            String language = checkLanguage(kmelia, pubDetail);
            DataRecord data = set.getRecord(pubId, language);
            if (data == null) {
                data = set.getEmptyRecord();
                data.setId(pubId);
                data.setLanguage(language);
            }
            PagesContext context = new PagesContext("myForm", "3", kmelia.getLanguage(), false,
                    kmelia.getComponentId(), kmelia.getUserId());
            context.setEncoding(CharEncoding.UTF_8);
            if (!kmaxMode) {
                context.setNodeId(kmelia.getCurrentFolderId());
            }
            context.setObjectId(pubId);
            context.setContentLanguage(kmelia.getCurrentLanguage());

            form.update(items, data, context);
            set.save(data);

            // update publication to change updateDate and updaterId
            kmelia.updatePublication(pubDetail);

            // Parametres du Wizard
            setWizardParams(request, kmelia);

            if (kmelia.getWizard().equals("progress")) {
                // on est en mode Wizard
                request.setAttribute("Position", "Content");
                destination = getDestination("WizardNext", kmelia, request);
            } else {
                if (kmelia.getSessionClone() != null) {
                    destination = getDestination("ViewClone", kmelia, request);
                } else if (kmaxMode) {
                    destination = getDestination("ViewAttachments", kmelia, request);
                } else {
                    destination = getDestination("ViewPublication", kmelia, request);
                }
            }
        } else if (function.startsWith("ToOrderPublications")) {
            List<KmeliaPublication> publications = kmelia.getSessionPublicationsList();

            request.setAttribute("Publications", publications);
            request.setAttribute("Path", kmelia.getSessionPath());

            destination = rootDestination + "orderPublications.jsp";
        } else if (function.startsWith("OrderPublications")) {
            String sortedIds = request.getParameter("sortedIds");

            StringTokenizer tokenizer = new StringTokenizer(sortedIds, ",");
            List<String> ids = new ArrayList<String>();
            while (tokenizer.hasMoreTokens()) {
                ids.add(tokenizer.nextToken());
            }
            kmelia.orderPublications(ids);

            destination = getDestination("GoToCurrentTopic", kmelia, request);
        } else if (function.equals("ToOrderTopics")) {
            String id = request.getParameter("Id");
            if (!SilverpeasRole.admin.isInRole(kmelia.getUserTopicProfile(id))) {
                destination = "/admin/jsp/accessForbidden.jsp";
            } else {
                TopicDetail topic = kmelia.getTopic(id);
                request.setAttribute("Nodes", topic.getNodeDetail().getChildrenDetails());
                destination = rootDestination + "orderTopics.jsp";
            }
        } else if (function.startsWith("Wizard")) {
            destination = processWizard(function, kmelia, request, rootDestination);
        } else if ("ViewTopicProfiles".equals(function)) {
            String role = request.getParameter("Role");
            if (!StringUtil.isDefined(role)) {
                role = SilverpeasRole.admin.toString();
            }

            String id = request.getParameter("NodeId");
            if (!StringUtil.isDefined(id)) {
                id = (String) request.getAttribute("NodeId");
            }
            request.setAttribute("Profiles", kmelia.getTopicProfiles(id));
            NodeDetail topic = kmelia.getNodeHeader(id);
            ProfileInst profile;
            if (topic.haveInheritedRights()) {
                profile = kmelia.getTopicProfile(role, Integer.toString(topic.getRightsDependsOn()));

                request.setAttribute("RightsDependsOn", "AnotherTopic");
            } else if (topic.haveLocalRights()) {
                profile = kmelia.getTopicProfile(role, Integer.toString(topic.getRightsDependsOn()));

                request.setAttribute("RightsDependsOn", "ThisTopic");
            } else {
                profile = kmelia.getProfile(role);
                // Rights of the component
                request.setAttribute("RightsDependsOn", "ThisComponent");
            }

            request.setAttribute("CurrentProfile", profile);
            request.setAttribute("Groups", kmelia.groupIds2Groups(profile.getAllGroups()));
            request.setAttribute("Users", kmelia.userIds2Users(profile.getAllUsers()));
            List<NodeDetail> path = kmelia.getTopicPath(id);
            request.setAttribute("Path", kmelia.displayPath(path, true, 3));
            request.setAttribute("NodeDetail", topic);

            destination = rootDestination + "topicProfiles.jsp";
        } else if (function.equals("TopicProfileSelection")) {
            String role = request.getParameter("Role");
            String nodeId = request.getParameter("NodeId");
            try {
                kmelia.initUserPanelForTopicProfile(role, nodeId);
            } catch (Exception e) {
                SilverTrace.warn("jobStartPagePeas", "JobStartPagePeasRequestRouter.getDestination()",
                        "root.EX_USERPANEL_FAILED", "function = " + function, e);
            }
            destination = Selection.getSelectionURL(Selection.TYPE_USERS_GROUPS);
        } else if (function.equals("TopicProfileSetUsersAndGroups")) {
            String role = request.getParameter("Role");
            String nodeId = request.getParameter("NodeId");

            kmelia.updateTopicRole(role, nodeId);

            request.setAttribute("urlToReload", "ViewTopicProfiles?Role=" + role + "&NodeId=" + nodeId);
            destination = rootDestination + "closeWindow.jsp";
        } else if (function.equals("TopicProfileRemove")) {
            String profileId = request.getParameter("Id");

            kmelia.deleteTopicRole(profileId);

            destination = getDestination("ViewTopicProfiles", kmelia, request);
        } else if (function.equals("CloseWindow")) {
            destination = rootDestination + "closeWindow.jsp";
        } else if (function.startsWith("UpdateChain")) {
            destination = processUpdateChainOperation(rootDestination, function, kmelia, request);
        } else if (function.equals("SuggestDelegatedNews")) {

            String pubId = kmelia.addDelegatedNews();

            request.setAttribute("PubId", pubId);
            destination = getDestination("ViewPublication", kmelia, request);
        } /**
          * *************************
          * Kmax mode ***********************
          */
        else if (function.equals("KmaxMain")) {
            destination = rootDestination + "kmax.jsp?Action=KmaxView&Profile=" + kmelia.getProfile();
        } else if (function.equals("KmaxAxisManager")) {
            destination = rootDestination + "kmax_axisManager.jsp?Action=KmaxViewAxis&Profile="
                    + kmelia.getProfile();
        } else if (function.equals("KmaxAddAxis")) {
            String newAxisName = request.getParameter("Name");
            String newAxisDescription = request.getParameter("Description");
            NodeDetail axis = new NodeDetail("-1", newAxisName, newAxisDescription, DateUtil.today2SQLDate(),
                    kmelia.getUserId(), null, "0", "X");
            // I18N
            I18NHelper.setI18NInfo(axis, request);
            kmelia.addAxis(axis);

            request.setAttribute("urlToReload", "KmaxAxisManager");
            destination = rootDestination + "closeWindow.jsp";
        } else if (function.equals("KmaxUpdateAxis")) {
            String axisId = request.getParameter("AxisId");
            String newAxisName = request.getParameter("AxisName");
            String newAxisDescription = request.getParameter("AxisDescription");
            NodeDetail axis = new NodeDetail(axisId, newAxisName, newAxisDescription, null, null, null, "0",
                    "X");
            // I18N
            I18NHelper.setI18NInfo(axis, request);
            kmelia.updateAxis(axis);
            destination = getDestination("KmaxAxisManager", kmelia, request);
        } else if (function.equals("KmaxDeleteAxis")) {
            String axisId = request.getParameter("AxisId");
            kmelia.deleteAxis(axisId);
            destination = getDestination("KmaxAxisManager", kmelia, request);
        } else if (function.equals("KmaxManageAxis")) {
            String axisId = request.getParameter("AxisId");
            String translation = request.getParameter("Translation");
            request.setAttribute("Translation", translation);
            destination = rootDestination + "kmax_axisManager.jsp?Action=KmaxManageAxis&Profile="
                    + kmelia.getProfile() + "&AxisId=" + axisId;
        } else if (function.equals("KmaxManagePosition")) {
            String positionId = request.getParameter("PositionId");
            String translation = request.getParameter("Translation");
            request.setAttribute("Translation", translation);
            destination = rootDestination + "kmax_axisManager.jsp?Action=KmaxManagePosition&Profile="
                    + kmelia.getProfile() + "&PositionId=" + positionId;
        } else if (function.equals("KmaxAddPosition")) {
            String axisId = request.getParameter("AxisId");
            String newPositionName = request.getParameter("Name");
            String newPositionDescription = request.getParameter("Description");
            String translation = request.getParameter("Translation");
            NodeDetail position = new NodeDetail("toDefine", newPositionName, newPositionDescription, null,
                    null, null, "0", "X");
            // I18N
            I18NHelper.setI18NInfo(position, request);
            kmelia.addPosition(axisId, position);
            request.setAttribute("AxisId", axisId);
            request.setAttribute("Translation", translation);
            destination = getDestination("KmaxManageAxis", kmelia, request);
        } else if (function.equals("KmaxUpdatePosition")) {
            String positionId = request.getParameter("PositionId");
            String positionName = request.getParameter("PositionName");
            String positionDescription = request.getParameter("PositionDescription");
            NodeDetail position = new NodeDetail(positionId, positionName, positionDescription, null, null,
                    null, "0", "X");
            // I18N
            I18NHelper.setI18NInfo(position, request);
            kmelia.updatePosition(position);
            destination = getDestination("KmaxAxisManager", kmelia, request);
        } else if (function.equals("KmaxDeletePosition")) {
            String positionId = request.getParameter("PositionId");
            kmelia.deletePosition(positionId);
            destination = getDestination("KmaxAxisManager", kmelia, request);
        } else if (function.equals("KmaxViewUnbalanced")) {
            List<KmeliaPublication> publications = kmelia.getUnbalancedPublications();
            kmelia.setSessionPublicationsList(publications);
            kmelia.orderPubs();

            destination = rootDestination + "kmax.jsp?Action=KmaxViewUnbalanced&Profile=" + kmelia.getProfile();
        } else if (function.equals("KmaxViewBasket")) {
            TopicDetail basket = kmelia.getTopic("1");
            List<KmeliaPublication> publications = (List<KmeliaPublication>) basket.getKmeliaPublications();
            kmelia.setSessionPublicationsList(publications);
            kmelia.orderPubs();

            destination = rootDestination + "kmax.jsp?Action=KmaxViewBasket&Profile=" + kmelia.getProfile();

        } else if (function.equals("KmaxViewToValidate")) {
            destination = rootDestination + "kmax.jsp?Action=KmaxViewToValidate&Profile=" + kmelia.getProfile();
        } else if (function.equals("KmaxSearch")) {
            String axisValuesStr = request.getParameter("SearchCombination");
            if (!StringUtil.isDefined(axisValuesStr)) {
                axisValuesStr = (String) request.getAttribute("SearchCombination");
            }
            String timeCriteria = request.getParameter("TimeCriteria");

            SilverTrace.info("kmelia", "KmeliaRequestRouter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                    "axisValuesStr = " + axisValuesStr + " timeCriteria=" + timeCriteria);
            List<String> combination = kmelia.getCombination(axisValuesStr);
            List<KmeliaPublication> publications;
            if (StringUtil.isDefined(timeCriteria) && !"X".equals(timeCriteria)) {
                publications = kmelia.search(combination, Integer.parseInt(timeCriteria));
            } else {
                publications = kmelia.search(combination);
            }
            SilverTrace.info("kmelia", "KmeliaRequestRouter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                    "publications = " + publications + " Combination=" + combination + " timeCriteria="
                            + timeCriteria);

            kmelia.setIndexOfFirstPubToDisplay("0");
            kmelia.orderPubs();
            kmelia.setSessionCombination(combination);
            kmelia.setSessionTimeCriteria(timeCriteria);

            destination = rootDestination + "kmax.jsp?Action=KmaxSearchResult&Profile=" + kmelia.getProfile();
        } else if (function.equals("KmaxSearchResult")) {
            if (kmelia.getSessionCombination() == null) {
                destination = getDestination("KmaxMain", kmelia, request);
            } else {
                destination = rootDestination + "kmax.jsp?Action=KmaxSearchResult&Profile="
                        + kmelia.getProfile();
            }
        } else if (function.equals("KmaxViewCombination")) {
            setWizardParams(request, kmelia);

            request.setAttribute("CurrentCombination", kmelia.getCurrentCombination());
            destination = rootDestination + "kmax_viewCombination.jsp?Profile=" + kmelia.getProfile();
        } else if (function.equals("KmaxAddCoordinate")) {
            String pubId = request.getParameter("PubId");
            String axisValuesStr = request.getParameter("SearchCombination");
            StringTokenizer st = new StringTokenizer(axisValuesStr, ",");
            List<String> combination = new ArrayList<String>();
            String axisValue;
            while (st.hasMoreTokens()) {
                axisValue = st.nextToken();
                // axisValue is xx/xx/xx where xx are nodeId
                axisValue = axisValue.substring(axisValue.lastIndexOf('/') + 1, axisValue.length());
                combination.add(axisValue);
            }
            kmelia.addPublicationToCombination(pubId, combination);
            // Store current combination
            kmelia.setCurrentCombination(kmelia.getCombination(axisValuesStr));
            destination = getDestination("KmaxViewCombination", kmelia, request);
        } else if (function.equals("KmaxDeleteCoordinate")) {
            String coordinateId = request.getParameter("CoordinateId");
            String pubId = request.getParameter("PubId");
            SilverTrace.info("kmelia", "KmeliaRequestRouter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                    "coordinateId = " + coordinateId + " PubId=" + pubId);
            kmelia.deletePublicationFromCombination(pubId, coordinateId);
            destination = getDestination("KmaxViewCombination", kmelia, request);
        } else if (function.equals("KmaxExportComponent")) {
            // build an exploitable list by importExportPeas
            List<WAAttributeValuePair> publicationsIds = kmelia.getAllVisiblePublications();
            request.setAttribute("selectedResultsWa", publicationsIds);

            // Go to importExportPeas
            destination = "/RimportExportPeas/jsp/KmaxExportComponent";
        } else if (function.equals("KmaxExportPublications")) {
            // build an exploitable list by importExportPeas
            List<WAAttributeValuePair> publicationsIds = kmelia.getCurrentPublicationsList();
            List<String> combination = kmelia.getSessionCombination();
            // get the time axis
            String timeCriteria = null;
            if (kmelia.isTimeAxisUsed() && StringUtil.isDefined(kmelia.getSessionTimeCriteria())) {
                ResourceLocator timeSettings = new ResourceLocator(
                        "org.silverpeas.kmelia.multilang.timeAxisBundle", kmelia.getLanguage());
                if (kmelia.getSessionTimeCriteria().equals("X")) {
                    timeCriteria = null;
                } else {
                    timeCriteria = "<b>" + kmelia.getString("TimeAxis") + "</b> > "
                            + timeSettings.getString(kmelia.getSessionTimeCriteria(), "");
                }
            }
            request.setAttribute("selectedResultsWa", publicationsIds);
            request.setAttribute("Combination", combination);
            request.setAttribute("TimeCriteria", timeCriteria);
            // Go to importExportPeas
            destination = "/RimportExportPeas/jsp/KmaxExportPublications";
        } else if ("statistics".equals(function)) {
            destination = rootDestination + statisticRequestHandler.handleRequest(request, function, kmelia);
        } else if ("statSelectionGroup".equals(function)) {
            destination = statisticRequestHandler.handleRequest(request, function, kmelia);
        } else if ("SetPublicationValidator".equals(function)) {
            String userIds = request.getParameter("ValideurId");
            kmelia.setPublicationValidator(userIds);
            destination = getDestination("ViewPublication", kmelia, request);
        } else {
            destination = rootDestination + function;
        }

        if (profileError) {
            destination = GeneralPropertiesManager.getString("sessionTimeout");
        }
        SilverTrace.info("kmelia", "KmeliaRequestRouter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
                "destination = " + destination);
    } catch (Exception exce_all) {
        request.setAttribute("javax.servlet.jsp.jspException", exce_all);
        return "/admin/jsp/errorpageMain.jsp";
    }
    return destination;
}

From source file:com.slamd.admin.AdminServlet.java

/**
 * Handles the work of actually accepting an uploaded file and storing it in
 * the configuration directory.//  www  .  jav a2 s.  c  o  m
 *
 * @param  requestInfo  The state information for this request.
 */
static void handleFileUpload(RequestInfo requestInfo) {
    logMessage(requestInfo, "In handleFileUpload()");

    if (!requestInfo.mayManageFolders) {
        logMessage(requestInfo, "No mayManageFolders permission granted");
        generateAccessDeniedBody(requestInfo,
                "You do not have permission to " + "upload files into job folders.");
        return;
    }

    StringBuilder infoMessage = requestInfo.infoMessage;

    FileUpload fileUpload = new FileUpload(new DefaultFileItemFactory());
    fileUpload.setSizeMax(maxUploadSize);

    boolean inOptimizing = false;
    String folderName = null;

    try {
        String fileName = null;
        String fileType = null;
        String fileDesc = null;
        int fileSize = -1;
        byte[] fileData = null;

        Iterator iterator = requestInfo.multipartFieldList.iterator();
        while (iterator.hasNext()) {
            FileItem fileItem = (FileItem) iterator.next();
            String fieldName = fileItem.getFieldName();

            if (fieldName.equals(Constants.SERVLET_PARAM_FILE_DESCRIPTION)) {
                fileDesc = new String(fileItem.get());
            } else if (fieldName.equals(Constants.SERVLET_PARAM_JOB_FOLDER)) {
                folderName = new String(fileItem.get());
            } else if (fieldName.equals(Constants.SERVLET_PARAM_UPLOAD_FILE)) {
                fileData = fileItem.get();
                fileSize = fileData.length;
                fileType = fileItem.getContentType();
                fileName = fileItem.getName();
            } else if (fieldName.equals(Constants.SERVLET_PARAM_IN_OPTIMIZING)) {
                String optStr = new String(fileItem.get());
                inOptimizing = optStr.equalsIgnoreCase("true");
            }
        }

        if (fileName == null) {
            infoMessage.append(
                    "Unable to process file upload:  did not receive " + "any actual file data.<BR>" + EOL);
            if (inOptimizing) {
                handleViewOptimizing(requestInfo, true, folderName);
            } else {
                handleViewJob(requestInfo, Constants.SERVLET_SECTION_JOB_VIEW_COMPLETED, folderName, null);
            }
            return;
        }

        UploadedFile file = new UploadedFile(fileName, fileType, fileSize, fileDesc, fileData);
        configDB.writeUploadedFile(file, folderName);
        infoMessage.append("Successfully uploaded file \"" + fileName + "\"<BR>" + EOL);
    } catch (Exception e) {
        infoMessage.append("Unable to process file upload:  " + e + "<BR>" + EOL);
    }

    if (inOptimizing) {
        handleViewOptimizing(requestInfo, true, folderName);
    } else {
        handleViewJob(requestInfo, Constants.SERVLET_SECTION_JOB_VIEW_COMPLETED, folderName, null);
    }
}

From source file:Controlador.Contr_Seleccion.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.//from w w w  .j a v a  2 s. com
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    /*Se detalla el contenido que tendra el servlet*/
    response.setContentType("text/html;charset=UTF-8");
    request.setCharacterEncoding("UTF-8");
    /*Se crea una variable para la sesion*/
    HttpSession session = request.getSession(true);

    boolean b;
    try {
        /*Se declaran las variables necesarias*/
        Cls_Seleccion sel = new Cls_Seleccion();
        String Codigo = "", Mensaje = "", Nombre = "", Tipo = "", Imagen = "", url, Peti;
        String urlsalidaimg;
        urlsalidaimg = "/media/santiago/Santiago/IMGTE/";
        //urlsalidaimg = "D:\\IMGTE\\";
        String urlimgservidor = this.getServletContext().getRealPath("/Libs/Customs/images/Seleccion");
        /*FileItemFactory es una interfaz para crear FileItem*/
        FileItemFactory file_factory = new DiskFileItemFactory();

        /*ServletFileUpload esta clase convierte los input file a FileItem*/
        ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
        /*sacando los FileItem del ServletFileUpload en una lista */
        servlet_up.setHeaderEncoding("UTF-8");
        List items = servlet_up.parseRequest(request);
        Iterator it = items.iterator();

        /*Se evalua cada una de las posibles peticiones y los posibles campos que envien*/
        while (it.hasNext()) {
            FileItem item = (FileItem) it.next();
            if (item.isFormField()) {
                //Plain request parameters will come here. 

                String name = item.getFieldName();
                if (name.equals("Codigo")) {
                    /*Se guarda el campo en la clase*/
                    sel.setCodigo(item.getString());
                } else if (name.equals("Nombre")) {
                    /**
                     * Se guarda el campo en la clase
                     */
                    sel.setNombre(item.getString());
                } else if (name.equals("Tipo")) {
                    /**
                     * Se guarda el campo en la clase
                     */
                    sel.setTipo(item.getString());
                } else if (name.equals("Estado")) {
                    /**
                     * Se guarda el campo en la clase
                     */
                    sel.setEstado(item.getString());
                } else if (name.equals("RegistrarSeleccion")) {
                    /*Se evalua si se mando una iamgen, cuando se va a registrar un evento*/
                    if (!sel.getImagen().equals("")) {
                        /*Si se envia una imagen obtiene la imagen para guardarla en el server luego*/
                        File img = new File(sel.getImagen());
                        /*Se ejecuta el metodo de registrar usuario que se encuentra, en la clase modelo
                         con los datos que se encuentran en la clase*/

                        b = sel.setRegistrarSeleccion(sel.getNombre(), sel.getTipo(), sel.getTypeImg());
                        if (b) {
                            /*Se guarda un mensaje mediante las sesiones
                             y se redirecciona*/
                            File imagedb = new File(urlimgservidor + "/" + sel.getCodigo() + sel.getTypeImg());
                            img.renameTo(imagedb);
                            session.setAttribute("Mensaje",
                                    "El gusto o ambiente ha sido registrado correctamente.");
                            session.setAttribute("TipoMensaje", "Dio");
                            url = "View/ConsultaSeleccion.jsp";
                            response.sendRedirect(url);
                        } else {
                            img.delete();
                            /*Se guarda un mensaje de error mediante las sesiones
                             y se redirecciona*/
                            session.setAttribute("Mensaje", sel.getMensaje());
                            session.setAttribute("TipoMensaje", "NODio");
                            url = "View/ConsultaSeleccion.jsp";
                            response.sendRedirect(url);
                        }
                    } else {
                        /*Se guarda un mensaje de error mediante las sesiones
                         y se redirecciona*/
                        session.setAttribute("Mensaje",
                                "Seleccione una imagen, para registrar el ambiente o gusto.");
                        session.setAttribute("TipoMensaje", "NODio");
                    }
                } else if (name.equals("ModificarSeleccion")) {
                    if (sel.getImagen().equals("")) {
                        /*Se ejecuta el metodo de actualizar los datos de la seleccion usuario que se encuentra, en la clase modelo
                         con los datos que se encuentran en la clase*/
                        b = sel.actualizardatosSeleccion(sel.getCodigo(), sel.getNombre(), sel.getTipo(),
                                sel.getEstado());
                        if (b) {
                            /*Se guarda un mensaje mediante las sesiones
                             y se redirecciona*/
                            session.setAttribute("Mensaje",
                                    "El gusto o ambiente ha sido registrada correctamente.");
                            session.setAttribute("TipoMensaje", "Dio");
                            url = "View/ConsultaSeleccion.jsp";
                            response.sendRedirect(url);
                        } else {
                            /*Se guarda un mensaje mediante las sesiones
                             y se redirecciona*/
                            session.setAttribute("Mensaje", sel.getMensaje());
                            session.setAttribute("TipoMensaje", "NODio");
                            url = "View/ConsultaSeleccion.jsp";
                            response.sendRedirect(url);
                        }
                    } else {
                        /*Se ejecuta el metodo de actualizar los datos de la seleccion usuario que se encuentra, en la clase modelo
                         con los datos que se encuentran en la clase*/
                        File img = new File(sel.getImagen());
                        b = sel.actualizardatosSeleccion(sel.getCodigo(), sel.getNombre(), sel.getTipo(),
                                sel.getTypeImg(), sel.getEstado());
                        if (b) {
                            File imagedb = new File(urlimgservidor + "/" + sel.getCodigo() + sel.getTypeImg());
                            img.renameTo(imagedb);
                            /*Se guarda un mensaje mediante las sesiones
                             y se redirecciona*/
                            session.setAttribute("Mensaje",
                                    "El gusto o ambiente ha sido modificado correctamente.");
                            session.setAttribute("TipoMensaje", "Dio");
                            url = "View/ConsultaSeleccion.jsp";
                            response.sendRedirect(url);
                        } else {
                            img.delete();
                            /*Se guarda un mensaje mediante las sesiones
                             y se redirecciona*/
                            session.setAttribute("Mensaje", sel.getMensaje());
                            session.setAttribute("TipoMensaje", "NODio");
                            url = "View/ConsultaSeleccion.jsp";
                            response.sendRedirect(url);
                        }
                    }
                }

            } else {
                if (!item.getName().equals("")) {
                    //uploaded files will come here.
                    FileItem file = item;
                    String fieldName = item.getFieldName();
                    String fileName = item.getName();
                    String contentType = item.getContentType();
                    boolean isInMemory = item.isInMemory();
                    long sizeInBytes = item.getSize();

                    if (sizeInBytes > 1000000) {
                        /*Se muestra un mensaje en caso de pesar mas de 3 MB*/
                        session.setAttribute("Mensaje", "El tamao lmite de la imagen es: 1 MB");
                        session.setAttribute("TipoMensaje", "NODio");
                        /*Se redirecciona*/
                        response.sendRedirect("View/ConsultaSeleccion.jsp");
                    } else {
                        if (contentType.indexOf("jpeg") > 0 || contentType.indexOf("png") > 0) {
                            if (contentType.indexOf("jpeg") > 0) {
                                contentType = ".jpg";
                            } else {
                                contentType = ".png";
                            }
                            /*Se crea la imagne*/
                            File archivo_server = new File(urlimgservidor + "/" + item.getName());
                            /*Se guardael nombre y tipo de imagen en la clase*/
                            sel.setImagen(urlimgservidor + "/" + item.getName());
                            sel.setTypeImg(contentType);
                            /*Se guarda la imagen*/
                            item.write(archivo_server);
                        } else {
                            session.setAttribute("Mensaje", "Solo se pueden registrar imagenes JPG o PNG");
                            session.setAttribute("TipoMensaje", "NODio");
                        }
                    }
                } else {
                    /*Se guarda el url de la imagen en la clase*/
                    sel.setImagen("");
                }
            }
        }

        /*Se redirecciona sino se recive ninguna peticion*/
        response.sendRedirect("View/index.jsp");
    } catch (FileUploadException ex) {
        /*Se muestra un mensaje en caso de error*/
        System.out.print(ex.getMessage().toString());
    } catch (Exception ex) {
        /*Se muestra un mensaje en caso de error*/
        Logger.getLogger(Contr_Seleccion.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:fr.paris.lutece.plugins.calendar.web.CalendarJspBean.java

/**
 * Process Event creation/* w  w  w . ja  v a  2s . c  o m*/
 * 
 * @param request The Http request
 * @return URL
 */
public String doCreateEvent(HttpServletRequest request) {
    String strJspReturn = StringUtils.EMPTY;
    String strCalendarId = request.getParameter(Constants.PARAMETER_CALENDAR_ID);
    String strPeriodicity = request.getParameter(Constants.PARAMETER_PERIODICITY);
    if (StringUtils.isNotBlank(strCalendarId) && StringUtils.isNumeric(strCalendarId)
            && StringUtils.isNotBlank(strPeriodicity) && StringUtils.isNumeric(strPeriodicity)) {
        //Retrieving parameters from form
        int nCalendarId = Integer.parseInt(strCalendarId);
        int nPeriodicity = Integer.parseInt(strPeriodicity);
        String strEventDateEnd = request.getParameter(Constants.PARAMETER_EVENT_DATE_END);
        String strTimeStart = request.getParameter(Constants.PARAMETER_EVENT_TIME_START);
        String strTimeEnd = request.getParameter(Constants.PARAMETER_EVENT_TIME_END);
        String strOccurrence = request.getParameter(Constants.PARAMETER_OCCURRENCE);
        String strEventTitle = request.getParameter(Constants.PARAMETER_EVENT_TITLE);
        String strDate = request.getParameter(Constants.PARAMETER_EVENT_DATE);
        String strNotify = request.getParameter(Constants.PARAMETER_NOTIFY);

        //Retrieve the features of an event from form
        String strDescription = request.getParameter(Constants.PARAMETER_DESCRIPTION);
        String strEventTags = request.getParameter(Constants.PARAMETER_EVENT_TAGS).trim();
        String strLocationAddress = request.getParameter(Constants.PARAMETER_EVENT_LOCATION_ADDRESS).trim();
        String strLocationTown = request.getParameter(Constants.PARAMETER_LOCATION_TOWN).trim();
        String strLocation = request.getParameter(Constants.PARAMETER_LOCATION).trim();
        String strLocationZip = request.getParameter(Constants.PARAMETER_LOCATION_ZIP).trim();
        String strLinkUrl = request.getParameter(Constants.PARAMETER_EVENT_LINK_URL).trim();
        String strDocumentId = request.getParameter(Constants.PARAMETER_EVENT_DOCUMENT_ID).trim();
        String strPageUrl = request.getParameter(Constants.PARAMETER_EVENT_PAGE_URL).trim();
        String strTopEvent = request.getParameter(Constants.PARAMETER_EVENT_TOP_EVENT).trim();
        String strMapUrl = request.getParameter(Constants.PARAMETER_EVENT_MAP_URL).trim();

        //Retrieving the excluded days
        String[] arrayExcludedDays = request.getParameterValues(Constants.PARAMETER_EXCLUDED_DAYS);

        MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
        FileItem item = mRequest.getFile(Constants.PARAMETER_EVENT_IMAGE);

        String[] arrayCategory = request.getParameterValues(Constants.PARAMETER_CATEGORY);

        //Categories
        List<Category> listCategories = new ArrayList<Category>();

        if (arrayCategory != null) {
            for (String strIdCategory : arrayCategory) {
                Category category = CategoryHome.find(Integer.parseInt(strIdCategory), getPlugin());

                if (category != null) {
                    listCategories.add(category);
                }
            }
        }

        String[] strTabEventTags = null;

        // Mandatory field
        if (StringUtils.isBlank(strDate) || StringUtils.isBlank(strEventTitle)
                || StringUtils.isBlank(strDescription)) {
            return AdminMessageService.getMessageUrl(request, Messages.MANDATORY_FIELDS,
                    AdminMessage.TYPE_STOP);
        }

        if (StringUtils.isNotBlank(strEventTags) && strEventTags.length() > 0) {
            //Test if there aren't special characters in tag list
            boolean isAllowedExp = Pattern.matches(PROPERTY_TAGS_REGEXP, strEventTags);

            if (!isAllowedExp) {
                return AdminMessageService.getMessageUrl(request, MESSAGE_INVALID_TAG, AdminMessage.TYPE_STOP);
            }

            strTabEventTags = strEventTags.split("\\s");
        }

        //Convert the date in form to a java.util.Date object
        Date dateEvent = DateUtil.formatDate(strDate, getLocale());

        if ((dateEvent == null) || !Utils.isValidDate(dateEvent)) {
            return AdminMessageService.getMessageUrl(request, Constants.PROPERTY_MESSAGE_DATEFORMAT,
                    AdminMessage.TYPE_STOP);
        }

        Date dateEndEvent = null;

        if (StringUtils.isNotBlank(strEventDateEnd)) {
            dateEndEvent = DateUtil.formatDate(strEventDateEnd, getLocale());

            if ((dateEndEvent == null) || !Utils.isValidDate(dateEndEvent)) {
                return AdminMessageService.getMessageUrl(request, Constants.PROPERTY_MESSAGE_DATEFORMAT,
                        AdminMessage.TYPE_STOP);
            }
        }

        //the number of occurrence is 1 by default
        int nOccurrence = 1;

        if ((strOccurrence.length() > 0) && !strOccurrence.equals("")) {
            try {
                nOccurrence = Integer.parseInt(strOccurrence);
            } catch (NumberFormatException e) {
                return AdminMessageService.getMessageUrl(request, MESSAGE_INVALID_OCCURRENCE_NUMBER,
                        AdminMessage.TYPE_STOP);
            }
        }

        int nDocumentId = -1;

        if ((strDocumentId.length() > 0) && !strDocumentId.equals("")) {
            try {
                nDocumentId = Integer.parseInt(strDocumentId);
            } catch (NumberFormatException e) {
                return AdminMessageService.getMessageUrl(request, MESSAGE_INVALID_OCCURRENCE_NUMBER,
                        AdminMessage.TYPE_STOP);
            }
        }

        if (!Utils.checkTime(strTimeStart) || !Utils.checkTime(strTimeEnd)) {
            return AdminMessageService.getMessageUrl(request, Constants.PROPERTY_MESSAGE_TIMEFORMAT,
                    AdminMessage.TYPE_STOP);
        }

        //If a date end is chosen
        if ((Integer.parseInt(request.getParameter(Constants.PARAMETER_RADIO_PERIODICITY)) == 1)
                && StringUtils.isNotBlank(strEventDateEnd)) {
            if (dateEndEvent.before(dateEvent)) {
                return AdminMessageService.getMessageUrl(request, Constants.PROPERTY_MESSAGE_DATE_END_BEFORE,
                        AdminMessage.TYPE_STOP);
            }
            nPeriodicity = 0;
            nOccurrence = Utils.getOccurrenceWithinTwoDates(dateEvent, dateEndEvent, arrayExcludedDays);
        } else if ((Integer.parseInt(request.getParameter(Constants.PARAMETER_RADIO_PERIODICITY)) == 1)
                && StringUtils.isBlank(strEventDateEnd)) {
            return AdminMessageService.getMessageUrl(request, Constants.PROPERTY_MESSAGE_DATEFORMAT,
                    AdminMessage.TYPE_STOP);
        }

        //If a date end is not chosen
        if ((Integer.parseInt(request.getParameter(Constants.PARAMETER_RADIO_PERIODICITY)) == 0)
                && StringUtils.isBlank(strEventDateEnd)) {
            dateEndEvent = Utils.getDateForward(dateEvent, nPeriodicity, nOccurrence, arrayExcludedDays);
            if (dateEndEvent.before(dateEvent)) {
                nOccurrence = 0;
                dateEndEvent = dateEvent;
            }
        }

        SimpleEvent event = new SimpleEvent();
        event.setDate(dateEvent);
        event.setDateEnd(dateEndEvent);
        event.setDateTimeStart(strTimeStart);
        event.setDateTimeEnd(strTimeEnd);
        event.setTitle(strEventTitle);
        event.setOccurrence(nOccurrence);
        event.setPeriodicity(nPeriodicity);
        event.setDescription(strDescription);

        if (item.getSize() == 0) {
            HttpSession session = request.getSession(true);
            if (session.getAttribute(ATTRIBUTE_MODULE_DOCUMENT_TO_CALENDAR_CONTENT_FILE) != null
                    && session.getAttribute(ATTRIBUTE_MODULE_DOCUMENT_TO_CALENDAR_MIME_TYPE_FILE) != null) {
                ImageResource imageResource = new ImageResource();
                imageResource.setImage(
                        (byte[]) session.getAttribute(ATTRIBUTE_MODULE_DOCUMENT_TO_CALENDAR_CONTENT_FILE));
                imageResource.setMimeType(
                        (String) session.getAttribute(ATTRIBUTE_MODULE_DOCUMENT_TO_CALENDAR_MIME_TYPE_FILE));
                event.setImageResource(imageResource);
                session.removeAttribute(ATTRIBUTE_MODULE_DOCUMENT_TO_CALENDAR_CONTENT_FILE);
                session.removeAttribute(ATTRIBUTE_MODULE_DOCUMENT_TO_CALENDAR_MIME_TYPE_FILE);
            }
        }

        if (item.getSize() >= 1) {
            ImageResource imageResource = new ImageResource();
            imageResource.setImage(item.get());
            imageResource.setMimeType(item.getContentType());
            event.setImageResource(imageResource);
        }

        event.setTags(strTabEventTags);
        event.setLocationAddress(strLocationAddress);
        event.setLocation(strLocation);
        event.setLocationTown(strLocationTown);
        event.setLocationZip(strLocationZip);
        event.setLinkUrl(strLinkUrl);
        event.setPageUrl(strPageUrl);
        event.setTopEvent(Integer.parseInt(strTopEvent));
        event.setMapUrl(strMapUrl);
        event.setDocumentId(nDocumentId);
        event.setListCategories(listCategories);
        event.setExcludedDays(arrayExcludedDays);
        event.setIdCalendar(nCalendarId);

        _eventListService.doAddEvent(event, null, getPlugin());

        List<OccurrenceEvent> listOccurencesEvent = _eventListService.getOccurrenceEvents(nCalendarId,
                event.getId(), Constants.SORT_ASC, getPlugin());

        for (OccurrenceEvent occ : listOccurencesEvent) {
            IndexationService.addIndexerAction(Integer.toString(occ.getId()),
                    AppPropertiesService.getProperty(CalendarIndexer.PROPERTY_INDEXER_NAME),
                    IndexerAction.TASK_CREATE);
            CalendarIndexerUtils.addIndexerAction(occ.getId(), IndexerAction.TASK_CREATE);
        }

        /*
         * IndexationService.addIndexerAction( Constants.EMPTY_STRING +
         * nCalendarId
         * ,AppPropertiesService.getProperty(
         * CalendarIndexer.PROPERTY_INDEXER_NAME ),
         * IndexerAction.TASK_CREATE );
         */
        boolean isNotify = Boolean.parseBoolean(strNotify);

        if (isNotify) {
            int nSubscriber = _agendaSubscriberService.getSubscriberNumber(nCalendarId, getPlugin());

            if (nSubscriber > 0) {
                Collection<CalendarSubscriber> calendarSubscribers = _agendaSubscriberService
                        .getSubscribers(nCalendarId, getPlugin());
                _agendaSubscriberService.sendSubscriberMail(request, calendarSubscribers, event, nCalendarId);
            }
        }

        strJspReturn = AppPathService.getBaseUrl(request) + JSP_EVENT_LIST2 + nCalendarId;
    } else {
        strJspReturn = AdminMessageService.getMessageUrl(request, MESSAGE_INVALID_NUMBER_FORMAT,
                AdminMessage.TYPE_STOP);
    }
    return strJspReturn;

}

From source file:com.occamlab.te.web.TestServlet.java

public void processFormData(HttpServletRequest request, HttpServletResponse response) throws ServletException {
    try {/*ww  w .j av a  2s  .c o m*/
        FileItemFactory ffactory;
        ServletFileUpload upload;
        List /* FileItem */ items = null;
        HashMap<String, String> params = new HashMap<String, String>();
        boolean multipart = ServletFileUpload.isMultipartContent(request);
        if (multipart) {
            ffactory = new DiskFileItemFactory();
            upload = new ServletFileUpload(ffactory);
            items = upload.parseRequest(request);
            Iterator iter = items.iterator();
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();
                if (item.isFormField()) {
                    params.put(item.getFieldName(), item.getString());
                }
            }
        } else {
            Enumeration paramNames = request.getParameterNames();
            while (paramNames.hasMoreElements()) {
                String name = (String) paramNames.nextElement();
                params.put(name, request.getParameter(name));
            }
        }
        HttpSession session = request.getSession();
        ServletOutputStream out = response.getOutputStream();
        String operation = params.get("te-operation");
        if (operation.equals("Test")) {
            TestSession s = new TestSession();
            String user = request.getRemoteUser();
            File logdir = new File(conf.getUsersDir(), user);
            String mode = params.get("mode");
            RuntimeOptions opts = new RuntimeOptions();
            opts.setWorkDir(conf.getWorkDir());
            opts.setLogDir(logdir);
            if (mode.equals("retest")) {
                opts.setMode(Test.RETEST_MODE);
                String sessionid = params.get("session");
                String test = params.get("test");
                if (sessionid == null) {
                    int i = test.indexOf("/");
                    sessionid = i > 0 ? test.substring(0, i) : test;
                }
                opts.setSessionId(sessionid);
                if (test == null) {
                    opts.addTestPath(sessionid);
                } else {
                    opts.addTestPath(test);
                }
                for (Entry<String, String> entry : params.entrySet()) {
                    if (entry.getKey().startsWith("profile_")) {
                        String profileId = entry.getValue();
                        int i = profileId.indexOf("}");
                        opts.addTestPath(sessionid + "/" + profileId.substring(i + 1));
                    }
                }
                s.load(logdir, sessionid);
                opts.setSourcesName(s.getSourcesName());
            } else if (mode.equals("resume")) {
                opts.setMode(Test.RESUME_MODE);
                String sessionid = params.get("session");
                opts.setSessionId(sessionid);
                s.load(logdir, sessionid);
                opts.setSourcesName(s.getSourcesName());
            } else {
                opts.setMode(Test.TEST_MODE);
                String sessionid = LogUtils.generateSessionId(logdir);
                s.setSessionId(sessionid);
                String sources = params.get("sources");
                s.setSourcesName(sources);
                SuiteEntry suite = conf.getSuites().get(sources);
                s.setSuiteName(suite.getId());
                //                    String suite = params.get("suite");
                //                    s.setSuiteName(suite);
                String description = params.get("description");
                s.setDescription(description);
                opts.setSessionId(sessionid);
                opts.setSourcesName(sources);
                opts.setSuiteName(suite.getId());
                ArrayList<String> profiles = new ArrayList<String>();
                for (Entry<String, String> entry : params.entrySet()) {
                    if (entry.getKey().startsWith("profile_")) {
                        profiles.add(entry.getValue());
                        opts.addProfile(entry.getValue());
                    }
                }
                s.setProfiles(profiles);
                s.save(logdir);
            }
            String webdir = conf.getWebDirs().get(s.getSourcesName());
            //                String requestURI = request.getRequestURI();
            //                String contextPath = requestURI.substring(0, requestURI.indexOf(request.getServletPath()) + 1);
            //                URI contextURI = new URI(request.getScheme(), null, request.getServerName(), request.getServerPort(), contextPath, null, null);
            URI contextURI = new URI(request.getScheme(), null, request.getServerName(),
                    request.getServerPort(), request.getRequestURI(), null, null);
            opts.setBaseURI(new URL(contextURI.toURL(), webdir + "/").toString());
            //                URI baseURI = new URL(contextURI.toURL(), webdir).toURI();
            //                String base = baseURI.toString() + URLEncoder.encode(webdir, "UTF-8") + "/";
            //                opts.setBaseURI(base);
            //System.out.println(opts.getSourcesName());
            TECore core = new TECore(engine, indexes.get(opts.getSourcesName()), opts);
            //System.out.println(indexes.get(opts.getSourcesName()).toString());
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            PrintStream ps = new PrintStream(baos);
            core.setOut(ps);
            core.setWeb(true);
            Thread thread = new Thread(core);
            session.setAttribute("testsession", core);
            thread.start();
            response.setContentType("text/xml");
            out.println("<thread id=\"" + thread.getId() + "\" sessionId=\"" + s.getSessionId() + "\"/>");
        } else if (operation.equals("Stop")) {
            response.setContentType("text/xml");
            TECore core = (TECore) session.getAttribute("testsession");
            if (core != null) {
                core.stopThread();
                session.removeAttribute("testsession");
                out.println("<stopped/>");
            } else {
                out.println("<message>Could not retrieve core object</message>");
            }
        } else if (operation.equals("GetStatus")) {
            TECore core = (TECore) session.getAttribute("testsession");
            response.setContentType("text/xml");
            out.print("<status");
            if (core.getFormHtml() != null) {
                out.print(" form=\"true\"");
            }
            if (core.isThreadComplete()) {
                out.print(" complete=\"true\"");
                session.removeAttribute("testsession");
            }
            out.println(">");
            out.print("<![CDATA[");
            //                out.print(core.getOutput());
            out.print(URLEncoder.encode(core.getOutput(), "UTF-8").replace('+', ' '));
            out.println("]]>");
            out.println("</status>");
        } else if (operation.equals("GetForm")) {
            TECore core = (TECore) session.getAttribute("testsession");
            String html = core.getFormHtml();
            core.setFormHtml(null);
            response.setContentType("text/html");
            out.print(html);
        } else if (operation.equals("SubmitForm")) {
            TECore core = (TECore) session.getAttribute("testsession");
            Document doc = DB.newDocument();
            Element root = doc.createElement("values");
            doc.appendChild(root);
            for (String key : params.keySet()) {
                if (!key.startsWith("te-")) {
                    Element valueElement = doc.createElement("value");
                    valueElement.setAttribute("key", key);
                    valueElement.appendChild(doc.createTextNode(params.get(key)));
                    root.appendChild(valueElement);
                }
            }
            if (multipart) {
                Iterator iter = items.iterator();
                while (iter.hasNext()) {
                    FileItem item = (FileItem) iter.next();
                    if (!item.isFormField() && !item.getName().equals("")) {
                        File uploadedFile = new File(core.getLogDir(),
                                StringUtils.getFilenameFromString(item.getName()));
                        item.write(uploadedFile);
                        Element valueElement = doc.createElement("value");
                        String key = item.getFieldName();
                        valueElement.setAttribute("key", key);
                        if (core.getFormParsers().containsKey(key)) {
                            Element parser = core.getFormParsers().get(key);
                            URL url = uploadedFile.toURI().toURL();
                            Element resp = core.parse(url.openConnection(), parser, doc);
                            Element content = DomUtils.getElementByTagName(resp, "content");
                            if (content != null) {
                                Element child = DomUtils.getChildElement(content);
                                if (child != null) {
                                    valueElement.appendChild(child);
                                }
                            }
                        } else {
                            Element fileEntry = doc.createElementNS(CTL_NS, "file-entry");
                            fileEntry.setAttribute("full-path",
                                    uploadedFile.getAbsolutePath().replace('\\', '/'));
                            fileEntry.setAttribute("media-type", item.getContentType());
                            fileEntry.setAttribute("size", String.valueOf(item.getSize()));
                            valueElement.appendChild(fileEntry);
                        }
                        root.appendChild(valueElement);
                    }
                }
            }
            core.setFormResults(doc);
            response.setContentType("text/html");
            out.println("<html>");
            out.println("<head><title>Form Submitted</title></head>");
            out.print("<body onload=\"window.parent.update()\"></body>");
            out.println("</html>");
        }
    } catch (Throwable t) {
        throw new ServletException(t);
    }
}