import eu.etaxonomy.cdm.io.common.Source;\r
import eu.etaxonomy.cdm.io.common.mapping.out.DbExtensionMapper;\r
import eu.etaxonomy.cdm.io.common.mapping.out.DbObjectMapper;\r
+import eu.etaxonomy.cdm.io.common.mapping.out.DbStringMapper;\r
import eu.etaxonomy.cdm.io.common.mapping.out.IdMapper;\r
import eu.etaxonomy.cdm.io.common.mapping.out.MethodMapper;\r
import eu.etaxonomy.cdm.io.common.mapping.out.ObjectChangeMapper;\r
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
-import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
\r
\r
mapping.addMapper(ObjectChangeMapper.NewInstance(TaxonBase.class, TaxonNameBase.class, "Name"));\r
- mapping.addMapper(MethodMapper.NewInstance("GenusOrUninomial", this, TaxonNameBase.class ));\r
- mapping.addMapper(MethodMapper.NewInstance("InfraGenericEpithet", this, TaxonNameBase.class));\r
- mapping.addMapper(MethodMapper.NewInstance("SpecificEpithet", this, TaxonNameBase.class));\r
- mapping.addMapper(MethodMapper.NewInstance("InfraSpecificEpithet", this, TaxonNameBase.class));\r
- mapping.addMapper(MethodMapper.NewInstance("WebSearchName", this, TaxonNameBase.class));\r
+ mapping.addMapper(DbStringMapper.NewInstance("GenusOrUninomial", "GenusOrUninomial"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("InfraGenericEpithet", "InfraGenericEpithet"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("SpecificEpithet", "SpecificEpithet"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("InfraSpecificEpithet", "InfraSpecificEpithet"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("NameCache", "WebSearchName"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("TitleCache", "FullName"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("NomenclaturalMicroReference", "NomRefString"));\r
mapping.addMapper(MethodMapper.NewInstance("WebShowName", this, TaxonNameBase.class));\r
- mapping.addMapper(MethodMapper.NewInstance("FullName", this, TaxonNameBase.class));\r
- mapping.addMapper(MethodMapper.NewInstance("NomRefString", this, TaxonNameBase.class));\r
\r
// DisplayName\r
extensionType = (ExtensionType)getTermService().find(ErmsTransformer.uuidDisplayName); \r
\r
mapping.addMapper(MethodMapper.NewInstance("NameStatusFk", this, TaxonNameBase.class));\r
mapping.addMapper(MethodMapper.NewInstance("NameStatusCache", this, TaxonNameBase.class));\r
- mapping.addMapper(MethodMapper.NewInstance("TypeFullnameCache", this, TaxonNameBase.class));\r
-\r
+ mapping.addMapper(MethodMapper.NewInstance("TypeFullnameCache", this, TaxonNameBase.class));\r
\r
mapping.addMapper(MethodMapper.NewInstance("TypeDesignationStatusFk", this, TaxonNameBase.class));\r
mapping.addMapper(MethodMapper.NewInstance("TypeDesignationStatusCache", this, TaxonNameBase.class));\r
speciesExpertUserIdExtensionType = (ExtensionType)getTermService().find(PesiTransformer.speciesExpertUserIdUuid);\r
\r
//Export Taxa..\r
- success &= doPhaseOne(state, mapping);\r
+ success &= doPhase01(state, mapping);\r
\r
// 2nd Round: Add ParentTaxonFk, TreeIndex to each Taxon\r
- success &= doPhaseTwo(state);\r
+ success &= doPhase02(state);\r
\r
//PHASE 3: Add Rank data, KingdomFk, TypeNameFk, expertFk and speciesExpertFk...\r
- success &= doPhaseThree(state);\r
+ success &= doPhase03(state);\r
\r
//"PHASE 4: Creating Inferred Synonyms...\r
- success &= doPhaseFour(state, mapping);\r
+ success &= doPhase04(state, mapping);\r
\r
logger.info("*** Finished Making " + pluralString + " ..." + getSuccessString(success));\r
\r
rankTypeExpertsUpdateStmt = connection.prepareStatement(sql);\r
}\r
\r
- private boolean doPhaseOne(PesiExportState state, PesiExportMapping mapping) throws SQLException {\r
+ private boolean doPhase01(PesiExportState state, PesiExportMapping mapping) throws SQLException {\r
int count = 0;\r
int pastCount = 0;\r
List<TaxonBase> list;\r
// Start transaction\r
TransactionStatus txStatus = startTransaction(true);\r
logger.info("Started new transaction. Fetching some " + pluralString + " (max: " + limit + ") ...");\r
- while ((list = getTaxonService().list(null, limit, count, null, null)).size() > 0) {\r
+ \r
+ \r
+ int partitionCount = 0;\r
+ while ((list = getNextTaxonPartition(null, limit, partitionCount++)).size() > 0 ) {\r
\r
logger.info("Fetched " + list.size() + " " + pluralString + ". Exporting...");\r
for (TaxonBase<?> taxon : list) {\r
\r
TaxonNameBase<?,?> taxonName = taxon.getName();\r
\r
- // Check whether some rules are violated\r
- nomenclaturalCode = PesiTransformer.getNomenclaturalCode(taxonName);\r
- String genusOrUninomial = getGenusOrUninomial(taxonName);\r
- String specificEpithet = getSpecificEpithet(taxonName);\r
- String infraSpecificEpithet = getInfraSpecificEpithet(taxonName);\r
- String infraGenericEpithet = getInfraGenericEpithet(taxonName);\r
- Integer rank = getRankFk(taxonName, nomenclaturalCode);\r
- \r
- if (rank == null) {\r
- logger.error("Rank was not determined: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
- } else {\r
- \r
- // Check whether infraGenericEpithet is set correctly\r
- // 1. Childs of an accepted taxon of rank subgenus that are accepted taxa of rank species have to have an infraGenericEpithet\r
- // 2. Grandchilds of an accepted taxon of rank subgenus that are accepted taxa of rank subspecies have to have an infraGenericEpithet\r
- \r
- int ancestorLevel = 0;\r
- if (taxonName.getRank().equals(Rank.SUBSPECIES())) {\r
- // The accepted taxon two rank levels above should be of rank subgenus\r
- ancestorLevel = 2;\r
- }\r
- if (taxonName.getRank().equals(Rank.SPECIES())) {\r
- // The accepted taxon one rank level above should be of rank subgenus\r
- ancestorLevel = 1;\r
- }\r
- if (ancestorLevel > 0) {\r
- if (ancestorOfSpecificRank(taxon, ancestorLevel, Rank.SUBGENUS())) {\r
- // The child (species or subspecies) of this parent (subgenus) has to have an infraGenericEpithet\r
- if (infraGenericEpithet == null) {\r
- logger.warn("InfraGenericEpithet does not exist even though it should for: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
- // maybe the taxon could be named here\r
- }\r
- }\r
- }\r
- \r
- if (infraGenericEpithet == null && rank.intValue() == 190) {\r
- logger.warn("InfraGenericEpithet was not determined although it should exist for rank 190: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
- }\r
- if (specificEpithet != null && rank.intValue() < 220) {\r
- logger.warn("SpecificEpithet was determined for rank " + rank + " although it should only exist for ranks higher or equal to 220: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
- }\r
- if (infraSpecificEpithet != null && rank.intValue() < 230) {\r
- String message = "InfraSpecificEpithet '" +infraSpecificEpithet + "' was determined for rank " + rank + " although it should only exist for ranks higher or equal to 230: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")"; \r
- if (StringUtils.isNotBlank(infraSpecificEpithet)){\r
- logger.warn(message);\r
- }else{\r
- logger.warn(message);\r
- }\r
- }\r
- }\r
- if (infraSpecificEpithet != null && specificEpithet == null) {\r
- logger.error("An infraSpecificEpithet was determined, but a specificEpithet was not determined: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
- }\r
- if (genusOrUninomial == null) {\r
- logger.error("GenusOrUninomial was not determined: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
- }\r
+ validatePhaseOne(taxon, taxonName);\r
\r
}\r
\r
return success;\r
}\r
\r
+\r
+ private void validatePhaseOne(TaxonBase<?> taxon, TaxonNameBase<?, ?> taxonName) {\r
+ // Check whether some rules are violated\r
+ nomenclaturalCode = PesiTransformer.getNomenclaturalCode(taxonName);\r
+ if (! taxonName.isInstanceOf(NonViralName.class)){\r
+ logger.warn("Viral names can't be validated");\r
+ }\r
+ NonViralName<?> nvn = CdmBase.deproxy(taxonName, NonViralName.class);\r
+ String genusOrUninomial = nvn.getGenusOrUninomial();\r
+ String specificEpithet = nvn.getSpecificEpithet();\r
+ String infraSpecificEpithet = nvn.getInfraSpecificEpithet();\r
+ String infraGenericEpithet = nvn.getInfraGenericEpithet();\r
+ Integer rank = getRankFk(taxonName, nomenclaturalCode);\r
+ \r
+ if (rank == null) {\r
+ logger.error("Rank was not determined: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
+ } else {\r
+ \r
+ // Check whether infraGenericEpithet is set correctly\r
+ // 1. Childs of an accepted taxon of rank subgenus that are accepted taxa of rank species have to have an infraGenericEpithet\r
+ // 2. Grandchilds of an accepted taxon of rank subgenus that are accepted taxa of rank subspecies have to have an infraGenericEpithet\r
+ \r
+ int ancestorLevel = 0;\r
+ if (taxonName.getRank().equals(Rank.SUBSPECIES())) {\r
+ // The accepted taxon two rank levels above should be of rank subgenus\r
+ ancestorLevel = 2;\r
+ }\r
+ if (taxonName.getRank().equals(Rank.SPECIES())) {\r
+ // The accepted taxon one rank level above should be of rank subgenus\r
+ ancestorLevel = 1;\r
+ }\r
+ if (ancestorLevel > 0) {\r
+ if (ancestorOfSpecificRank(taxon, ancestorLevel, Rank.SUBGENUS())) {\r
+ // The child (species or subspecies) of this parent (subgenus) has to have an infraGenericEpithet\r
+ if (infraGenericEpithet == null) {\r
+ logger.warn("InfraGenericEpithet does not exist even though it should for: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
+ // maybe the taxon could be named here\r
+ }\r
+ }\r
+ }\r
+ \r
+ if (infraGenericEpithet == null && rank.intValue() == 190) {\r
+ logger.warn("InfraGenericEpithet was not determined although it should exist for rank 190: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
+ }\r
+ if (specificEpithet != null && rank.intValue() < 220) {\r
+ logger.warn("SpecificEpithet was determined for rank " + rank + " although it should only exist for ranks higher or equal to 220: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
+ }\r
+ if (infraSpecificEpithet != null && rank.intValue() < 230) {\r
+ String message = "InfraSpecificEpithet '" +infraSpecificEpithet + "' was determined for rank " + rank + " although it should only exist for ranks higher or equal to 230: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")"; \r
+ if (StringUtils.isNotBlank(infraSpecificEpithet)){\r
+ logger.warn(message);\r
+ }else{\r
+ logger.warn(message);\r
+ }\r
+ }\r
+ }\r
+ if (infraSpecificEpithet != null && specificEpithet == null) {\r
+ logger.error("An infraSpecificEpithet was determined, but a specificEpithet was not determined: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
+ }\r
+ if (genusOrUninomial == null) {\r
+ logger.error("GenusOrUninomial was not determined: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
+ }\r
+ }\r
+\r
// 2nd Round: Add ParentTaxonFk, TreeIndex to each Taxon\r
- private boolean doPhaseTwo(PesiExportState state) {\r
+ private boolean doPhase02(PesiExportState state) {\r
boolean success = true;\r
List<Classification> classificationList = null;\r
logger.info("PHASE 2: Add ParenTaxonFk and TreeIndex...");\r
txStatus = startTransaction(false);\r
Rank endRank = rankMap.get(rank);\r
if (endRank != null) {\r
- logger.debug("Started transaction to traverse childNodes of rootNode (" + rootNode.getUuid() + ") till Rank " + endRank.getLabel() + " ...");\r
+ logger.info("Started transaction to traverse childNodes of rootNode (" + rootNode.getUuid() + ") till Rank " + endRank.getLabel() + " ...");\r
} else {\r
- logger.debug("Started transaction to traverse childNodes of rootNode (" + rootNode.getUuid() + ") till leaves are reached ...");\r
+ logger.info("Started transaction to traverse childNodes of rootNode (" + rootNode.getUuid() + ") till leaves are reached ...");\r
}\r
\r
TaxonNode newNode = getTaxonNodeService().load(rootNode.getUuid());\r
} \r
\r
//PHASE 3: Add Rank data, KingdomFk, TypeNameFk, expertFk and speciesExpertFk...\r
- private boolean doPhaseThree(PesiExportState state) {\r
+ private boolean doPhase03(PesiExportState state) {\r
int count = 0;\r
int pastCount = 0;\r
boolean success = true;\r
// Get the limit for objects to save within a single transaction.\r
int limit = state.getConfig().getLimitSave();\r
\r
- List<TaxonNameBase> list;\r
+ List<TaxonBase> list;\r
logger.info("PHASE 3: Add Rank data, KingdomFk, TypeNameFk, expertFk and speciesExpertFk...");\r
// Be sure to add rank information, KingdomFk, TypeNameFk, expertFk and speciesExpertFk to every taxonName\r
\r
// Start transaction\r
TransactionStatus txStatus = startTransaction(true);\r
logger.info("Started new transaction. Fetching some " + pluralString + " (max: " + limit + ") ...");\r
- while ((list = getNameService().list(null, limit, count, null, null)).size() > 0) {\r
+ int partitionCount = 0;\r
+ while ((list = getNextTaxonPartition(null, limit, partitionCount++)).size() > 0) {\r
\r
logger.info("Fetched " + list.size() + " " + pluralString + ". Exporting...");\r
- for (TaxonNameBase<?,?> taxonName : list) {\r
-\r
+ for (TaxonBase<?> taxon : list) {\r
+ TaxonNameBase<?,?> taxonName = taxon.getName();\r
// Determine expertFk\r
Integer expertFk = makeExpertFk(state, taxonName);\r
\r
return expertFk;\r
}\r
\r
- private boolean doPhaseFour(PesiExportState state, PesiExportMapping mapping) throws SQLException {\r
+ // "PHASE 4: Creating Inferred Synonyms..."\r
+ private boolean doPhase04(PesiExportState state, PesiExportMapping mapping) throws SQLException {\r
int count;\r
int pastCount;\r
boolean success = true;\r
private void traverseTree(TaxonNode childNode, TaxonNode parentNode, StringBuffer treeIndex, Rank fetchLevel, PesiExportState state) {\r
// Traverse all branches from this childNode until specified fetchLevel is reached.\r
StringBuffer localTreeIndex = new StringBuffer(treeIndex);\r
- if (childNode.getTaxon() != null) {\r
- TaxonNameBase<?,?> taxonName = childNode.getTaxon().getName();\r
- Integer taxonNameId = state.getDbId(taxonName);\r
- if (taxonNameId != null) {\r
- Rank childTaxonNameRank = taxonName.getRank();\r
- if (childTaxonNameRank != null) {\r
- if (! childTaxonNameRank.equals(fetchLevel)) {\r
-\r
- localTreeIndex.append(taxonNameId);\r
- localTreeIndex.append("#");\r
-\r
- saveData(childNode, parentNode, localTreeIndex, state, taxonNameId);\r
-\r
- // Store treeIndex as annotation for further use\r
- Annotation annotation = Annotation.NewInstance(localTreeIndex.toString(), getTreeIndexAnnotationType(), Language.DEFAULT());\r
- childNode.addAnnotation(annotation);\r
-\r
- for (TaxonNode newNode : childNode.getChildNodes()) {\r
- traverseTree(newNode, childNode, localTreeIndex, fetchLevel, state);\r
+ Taxon childTaxon = childNode.getTaxon();\r
+ if (childTaxon != null) {\r
+ if (isPesiTaxon(childTaxon)){\r
+ TaxonNameBase<?,?> childName = childTaxon.getName();\r
+ Integer taxonId = state.getDbId(childName);\r
+ if (taxonId != null) {\r
+ Rank childRank = childName.getRank();\r
+ if (childRank != null) {\r
+ if (! childRank.equals(fetchLevel)) {\r
+ \r
+ localTreeIndex.append(taxonId + "#");\r
+ \r
+ saveData(childNode, parentNode, localTreeIndex, state, taxonId);\r
+ \r
+ // Store treeIndex as annotation for further use\r
+ Annotation annotation = Annotation.NewInstance(localTreeIndex.toString(), getTreeIndexAnnotationType(), Language.DEFAULT());\r
+ childNode.addAnnotation(annotation);\r
+ \r
+ for (TaxonNode newNode : childNode.getChildNodes()) {\r
+ if (newNode.getTaxon() != null && isPesiTaxon(newNode.getTaxon())){\r
+ traverseTree(newNode, childNode, localTreeIndex, fetchLevel, state);\r
+ }\r
+ }\r
+ \r
+ } else {\r
+ // logger.error("Target Rank " + fetchLevel.getLabel() + " reached");\r
+ return;\r
}\r
- \r
} else {\r
-// logger.error("Target Rank " + fetchLevel.getLabel() + " reached");\r
- return;\r
+ logger.error("Rank is NULL. FetchLevel can not be checked: " + childName.getUuid() + " (" + childName.getTitleCache() + ")");\r
}\r
} else {\r
- logger.error("Rank is NULL. FetchLevel can not be checked: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
+ logger.error("TaxonName can not be found in State: " + childName.getUuid() + " (" + childName.getTitleCache() + ")");\r
+ }\r
+ }else{\r
+ if (logger.isDebugEnabled()){ \r
+ logger.debug("Taxon is not a PESI taxon: " + childTaxon.getUuid());\r
}\r
- } else {\r
- logger.error("TaxonName can not be found in State: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
}\r
\r
} else {\r
private void saveData(TaxonNode childNode, TaxonNode parentNode, StringBuffer treeIndex, PesiExportState state, Integer currentTaxonFk) {\r
// We are differentiating kingdoms by the nomenclatural code for now.\r
// This needs to be handled in a better way as soon as we know how to differentiate between more kingdoms.\r
- Taxon childNodeTaxon = childNode.getTaxon();\r
- TaxonNameBase<?,?> childNodeTaxonName = childNode.getTaxon().getName();\r
- if (childNodeTaxon != null && childNodeTaxonName != null) {\r
- TaxonNameBase<?,?> parentNodeTaxonName = null;\r
+ Taxon childTaxon = childNode.getTaxon();\r
+ if (isPesiTaxon(childTaxon)) {\r
+ TaxonNameBase<?,?> parentName = null;\r
if (parentNode != null) {\r
- Taxon parentNodeTaxon = parentNode.getTaxon();\r
- if (parentNodeTaxon != null) {\r
- parentNodeTaxonName = parentNodeTaxon.getName();\r
+ Taxon parentTaxon = parentNode.getTaxon();\r
+ if (parentTaxon != null) {\r
+ parentName = parentTaxon.getName();\r
}\r
}\r
\r
- invokeParentTaxonFkAndTreeIndex(\r
- state.getDbId(parentNodeTaxonName), \r
- currentTaxonFk, \r
- treeIndex);\r
+ invokeParentTaxonFkAndTreeIndex(state.getDbId(parentName), currentTaxonFk, treeIndex);\r
}\r
\r
}\r
parentTaxonFk_TreeIndex_KingdomFkStmt.executeUpdate();\r
return true;\r
} catch (SQLException e) {\r
- logger.error("ParentTaxonFk and TreeIndex could not be inserted into database: " + e.getMessage());\r
+ logger.error("ParentTaxonFk (" + parentTaxonFk ==null? "-":parentTaxonFk + ") and TreeIndex could not be inserted into database for taxon "+ (currentTaxonFk == null? "-" :currentTaxonFk) + ": " + e.getMessage());\r
e.printStackTrace();\r
return false;\r
}\r
return result;\r
}\r
\r
- /**\r
- * Returns the <code>GenusOrUninomial</code> attribute.\r
- * @param taxonName The {@link TaxonNameBase TaxonName}.\r
- * @return The <code>GenusOrUninomial</code> attribute.\r
- * @see MethodMapper\r
- */\r
- private static String getGenusOrUninomial(TaxonNameBase<?,?> taxonName) {\r
- String result = null;\r
- try {\r
- if (taxonName != null && (taxonName.isInstanceOf(NonViralName.class))) {\r
- NonViralName<?> nonViralName = CdmBase.deproxy(taxonName, NonViralName.class);\r
- result = nonViralName.getGenusOrUninomial();\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
- return result;\r
- }\r
-\r
- /**\r
- * Returns the <code>InfraGenericEpithet</code> attribute.\r
- * @param taxonName The {@link TaxonNameBase TaxonName}.\r
- * @return The <code>InfraGenericEpithet</code> attribute.\r
- * @see MethodMapper\r
- */\r
- private static String getInfraGenericEpithet(TaxonNameBase<?,?> taxonName) {\r
- String result = null;\r
- try {\r
- if (taxonName != null && (taxonName.isInstanceOf(NonViralName.class))) {\r
- NonViralName<?> nonViralName = CdmBase.deproxy(taxonName, NonViralName.class);\r
- result = nonViralName.getInfraGenericEpithet();\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
- return result;\r
- }\r
-\r
- /**\r
- * Returns the <code>SpecificEpithet</code> attribute.\r
- * @param taxonName The {@link TaxonNameBase TaxonName}.\r
- * @return The <code>SpecificEpithet</code> attribute.\r
- * @see MethodMapper\r
- */\r
- private static String getSpecificEpithet(TaxonNameBase<?,?> taxonName) {\r
- String result = null;\r
- try {\r
- if (taxonName != null && (taxonName.isInstanceOf(NonViralName.class))) {\r
- NonViralName<?> nonViralName = CdmBase.deproxy(taxonName, NonViralName.class);\r
- result = nonViralName.getSpecificEpithet();\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
- return result;\r
- }\r
-\r
- /**\r
- * Returns the <code>InfraSpecificEpithet</code> attribute.\r
- * @param taxonName The {@link TaxonNameBase TaxonName}.\r
- * @return The <code>InfraSpecificEpithet</code> attribute.\r
- * @see MethodMapper\r
- */\r
- private static String getInfraSpecificEpithet(TaxonNameBase<?,?> taxonName) {\r
- String result = null;\r
- try {\r
- if (taxonName != null && (taxonName.isInstanceOf(NonViralName.class))) {\r
- NonViralName<?> nonViralName = CdmBase.deproxy(taxonName, NonViralName.class);\r
- result = nonViralName.getInfraSpecificEpithet();\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
- return result;\r
- }\r
-\r
- /**\r
- * Returns the <code>WebSearchName</code> attribute.\r
- * @param taxonName The {@link TaxonNameBase TaxonName}.\r
- * @return The <code>WebSearchName</code> attribute.\r
- * @see MethodMapper\r
- */\r
- @SuppressWarnings("unused")\r
- private static String getWebSearchName(TaxonNameBase<?,?> taxonName) {\r
- String result = null;\r
- try {\r
- if (taxonName != null && (taxonName.isInstanceOf(NonViralName.class))) {\r
- NonViralName<?> nonViralName = CdmBase.deproxy(taxonName, NonViralName.class);\r
- result = nonViralName.getNameCache();\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
- return result;\r
- }\r
\r
/**\r
* Returns the <code>WebShowName</code> attribute.\r
return null;\r
}\r
}\r
-\r
- /**\r
- * Returns the <code>NomRefString</code> attribute.\r
- * @param taxonName The {@link TaxonNameBase TaxonName}.\r
- * @return The <code>NomRefString</code> attribute.\r
- * @see MethodMapper\r
- */\r
- @SuppressWarnings("unused")\r
- private static String getNomRefString(TaxonNameBase<?,?> taxonName) {\r
- String result = null;\r
- try {\r
- if (taxonName != null) {\r
- try {\r
- result = taxonName.getNomenclaturalMicroReference();\r
- } catch (Exception e) {\r
- logger.error("While getting NomRefString");\r
- e.printStackTrace();\r
- }\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
- return result;\r
- }\r
\r
/**\r
* Returns the <code>DisplayName</code> attribute.\r
@SuppressWarnings("unused")\r
private static Integer getNameStatusFk(TaxonNameBase<?,?> taxonName) {\r
Integer result = null;\r
- \r
- try {\r
- if (taxonName != null && (taxonName.isInstanceOf(NonViralName.class))) {\r
- NonViralName<?> nonViralName = CdmBase.deproxy(taxonName, NonViralName.class);\r
- Set<NomenclaturalStatus> states = nonViralName.getStatus();\r
- if (states.size() == 1) {\r
- NomenclaturalStatus state = states.iterator().next();\r
- NomenclaturalStatusType statusType = null;\r
- if (state != null) {\r
- statusType = state.getType();\r
- }\r
- if (statusType != null) {\r
- result = PesiTransformer.nomStatus2nomStatusFk(statusType);\r
- }\r
- } else if (states.size() > 1) {\r
- logger.error("This TaxonName has more than one Nomenclatural Status: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
- }\r
- }\r
- \r
- } catch (Exception e) {\r
- e.printStackTrace();\r
+\r
+ NomenclaturalStatus state = getNameStatus(taxonName);\r
+ if (state != null) {\r
+ result = PesiTransformer.nomStatus2nomStatusFk(state.getType());\r
}\r
return result;\r
}\r
@SuppressWarnings("unused")\r
private static String getNameStatusCache(TaxonNameBase<?,?> taxonName) {\r
String result = null;\r
+ NomenclaturalStatus state = getNameStatus(taxonName);\r
+ if (state != null) {\r
+ result = PesiTransformer.nomStatus2NomStatusCache(state.getType());\r
+ }\r
+ return result;\r
+ }\r
+ \r
+ \r
+ private static NomenclaturalStatus getNameStatus(TaxonNameBase<?,?> taxonName) {\r
\r
try {\r
- if (taxonName != null && (taxonName.isInstanceOf(NonViralName.class))) {\r
- NonViralName<?> nonViralName = CdmBase.deproxy(taxonName, NonViralName.class);\r
- Set<NomenclaturalStatus> states = nonViralName.getStatus();\r
- if (states.size() == 1) {\r
- NomenclaturalStatus state = states.iterator().next();\r
- if (state != null) {\r
- result = PesiTransformer.nomStatus2NomStatusCache(state.getType());\r
+ if (taxonName != null && (taxonName.isInstanceOf(NonViralName.class))) {\r
+ NonViralName<?> nonViralName = CdmBase.deproxy(taxonName, NonViralName.class);\r
+ Set<NomenclaturalStatus> states = nonViralName.getStatus();\r
+ if (states.size() == 1) {\r
+ NomenclaturalStatus state = states.iterator().next();\r
+ return state;\r
+ } else if (states.size() > 1) {\r
+ logger.error("This TaxonName has more than one Nomenclatural Status: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
}\r
- } else if (states.size() > 1) {\r
- logger.error("This TaxonName has more than one Nomenclatural Status: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
}\r
- }\r
\r
} catch (Exception e) {\r
e.printStackTrace();\r
}\r
- return result;\r
+ return null;\r
}\r
- \r
/**\r
* Returns the <code>TaxonStatusFk</code> attribute.\r
* @param taxonName The {@link TaxonNameBase TaxonName}.\r