Log in Help
Print
HomewikiTrainingCourseMay2011track-2-extras 〉 RegisterExplorer.java
 
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());
  }
}