cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaNameImport.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaRefImport.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaReferenceImport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaRelShipImport.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaRelTaxonIncludeImport.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaRelationshipImport.java -text
-cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaTaxImport.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaTaxon.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaTaxonImport.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaTransformer.java -text
\r
private static int modCount = 1000;\r
\r
- public FaunaEuropaeaAuthorImport(){\r
- }\r
\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
} catch (Exception e) {\r
logger.warn("An exception occurred when creating distribution with id " + disId + \r
". Reference could not be saved.");\r
+ e.printStackTrace();\r
}\r
}\r
\r
if(logger.isInfoEnabled()) { logger.info("Saving distributions ..."); }\r
\r
+ success = saveTaxa(stores, state.getHighestTaxonIndex(), limit);\r
// save taxa\r
- getTaxonService().saveTaxonAll(taxonMap);\r
+// getTaxonService().saveTaxonAll(taxonMap);\r
\r
if(logger.isInfoEnabled()) { logger.info("End making distributions..."); }\r
\r
Collection<TaxonBase> taxonMapPart = taxonStore.objects(start, limit);\r
getTaxonService().saveTaxonAll(taxonMapPart);\r
taxonMapPart = null;\r
- taxonStore.removeObjects(start, limit);\r
+// taxonStore.removeObjects(start, limit);\r
\r
// commitTransaction(txStatus);\r
\r
private boolean doMisappliedNames = true;\r
private boolean doHeterotypicSynonyms = true;\r
\r
-// @SuppressWarnings("unchecked")\r
-// protected void makeIoClassList() {\r
-// ioClassList = new Class[] {\r
-// FaunaEuropaeaAuthorImport.class\r
-// FaunaEuropaeaNameImport.class,\r
-// FaunaEuropaeaTaxImport.class\r
-// FaunaEuropaeaRelationshipImport.class\r
-// FaunaEuropaeaRefImport.class\r
-//// FaunaEuropaeaDistributionImport.class\r
-// };\r
-// };\r
- \r
@SuppressWarnings("unchecked")\r
protected void makeIoClassList() {\r
ioClassList = new Class[] {\r
-// FaunaEuropaeaAuthorImport.class\r
- FaunaEuropaeaNameImport.class\r
-// FaunaEuropaeaTaxImport.class\r
-// FaunaEuropaeaTaxonImport.class\r
+ FaunaEuropaeaAuthorImport.class,\r
+ FaunaEuropaeaNameImport.class,\r
+ FaunaEuropaeaRelShipImport.class,\r
// FaunaEuropaeaRelTaxonIncludeImport.class\r
-// FaunaEuropaeaRelationshipImport.class\r
-// FaunaEuropaeaRefImport.class\r
-// FaunaEuropaeaDistributionImport.class\r
+ FaunaEuropaeaRefImport.class,\r
+ FaunaEuropaeaDistributionImport.class\r
};\r
};\r
\r
\r
/* Highest taxon index in the FauEu database */\r
private int highestTaxonIndex = 0;\r
+ /* Max number of taxa to be saved with one service call */\r
+ private int limit = 20000;\r
\r
\r
+ /**\r
+ * @return the limit\r
+ */\r
+ public int getLimit() {\r
+ return limit;\r
+ }\r
+\r
+ /**\r
+ * @param limit the limit to set\r
+ */\r
+ public void setLimit(int limit) {\r
+ this.limit = limit;\r
+ }\r
+\r
/**\r
* @return the highestTaxonIndex\r
*/\r
fauEuTaxon.setId(taxonId);\r
fauEuTaxon.setRankId(rankId);\r
fauEuTaxon.setYear(year);\r
- fauEuTaxon.setAuthor(autName);\r
+ fauEuTaxon.setAuthorId(autId);\r
+ fauEuTaxon.setAuthorName(autName);\r
if (parenthesis == P_PARENTHESIS) {\r
fauEuTaxon.setParenthesis(true);\r
} else {\r
ReferenceBase<?> auctReference = fauEuConfig.getAuctReference();\r
\r
ZoologicalName zooName = ZoologicalName.NewInstance(rank);\r
- // set local name cache\r
- zooName.setNameCache(localName);\r
+ TeamOrPersonBase<?> author = authorStore.get(autId);\r
+ zooName.setCombinationAuthorTeam(author);\r
+ zooName.setPublicationYear(year);\r
+\r
+ // set local name cache\r
+// zooName.setNameCache(localName);\r
\r
TaxonBase<?> taxonBase;\r
\r
&& (fauEuTaxon.getParentId() != fauEuTaxon.getOriginalGenusId())) {\r
\r
// create basionym\r
- TeamOrPersonBase<?> author = authorStore.get(autId);\r
ZoologicalName basionym = ZoologicalName.NewInstance(rank);\r
basionym.setNameCache(localName);\r
basionym.setCombinationAuthorTeam(author);\r
if (originalGenusId != 0) {\r
FaunaEuropaeaTaxon fauEuOriginalGenusTaxon = fauEuTaxonMap.get(originalGenusId);\r
if (fauEuOriginalGenusTaxon != null) {\r
- fauEuTaxon.setOriginalGenusName(fauEuOriginalGenusTaxon.getOriginalGenusName());\r
+ fauEuTaxon.setOriginalGenusName(fauEuOriginalGenusTaxon.getLocalName());\r
if (logger.isDebugEnabled()) { \r
- logger.debug("Original genus name: " + fauEuOriginalGenusTaxon.getOriginalGenusName()); \r
+ logger.debug("Original genus name: " + fauEuOriginalGenusTaxon.getLocalName()); \r
}\r
} else {\r
if (logger.isDebugEnabled()) { \r
FaunaEuropaeaTaxon parent = fauEuTaxonMap.get(parentId);\r
int grandParentId = parent.getParentId();\r
FaunaEuropaeaTaxon grandParent = fauEuTaxonMap.get(grandParentId);\r
-\r
+ \r
if (rank == R_SPECIES) {\r
\r
if(parent.getRankId() == R_SUBGENUS) {\r
/* Concatenated taxon name string */\r
String completeString = "";\r
\r
- StringBuilder originalGenus = new StringBuilder(); \r
+ StringBuilder originalGenus = new StringBuilder(fauEuTaxon.getOriginalGenusName()); \r
StringBuilder genusOrUninomial = new StringBuilder();\r
StringBuilder infraGenericEpithet = new StringBuilder(); \r
StringBuilder specificEpithet = new StringBuilder();\r
/* Interval for progress info message when retrieving taxa */\r
private int modCount = 10000;\r
/* Highest taxon index in the FauEu database */\r
- private int highestTaxonIndex = 0;\r
+// private int highestTaxonIndex = 0;\r
\r
\r
/* (non-Javadoc)\r
ResultSet rs = source.getResultSet(strQuery);\r
while (rs.next()) {\r
int maxTaxonId = rs.getInt("TAX_ID");\r
- highestTaxonIndex = maxTaxonId;\r
+// highestTaxonIndex = maxTaxonId;\r
}\r
\r
strQuery = \r
if(logger.isInfoEnabled()) { logger.info("Saving references ..."); }\r
\r
// save taxa, references, and authors\r
- success = saveTaxa(stores, highestTaxonIndex, limit);\r
+ success = saveTaxa(stores, state.getHighestTaxonIndex(), limit);\r
getReferenceService().saveReferenceAll(refStore.objects());\r
getAgentService().saveAgentAll(authorStore.objects());\r
\r
* @version 1.0\r
*/\r
@Component\r
-public class FaunaEuropaeaTaxImport extends FaunaEuropaeaImportBase {\r
+public class FaunaEuropaeaRelShipImport extends FaunaEuropaeaImportBase {\r
\r
public static final String OS_NAMESPACE_TAXON = "Taxon";\r
- private static final Logger logger = Logger.getLogger(FaunaEuropaeaTaxImport.class);\r
+ private static final Logger logger = Logger.getLogger(FaunaEuropaeaRelShipImport.class);\r
\r
/* Max number of taxa to retrieve (for test purposes) */\r
private int maxTaxa = 0;\r
private int limitRetrieve = 10000; // TODO: Make configurable\r
/* Interval for progress info message when retrieving taxa */\r
private int modCount = 10000;\r
- /* Highest taxon index in the FauEu database */\r
- private int highestTaxonIndex = 0;\r
/* Number of times method buildParentName() has been called for one taxon */\r
private int callCount = 0;\r
- private Map<Integer, FaunaEuropaeaTaxon> fauEuTaxonMap = new HashMap();\r
+// private Map<Integer, FaunaEuropaeaTaxon> fauEuTaxonMap = new HashMap();\r
\r
\r
/* (non-Javadoc)\r
// MapWrapper<TaxonNameBase<?,?>> taxonNamesStore = (MapWrapper<TaxonNameBase<?,?>>)stores.get(ICdmIO.TAXONNAME_STORE);\r
MapWrapper<TeamOrPersonBase> authorStore = (MapWrapper<TeamOrPersonBase>)stores.get(ICdmIO.TEAM_STORE);\r
// authorStore = null;\r
-// Map<Integer, FaunaEuropaeaTaxon> fauEuTaxonMap = new HashMap();\r
+ Map<Integer, FaunaEuropaeaTaxon> fauEuTaxonMap = state.getFauEuTaxonMap();\r
FaunaEuropaeaImportConfigurator fauEuConfig = state.getConfig();\r
boolean success = true;\r
\r
if(logger.isInfoEnabled()) { logger.info("Start making taxa..."); }\r
\r
- success = processTaxaSecondPass(state, fauEuTaxonMap);\r
- success = saveTaxa(stores, highestTaxonIndex, limit);\r
+ success = processTaxa(state, fauEuTaxonMap);\r
+ success = saveTaxa(stores, state.getHighestTaxonIndex(), limit);\r
\r
logger.info("End making taxa...");\r
return success;\r
/*\r
* Processes taxa from complete taxon store\r
*/\r
- private boolean processTaxaSecondPass(FaunaEuropaeaImportState state, \r
+ private boolean processTaxa(FaunaEuropaeaImportState state, \r
Map<Integer, FaunaEuropaeaTaxon> fauEuTaxonMap) {\r
\r
if(logger.isInfoEnabled()) { logger.info("Processing taxa second pass..."); }\r
FaunaEuropaeaTaxon fauEuTaxon = fauEuTaxonMap.get(id);\r
\r
if (logger.isDebugEnabled()) { logger.debug("Taxon # " + id); }\r
- createNameAndSynonymRelationships(fauEuTaxon, taxonBase, taxonName, fauEuTaxonMap, state);\r
+ createRelationships(fauEuTaxon, taxonBase, taxonName, fauEuTaxonMap, state);\r
}\r
return success; \r
}\r
\r
\r
/** Creates relationships for existing taxon store in memory */\r
- private boolean createNameAndSynonymRelationships(FaunaEuropaeaTaxon fauEuTaxon,\r
+ private boolean createRelationships(FaunaEuropaeaTaxon fauEuTaxon,\r
TaxonBase<?> taxonBase, TaxonNameBase<?,?> taxonName,\r
Map<Integer, FaunaEuropaeaTaxon> fauEuTaxonMap, FaunaEuropaeaImportState state) {\r
- \r
+\r
int parentId = fauEuTaxon.getParentId();\r
int taxonId = fauEuTaxon.getId();\r
Map<String, MapWrapper<? extends CdmBase>> stores = state.getStores();\r
Taxon parentTaxon = parentTaxonBase.deproxy(parentTaxonBase, Taxon.class);\r
// FaunaEuropaeaTaxon parent = fauEuTaxonMap.get(parentId);\r
boolean success = true;\r
- \r
+\r
if (!fauEuTaxon.isValid()) { // FauEu Synonym\r
\r
if (fauEuTaxon.getAuthor() != null && fauEuTaxon.getAuthor().equals("A_AUCT_NAME")) {\r
parentId + ")");\r
}\r
}\r
- \r
+\r
else if((fauEuTaxon.getAuthor() == null) \r
|| (fauEuTaxon.getAuthor() != null && !fauEuTaxon.getAuthor().equals("A_AUCT_NAME"))) {\r
try {\r
// e.printStackTrace();\r
}\r
}\r
+\r
+ } else if (fauEuTaxon.isValid()) { // FauEu Taxon\r
+\r
+ Taxon taxon = taxonBase.deproxy(taxonBase, Taxon.class);\r
+\r
+ try {\r
+ // add this taxon as child to parent\r
+ if (parentTaxon != null) {\r
+ makeTaxonomicallyIncluded(state, parentTaxon, taxon, sourceRef, null);\r
+ if (logger.isDebugEnabled()) {\r
+ logger.debug("Parent-child (" + parentId + "-" + taxonId + \r
+ ") relationship created");\r
+ }\r
+ }\r
+\r
+ } catch (Exception e) {\r
+ logger.error("Error creating taxonomically included relationship Parent-child (" + \r
+ parentId + "-" + taxonId + ")");\r
+ }\r
}\r
- \r
+\r
return success;\r
}\r
+ \r
\r
+ private boolean makeTaxonomicallyIncluded(FaunaEuropaeaImportState state, Taxon toTaxon, Taxon fromTaxon, ReferenceBase citation, String microCitation){\r
+ boolean success = true;\r
+ ReferenceBase sec = toTaxon.getSec();\r
+ TaxonomicTree tree = state.getTree(sec);\r
+ if (tree == null){\r
+ tree = makeTree(state, sec);\r
+ }\r
+ success = tree.addParentChild(toTaxon, fromTaxon, citation, microCitation);\r
+ return success;\r
+ }\r
\r
}\r
private String localName;\r
private String originalGenusName = "";\r
private int year;\r
- private String author;\r
+ private int authorId;\r
+ private String authorName;\r
private boolean parenthesis = false;\r
private boolean valid = false;\r
- private boolean nameComplete = false;\r
\r
/**\r
- * @return the nameComplete\r
+ * @return the authorName\r
*/\r
- public boolean isNameComplete() {\r
- return nameComplete;\r
+ public String getAuthorName() {\r
+ return authorName;\r
}\r
\r
/**\r
- * @param nameComplete the nameComplete to set\r
+ * @param authorName the authorName to set\r
*/\r
- public void setNameComplete(boolean nameComplete) {\r
- this.nameComplete = nameComplete;\r
+ public void setAuthorName(String authorName) {\r
+ this.authorName = authorName;\r
}\r
\r
/**\r
* @return the author\r
*/\r
public String getAuthor() {\r
- return author;\r
+ return authorName;\r
}\r
\r
/**\r
* @param author the author to set\r
*/\r
public void setAuthor(String author) {\r
- this.author = author;\r
+ this.authorName = author;\r
}\r
\r
/**\r
this.originalGenusName = originalGenusName;\r
}\r
\r
+ /**\r
+ * @return the authorId\r
+ */\r
+ public int getAuthorId() {\r
+ return authorId;\r
+ }\r
+\r
+ /**\r
+ * @param authorId the authorId to set\r
+ */\r
+ public void setAuthorId(int authorId) {\r
+ this.authorId = authorId;\r
+ }\r
+\r
}\r
// Set the complete scientific name in FaunaEuropaeaTaxon,\r
// including parent(s) parts.\r
// fauEuTaxon.setScientificName(concatString);\r
- fauEuTaxon.setNameComplete(true);\r
+// fauEuTaxon.setNameComplete(true);\r
\r
if (logger.isDebugEnabled()) { \r
logger.debug("Name stored: " + concatString); \r