File size: 3,874 Bytes
6f3ebfa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package org.maltparser;

import java.io.File;
import java.util.Date;

import org.maltparser.core.exception.MaltChainedException;
import org.maltparser.core.helper.SystemInfo;
import org.maltparser.core.helper.SystemLogger;
import org.maltparser.core.options.OptionManager;
import org.maltparser.core.plugin.PluginLoader;

/**

 * MaltConsoleEngine controls the MaltParser system using the console version. 

 * 

 * @author Johan Hall

 * @since 1.0

**/
public class MaltConsoleEngine {
	public static final int OPTION_CONTAINER = 0;
	
	/**

	 * Creates a MaltConsoleEngine object

	 * 

	 */
	public MaltConsoleEngine() {
		try {
			/* Option and Plug-in management */
			OptionManager.instance().loadOptionDescriptionFile();
//			if (SystemInfo.getMaltJarPath() != null) {
//				PluginLoader.instance().loadPlugins(new File(SystemInfo.getMaltJarPath().getParent()+"/plugin"));
//			}
			OptionManager.instance().generateMaps();
		} catch (MaltChainedException e) {
			if (SystemLogger.logger().isDebugEnabled()) {
				SystemLogger.logger().debug("",e);
			} else {
				SystemLogger.logger().error(e.getMessageChain());
			}
			System.exit(1);
		}
	}
	
	/**

	 * Starts the console engine.

	 * 

	 * @param args command-line arguments

	 */
	public void startEngine(String[] args) {
		try {
			final OptionManager om = OptionManager.instance();
			final boolean hasArg = om.parseCommandLine(args,OPTION_CONTAINER);
			/* Update the verbosity level according to the verbosity option */
			String verbosity = null;
			if (hasArg) {
				verbosity = (String)OptionManager.instance().getOptionValue(OPTION_CONTAINER,"system", "verbosity");
			} else {
				verbosity = (String)OptionManager.instance().getOptionDefaultValue("system", "verbosity");
			}
			if (verbosity != null) {
				SystemLogger.instance().setSystemVerbosityLevel(verbosity.toUpperCase());
			}
			/* Help or reading the option file */
			if (!hasArg || om.getNumberOfOptionValues(OPTION_CONTAINER) == 0) {
				SystemLogger.logger().info(SystemInfo.header());
				SystemLogger.logger().info(SystemInfo.shortHelp());
				return;
			} else if (om.getOptionValue(OPTION_CONTAINER,"system", "help") != null) {
				SystemLogger.logger().info(SystemInfo.header());
				SystemLogger.logger().info(om.getOptionDescriptions());
				return;
			} else {
				if (om.getOptionValue(OPTION_CONTAINER,"system", "option_file") != null && om.getOptionValue(0,"system", "option_file").toString().length() > 0) {
					om.parseOptionInstanceXMLfile((String)om.getOptionValue(OPTION_CONTAINER,"system", "option_file"));
				}
			}
			maltParser();
		} catch (MaltChainedException e) {
			if (SystemLogger.logger().isDebugEnabled()) {
				SystemLogger.logger().debug("",e);
			} else {
				SystemLogger.logger().error(e.getMessageChain());
			}
			System.exit(1);
		}
	}
	

	
	/**

	 * Creates and executes a MaltParser configuration

	 * 

	 * @throws MaltChainedException

	 */
	private void maltParser() throws MaltChainedException {
		if (SystemLogger.logger() != null && SystemLogger.logger().isInfoEnabled()) {
			SystemLogger.logger().info(SystemInfo.header() +"\n");
			SystemLogger.logger().info("Started: " + new Date(System.currentTimeMillis()) +"\n");
		}
//		if (ConcurrentEngine.canUseConcurrentEngine(OPTION_CONTAINER)) {
//			ConcurrentEngine concurrentEngine = new ConcurrentEngine(OPTION_CONTAINER);
//			concurrentEngine.loadModel();
//			concurrentEngine.parse();
//			concurrentEngine.terminate();
//		} else {
			Engine engine = new Engine();
			engine.initialize(OPTION_CONTAINER);
			engine.process(OPTION_CONTAINER);
			engine.terminate(OPTION_CONTAINER);
//		}
		if (SystemLogger.logger().isInfoEnabled()) {
			SystemLogger.logger().info("Finished: " + new Date(System.currentTimeMillis())+"\n");
		}
	}
}