You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opennlp.apache.org by au...@apache.org on 2012/01/22 21:22:56 UTC

svn commit: r1234594 - in /incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline: ./ chunker/ dictionary/ doccat/ namefind/ parser/ postag/ sentdetect/ tokenizer/

Author: autayeu
Date: Sun Jan 22 20:22:55 2012
New Revision: 1234594

URL: http://svn.apache.org/viewvc?rev=1234594&view=rev
Log:
OPENNLP-402: Improved class hierarchy and naming

Added:
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractBasicCmdLineTool.java   (contents, props changed)
      - copied, changed from r1234481, incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/BaseCLITool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedParamTool.java   (with props)
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/BasicCmdLineTool.java
      - copied, changed from r1234481, incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java
Removed:
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractCLITool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/BaseCLITool.java
Modified:
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractCmdLineTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractConverterTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractEvaluatorTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTrainerTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CLI.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/TypedCmdLineTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerMETool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/dictionary/DictionaryBuilderTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/CensusDictionaryCreatorTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ModelUpdaterTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TaggerModelReplacerTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/DictionaryDetokenizerTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/SimpleTokenizerTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerMETool.java

Copied: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractBasicCmdLineTool.java (from r1234481, incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/BaseCLITool.java)
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractBasicCmdLineTool.java?p2=incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractBasicCmdLineTool.java&p1=incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/BaseCLITool.java&r1=1234481&r2=1234594&rev=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/BaseCLITool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractBasicCmdLineTool.java Sun Jan 22 20:22:55 2012
@@ -18,11 +18,11 @@
 package opennlp.tools.cmdline;
 
 /**
- * Base class for standard tools.
+ * Base class for basic tools.
  */
