import org.apache.commons.lang.StringUtils;\r
import org.apache.log4j.Logger;\r
import org.springframework.stereotype.Component;\r
-import org.springframework.transaction.TransactionStatus;\r
\r
import eu.etaxonomy.cdm.common.CdmUtils;\r
import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;\r
parentName = rs.getString("SubphylumName");\r
if (parentName.equalsIgnoreCase(INCERTAE_SEDIS)){\r
parentName = rs.getString("PhylumName");\r
- if (parentName.equalsIgnoreCase(INCERTAE_SEDIS)){\r
+ if (parentName.equalsIgnoreCase(INCERTAE_SEDIS) || parentName.equalsIgnoreCase(FOSSIL_FUNGI) ){\r
parentName = rs.getString("KingdomName");\r
}\r
}\r
\r
\r
private boolean isIncertisSedis(String uninomial) {\r
- return uninomial.equalsIgnoreCase(INCERTAE_SEDIS);\r
+ return uninomial.equalsIgnoreCase(INCERTAE_SEDIS) || uninomial.equalsIgnoreCase(FOSSIL_FUNGI);\r
}\r
\r
\r
private boolean isNewTaxon(String uninomial, String lastUninomial) {\r
boolean result = !uninomial.equalsIgnoreCase(lastUninomial);\r
result |= lastUninomial.equalsIgnoreCase(INCERTAE_SEDIS);\r
+ result |= lastUninomial.equalsIgnoreCase(FOSSIL_FUNGI);\r
return result;\r
}\r
\r
private Taxon makeTaxon(IndexFungorumImportState state, String uninomial, Rank rank) {\r
- if (uninomial.equalsIgnoreCase(INCERTAE_SEDIS)){\r
+ if (uninomial.equalsIgnoreCase(INCERTAE_SEDIS) || uninomial.equalsIgnoreCase(FOSSIL_FUNGI)){\r
return null;\r
}\r
Taxon taxon = state.getRelatedObject(IndexFungorumSupraGeneraImport.NAMESPACE_SUPRAGENERIC_NAMES, uninomial, Taxon.class);\r
import eu.etaxonomy.cdm.io.common.mapping.out.DbLastActionMapper;\r
import eu.etaxonomy.cdm.io.pesi.out.PesiTransformer;\r
import eu.etaxonomy.cdm.model.agent.Team;\r
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
import eu.etaxonomy.cdm.model.common.LSID;\r
\r
\r
protected static final String INCERTAE_SEDIS = "Incertae sedis";\r
+ protected static final String FOSSIL_FUNGI = "Fossil Fungi";\r
+\r
protected static final String SOURCE_REFERENCE = "SOURCE_REFERENCE";\r
\r
\r
}\r
if (pubAuthor != null){\r
Reference<?> inRef = ReferenceFactory.newGeneric();\r
+ inRef.setAuthorTeam(pubAuthor);\r
ref.setInReference(inRef);\r
hasInReference = true;\r
+ }else{\r
+ ref.setAuthorTeam(CdmBase.deproxy(name.getCombinationAuthorTeam(), TeamOrPersonBase.class));\r
}\r
//location\r
String location = rs.getString("pubIMIAbbrLoc");\r
}\r
//year\r
String yearOfPubl = rs.getString("YEAR_OF_PUBLICATION");\r
- \r
+ String year = null;\r
String yearOnPubl = rs.getString("YEAR_ON_PUBLICATION");\r
- if (StringUtils.isNotEmpty(yearOfPubl)){\r
- String year = yearOfPubl.trim();\r
- if (StringUtils.isNotBlank(yearOnPubl)){\r
- year = year + "[" + yearOnPubl + "]";\r
- }\r
+ if (StringUtils.isNotBlank(yearOfPubl)){\r
+ year = yearOfPubl.trim();\r
+ }\r
+ if (StringUtils.isNotBlank(yearOnPubl)){\r
+ year = CdmUtils.concat(" ", year, "[" + yearOnPubl + "]");\r
+ }\r
+ if (year == null){\r
ref.setDatePublished(TimePeriod.parseString(year));\r
- }else if (StringUtils.isNotEmpty(yearOnPubl)){\r
- logger.warn("'YEAR_ON_PUBLICATION' is not blank for blank YEAR_ON_PUBLICATION. This is not yet handled by import.");\r
}\r
\r
name.setNomenclaturalReference(ref);\r
"has no last action", "No last action information available", "no last action");\r
taxon.addMarker(Marker.NewInstance(hasNoLastAction, true));\r
//LSID\r
- makeLSID(taxon, strId);\r
+ makeLSID(taxon, strId, state);\r
}\r
\r
- private void makeLSID(Taxon taxon, String strId) {\r
+ private void makeLSID(Taxon taxon, String strId, IndexFungorumImportState state) {\r
try {\r
- if (strId != null){\r
+ if (StringUtils.isNotBlank(strId) && ! "null".equalsIgnoreCase(strId)){\r
LSID lsid = new LSID(IndexFungorumTransformer.LSID_PREFIX + strId);\r
taxon.setLsid(lsid);\r
}else{\r
logger.warn("No ID available for taxon " + taxon.getTitleCache() + ", " + taxon.getUuid());\r
+ MarkerType missingGUID = getMarkerType(state, PesiTransformer.uuidMarkerGuidIsMissing, "GUID is missing", "GUID is missing", null);\r
+ taxon.addMarker(Marker.NewInstance(missingGUID, true));\r
}\r
} catch (MalformedLSIDException e) {\r
logger.error(e.getMessage());\r
\r
import eu.etaxonomy.cdm.common.CdmUtils;\r
import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;\r
+import eu.etaxonomy.cdm.io.pesi.erms.ErmsTransformer;\r
import eu.etaxonomy.cdm.io.pesi.out.PesiTransformer;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.Extension;\r
+import eu.etaxonomy.cdm.model.common.ExtensionType;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
@Override\r
protected String getRecordQuery(IndexFungorumImportConfigurator config) {\r
String strRecordQuery = \r
- " SELECT DISTINCT distribution.PreferredNameFDCnumber, species.* " +\r
+ " SELECT DISTINCT distribution.PreferredNameFDCnumber, species.* , cl.PhylumName" +\r
" FROM tblPESIfungi AS distribution RIGHT OUTER JOIN dbo.[tblPESIfungi-IFdata] AS species ON distribution.PreferredNameIFnumber = species.RECORD_NUMBER " +\r
- " WHERE ( species.RECORD_NUMBER IN (" + ID_LIST_TOKEN + ") )" +\r
+ " LEFT OUTER JOIN [tblPESIfungi-Classification] cl ON species.PreferredName = cl.PreferredName " +\r
+ " WHERE ( species.RECORD_NUMBER IN (" + ID_LIST_TOKEN + ") )" +\r
"";\r
return strRecordQuery;\r
}\r
try {\r
while (rs.next()){\r
\r
- //TODO\r
- //DisplayName, NomRefCache\r
+ //DisplayName, NomRefCache -> don't use, created by Marc\r
\r
Integer id = (Integer)rs.getObject("RECORD_NUMBER");\r
+ String phylumName = rs.getString("PhylumName");\r
\r
String preferredName = rs.getString("PreferredName");\r
if (StringUtils.isBlank(preferredName)){\r
//source\r
makeSource(state, taxon, id, NAMESPACE_SPECIES );\r
\r
+ //fossil\r
+ if (FOSSIL_FUNGI.equalsIgnoreCase(phylumName)){\r
+ ExtensionType fossilExtType = getExtensionType(state, ErmsTransformer.uuidFossilStatus, "fossil status", "fossil status", "fos. stat.");\r
+ Extension.NewInstance(taxon, PesiTransformer.STR_FOSSIL_ONLY, fossilExtType); \r
+ }\r
+ //save\r
getTaxonService().saveOrUpdate(taxon);\r
}\r
\r
private static String getGUID(TaxonBase<?> taxon) {\r
if (taxon.getLsid() != null ){\r
return taxon.getLsid().getLsid();\r
+ }else if (taxon.hasMarker(PesiTransformer.uuidMarkerGuidIsMissing, true)){\r
+ return null;\r
}else{\r
return taxon.getUuid().toString();\r
}\r
public static int QUALITY_STATUS_CHECKED_EDITOR = 3;\r
public static int QUALITY_STATUS_EDITED_BY_DBMT = 4;\r
\r
+ // marker type\r
+ public static final UUID uuidMarkerGuidIsMissing = UUID.fromString("24e70843-05e2-44db-954b-84df0d23ea20");\r
+// public static final UUID uuidMarkerFossil = UUID.fromString("761ce108-031a-4e07-b444-f8d757070312");\r
\r
\r
//extension type uuids\r