[ 
https://issues.apache.org/jira/browse/OPENNLP-1413?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17649495#comment-17649495
 ] 

ASF GitHub Bot commented on OPENNLP-1413:
-----------------------------------------

kinow commented on code in PR #459:
URL: https://github.com/apache/opennlp/pull/459#discussion_r1052679956


##########
opennlp-tools/src/main/java/opennlp/tools/util/DownloadUtil.java:
##########
@@ -50,68 +45,81 @@ public enum ModelType {
     CHUNKER("chunker"),
     PARSER("parser-chunking");
 
-    private String name;
+    private final String name;
 
     ModelType(String name) {
       this.name = name;
     }
   }
 
-  private static final String baseUrl = "https://dlcdn.apache.org/opennlp/";;
+  private static final String BASE_URL = "https://dlcdn.apache.org/opennlp/";;
+  private static final String MODELS_UD_MODELS_1_0 = "models/ud-models-1.0/";
 
-  public static Map<String, Map<ModelType, String>> available_models = new 
HashMap<>();
+  public static final Map<String, Map<ModelType, String>> available_models = 
new HashMap<>();
 
   static {
 
     final Map<ModelType, String> frenchModels = new HashMap<>();
     frenchModels.put(ModelType.SENTENCE_DETECTOR,
-        baseUrl + 
"models/ud-models-1.0/opennlp-1.0-1.9.3fr-ud-ftb-sentence-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-1.0-1.9.3fr-ud-ftb-sentence-1.0-1.9.3.bin");
     frenchModels.put(ModelType.POS,
-        baseUrl + "models/ud-models-1.0/opennlp-fr-ud-ftb-pos-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-fr-ud-ftb-pos-1.0-1.9.3.bin");
     frenchModels.put(ModelType.TOKENIZER,
-        baseUrl + 
"models/ud-models-1.0/opennlp-en-ud-ewt-tokens-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-en-ud-ewt-tokens-1.0-1.9.3.bin");
     available_models.put("fr", frenchModels);
 
     final Map<ModelType, String> germanModels = new HashMap<>();
     germanModels.put(ModelType.SENTENCE_DETECTOR,
-        baseUrl + 
"models/ud-models-1.0/opennlp-de-ud-gsd-sentence-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-de-ud-gsd-sentence-1.0-1.9.3.bin");
     germanModels.put(ModelType.POS,
-        baseUrl + "models/ud-models-1.0/opennlp-de-ud-gsd-pos-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-de-ud-gsd-pos-1.0-1.9.3.bin");
     germanModels.put(ModelType.TOKENIZER,
-        baseUrl + 
"models/ud-models-1.0/opennlp-de-ud-gsd-tokens-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-de-ud-gsd-tokens-1.0-1.9.3.bin");
     available_models.put("de", germanModels);
 
     final Map<ModelType, String> englishModels = new HashMap<>();
     englishModels.put(ModelType.SENTENCE_DETECTOR,
-        baseUrl + 
"models/ud-models-1.0/opennlp-en-ud-ewt-sentence-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-en-ud-ewt-sentence-1.0-1.9.3.bin");
     englishModels.put(ModelType.POS,
-        baseUrl + "models/ud-models-1.0/opennlp-en-ud-ewt-pos-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-en-ud-ewt-pos-1.0-1.9.3.bin");
     englishModels.put(ModelType.TOKENIZER,
-        baseUrl + 
"models/ud-models-1.0/opennlp-en-ud-ewt-tokens-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-en-ud-ewt-tokens-1.0-1.9.3.bin");
     available_models.put("en", englishModels);
 
     final Map<ModelType, String> italianModels = new HashMap<>();
     italianModels.put(ModelType.SENTENCE_DETECTOR,
-        baseUrl + 
"models/ud-models-1.0/opennlp-it-ud-vit-sentence-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-it-ud-vit-sentence-1.0-1.9.3.bin");
     italianModels.put(ModelType.POS,
-        baseUrl + "models/ud-models-1.0/opennlp-it-ud-vit-pos-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-it-ud-vit-pos-1.0-1.9.3.bin");
     italianModels.put(ModelType.TOKENIZER,
-        baseUrl + 
"models/ud-models-1.0/opennlp-it-ud-vit-sentence-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-it-ud-vit-sentence-1.0-1.9.3.bin");
     available_models.put("it", italianModels);
 
     final Map<ModelType, String> dutchModels = new HashMap<>();
     dutchModels.put(ModelType.SENTENCE_DETECTOR,
-        baseUrl + "models/opennlp-nl-ud-alpino-sentence-1.0-1.9.3.bin");
+        BASE_URL + "models/opennlp-nl-ud-alpino-sentence-1.0-1.9.3.bin");
     dutchModels.put(ModelType.POS,
-        baseUrl + 
"models/ud-models-1.0/opennlp-nl-ud-alpino-pos-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-nl-ud-alpino-pos-1.0-1.9.3.bin");
     dutchModels.put(ModelType.TOKENIZER,
-        baseUrl + 
"models/ud-models-1.0/opennlp-nl-ud-alpino-tokens-1.0-1.9.3.bin");
+        BASE_URL + MODELS_UD_MODELS_1_0 + 
"opennlp-nl-ud-alpino-tokens-1.0-1.9.3.bin");
     available_models.put("nl", dutchModels);
 
   }
 
