package module7; import gate.*; import gate.creole.*; import gate.creole.metadata.CreoleResource; @CreoleResource(name = "Corpus statistics") public class CorpusStats extends AbstractLanguageAnalyser implements ControllerAwarePR { private int totalTokens; public void execute() throws ExecutionException { int tokens = document.getAnnotations().get("Token").size(); document.getFeatures().put("token_count", tokens); totalTokens += tokens; } public void controllerExecutionStarted(Controller c) { System.out.println("Executing " + this.getName() + " in controller " + c.getName()); totalTokens = 0; } public void controllerExecutionFinished(Controller c) { if(c instanceof CorpusController) { FeatureMap corpusFeatures = ((CorpusController)c).getCorpus().getFeatures(); corpusFeatures.put("token_count", totalTokens); } } public void controllerExecutionAborted(Controller c, Throwable t) { System.out.println("Controller execution aborted with a " + t); } }