org.pdfsam.console.business.parser.validators.SetViewerCmdValidator.java Source code

Java tutorial

Introduction

Here is the source code for org.pdfsam.console.business.parser.validators.SetViewerCmdValidator.java

Source

/*
 * Created on 06-Mar-2008
 * Copyright (C) 2008 by Andrea Vacondio.
 *
 *
 * This library is provided under dual licenses.
 * You may choose the terms of the Lesser General Public License version 2.1 or the General Public License version 2
 * License at your discretion.
 * 
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation;
 * version 2.1 of the License.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 * 
 * 
 * 
 * This program is free software; you can redistribute it and/or modify it under the terms of the 
 * GNU General Public License as published by the Free Software Foundation; 
 * either version 2 of the License.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 * See the GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License along with this program; 
 * if not, write to the Free Software Foundation, Inc., 
 *  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */
package org.pdfsam.console.business.parser.validators;

import java.io.File;
import java.util.Iterator;

import jcmdline.BooleanParam;
import jcmdline.CmdLineHandler;
import jcmdline.FileParam;
import jcmdline.PdfFileParam;
import jcmdline.StringParam;
import jcmdline.dto.PdfFile;

import org.pdfsam.console.business.dto.commands.AbstractParsedCommand;
import org.pdfsam.console.business.dto.commands.SetViewerParsedCommand;
import org.pdfsam.console.business.parser.validators.interfaces.AbstractCmdValidator;
import org.pdfsam.console.exceptions.console.ConsoleException;
import org.pdfsam.console.exceptions.console.ParseException;
import org.pdfsam.console.utils.FileUtility;
import org.pdfsam.console.utils.ValidationUtility;

import com.lowagie.text.pdf.PdfWriter;

/**
 * CmdValidator for the setviewer command
 * @author Andrea Vacondio
 */
public class SetViewerCmdValidator extends AbstractCmdValidator {

    public AbstractParsedCommand validateArguments(CmdLineHandler cmdLineHandler) throws ConsoleException {

        SetViewerParsedCommand parsedCommandDTO = new SetViewerParsedCommand();

        if (cmdLineHandler != null) {
            //-o
            FileParam oOption = (FileParam) cmdLineHandler.getOption(SetViewerParsedCommand.O_ARG);
            if ((oOption.isSet())) {
                File outFile = oOption.getFile();
                ValidationUtility.assertValidDirectory(outFile);
                parsedCommandDTO.setOutputFile(outFile);
            } else {
                throw new ParseException(ParseException.ERR_NO_O);
            }

            //-p
            StringParam pOption = (StringParam) cmdLineHandler.getOption(SetViewerParsedCommand.P_ARG);
            if (pOption.isSet()) {
                parsedCommandDTO.setOutputFilesPrefix(pOption.getValue());
            }

            //-mode
            StringParam mOption = (StringParam) cmdLineHandler.getOption(SetViewerParsedCommand.M_ARG);
            if (mOption.isSet()) {
                parsedCommandDTO.setMode(getMode(mOption.getValue()));
            }
            //-layout
            StringParam lOption = (StringParam) cmdLineHandler.getOption(SetViewerParsedCommand.L_ARG);
            if (lOption.isSet()) {
                parsedCommandDTO.setLayout(getLayout(lOption.getValue()));
            }

            //-nfsmode
            StringParam nfsmOption = (StringParam) cmdLineHandler.getOption(SetViewerParsedCommand.NFSM_ARG);
            if (nfsmOption.isSet()) {
                parsedCommandDTO.setNfsmode(getNFSMode(nfsmOption.getValue()));
            }

            //-direction
            StringParam directionOption = (StringParam) cmdLineHandler
                    .getOption(SetViewerParsedCommand.DIRECTION_ARG);
            if (directionOption.isSet()) {
                parsedCommandDTO.setDirection(getDirection(directionOption.getValue()));
            }

            //-f -d
            PdfFileParam fOption = (PdfFileParam) cmdLineHandler.getOption(SetViewerParsedCommand.F_ARG);
            FileParam dOption = (FileParam) cmdLineHandler.getOption(SetViewerParsedCommand.D_ARG);
            if (fOption.isSet() || dOption.isSet()) {
                //-f
                if (fOption.isSet()) {
                    //validate file extensions
                    for (Iterator fIterator = fOption.getPdfFiles().iterator(); fIterator.hasNext();) {
                        PdfFile currentFile = (PdfFile) fIterator.next();
                        ValidationUtility.assertValidPdfExtension(currentFile.getFile().getName());
                    }
                    parsedCommandDTO.setInputFileList(FileUtility.getPdfFiles(fOption.getPdfFiles()));
                }
                //-d
                if ((dOption.isSet())) {
                    File inputDir = dOption.getFile();
                    ValidationUtility.assertValidDirectory(inputDir);
                    parsedCommandDTO.setInputDirectory(inputDir);
                }
            } else {
                throw new ParseException(ParseException.ERR_NO_F_OR_D);
            }

            //-hidemenu
            parsedCommandDTO.setHideMenu(
                    ((BooleanParam) cmdLineHandler.getOption(SetViewerParsedCommand.HIDEMENU_ARG)).isTrue());
            //-hidetoolbar
            parsedCommandDTO.setHideToolBar(
                    ((BooleanParam) cmdLineHandler.getOption(SetViewerParsedCommand.HIDETOOLBAR_ARG)).isTrue());
            //-hide window ui
            parsedCommandDTO.setHideWindowUI(
                    ((BooleanParam) cmdLineHandler.getOption(SetViewerParsedCommand.HIDEWINDOWUI_ARG)).isTrue());
            //-fit window
            parsedCommandDTO.setFitWindow(
                    ((BooleanParam) cmdLineHandler.getOption(SetViewerParsedCommand.FITWINDOW_ARG)).isTrue());
            //-center window
            parsedCommandDTO.setCenterWindow(
                    ((BooleanParam) cmdLineHandler.getOption(SetViewerParsedCommand.CENTERWINDOW_ARG)).isTrue());
            //-display doc title
            parsedCommandDTO.setDisplayDocTitle(
                    ((BooleanParam) cmdLineHandler.getOption(SetViewerParsedCommand.DOCTITLE_ARG)).isTrue());
            //-noprintscaling
            parsedCommandDTO.setNoPrintScaling(
                    ((BooleanParam) cmdLineHandler.getOption(SetViewerParsedCommand.NOPRINTSCALING_ARG)).isTrue());

        } else {
            throw new ConsoleException(ConsoleException.CMD_LINE_HANDLER_NULL);
        }
        return parsedCommandDTO;
    }

