package uk.ac.rhul.cs.cl1.merging; import uk.ac.rhul.cs.cl1.TaskMonitor; import uk.ac.rhul.cs.cl1.TaskMonitorSupport; /** * Abstract node set merger from which concrete node set mergers will derive. * * @author tamas */ public abstract class AbstractNodeSetMerger implements NodeSetMerger, TaskMonitorSupport { /** * The task monitor this node set merger will report its progress to. */ protected TaskMonitor taskMonitor; /** * Returns the task monitor this merger reports its progress to. */ public TaskMonitor getTaskMonitor() { return this.taskMonitor; } /** * Sets the task monitor to which the algorithm will report its * progress. * * @param monitor the task monitor */ public void setTaskMonitor(TaskMonitor monitor) { this.taskMonitor = monitor; } /** * Constructs a nodeset merger from a string specification. */ public static AbstractNodeSetMerger fromString(String spec) throws InstantiationException { if (spec != null) { if (spec.equals("single")) return new SinglePassNodeSetMerger(); else if (spec.equals("multi")) return new MultiPassNodeSetMerger(); else if (spec.equals("none")) return new DummyNodeSetMerger(); else if (spec.equals("dummy")) return new DummyNodeSetMerger(); } throw new InstantiationException("unknown nodeset merger: " + spec); } }