//http://stackoverflow.com/questions/421280/in-java-how-do-i-find-the-caller-of-a-method-using-stacktrace-or-reflection\r
// Object o = new SecurityManager().getSecurityContext();\r
\r
- logger.warn(message + "; " + dataLocation); //TDOO preliminary until event system works on Converters\r
- \r
fire(event);\r
}\r
\r
for (IIoObserver observer: observers){\r
observer.handleEvent(event);\r
}\r
+ if (observers.size() == 0){\r
+ logger.warn(event.getMessage() + " (no observer for message!).");\r
+ }\r
}\r
\r
\r
csvTaxonRecord.remove(ID);\r
\r
//rank\r
- Rank rank = getRank(csvTaxonRecord);\r
+ NomenclaturalCode nomCode = getNomCode(csvTaxonRecord);\r
+ Rank rank = getRank(csvTaxonRecord, nomCode);\r
\r
//name\r
- NomenclaturalCode nomCode = getNomCode(csvTaxonRecord);\r
TaxonNameBase<?,?> name = getScientificName(csvTaxonRecord, nomCode, rank);\r
taxonBase.setName(name);\r
\r
}\r
\r
\r
- private Rank getRank(CsvStreamItem csvTaxonRecord) {\r
+ private Rank getRank(CsvStreamItem csvTaxonRecord, NomenclaturalCode nomCode) {\r
boolean USE_UNKNOWN = true;\r
Rank rank = null;\r
String strRank = getValue(csvTaxonRecord,TermUri.DWC_TAXON_RANK);\r
String strVerbatimRank = getValue(csvTaxonRecord,TermUri.DWC_VERBATIM_TAXON_RANK);\r
if (strRank != null){\r
try {\r
- rank = Rank.getRankByNameOrAbbreviation(strRank, USE_UNKNOWN);\r
+ rank = Rank.getRankByEnglishName(strRank, nomCode, USE_UNKNOWN);\r
if (rank.equals(Rank.UNKNOWN_RANK())){\r
- String message = "Rank can not be defined for '%s'";\r
- message = String.format(message, strRank);\r
- fireWarningEvent(message, csvTaxonRecord, 4);\r
+ rank = Rank.getRankByNameOrAbbreviation(strRank, USE_UNKNOWN);\r
+ if (rank.equals(Rank.UNKNOWN_RANK())){\r
+ String message = "Rank can not be defined for '%s'";\r
+ message = String.format(message, strRank);\r
+ fireWarningEvent(message, csvTaxonRecord, 4);\r
+ }\r
}\r
} catch (UnknownCdmTypeException e) {\r
//should not happen as USE_UNKNOWN is used\r
TaxonBase<?> result;\r
String taxStatus = item.get(TermUri.DWC_TAXONOMIC_STATUS);\r
String status = "";\r
+ boolean isMissaplied = false;\r
if (taxStatus != null){\r
- if (taxStatus.matches("accepted|valid|misapplied")){\r
+ if (taxStatus.matches("accepted|valid")){\r
status += "A";\r
}else if (taxStatus.matches(".*synonym|invalid")){\r
status += "S";\r
+ }if (taxStatus.matches("misapplied")){\r
+ status += "M";\r
}else{\r
status += "?";\r
}\r
status += "S";\r
}\r
}\r
- if (status.contains("A")){\r
+ if (status.contains("A") || status.contains("M")){\r
result = Taxon.NewInstance(name, sec);\r
- if (status.contains("S")){\r
- String message = "Ambigous taxon status.";\r
+ if (status.contains("S") && ! status.contains("M") ){\r
+ String message = "Ambigous taxon status (%s)";\r
+ message = String.format(message, status);\r
fireWarningEvent(message, item, 6);\r
}\r
}else if (status.contains("S")){\r
result = Taxon.NewUnknownStatusInstance(name, sec);\r
}\r
\r
- \r
- \r
- //TODO handle acceptedNameUsage(ID), \r
return result;\r
}\r
\r
\r
import org.apache.log4j.Logger;\r
import org.springframework.stereotype.Component;\r
+import org.springframework.transaction.TransactionStatus;\r
\r
import eu.etaxonomy.cdm.api.service.IIdentifiableEntityService;\r
import eu.etaxonomy.cdm.io.common.CdmImportBase;\r
CsvStream csvStream = stream.read();\r
while (csvStream.hasNext()){\r
CsvStreamItem item = csvStream.read();\r
+ TransactionStatus tx = startTransaction();\r
handleCsvStreamItem(state, item);\r
+ commitTransaction(tx);\r
}\r
finalizeStream(csvStream, state);\r
}\r
//start preliminary for testing\r
IIdentifiableEntityService service;\r
try {\r
- service = getServiceByClass(cdmBase.getClass());\r
- if (service != null){\r
- IdentifiableEntity<?> entity = CdmBase.deproxy(cdmBase, IdentifiableEntity.class);\r
- service.save(entity);\r
+ if (cdmBase.isInstanceOf(IdentifiableEntity.class)){\r
+ service = getServiceByClass(cdmBase.getClass());\r
+ if (service != null){\r
+ IdentifiableEntity<?> entity = CdmBase.deproxy(cdmBase, IdentifiableEntity.class);\r
+ service.saveOrUpdate(entity);\r
+ }\r
}\r
} catch (IllegalArgumentException e) {\r
fireWarningEvent(e.getMessage(), location, 12);\r
import org.apache.log4j.Logger;\r
\r
import au.com.bytecode.opencsv.CSVReader;\r
-import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
-import eu.etaxonomy.cdm.io.common.ImportStateBase;\r
import eu.etaxonomy.cdm.io.common.IoStateBase;\r
import eu.etaxonomy.cdm.io.dwca.TermUri;\r
import eu.etaxonomy.cdm.io.dwca.jaxb.Archive;\r
\r
}\r
\r
+//\r
+// /**\r
+// * @return\r
+// * @throws IOException\r
+// */\r
+// private InputStream makeInputStream(String name) throws IOException {\r
+// \r
+// ZipInputStream zin = new ZipInputStream(dwcaZip.toURL().openStream());\r
+// ZipEntry ze = zin.getNextEntry();\r
+// while (!ze.getName().equals(name)) {\r
+// zin.closeEntry(); // not sure whether this is necessary\r
+// ze = zin.getNextEntry();\r
+// }\r
+// \r
+// CheckedInputStream cis = new CheckedInputStream(in, cksum)\r
+// \r
+// InputStream metaInputStream = zip.getInputStream(ze);\r
+// return metaInputStream;\r
+// \r
+// InputStream metaInputStream = zip.getInputStream(metaEntry);\r
+// return metaInputStream;\r
+// }\r
+// \r
\r
/**\r
* @return\r
public void setIndex(byte value) {\r
this.index = value;\r
}\r
+ \r
+ @Override\r
+ public String toString(){\r
+ return "[" + index + ";" + term + "]";\r
+ }\r
\r
}\r
import org.unitils.spring.annotation.SpringBeanByName;\r
\r
import eu.etaxonomy.cdm.io.common.CdmApplicationAwareDefaultImport;\r
+import eu.etaxonomy.cdm.io.common.events.LoggingIoObserver;\r
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
\r
/**\r
assertNotNull("URI for the test file '" + inputFile + "' does not exist", uri);\r
try {\r
configurator = DwcaImportConfigurator.NewInstance(url.toURI(), null);\r
+ configurator.addObserver(new LoggingIoObserver());\r
} catch (URISyntaxException e) {\r
e.printStackTrace();\r
Assert.fail();\r