(no commit message)
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / name / NomenclaturalCode.java
index 172ca1855e99ee02fe938ad94bd6b0a9f6f2035c..d022870c0ae080f31a55a750d35b095266f730c8 100644 (file)
@@ -12,6 +12,10 @@ package eu.etaxonomy.cdm.model.name;
 import java.util.UUID;\r
 \r
 import javax.persistence.Entity;\r
+import javax.persistence.Transient;\r
+import javax.xml.bind.annotation.XmlAccessType;\r
+import javax.xml.bind.annotation.XmlAccessorType;\r
+import javax.xml.bind.annotation.XmlType;\r
 \r
 import org.apache.log4j.Logger;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
@@ -22,6 +26,7 @@ import eu.etaxonomy.cdm.model.common.DefinedTermBase;
  * @created 19.05.2008\r
  * @version 1.0\r
  */\r
+@XmlAccessorType(XmlAccessType.FIELD)\r
 @Entity\r
 public class NomenclaturalCode extends DefinedTermBase {\r
        private static final Logger logger = Logger.getLogger(NomenclaturalCode.class);\r
@@ -92,4 +97,25 @@ public class NomenclaturalCode extends DefinedTermBase {
                return getByUuid(uuidViral);\r
        }\r
        \r
+       @Transient\r
+       public TaxonNameBase getNewTaxonNameInstance(Rank rank){\r
+               TaxonNameBase result;\r
+               if (this.equals(NomenclaturalCode.ICBN())){\r
+                       result = BotanicalName.NewInstance(rank);\r
+               }else if (this.equals(NomenclaturalCode.ICZN())){\r
+                       result = ZoologicalName.NewInstance(rank);\r
+               }else if (this.equals(NomenclaturalCode.ICNCP())){\r
+                       result = CultivarPlantName.NewInstance(rank);\r
+               }else if (this.equals(NomenclaturalCode.BACTERIOLOGICAL())){\r
+                       result = BacterialName.NewInstance(rank);\r
+               }else if (this.equals(NomenclaturalCode.VIRAL())){\r
+                       result = ViralName.NewInstance(rank);\r
+               }else {\r
+                       logger.warn("Unknown nomenclatural code: " + this.getUuid());\r
+                       result = null;\r
+               }\r
+               return result;\r
+       }\r
+       \r
+       \r
 }\r