*/\r
@XmlAccessorType(XmlAccessType.FIELD)\r
@Entity\r
-public class NomenclaturalCode extends DefinedTermBase {\r
+public class NomenclaturalCode extends DefinedTermBase<NomenclaturalCode> {\r
+ \r
+ /**\r
+ * SerialVersionUID\r
+ */\r
+ private static final long serialVersionUID = -1011240079962589681L;\r
+\r
private static final Logger logger = Logger.getLogger(NomenclaturalCode.class);\r
\r
private static final UUID uuidIcnb = UUID.fromString("ff4b0979-7abf-4b40-95c0-8b8b1e8a4d5e");\r
* @see ViralName#NewInstance(Rank)\r
*/\r
@Transient\r
- public TaxonNameBase getNewTaxonNameInstance(Rank rank){\r
- TaxonNameBase result;\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
return result;\r
}\r
\r
+ /**\r
+ * Creates a new particular {@link TaxonNameBase taxon name} (botanical, zoological,\r
+ * cultivar plant, bacterial or viral name) instance depending on <i>this</i>\r
+ * nomenclature code only containing the given {@link Rank rank}.\r
+ * \r
+ * @param rank the rank of the new taxon name instance\r
+ * @see BotanicalName#NewInstance(Rank)\r
+ * @see ZoologicalName#NewInstance(Rank)\r
+ * @see CultivarPlantName#NewInstance(Rank)\r
+ * @see BacterialName#NewInstance(Rank)\r
+ * @see ViralName#NewInstance(Rank)\r
+ */\r
+ @Transient\r
+ public <T extends TaxonNameBase> Class<? extends T> getCdmClass(){\r
+ Class<? extends T> result;\r
+ if (this.equals(NomenclaturalCode.ICBN())){\r
+ result = (Class<T>)BotanicalName.class;\r
+ }else if (this.equals(NomenclaturalCode.ICZN())){\r
+ result = (Class<T>)ZoologicalName.class;\r
+ }else if (this.equals(NomenclaturalCode.ICNCP())){\r
+ result = (Class<T>)CultivarPlantName.class;\r
+ }else if (this.equals(NomenclaturalCode.ICNB())){\r
+ result = (Class<T>)BacterialName.class;\r
+ }else if (this.equals(NomenclaturalCode.ICVCN())){\r
+ result = (Class<T>)ViralName.class;\r
+ }else {\r
+ logger.warn("Unknown nomenclatural code: " + this.getUuid());\r
+ result = null;\r
+ }\r
+ return result;\r
+ }\r
+ \r
\r
}\r