Java tutorial
/* * 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; } }