1 package de.java2html.commandline; 2 3 import java.io.File ; 4 5 import de.java2html.converter.AbstractJavaSourceConverter; 6 import de.java2html.converter.IJavaSourceConverter; 7 import de.java2html.converter.JavaSourceConverterProvider; 8 import de.java2html.options.ConversionOptionsUtilities; 9 import de.java2html.options.JavaSourceConversionOptions; 10 import de.java2html.options.JavaSourceStyleTable; 11 12 32 public class Java2HtmlCommandline { 33 private static final String PARAM_TARGETFILE = "targetfile"; 34 private static final String PARAM_SRCFILE = "srcfile"; 35 private static final String PARAM_STYLE = "style"; 36 private static final String FLAG_COPYTOTARGETUNPROCESSEDFILES = "copytotargetunprocessedfiles"; 37 private static final String PARAM_TABS = "tabs"; 38 private static final String PARAM_CONVERTER = "converter"; 39 private static final String PARAM_TARGETDIR = "targetdir"; 40 private static final String PARAM_SRCDIR = "srcdir"; 41 private static final String PARAM_FILEMASK = "filemask"; 42 43 private static final String DEFAULT_CONVERTER_TYPE_NAME = "HTML"; 44 private final static String DEFAULT_FILEMASK = "*.java"; 45 46 51 public static IJava2HtmlConversion createCommandlineConversion(String [] args) 52 throws IllegalCommandlineParametersException { 53 CommandlineArguments arguments = new CommandlineArguments(args); 54 if (arguments.isParameterSet(PARAM_SRCDIR)) { 55 return createDirectoryConversion(arguments); 56 } 57 else if (arguments.isParameterSet(PARAM_SRCFILE)) { 58 return createFileConversion(arguments); 59 } 60 else { 61 throw new IllegalCommandlineParametersException("No parameter -srcdir or -srcfile specified."); 62 } 63 } 64 65 private static IJava2HtmlConversion createFileConversion(CommandlineArguments arguments) 66 throws IllegalCommandlineParametersException { 67 arguments.assertContainsNoUnsupportedFlags(new String []{}); 68 arguments.assertContainsNoUnsupportedParameters(new String []{ 69 PARAM_SRCFILE, 70 PARAM_TARGETFILE, 71 PARAM_CONVERTER, 72 PARAM_TABS, 73 PARAM_STYLE }); 74 75 String srcFileName = arguments.getRequiredParameterStringValue(PARAM_SRCFILE); 76 String targetFileName = arguments.getParameterStringValue(PARAM_TARGETFILE, null); 77 String converterType = arguments.getParameterStringValue(PARAM_CONVERTER, DEFAULT_CONVERTER_TYPE_NAME); 78 int tabSize = arguments.getParameterPositiveIntValue(PARAM_TABS, JavaSourceConversionOptions 79 .getDefault().getTabSize()); 80 String styleName = arguments 81 .getParameterStringValue(PARAM_STYLE, JavaSourceStyleTable.getDefault().getName()); 82 83 IJavaSourceConverter converter = getConverter(converterType); 84 if (converter == null) { 85 System.err.println("ERROR: Unknown converter type: " + converterType); 86 printUsage(); 87 System.exit(1); 88 } 89 90 JavaSourceConversionOptions options = JavaSourceConversionOptions.getDefault(); 91 applyStyle(styleName, options); 92 93 options.setTabSize(tabSize); 94 95 return new Java2HtmlFileConversion(new File (srcFileName), targetFileName == null ? null : new File ( 96 targetFileName), converter, options); 97 } 98 99 private static IJava2HtmlConversion createDirectoryConversion(CommandlineArguments arguments) 100 throws IllegalCommandlineParametersException { 101 arguments.assertContainsNoUnsupportedFlags(new String []{ FLAG_COPYTOTARGETUNPROCESSEDFILES }); 102 arguments.assertContainsNoUnsupportedParameters(new String []{ 103 PARAM_SRCDIR, 104 PARAM_TARGETDIR, 105 PARAM_CONVERTER, 106 PARAM_TABS, 107 PARAM_STYLE, 108 PARAM_FILEMASK }); 109 110 String srcDirectoryName = arguments.getRequiredParameterStringValue(PARAM_SRCDIR); 111 String targetDirectoryName = arguments.getParameterStringValue(PARAM_TARGETDIR, null); 112 String converterType = arguments.getParameterStringValue(PARAM_CONVERTER, DEFAULT_CONVERTER_TYPE_NAME); 113 int tabSize = arguments.getParameterPositiveIntValue(PARAM_TABS, JavaSourceConversionOptions 114 .getDefault().getTabSize()); 115 boolean copyUnprocessedFiles = arguments.isFlagSet(FLAG_COPYTOTARGETUNPROCESSEDFILES); 116 String styleName = arguments 117 .getParameterStringValue(PARAM_STYLE, JavaSourceStyleTable.getDefault().getName()); 118 119 String fileMask = arguments.getParameterStringValue(PARAM_FILEMASK, DEFAULT_FILEMASK); 120 121 IJavaSourceConverter converter = getConverter(converterType); 122 if (converter == null) { 123 System.err.println("ERROR: Unknown converter type: " + converterType); 124 printUsage(); 125 System.exit(1); 126 } 127 128 JavaSourceConversionOptions options = JavaSourceConversionOptions.getDefault(); 129 applyStyle(styleName, options); 130 options.setTabSize(tabSize); 131 132 return new Java2HtmlDirectoryConversion(new File (srcDirectoryName), converter, targetDirectoryName == null 133 ? null 134 : new File (targetDirectoryName), fileMask, copyUnprocessedFiles, options); 135 } 136 137 141 public static void printUsage() { 142 System.out.println("\nValid usage: \n"); 143 System.out.println("1. To convert a directory including subdirectories: \n"); 144 145 System.out.println("\tjava -jar java2html.jar -" 146 + PARAM_SRCDIR 147 + " d:/src [-" 148 + PARAM_TARGETDIR 149 + " d:/src/output] [-" 150 + PARAM_FILEMASK 151 + " *.java] [-" 152 + PARAM_CONVERTER 153 + " " 154 + getValidConverterNames() 155 + "] [-" 156 + PARAM_TABS 157 + " 4] [-" 158 + FLAG_COPYTOTARGETUNPROCESSEDFILES 159 + "] -" 160 + PARAM_STYLE 161 + " [ " 162 + getValidStylesAsString() 163 + " ]\n"); 164 165 System.out.println("2. To convert a single file: \n"); 166 System.out.println("\tjava -jar java2html.jar -" 167 + PARAM_SRCFILE 168 + " d:/src/test.java [-" 169 + PARAM_TARGETFILE 170 + " d:/src/output/target.java] [-" 171 + PARAM_CONVERTER 172 + " " 173 + getValidConverterNames() 174 + "] [-" 175 + PARAM_TABS 176 + " 8]" 177 + " -" 178 + PARAM_STYLE 179 + " [ " 180 + getValidStylesAsString() 181 + " ]\n"); 182 } 183 184 189 private static void applyStyle(String styleName, JavaSourceConversionOptions options) 190 throws IllegalCommandlineParametersException { 191 JavaSourceStyleTable styleTable = JavaSourceStyleTable.getPredefinedTable(styleName); 192 if (styleTable == null) { 193 throw new IllegalCommandlineParametersException("Unknown style '" + styleName + "'"); 194 } 195 options.setStyleTable(styleTable); 196 } 197 198 203 private static String getValidStylesAsString() { 204 return ConversionOptionsUtilities.getSeparatedString(ConversionOptionsUtilities 205 .getPredefinedStyleTableNames(), " | "); 206 } 207 208 private static String getValidConverterNames() { 209 return ConversionOptionsUtilities.getSeparatedString( 210 JavaSourceConverterProvider.getAllConverterNames(), 211 " | "); 212 } 213 214 221 private static IJavaSourceConverter getConverter(String converterType) 222 throws IllegalCommandlineParametersException { 223 IJavaSourceConverter converter = JavaSourceConverterProvider.getJavaSourceConverterByName(converterType); 224 if (converter == null) { 225 throw new IllegalCommandlineParametersException("Unsupported converter type '" + converterType + "'"); 226 } 227 return converter; 228 } 229 } | Popular Tags |