package edu.stanford.nlp.semgraph.semgrex.ssurgeon.pred;
import java.util.*;
import edu.stanford.nlp.util.Generics;
/**
* This manages the set of available custom Node and Edge tests.
* This is a singleton, so use <code>inst</code> to
* get the current instance.
* @author Eric Yeh
*
*/
public class SsurgTestManager {
Map<String, Class<?>> nodeTests = Generics.newHashMap();
private SsurgTestManager() { init();}
private static SsurgTestManager instance = null;
/**
* Once initialized, registers self with default node handlers.
*/
private void init() {
//
}
public static SsurgTestManager inst() {
if (instance == null)
instance = new SsurgTestManager();
return instance;
}
public void registerNodeTest(NodeTest nodeTestObj) {
nodeTests.put(nodeTestObj.getID(), nodeTestObj.getClass());
}
/**
* Given the id of the test, and the match name argument, returns a new instance
* of the given NodeTest, otherwise throws an exception if not available.
* @throws Exception
*/
public NodeTest getNodeTest(String id, String matchName) throws Exception {
NodeTest test = (NodeTest) nodeTests.get(id).getConstructor(String.class).newInstance(matchName);
return test;
}
}