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());
}
}