public static void main(String... args) throws IOException { if (args == null || args.length < 5) { System.out.printf( "usage: java %s fichier.dgs outputPrefix imageType res policy%n", FileSinkImages.class.getName()); System.exit(0); } FileSourceDGS dgs = new FileSourceDGS(); FileSinkImages fsi = new FileSinkImages( args[1], OutputType.valueOf(args[2]), Resolutions.valueOf(args[3]), OutputPolicy.valueOf(args[4])); dgs.addSink(fsi); if (args.length > 5) fsi.addLogo(args[5], 0, 0); fsi.setHighQuality(); fsi.setStyleSheet( "graph { padding: 50px; fill-color: black; }" + "node { stroke-mode: plain; stroke-color: #3d5689,#639330,#8d4180,#97872f,#9c4432; stroke-width: 2px; fill-mode: dyn-plain; fill-color: #5782db,#90dd3e,#e069cb,#e0ce69,#e07c69; }" + "edge { fill-color: white; }"); boolean next = true; dgs.begin(args[0]); while (next) next = dgs.nextStep(); dgs.end(); }
/** @param args */ public static void main(String[] args) { String docPath = null; for (int i = 0; i < args.length; i++) { // iterate over cli parameter tokens if (args[i].startsWith("-")) { // assume we found a switch // get the relevant enum CLISwitch sw = CLISwitch.getEnumFromSwitch(args[i]); if (sw == null) { // unsupported CLI switch logger.log(Level.WARNING, "Unsupported switch: " + args[i] + ". Quitting."); System.exit(-1); } if (sw.getHasFollowingValue()) { // handle values for switches if (args.length > i + 1 && !args[i + 1].startsWith( "-")) { // we still have an array index after this one and it's not a switch sw.setValue(args[++i]); } else { // value is missing or malformed logger.log( Level.WARNING, "Invalid or missing parameter after " + args[i] + ". Quitting."); System.exit(-1); } } else { // activate the value-less switches sw.setValue(null); } } else { // assume we found the document's path/name docPath = args[i]; } } // display help dialog if HELP-switch is given if (CLISwitch.HELP.getIsActive()) { printHelp(); System.exit(0); } // start off with the verbosity recognition -- lots of the other // stuff can be skipped if this is set too high if (CLISwitch.VERBOSITY2.getIsActive()) { logger.setLevel(Level.ALL); logger.log(Level.INFO, "Verbosity: '-vv'; Logging level set to ALL."); // output the found language resource folders String languagesList = ""; for (String language : ResourceScanner.getInstance().getDetectedResourceFolders()) { languagesList += System.getProperty("line.separator") + "- " + language; } logger.log(Level.INFO, "Listing detected language folders:" + languagesList); } else if (CLISwitch.VERBOSITY.getIsActive()) { logger.setLevel(Level.INFO); logger.log(Level.INFO, "Verbosity: '-v'; Logging level set to INFO and above."); } else { logger.setLevel(Level.WARNING); logger.log( Level.INFO, "Verbosity -v/-vv NOT FOUND OR RECOGNIZED; Logging level set to WARNING and above."); } // Check input encoding String encodingType = null; if (CLISwitch.ENCODING.getIsActive()) { encodingType = CLISwitch.ENCODING.getValue().toString(); logger.log(Level.INFO, "Encoding '-e': " + encodingType); } else { // Encoding type not found encodingType = CLISwitch.ENCODING.getValue().toString(); logger.log(Level.INFO, "Encoding '-e': NOT FOUND OR RECOGNIZED; set to 'UTF-8'"); } // Check output format OutputType outputType = null; if (CLISwitch.OUTPUTTYPE.getIsActive()) { outputType = OutputType.valueOf(CLISwitch.OUTPUTTYPE.getValue().toString().toUpperCase()); logger.log(Level.INFO, "Output '-o': " + outputType.toString().toUpperCase()); } else { // Output type not found outputType = (OutputType) CLISwitch.OUTPUTTYPE.getValue(); logger.log( Level.INFO, "Output '-o': NOT FOUND OR RECOGNIZED; set to " + outputType.toString().toUpperCase()); } // Check language Language language = null; if (CLISwitch.LANGUAGE.getIsActive()) { language = Language.getLanguageFromString((String) CLISwitch.LANGUAGE.getValue()); if (language == Language.WILDCARD && !ResourceScanner.getInstance() .getDetectedResourceFolders() .contains(language.getName())) { logger.log( Level.SEVERE, "Language '-l': " + CLISwitch.LANGUAGE.getValue() + " NOT RECOGNIZED; aborting."); printHelp(); System.exit(-1); } else { logger.log(Level.INFO, "Language '-l': " + language.getName()); } } else { // Language not found language = Language.getLanguageFromString((String) CLISwitch.LANGUAGE.getValue()); logger.log( Level.INFO, "Language '-l': NOT FOUND; set to " + language.toString().toUpperCase()); } // Check type DocumentType type = null; if (CLISwitch.DOCTYPE.getIsActive()) { try { if (CLISwitch.DOCTYPE .getValue() .equals("narrative")) { // redirect "narrative" to "narratives" CLISwitch.DOCTYPE.setValue("narratives"); } type = DocumentType.valueOf(CLISwitch.DOCTYPE.getValue().toString().toUpperCase()); } catch (IllegalArgumentException e) { logger.log( Level.WARNING, "Type '-t': NOT RECOGNIZED. These are the available options: " + Arrays.asList(DocumentType.values())); System.exit(-1); } logger.log(Level.INFO, "Type '-t': " + type.toString().toUpperCase()); } else { // Type not found type = (DocumentType) CLISwitch.DOCTYPE.getValue(); logger.log(Level.INFO, "Type '-t': NOT FOUND; set to " + type.toString().toUpperCase()); } // Check document creation time Date dct = null; if (CLISwitch.DCT.getIsActive()) { try { DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); dct = formatter.parse(CLISwitch.DCT.getValue().toString()); logger.log(Level.INFO, "Document Creation Time '-dct': " + dct.toString()); } catch (Exception e) { // DCT was not parseable logger.log(Level.WARNING, "Document Creation Time '-dct': NOT RECOGNIZED. Quitting."); printHelp(); System.exit(-1); } } else { if ((type == DocumentType.NEWS) || (type == DocumentType.COLLOQUIAL)) { // Dct needed dct = (Date) CLISwitch.DCT.getValue(); logger.log( Level.INFO, "Document Creation Time '-dct': NOT FOUND; set to local date (" + dct.toString() + ")."); } else { logger.log(Level.INFO, "Document Creation Time '-dct': NOT FOUND; skipping."); } } // Handle locale switch String locale = (String) CLISwitch.LOCALE.getValue(); Locale myLocale = null; if (CLISwitch.LOCALE.getIsActive()) { // check if the requested locale is available for (Locale l : Locale.getAvailableLocales()) { if (l.toString().toLowerCase().equals(locale.toLowerCase())) myLocale = l; } try { Locale.setDefault(myLocale); // try to set the locale logger.log(Level.INFO, "Locale '-locale': " + myLocale.toString()); } catch (Exception e) { // if the above fails, spit out error message and available locales logger.log( Level.WARNING, "Supplied locale parameter couldn't be resolved to a working locale. Try one of these:"); logger.log( Level.WARNING, Arrays.asList(Locale.getAvailableLocales()).toString()); // list available locales printHelp(); System.exit(-1); } } else { // no -locale parameter supplied: just show default locale logger.log( Level.INFO, "Locale '-locale': NOT FOUND, set to environment locale: " + Locale.getDefault().toString()); } // Read configuration from file String configPath = CLISwitch.CONFIGFILE.getValue().toString(); try { logger.log(Level.INFO, "Configuration path '-c': " + configPath); readConfigFile(configPath); logger.log(Level.FINE, "Config initialized"); } catch (Exception e) { e.printStackTrace(); logger.log( Level.WARNING, "Config could not be initialized! Please supply the -c switch or " + "put a config.props into this directory."); printHelp(); System.exit(-1); } // Set the preprocessing POS tagger POSTagger posTagger = null; if (CLISwitch.POSTAGGER.getIsActive()) { try { posTagger = POSTagger.valueOf(CLISwitch.POSTAGGER.getValue().toString().toUpperCase()); } catch (IllegalArgumentException e) { logger.log( Level.WARNING, "Given POS Tagger doesn't exist. Please specify a valid one as listed in the help."); printHelp(); System.exit(-1); } logger.log(Level.INFO, "POS Tagger '-pos': " + posTagger.toString().toUpperCase()); } else { // Type not found posTagger = (POSTagger) CLISwitch.POSTAGGER.getValue(); logger.log( Level.INFO, "POS Tagger '-pos': NOT FOUND OR RECOGNIZED; set to " + posTagger.toString().toUpperCase()); } // Set whether or not to use the Interval Tagger Boolean doIntervalTagging = false; if (CLISwitch.INTERVALS.getIsActive()) { doIntervalTagging = CLISwitch.INTERVALS.getIsActive(); logger.log(Level.INFO, "Interval Tagger '-it': " + doIntervalTagging.toString()); } else { logger.log( Level.INFO, "Interval Tagger '-it': NOT FOUND OR RECOGNIZED; set to " + doIntervalTagging.toString()); } // make sure we have a document path if (docPath == null) { logger.log(Level.WARNING, "No input file given; aborting."); printHelp(); System.exit(-1); } // Run HeidelTime RandomAccessFile aFile = null; MappedByteBuffer buffer = null; FileChannel inChannel = null; PrintWriter pwOut = null; try { logger.log(Level.INFO, "Reading document using charset: " + encodingType); aFile = new RandomAccessFile(docPath, "r"); inChannel = aFile.getChannel(); buffer = inChannel.map(FileChannel.MapMode.READ_ONLY, 0, inChannel.size()); buffer.load(); byte[] inArr = new byte[(int) inChannel.size()]; for (int i = 0; i < buffer.limit(); i++) { inArr[i] = buffer.get(); } // double-newstring should not be necessary, but without this, it's not running on Windows (?) String input = new String(new String(inArr, encodingType).getBytes("UTF-8"), "UTF-8"); HeidelTimeStandalone standalone = new HeidelTimeStandalone(language, type, outputType, null, posTagger, doIntervalTagging); String out = standalone.process(input, dct); // Print output always as UTF-8 pwOut = new PrintWriter(new OutputStreamWriter(System.out, "UTF-8")); pwOut.println(out); } catch (Exception e) { e.printStackTrace(); } finally { if (pwOut != null) { pwOut.close(); } if (buffer != null) { buffer.clear(); } if (inChannel != null) { try { inChannel.close(); } catch (IOException e) { } } if (aFile != null) { try { aFile.close(); } catch (IOException e) { } } } }
public static void main(String... args) throws IOException { HashMap<Option, String> options = new HashMap<Option, String>(); LinkedList<String> others = new LinkedList<String>(); for (Option option : Option.values()) if (option.defaultValue != null) options.put(option, option.defaultValue); if (args != null && args.length > 0) { Pattern valueGetter = Pattern.compile("^--\\w[\\w-]*\\w?(?:=(?:\"([^\"]*)\"|([^\\s]*)))$"); for (int i = 0; i < args.length; i++) { if (args[i].matches("^--\\w[\\w-]*\\w?(=(\"[^\"]*\"|[^\\s]*))?$")) { boolean found = false; for (Option option : Option.values()) { if (args[i].startsWith("--" + option.fullopts + "=")) { Matcher m = valueGetter.matcher(args[i]); if (m.matches()) { options.put(option, m.group(1) == null ? m.group(2) : m.group(1)); } found = true; break; } } if (!found) { System.err.printf("unknown option: %s%n", args[i].substring(0, args[i].indexOf('='))); System.exit(1); } } else if (args[i].matches("^-\\w$")) { boolean found = false; for (Option option : Option.values()) { if (args[i].equals("-" + option.shortopts)) { options.put(option, args[++i]); break; } } if (!found) { System.err.printf("unknown option: %s%n", args[i]); System.exit(1); } } else { others.addLast(args[i]); } } } else { usage(); System.exit(0); } LinkedList<String> errors = new LinkedList<String>(); if (others.size() == 0) { errors.add("dgs file name missing."); } String imagePrefix; OutputType outputType = null; OutputPolicy outputPolicy = null; Resolution resolution = null; Quality quality = null; String logo; String stylesheet; imagePrefix = options.get(Option.IMAGE_PREFIX); try { outputType = OutputType.valueOf(options.get(Option.IMAGE_TYPE)); } catch (IllegalArgumentException e) { errors.add("bad image type: " + options.get(Option.IMAGE_TYPE)); } try { outputPolicy = OutputPolicy.valueOf(options.get(Option.OUTPUT_POLICY)); } catch (IllegalArgumentException e) { errors.add("bad output policy: " + options.get(Option.OUTPUT_POLICY)); } try { quality = Quality.valueOf(options.get(Option.QUALITY)); } catch (IllegalArgumentException e) { errors.add("bad quality: " + options.get(Option.QUALITY)); } logo = options.get(Option.LOGO); stylesheet = options.get(Option.STYLESHEET); try { resolution = Resolutions.valueOf(options.get(Option.IMAGE_RESOLUTION)); } catch (IllegalArgumentException e) { Pattern p = Pattern.compile("^\\s*(\\d+)\\s*x\\s*(\\d+)\\s*$"); Matcher m = p.matcher(options.get(Option.IMAGE_RESOLUTION)); if (m.matches()) { resolution = new CustomResolution(Integer.parseInt(m.group(1)), Integer.parseInt(m.group(2))); } else { errors.add("bad resolution: " + options.get(Option.IMAGE_RESOLUTION)); } } if (stylesheet != null && stylesheet.length() < 1024) { File test = new File(stylesheet); if (test.exists()) { FileReader in = new FileReader(test); char[] buffer = new char[128]; String content = ""; while (in.ready()) { int c = in.read(buffer, 0, 128); content += new String(buffer, 0, c); } stylesheet = content; in.close(); } } { File test = new File(others.peek()); if (!test.exists()) errors.add(String.format("file \"%s\" does not exist", others.peek())); } if (errors.size() > 0) { System.err.printf("error:%n"); for (String error : errors) System.err.printf("- %s%n", error); System.exit(1); } FileSourceDGS dgs = new FileSourceDGS(); FileSinkImages fsi = new FileSinkImages(imagePrefix, outputType, resolution, outputPolicy); dgs.addSink(fsi); if (logo != null) fsi.addLogo(logo, 0, 0); fsi.setQuality(quality); if (stylesheet != null) fsi.setStyleSheet(stylesheet); boolean next = true; dgs.begin(others.get(0)); while (next) next = dgs.nextStep(); dgs.end(); }
public void setParserEvaluationTypes(final String string) throws EvalError, CorpusError { if (string.equals("")) { evalTypes.add(OutputType.CLUMP); evalTypes.add(OutputType.NPS); } else for (final String s : string.split(",")) evalTypes.add(OutputType.valueOf(s)); }