// This file is part of AceWiki. // Copyright 2008-2013, AceWiki developers. // // AceWiki 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, either version 3 of // the License, or (at your option) any later version. // // AceWiki 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 AceWiki. If // not, see http://www.gnu.org/licenses/. package ch.uzh.ifi.attempto.base; import java.util.*; import ch.uzh.ifi.attempto.ape.ACEParser; import ch.uzh.ifi.attempto.ape.APESocket; import ch.uzh.ifi.attempto.ape.APELocal; import ch.uzh.ifi.attempto.ape.APEWebservice; /** * This class is used to get an instance of ACEParser by parameters. * * Following parameters are recognized: * - apetype * Specify the type of APE, should be one of "local", "socket" and "webservice". * - apecommand * Location of ape.exe, used by APELocal when apetype is "local". * - apehost * Host name of APE socket server, used by APESocket when apetype is "socket". * - apeport * Port number of APE socket server, used by APESocket whe apetype is "socket". * - apewebservice * APE webservice URL, use by APEWebservice when apetype is "webservice". * * @author Yu Changyuan */ public class APE { private static Map<String, String> parameters = new HashMap<String, String>(); /** * Get a ACEParser instance by parameters. * * @param parameters The parameters set in servlet web.xml. * @return The ACEParser instance. */ public static ACEParser getParser(Map<String, String> parameters) { String apeType = parameters.get("context:apetype"); if (apeType == null) apeType = "local"; if (apeType.equals("socket")) { String host = parameters.get("context:apehost"); if (host == null) host = "127.0.0.1"; int port; try { port = Integer.parseInt(parameters.get("context:apeport")); } catch (NumberFormatException e) { port = 0xace; } return getAPESocket(host, port); } if (apeType.equals("webservice")) { String url = parameters.get("context:apewebservice"); if (url == null) url = "http://127.0.0.1:8000/"; return getAPEWebservice(url); } String apeCommand = parameters.get("context:apecommand"); if (apeCommand == null) apeCommand = "ape.exe"; return getAPELocal(apeCommand); } /** * Get a ACEParser instance with default parameters. * * @return The ACEParser instance. */ public static ACEParser getParser() { return getParser(parameters); } /** * Set default parameters. * * @param parameters The parameters to set. */ public static void setParameters(Map<String, String> parameters) { APE.parameters = parameters; } /** * Get a APELocal instance with specified ape.exe location * * @param apeCommand The location of ape.exe. * @return The APELocal instance. */ public static ACEParser getAPELocal(String apeCommand) { if (!APELocal.isInitialized()) { APELocal.init(apeCommand); } return APELocal.getInstance(); } /** * Get a APESocket instance with specified host and port * * @param host The host of APE socket server. * @param port The port of APE socket server. * @return The APESocket instance. */ public static ACEParser getAPESocket(String host, int port) { return new APESocket(host, port); } /** * Get a APEWebservice instance with specified host and port * * @param url The URL of APE webservice. * @return The APEWebservice instance. */ public static ACEParser getAPEWebservice(String url) { return new APEWebservice(url); } }