-  public static BaseModel downloadModel(String language, ModelType modelType, 
Class<?> type)
-          throws IOException {
+  /**
+   * Triggers a download for the {@link DownloadUtil.ModelType}

Review Comment:
   Missing period.



##########
opennlp-tools/src/main/java/opennlp/tools/util/DownloadUtil.java:
##########
@@ -144,29 +158,20 @@ public static BaseModel downloadModel(URL url, Class<?> 
type) throws IOException
     final Path localFile = Paths.get(homeDirectory.toString(), filename);
 
     if (!Files.exists(localFile)) {
-
       System.out.println("Downloading model " + url + " to " + localFile);
 
       try (final InputStream in = url.openStream()) {
         Files.copy(in, localFile, StandardCopyOption.REPLACE_EXISTING);
       }
 
       System.out.println("Download complete.");
-
     }
 
-    if (type == TokenizerModel.class) {
-      return new TokenizerModel(localFile);
-    } else if (type == ChunkerModel.class) {
-      return new ChunkerModel(localFile);
-    } else if (type == SentenceModel.class) {
-      return new SentenceModel(localFile);
-    } else if (type == POSModel.class) {
-      return new POSModel(localFile);
-    } else {
-      return new TokenNameFinderModel(localFile);
+    try {
+      return type.getConstructor(Path.class).newInstance(localFile);

Review Comment:
   Or we could provide the constructor as a function, I think, e.g. 
https://www.baeldung.com/java-8-double-colon-operator#1-create-a-new-instance



##########
opennlp-tools/src/main/java/opennlp/tools/util/DownloadUtil.java:
##########
@@ -144,29 +158,20 @@ public static BaseModel downloadModel(URL url, Class<?> 
type) throws IOException
     final Path localFile = Paths.get(homeDirectory.toString(), filename);
 
     if (!Files.exists(localFile)) {
-
       System.out.println("Downloading model " + url + " to " + localFile);
 
       try (final InputStream in = url.openStream()) {
         Files.copy(in, localFile, StandardCopyOption.REPLACE_EXISTING);
       }
 
       System.out.println("Download complete.");
-
     }
 
-    if (type == TokenizerModel.class) {
-      return new TokenizerModel(localFile);
-    } else if (type == ChunkerModel.class) {
-      return new ChunkerModel(localFile);
-    } else if (type == SentenceModel.class) {
-      return new SentenceModel(localFile);
-    } else if (type == POSModel.class) {
-      return new POSModel(localFile);
-    } else {
-      return new TokenNameFinderModel(localFile);
+    try {
+      return type.getConstructor(Path.class).newInstance(localFile);

Review Comment:
   :ok_man: 





> Enhance JavaDoc in opennlp.tools.util package
> ---------------------------------------------
>
>                 Key: OPENNLP-1413
>                 URL: https://issues.apache.org/jira/browse/OPENNLP-1413
>             Project: OpenNLP
>          Issue Type: Improvement
>          Components: Documentation
>    Affects Versions: 2.1.0
>            Reporter: Martin Wiesner
>            Assignee: Martin Wiesner
>            Priority: Minor
>             Fix For: 2.1.1
>
>
> The JavaDoc the _opennlp.tools.util_ package suffers from several 
> inconsistencies and missing descriptions. Moreover, several typos are present 
> that need sanitizing.
> It needs enhancements and/or additions to provide more clarity for readers.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to