001 package org.maltparser; 002 003 import java.io.File; 004 import java.util.Date; 005 006 import org.maltparser.core.exception.MaltChainedException; 007 import org.maltparser.core.helper.SystemInfo; 008 import org.maltparser.core.helper.SystemLogger; 009 import org.maltparser.core.options.OptionManager; 010 import org.maltparser.core.plugin.PluginLoader; 011 012 /** 013 * MaltConsoleEngine controls the MaltParser system using the console version. 014 * 015 * @author Johan Hall 016 * @since 1.0 017 **/ 018 public class MaltConsoleEngine { 019 public static final int OPTION_CONTAINER = 0; 020 021 /** 022 * Creates a MaltConsoleEngine object 023 * 024 */ 025 public MaltConsoleEngine() { 026 try { 027 /* Option and Plug-in management */ 028 OptionManager.instance().loadOptionDescriptionFile(); 029 if (SystemInfo.getMaltJarPath() != null) { 030 PluginLoader.instance().loadPlugins(new File(SystemInfo.getMaltJarPath().getParent()+"/plugin")); 031 } 032 OptionManager.instance().generateMaps(); 033 } catch (MaltChainedException e) { 034 if (SystemLogger.logger().isDebugEnabled()) { 035 SystemLogger.logger().debug("",e); 036 } else { 037 SystemLogger.logger().error(e.getMessageChain()); 038 } 039 System.exit(1); 040 } 041 } 042 043 /** 044 * Starts the console engine. 045 * 046 * @param args command-line arguments 047 */ 048 public void startEngine(String[] args) { 049 try { 050 final OptionManager om = OptionManager.instance(); 051 final boolean hasArg = om.parseCommandLine(args,OPTION_CONTAINER); 052 /* Update the verbosity level according to the verbosity option */ 053 String verbosity = null; 054 if (hasArg) { 055 verbosity = (String)OptionManager.instance().getOptionValue(OPTION_CONTAINER,"system", "verbosity"); 056 } else { 057 verbosity = (String)OptionManager.instance().getOptionDefaultValue("system", "verbosity"); 058 } 059 if (verbosity != null) { 060 SystemLogger.instance().setSystemVerbosityLevel(verbosity.toUpperCase()); 061 } 062 /* Help or reading the option file */ 063 if (!hasArg || om.getNumberOfOptionValues(OPTION_CONTAINER) == 0) { 064 SystemLogger.logger().info(SystemInfo.header()); 065 SystemLogger.logger().info(SystemInfo.shortHelp()); 066 return; 067 } else if (om.getOptionValue(OPTION_CONTAINER,"system", "help") != null) { 068 SystemLogger.logger().info(SystemInfo.header()); 069 SystemLogger.logger().info(om.getOptionDescriptions()); 070 return; 071 } else { 072 if (om.getOptionValue(OPTION_CONTAINER,"system", "option_file") != null && om.getOptionValue(0,"system", "option_file").toString().length() > 0) { 073 om.parseOptionInstanceXMLfile((String)om.getOptionValue(OPTION_CONTAINER,"system", "option_file")); 074 } 075 } 076 maltParser(); 077 } catch (MaltChainedException e) { 078 if (SystemLogger.logger().isDebugEnabled()) { 079 SystemLogger.logger().debug("",e); 080 } else { 081 SystemLogger.logger().error(e.getMessageChain()); 082 } 083 System.exit(1); 084 } 085 } 086 087 /** 088 * Creates and executes a MaltParser configuration 089 * 090 * @throws MaltChainedException 091 */ 092 private void maltParser() throws MaltChainedException { 093 if (SystemLogger.logger() != null && SystemLogger.logger().isInfoEnabled()) { 094 SystemLogger.logger().info(SystemInfo.header() +"\n"); 095 SystemLogger.logger().info("Started: " + new Date(System.currentTimeMillis()) +"\n"); 096 } 097 Engine engine = new Engine(); 098 engine.initialize(OPTION_CONTAINER); 099 engine.process(OPTION_CONTAINER); 100 engine.terminate(OPTION_CONTAINER); 101 if (SystemLogger.logger().isInfoEnabled()) { 102 SystemLogger.logger().info("Finished: " + new Date(System.currentTimeMillis())+"\n"); 103 } 104 } 105 }