    /**
     * @param direction 
     * @return The direction to iText 
     */
    private int getDirection(String direction) {
        int retVal = 0;
        if (SetViewerParsedCommand.D_R2L.equals(direction)) {
            retVal = PdfWriter.DirectionR2L;
        } else if (SetViewerParsedCommand.D_L2R.equals(direction)) {
            retVal = PdfWriter.DirectionL2R;
        }
        return retVal;
    }

    /**
     * 
     * @param mode
     * @return The mode to iText
     */
    private int getMode(String mode) {
        int retVal = PdfWriter.PageModeUseNone;
        if (SetViewerParsedCommand.M_ATTACHMENTS.equals(mode)) {
            retVal = PdfWriter.PageModeUseAttachments;
        } else if (SetViewerParsedCommand.M_FULLSCREEN.equals(mode)) {
            retVal = PdfWriter.PageModeFullScreen;
        } else if (SetViewerParsedCommand.M_OCONTENT.equals(mode)) {
            retVal = PdfWriter.PageModeUseOC;
        } else if (SetViewerParsedCommand.M_OUTLINES.equals(mode)) {
            retVal = PdfWriter.PageModeUseOutlines;
        } else if (SetViewerParsedCommand.M_THUMBS.equals(mode)) {
            retVal = PdfWriter.PageModeUseThumbs;
        }
        return retVal;
    }

    /**
     * 
     * @param nfsmode
     * @return the non full screen mode to iText
     */
    private int getNFSMode(String nfsmode) {
        int retVal = PdfWriter.NonFullScreenPageModeUseNone;
        if (SetViewerParsedCommand.NFSM_OCONTENT.equals(nfsmode)) {
            retVal = PdfWriter.NonFullScreenPageModeUseOC;
        } else if (SetViewerParsedCommand.NFSM_OUTLINES.equals(nfsmode)) {
            retVal = PdfWriter.NonFullScreenPageModeUseOutlines;
        } else if (SetViewerParsedCommand.NFSM_THUMBS.equals(nfsmode)) {
            retVal = PdfWriter.NonFullScreenPageModeUseThumbs;
        }
        return retVal;
    }

    /**
     * 
     * @param layout
     * @return the layout to iText
     */
    private int getLayout(String layout) {
        int retVal = PdfWriter.PageLayoutOneColumn;
        if (SetViewerParsedCommand.L_SINGLEPAGE.equals(layout)) {
            retVal = PdfWriter.PageLayoutSinglePage;
        } else if (SetViewerParsedCommand.L_TWOCOLUMNLEFT.equals(layout)) {
            retVal = PdfWriter.PageLayoutTwoColumnLeft;
        } else if (SetViewerParsedCommand.L_TWOCOLUMNRIGHT.equals(layout)) {
            retVal = PdfWriter.PageLayoutTwoColumnRight;
        } else if (SetViewerParsedCommand.L_TWOPAGELEFT.equals(layout)) {
            retVal = PdfWriter.PageLayoutTwoPageLeft;
        } else if (SetViewerParsedCommand.L_TWOPAGERIGHT.equals(layout)) {
            retVal = PdfWriter.PageLayoutTwoPageRight;
        }
        return retVal;
    }
}