/*
 * Copyright 2014 Global Biodiversity Information Facility (GBIF)
 *
 * Licensed 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 org.gbif.nameparser.api;

/**
 * Enumeration representing the different nomenclatoral codes found in biology for scientific names.
 * <p/>
 * Nomenclature codes or codes of nomenclature are the various rulebooks that govern biological taxonomic
 * nomenclature, each in their own broad field of organisms.
 * To an end-user who only deals with names of species, with some awareness that species are assignable to
 * families, it may not be noticeable that there is more than one code, but beyond this basic level these are rather
 * different in the way they work.
 *
 * @see <a href="http://en.wikipedia.org/wiki/Nomenclature_codes">Nomenclature codes (Wikipedia)</a>
 */
public enum NomCode {
  
  BACTERIAL("ICNP",
      "International Code of Nomenclature of Prokaryotes",
      "https://doi.org/10.1099/ijsem.0.000778"),
  BOTANICAL("ICN",
      "International Code of Nomenclature for algae, fungi, and plants",
      "https://www.iapt-taxon.org/nomen/main.php"),
  CULTIVARS("ICNCP",
      "International Code of Nomenclature for Cultivated Plants",
      "https://www.ishs.org/scripta-horticulturae/international-code-nomenclature-cultivated-plants-ninth-edition"),
  VIRUS("ICVCN",
      "International Code of Virus Classifications and Nomenclature",
      "https://talk.ictvonline.org/information/w/ictv-information/383/ictv-code"),
  ZOOLOGICAL("ICZN",
      "International Code of Zoological Nomenclature",
      "http://www.iczn.org/code");
  
  private final String title;
  private final String acronym;
  private final String link;
  
  NomCode(String acronym, String title, String link) {
    this.acronym = acronym;
    this.link = link;
    this.title = title;
  }
  
  public String getAcronym() {
    return acronym;
  }
  
  public String getLink() {
    return link;
  }
  
  public String getTitle() {
    return title;
  }
  
}

@@ -658,16 +658,38 @@
 r.api;%0A%0A
+import java.net.URI;%0A%0A
 /**%0A * E
@@ -1364,16 +1364,21 @@
 CTERIAL(
+'P', 
 %22ICNP%22,%0A
@@ -1497,16 +1497,21 @@
 TANICAL(
+'B', 
 %22ICN%22,%0A 
@@ -1646,16 +1646,21 @@
 LTIVARS(
+'C', 
 %22ICNCP%22,
@@ -1851,16 +1851,21 @@
   VIRUS(
+'V', 
 %22ICVCN%22,
@@ -2031,16 +2031,21 @@
 LOGICAL(
+'Z', 
 %22ICZN%22,%0A
@@ -2167,16 +2167,50 @@
  title;%0A
+  private final Character abbrev;%0A
   privat
@@ -2249,22 +2249,19 @@
 e final 
-String
+URI
  link;%0A 
@@ -2272,16 +2272,34 @@
 NomCode(
+Character abbrev, 
 String a
@@ -2331,24 +2331,50 @@
 ing link) %7B%0A
+    this.abbrev = abbrev;%0A
     this.acr
@@ -2405,20 +2405,32 @@
 .link = 
+URI.create(
 link
+)
 ;%0A    th
@@ -2447,26 +2447,81 @@
  title;%0A  %7D%0A
+%0A
   
+public Character getAbbrev() %7B%0A    return abbrev;%0A  %7D%0A
 %0A  public St
@@ -2572,30 +2572,27 @@
   %0A  public 
-String
+URI
  getLink() %7B

Add NomCode.abbrev