-public abstract class BaseCLITool extends AbstractCLITool<Class> implements CmdLineTool {
+public abstract class AbstractBasicCmdLineTool extends AbstractCmdLineTool implements BasicCmdLineTool {
 
-  public BaseCLITool() {
-    super(null);
+  public AbstractBasicCmdLineTool() {
+    super();
   }
-}
+}
\ No newline at end of file

Propchange: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractBasicCmdLineTool.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractBasicCmdLineTool.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractCmdLineTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractCmdLineTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractCmdLineTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractCmdLineTool.java Sun Jan 22 20:22:55 2012
@@ -18,29 +18,40 @@
 package opennlp.tools.cmdline;
 
 /**
- * Base interface for command line tools.
+ * Base class for all command line tools.
  */
-public interface AbstractCmdLineTool {
+public abstract class AbstractCmdLineTool implements CmdLineTool {
 
-  /**
-   * Retrieves the name of the training data tool. The name (used as command)
-   * must not contain white spaces.
-   *
-   * @return the name of the command line tool
-   */
-  String getName();
-
-  /**
-   * Retrieves a short description of what the tool does.
-   *
-   * @return a short description of what the tool does
-   */
-  String getShortDescription();
-
-  /**
-   * Retrieves a description on how to use the tool.
-   *
-   * @return a description on how to use the tool
-   */
-  String getHelp();
-}
+  protected AbstractCmdLineTool() {
+  }
+
+  public String getName() {
+    if (getClass().getName().endsWith("Tool")) {
+      return getClass().getSimpleName().substring(0, getClass().getSimpleName().length() - 4);
+    } else {
+      return getClass().getSimpleName();
+    }
+  }
+
+  @SuppressWarnings({"unchecked"})
+  protected <T> String getBasicHelp(Class<T> argProxyInterface) {
+    return getBasicHelp(new Class[]{argProxyInterface});
+  }
+
+  protected <T> String getBasicHelp(Class<T>... argProxyInterfaces) {
+    return "Usage: " + CLI.CMD + " " + getName() + " " +
+        ArgumentParser.createUsage(argProxyInterfaces);
+  }
+
+  protected <T> T validateAndParseParams(String[] args, Class<T> argProxyInterface) {
+    String errorMessage = ArgumentParser.validateArgumentsLoudly(args, argProxyInterface);
+    if (null != errorMessage) {
+      throw new TerminateToolException(1, errorMessage + "\n" + getHelp());
+    }
+    return ArgumentParser.parse(args, argProxyInterface);
+  }
+
+  public String getShortDescription() {
+    return "";
+  }
+}
\ No newline at end of file

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractConverterTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractConverterTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractConverterTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractConverterTool.java Sun Jan 22 20:22:55 2012
@@ -28,7 +28,7 @@ import opennlp.tools.util.ObjectStream;
  * @param <T> class of data sample the tool converts, for example {@link opennlp.tools.postag
  * .POSSample}
  */
-public abstract class AbstractConverterTool<T> extends AbstractTypedTool<T, Class> {
+public abstract class AbstractConverterTool<T> extends AbstractTypedTool<T> {
 
   /**
    * Constructor with type parameter.
@@ -36,7 +36,7 @@ public abstract class AbstractConverterT
    * @param sampleType class of the template parameter
    */
   protected AbstractConverterTool(Class<T> sampleType) {
-    super(sampleType, null);
+    super(sampleType);
   }
 
   public String getShortDescription() {

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractEvaluatorTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractEvaluatorTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractEvaluatorTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractEvaluatorTool.java Sun Jan 22 20:22:55 2012
@@ -22,7 +22,7 @@ import opennlp.tools.util.ObjectStream;
 /**
  * Base class for evaluator tools.
  */
-public class AbstractEvaluatorTool<T, P> extends AbstractTypedTool<T, P> {
+public class AbstractEvaluatorTool<T, P> extends AbstractTypedParamTool<T, P> {
 
   protected P params;
   protected ObjectStreamFactory<T> factory;

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTrainerTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTrainerTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTrainerTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTrainerTool.java Sun Jan 22 20:22:55 2012
@@ -23,7 +23,7 @@ import opennlp.tools.util.TrainingParame
 /**
  * Base class for trainer tools.
  */
-public class AbstractTrainerTool<T, P> extends AbstractTypedTool<T, P> {
+public class AbstractTrainerTool<T, P> extends AbstractTypedParamTool<T, P> {
 
   protected P params;
   protected TrainingParameters mlParams;

Added: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedParamTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedParamTool.java?rev=1234594&view=auto
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedParamTool.java (added)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedParamTool.java Sun Jan 22 20:22:55 2012
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package opennlp.tools.cmdline;
+
+/**
+ * Base class for tools which take additional parameters. For example, trainers or evaluators.
+ */
+public abstract class AbstractTypedParamTool<T, P> extends AbstractTypedTool<T> {
+
+  /**
+   * variable to access the parameters
+   */
+  protected final Class<P> paramsClass;
+
+  /**
+   * Constructor with type parameters.
+   *
+   * @param sampleType class of the template parameter
+   * @param paramsClass interface with parameters
+   */
+  protected AbstractTypedParamTool(Class<T> sampleType, Class<P> paramsClass) {
+    super(sampleType);
+    this.paramsClass = paramsClass;
+  }
+
+  @SuppressWarnings({"unchecked"})
+  public String getHelp(String format) {
+    if ("".equals(format) || StreamFactoryRegistry.DEFAULT_FORMAT.equals(format)) {
+      return getBasicHelp(paramsClass,
+          StreamFactoryRegistry.getFactory(type, StreamFactoryRegistry.DEFAULT_FORMAT)
+              .<P>getParameters());
+    } else {
+      ObjectStreamFactory<T> factory = StreamFactoryRegistry.getFactory(type, format);
+      if (null == factory) {
+        throw new TerminateToolException(1, "Format " + format + " is not found.\n" + getHelp());
+      }
+      return "Usage: " + CLI.CMD + " " + getName() + "." + format + " " +
+          ArgumentParser.createUsage(paramsClass, factory.<P>getParameters());
+    }
+  }
+}

Propchange: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedParamTool.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedTool.java Sun Jan 22 20:22:55 2012
@@ -20,26 +20,25 @@ package opennlp.tools.cmdline;
 import java.util.Map;
 
 /**
- * Base class for tools which work with data of some type T.
+ * Base class for tools which support processing of samples of some type T
+ * coming from a stream of a certain format.
  */
-public abstract class AbstractTypedTool<T, P>
-    extends AbstractCLITool<P> implements TypedCmdLineTool {
+public abstract class AbstractTypedTool<T>
+    extends AbstractCmdLineTool implements TypedCmdLineTool {
 
   /**
    * variable to access the type of the generic parameter.
    */
-  protected Class<T> type;
+  protected final Class<T> type;
 
   /**
    * Constructor with type parameters.
    *
    * @param sampleType class of the template parameter
-   * @param paramsClass interface with parameters
    */
-  protected AbstractTypedTool(Class<T> sampleType, Class<P> paramsClass) {
-    super(paramsClass);
+  protected AbstractTypedTool(Class<T> sampleType) {
+    super();
     this.type = sampleType;
-    this.paramsClass = paramsClass;
   }
 
   /**
@@ -111,20 +110,4 @@ public abstract class AbstractTypedTool<
   public String getHelp() {
     return getHelp("");
   }
-
-  @SuppressWarnings({"unchecked"})
-  public String getHelp(String format) {
-    if ("".equals(format) || StreamFactoryRegistry.DEFAULT_FORMAT.equals(format)) {
-      return getBasicHelp(paramsClass,
-          StreamFactoryRegistry.getFactory(type, StreamFactoryRegistry.DEFAULT_FORMAT)
-              .<P>getParameters());
-    } else {
-      ObjectStreamFactory<T> factory = StreamFactoryRegistry.getFactory(type, format);
-      if (null == factory) {
-        throw new TerminateToolException(1, "Format " + format + " is not found.\n" + getHelp());
-      }
-      return "Usage: " + CLI.CMD + " " + getName() + "." + format + " " +
-        ArgumentParser.createUsage(paramsClass, factory.<P>getParameters());
-    }
-  }
 }
\ No newline at end of file

Copied: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/BasicCmdLineTool.java (from r1234481, incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java)
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/BasicCmdLineTool.java?p2=incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/BasicCmdLineTool.java&p1=incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java&r1=1234481&r2=1234594&rev=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/BasicCmdLineTool.java Sun Jan 22 20:22:55 2012
@@ -18,11 +18,11 @@
 package opennlp.tools.cmdline;
 
 /**
- * A tool which can be executed from the command line.
+ * A simple tool which can be executed from the command line.
  * <p>
  * <b>Note:</b> Do not use this class, internal use only!
  */
-public interface CmdLineTool extends AbstractCmdLineTool {
+public interface BasicCmdLineTool extends CmdLineTool {
 
   /**
    * Executes the tool with the given parameters.

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CLI.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CLI.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CLI.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CLI.java Sun Jan 22 20:22:55 2012
@@ -67,12 +67,12 @@ public final class CLI {
   
   public static final String CMD = "opennlp";
   
-  private static Map<String, AbstractCmdLineTool> toolLookupMap;
+  private static Map<String, CmdLineTool> toolLookupMap;
   
   static {
-    toolLookupMap = new LinkedHashMap<String, AbstractCmdLineTool>();
+    toolLookupMap = new LinkedHashMap<String, CmdLineTool>();
     
-    List<AbstractCmdLineTool> tools = new LinkedList<AbstractCmdLineTool>();
+    List<CmdLineTool> tools = new LinkedList<CmdLineTool>();
     
     // Document Categorizer
     tools.add(new DoccatTool());
@@ -128,7 +128,7 @@ public final class CLI {
     tools.add(new CheckModelUpdaterTool()); // re-trains  build model
     tools.add(new TaggerModelReplacerTool());
     
-    for (AbstractCmdLineTool tool : tools) {
+    for (CmdLineTool tool : tools) {
       toolLookupMap.put(tool.getName(), tool);
     }
     
@@ -156,7 +156,7 @@ public final class CLI {
     }
     numberOfSpaces = numberOfSpaces + 4;
     
-    for (AbstractCmdLineTool tool : toolLookupMap.values()) {
+    for (CmdLineTool tool : toolLookupMap.values()) {
       
       System.out.print("  " + tool.getName());
       
@@ -190,7 +190,7 @@ public final class CLI {
       formatName = toolName.substring(idx + 1);
       toolName = toolName.substring(0, idx);
     }
-    AbstractCmdLineTool tool = toolLookupMap.get(toolName);
+    CmdLineTool tool = toolLookupMap.get(toolName);
     
     try {
       if (null == tool) {
@@ -201,7 +201,7 @@ public final class CLI {
           0 < toolArguments.length && "help".equals(toolArguments[0])) {
           if (tool instanceof TypedCmdLineTool) {
             System.out.println(((TypedCmdLineTool) tool).getHelp(formatName));
-          } else if (tool instanceof CmdLineTool) {
+          } else if (tool instanceof BasicCmdLineTool) {
             System.out.println(tool.getHelp());
           }
 
@@ -210,9 +210,9 @@ public final class CLI {
 
       if (tool instanceof TypedCmdLineTool) {
         ((TypedCmdLineTool) tool).run(formatName, toolArguments);
-      } else if (tool instanceof CmdLineTool) {
+      } else if (tool instanceof BasicCmdLineTool) {
         if (-1 == idx) {
-          ((CmdLineTool) tool).run(toolArguments);
+          ((BasicCmdLineTool) tool).run(toolArguments);
         } else {
           throw new TerminateToolException(1, "Tool " + toolName + " does not support formats.");
         }

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java Sun Jan 22 20:22:55 2012
@@ -1,33 +1,46 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package opennlp.tools.cmdline;
-
-/**
- * A tool which can be executed from the command line.
- * <p>
- * <b>Note:</b> Do not use this class, internal use only!
- */
-public interface CmdLineTool extends AbstractCmdLineTool {
-
-  /**
-   * Executes the tool with the given parameters.
-   * 
-   * @param args arguments
-   */
-  void run(String args[]);
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package opennlp.tools.cmdline;
+
+/**
+ * Base interface for all command line tools.
+ */
+public interface CmdLineTool {
+
+  /**
+   * Retrieves the name of the training data tool. The name (used as command)
+   * must not contain white spaces.
+   *
+   * @return the name of the command line tool
+   */
+  String getName();
+
+  /**
+   * Retrieves a short description of what the tool does.
+   *
+   * @return a short description of what the tool does
+   */
+  String getShortDescription();
+
+  /**
+   * Retrieves a description on how to use the tool.
+   *
+   * @return a description on how to use the tool
+   */
+  String getHelp();
+}

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/TypedCmdLineTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/TypedCmdLineTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/TypedCmdLineTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/TypedCmdLineTool.java Sun Jan 22 20:22:55 2012
@@ -18,9 +18,10 @@
 package opennlp.tools.cmdline;
 
 /**
- * Interface for tools which support formats and processing of samples.
+ * Interface for tools which support processing of samples of some type
+ * coming from a stream of a certain format.
  */
-public interface TypedCmdLineTool extends AbstractCmdLineTool {
+public interface TypedCmdLineTool extends CmdLineTool {
 
   /**
    * Executes the tool with the given parameters.

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerMETool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerMETool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerMETool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerMETool.java Sun Jan 22 20:22:55 2012
@@ -25,7 +25,7 @@ import opennlp.tools.chunker.ChunkSample
 import opennlp.tools.chunker.ChunkerME;
 import opennlp.tools.chunker.ChunkerModel;
 import opennlp.tools.chunker.DefaultChunkerSequenceValidator;
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.CLI;
 import opennlp.tools.cmdline.CmdLineUtil;
 import opennlp.tools.cmdline.PerformanceMonitor;
@@ -34,7 +34,7 @@ import opennlp.tools.util.InvalidFormatE
 import opennlp.tools.util.ObjectStream;
 import opennlp.tools.util.PlainTextByLineStream;
 
-public class ChunkerMETool extends BaseCLITool {
+public class ChunkerMETool extends AbstractBasicCmdLineTool {
 
   public String getShortDescription() {
     return "learnable chunker";

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/dictionary/DictionaryBuilderTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/dictionary/DictionaryBuilderTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/dictionary/DictionaryBuilderTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/dictionary/DictionaryBuilderTool.java Sun Jan 22 20:22:55 2012
@@ -25,12 +25,12 @@ import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.nio.charset.Charset;
 
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.CmdLineUtil;
 import opennlp.tools.cmdline.TerminateToolException;
 import opennlp.tools.dictionary.Dictionary;
 
-public class DictionaryBuilderTool extends BaseCLITool {
+public class DictionaryBuilderTool extends AbstractBasicCmdLineTool {
 
   interface Params extends DictionaryBuilderParams {
   }

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatTool.java Sun Jan 22 20:22:55 2012
@@ -21,7 +21,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
 
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.CLI;
 import opennlp.tools.cmdline.CmdLineUtil;
 import opennlp.tools.cmdline.PerformanceMonitor;
@@ -32,7 +32,7 @@ import opennlp.tools.util.ObjectStream;
 import opennlp.tools.util.ParagraphStream;
 import opennlp.tools.util.PlainTextByLineStream;
 
-public class DoccatTool extends BaseCLITool {
+public class DoccatTool extends AbstractBasicCmdLineTool {
 
   public String getShortDescription() {
     return "learnable document categorizer";

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/CensusDictionaryCreatorTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/CensusDictionaryCreatorTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/CensusDictionaryCreatorTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/CensusDictionaryCreatorTool.java Sun Jan 22 20:22:55 2012
@@ -24,7 +24,7 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.nio.charset.Charset;
 
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.ArgumentParser.OptionalParameter;
 import opennlp.tools.cmdline.ArgumentParser.ParameterDescription;
 import opennlp.tools.cmdline.CmdLineUtil;
@@ -42,7 +42,7 @@ import opennlp.tools.util.StringList;
  * <br>
  * <a href="http://www.census.gov/genealogy/names/names_files.html">www.census.gov</a>
  */
-public class CensusDictionaryCreatorTool extends BaseCLITool {
+public class CensusDictionaryCreatorTool extends AbstractBasicCmdLineTool {
 
   /**
    * Create a list of expected parameters.

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderTool.java Sun Jan 22 20:22:55 2012
@@ -24,7 +24,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.CLI;
 import opennlp.tools.cmdline.CmdLineUtil;
 import opennlp.tools.cmdline.PerformanceMonitor;
@@ -37,7 +37,7 @@ import opennlp.tools.util.ObjectStream;
 import opennlp.tools.util.PlainTextByLineStream;
 import opennlp.tools.util.Span;
 
-public final class TokenNameFinderTool extends BaseCLITool {
+public final class TokenNameFinderTool extends AbstractBasicCmdLineTool {
 
   public String getShortDescription() {
     return "learnable name finder";

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ModelUpdaterTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ModelUpdaterTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ModelUpdaterTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ModelUpdaterTool.java Sun Jan 22 20:22:55 2012
@@ -20,7 +20,7 @@ package opennlp.tools.cmdline.parser;
 import java.io.File;
 import java.io.IOException;
 
-import opennlp.tools.cmdline.AbstractTypedTool;
+import opennlp.tools.cmdline.AbstractTypedParamTool;
 import opennlp.tools.cmdline.ArgumentParser;
 import opennlp.tools.cmdline.CmdLineUtil;
 import opennlp.tools.cmdline.ObjectStreamFactory;
@@ -34,7 +34,7 @@ import opennlp.tools.util.ObjectStream;
  * Abstract base class for tools which update the parser model.
  */
 abstract class ModelUpdaterTool
-    extends AbstractTypedTool<Parse, ModelUpdaterTool.ModelUpdaterParams> {
+    extends AbstractTypedParamTool<Parse, ModelUpdaterTool.ModelUpdaterParams> {
   
   interface ModelUpdaterParams extends TrainingToolParams {
   }

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTool.java Sun Jan 22 20:22:55 2012
@@ -26,7 +26,7 @@ import java.util.List;
 import java.util.StringTokenizer;
 import java.util.regex.Pattern;
 
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.CLI;
 import opennlp.tools.cmdline.CmdLineUtil;
 import opennlp.tools.cmdline.PerformanceMonitor;
@@ -38,7 +38,7 @@ import opennlp.tools.util.ObjectStream;
 import opennlp.tools.util.PlainTextByLineStream;
 import opennlp.tools.util.Span;
 
-public final class ParserTool extends BaseCLITool {
+public final class ParserTool extends AbstractBasicCmdLineTool {
 
   public String getShortDescription() {
     return "performs full syntactic parsing";

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TaggerModelReplacerTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TaggerModelReplacerTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TaggerModelReplacerTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TaggerModelReplacerTool.java Sun Jan 22 20:22:55 2012
@@ -19,7 +19,7 @@ package opennlp.tools.cmdline.parser;
 
 import java.io.File;
 
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.CLI;
 import opennlp.tools.cmdline.CmdLineUtil;
 import opennlp.tools.cmdline.postag.POSModelLoader;
@@ -27,7 +27,7 @@ import opennlp.tools.parser.ParserModel;
 import opennlp.tools.postag.POSModel;
 
 // user should train with the POS tool
-public final class TaggerModelReplacerTool extends BaseCLITool {
+public final class TaggerModelReplacerTool extends AbstractBasicCmdLineTool {
 
   public String getShortDescription() {
     return "replaces the tagger model in a parser model";

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerTool.java Sun Jan 22 20:22:55 2012
@@ -21,7 +21,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
 
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.CLI;
 import opennlp.tools.cmdline.CmdLineUtil;
 import opennlp.tools.cmdline.PerformanceMonitor;
@@ -32,7 +32,7 @@ import opennlp.tools.tokenize.Whitespace
 import opennlp.tools.util.ObjectStream;
 import opennlp.tools.util.PlainTextByLineStream;
 
-public final class POSTaggerTool extends BaseCLITool {
+public final class POSTaggerTool extends AbstractBasicCmdLineTool {
 
   public String getShortDescription() {
     return "learnable part of speech tagger";

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorTool.java Sun Jan 22 20:22:55 2012
@@ -21,7 +21,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
 
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.CLI;
 import opennlp.tools.cmdline.CmdLineUtil;
 import opennlp.tools.cmdline.PerformanceMonitor;
@@ -34,7 +34,7 @@ import opennlp.tools.util.PlainTextByLin
 /**
  * A sentence detector which uses a maxent model to predict the sentences.
  */
-public final class SentenceDetectorTool extends BaseCLITool {
+public final class SentenceDetectorTool extends AbstractBasicCmdLineTool {
 
   public String getShortDescription() {
     return "learnable sentence detector";

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/DictionaryDetokenizerTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/DictionaryDetokenizerTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/DictionaryDetokenizerTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/DictionaryDetokenizerTool.java Sun Jan 22 20:22:55 2012
@@ -21,7 +21,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
 
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.CLI;
 import opennlp.tools.cmdline.CmdLineUtil;
 import opennlp.tools.cmdline.PerformanceMonitor;
@@ -32,7 +32,7 @@ import opennlp.tools.tokenize.Whitespace
 import opennlp.tools.util.ObjectStream;
 import opennlp.tools.util.PlainTextByLineStream;
 
-public final class DictionaryDetokenizerTool extends BaseCLITool {
+public final class DictionaryDetokenizerTool extends AbstractBasicCmdLineTool {
 
   public String getHelp() {
     return "Usage: " + CLI.CMD + " " + getName() + " detokenizerDictionary";

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/SimpleTokenizerTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/SimpleTokenizerTool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/SimpleTokenizerTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/SimpleTokenizerTool.java Sun Jan 22 20:22:55 2012
@@ -17,10 +17,10 @@
 
 package opennlp.tools.cmdline.tokenizer;
 
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.CLI;
 
-public final class SimpleTokenizerTool extends BaseCLITool {
+public final class SimpleTokenizerTool extends AbstractBasicCmdLineTool {
 
   public String getShortDescription() {
     return "character class tokenizer";

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerMETool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerMETool.java?rev=1234594&r1=1234593&r2=1234594&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerMETool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerMETool.java Sun Jan 22 20:22:55 2012
@@ -19,11 +19,11 @@ package opennlp.tools.cmdline.tokenizer;
 
 import java.io.File;
 
-import opennlp.tools.cmdline.BaseCLITool;
+import opennlp.tools.cmdline.AbstractBasicCmdLineTool;
 import opennlp.tools.cmdline.CLI;
 import opennlp.tools.tokenize.TokenizerModel;
 
-public final class TokenizerMETool extends BaseCLITool {
+public final class TokenizerMETool extends AbstractBasicCmdLineTool {
 
   public String getShortDescription() {
     return "learnable tokenizer";