import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.name.NameRelationship;\r
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
-import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
\r
private static ExtensionType cacheCitationExtensionType;\r
private static ExtensionType expertUserIdExtensionType;\r
private static ExtensionType speciesExpertUserIdExtensionType;\r
- private static String auctString = "auct.";\r
\r
/**\r
* @return the treeIndexAnnotationType\r
TransactionStatus txStatus = null;\r
List<TaxonNameBase> list = null;\r
\r
-/* logger.error("PHASE 1: Export Taxa...");\r
+ logger.error("PHASE 1: Export Taxa...");\r
// Start transaction\r
txStatus = startTransaction(true);\r
logger.error("Started new transaction. Fetching some " + pluralString + " (max: " + limit + ") ...");\r
}\r
// Commit transaction\r
commitTransaction(txStatus);\r
- logger.error("Committed transaction.");*/\r
+ logger.error("Committed transaction.");\r
\r
\r
// Create inferred synonyms for accepted taxa\r
if (taxonName != null && taxonName != null) {\r
if (taxonName.isInstanceOf(NonViralName.class)) {\r
NonViralName nonViralName = CdmBase.deproxy(taxonName, NonViralName.class);\r
- result = nonViralName.getAuthorshipCache();\r
+ String authorshipCache = nonViralName.getAuthorshipCache();\r
+\r
+ // For a misapplied name without an authorshipCache the authorString should be set to "auct."\r
+ if (isMisappliedName(taxonName) && authorshipCache == null) {\r
+ // Set authorshipCache to "auct."\r
+ result = PesiTransformer.auctString;\r
+ } else {\r
+ // Return the content of the authorshipCache\r
+ result = authorshipCache;\r
+ }\r
+\r
} else {\r
logger.warn("TaxonName is not of instance NonViralName: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
}\r
} catch (Exception e) {\r
e.printStackTrace();\r
}\r
- return result;\r
+ \r
+ if ("".equals(result)) {\r
+ return null;\r
+ } else {\r
+ return result;\r
+ }\r
}\r
\r
+ /**\r
+ * Checks whether a given TaxonName is a misapplied name.\r
+ * @param taxonName\r
+ * @return\r
+ */\r
+ private static boolean isMisappliedName(TaxonNameBase taxonName) {\r
+ boolean result = false;\r
+ Set<NameRelationship> taxonNameRelations = taxonName.getRelationsFromThisName();\r
+ for (NameRelationship nameRelation : taxonNameRelations) {\r
+ NameRelationshipType relationshipType = nameRelation.getType();\r
+ if (relationshipType.equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())) {\r
+ result = true;\r
+ }\r
+ }\r
+ \r
+ Set<Taxon> taxa = taxonName.getTaxa();\r
+ if (taxa.size() == 1) {\r
+ Taxon taxon = CdmBase.deproxy(taxa.iterator().next(), Taxon.class);\r
+ Set<TaxonRelationship> taxonRelations = taxon.getRelationsFromThisTaxon();\r
+ for (TaxonRelationship taxonRelationship : taxonRelations) {\r
+ TaxonRelationshipType taxonRelationshipType = taxonRelationship.getType();\r
+ if (taxonRelationshipType.equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())) {\r
+ result = true;\r
+ }\r
+ }\r
+ } else if (taxa.size() > 1) {\r
+ logger.error("Could not check for misapplied name. This TaxonName has " + taxa.size() + " Taxa: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
+ }\r
+ return result;\r
+ }\r
+ \r
/**\r
* Returns the <code>FullName</code> attribute.\r
* @param taxon The {@link TaxonBase Taxon}.\r
private static boolean isAuctReference(TaxonNameBase taxonName, PesiExportState state) {\r
boolean result = false;\r
\r
- try {\r
- TaxonBase taxonBase = getSourceTaxonBase(taxonName);\r
-\r
- if (taxonBase != null) {\r
- if (auctString.equals(taxonBase.getTitleCache())) {\r
- result = true;\r
- }\r
- } else {\r
- logger.error("A TaxonBase could not be determined for this TaxonName: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
+ if (isMisappliedName(taxonName)) {\r
+ result = true;\r
}\r
return result;\r
}\r