package module7; import java.io.File; import java.net.URL; import java.util.List; import java.util.Set; import gate.CreoleRegister; import gate.Gate; import gate.Resource; import gate.creole.Parameter; import gate.creole.ParameterList; import gate.creole.ResourceData; import gate.util.persistence.PersistenceManager; /** * Some examples of how to use the CreoleRegister APIs to explore the loaded * plugins, PR types and instances known to GATE. */ public class RegisterExplorer { public static void main(String[] args) throws Exception { Gate.init(); File annieGapp = new File( new File(Gate.getPluginsHome(), "ANNIE"), "ANNIE_with_defaults.gapp"); PersistenceManager.loadObjectFromFile(annieGapp); CreoleRegister cr = Gate.getCreoleRegister(); System.out.println("Loaded plugins"); System.out.println("=============="); for(URL plugin : (Set<URL>)cr.getDirectories()) { System.out.println("Plugin " + plugin + " is loaded"); } System.out.println(); System.out.println("PR Instances"); System.out.println("============"); List<Resource> prs = cr.getAllInstances("gate.ProcessingResource"); for(Resource res : prs) { System.out.println(res.getName() + " is a " + res.getClass().getName()); } System.out.println(); System.out.println("PR Types"); System.out.println("========"); Set<String> prTypes = cr.getPrTypes(); for(String type : prTypes) { System.out.println("PR type: " + type); ResourceData data = cr.get(type); ParameterList params = data.getParameterList(); System.out.println(" Init parameters:"); printParamList(params.getInitimeParameters()); System.out.println(" Runtime parameters:"); printParamList(params.getRuntimeParameters()); System.out.println(); } } /** * Print a summary of a List of parameter disjunctions to standard out. */ private static void printParamList(List<List<Parameter>> params) { for(List<Parameter> disjunction : params) { if(disjunction.size() == 1) { printParam(" ", disjunction.get(0)); } else { System.out.println(" Disjunction of " + disjunction.size() + " parameters:"); for(Parameter p : disjunction) { printParam(" ", p); } } } } /** * Print details of a single parameter to standard out. */ private static void printParam(String indent, Parameter p) { System.out.println(indent + "Parameter '" + p.getName() + "', type: " + p.getTypeName()); } }