import java.util.Map;\r
import java.util.Set;\r
\r
+import org.apache.commons.lang.StringUtils;\r
import org.apache.log4j.Logger;\r
import org.springframework.stereotype.Component;\r
\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
\r
/**\r
* @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getIdQuery()\r
*/\r
@Override\r
- protected String getIdQuery() {\r
- return " SELECT RIdentifier FROM " + getTableName();\r
+ protected String getIdQuery(BerlinModelImportState state) {\r
+ String result = " SELECT RIdentifier FROM " + getTableName();\r
+ \r
+ if (StringUtils.isNotEmpty(state.getConfig().getNameIdTable())){\r
+ result += " WHERE nameFk IN (SELECT NameId FROM " + state.getConfig().getNameIdTable() + ")";\r
+ }\r
+ return result;\r
}\r
\r
\r
int nameId = rs.getInt("nameFk");\r
\r
boolean doubtful = rs.getBoolean("DoubtfulFlag");\r
-// ReferenceBase citation = rs.getString("");\r
-// String microcitation = null;\r
+ String nomStatusLabel = rs.getString("NomStatus");\r
\r
TaxonNameBase taxonName = nameMap.get(String.valueOf(nameId));\r
//TODO doubtful\r
\r
if (taxonName != null ){\r
try{\r
- NomenclaturalStatus nomStatus = BerlinModelTransformer.nomStatusFkToNomStatus(nomStatusFk);\r
+ NomenclaturalStatus nomStatus = BerlinModelTransformer.nomStatusFkToNomStatus(nomStatusFk, nomStatusLabel);\r
+ if (nomStatus == null){\r
+ String message = "Nomenclatural status could not be defined for %s ; %s";\r
+ message = String.format(message, nomStatusFk, nomStatusLabel);\r
+ logger.warn(message);\r
+ success = false;\r
+ continue;\r
+ }else{\r
+ if (nomStatus.getType() == null){\r
+ String message = "Nomenclatural status type could not be defined for %s ; %s";\r
+ message = String.format(message, nomStatusFk, nomStatusLabel);\r
+ logger.warn(message);\r
+ success = false;\r
+ continue;\r
+ }else if(nomStatus.getType().getId() == 0){\r
+ getTermService().save(nomStatus.getType());\r
+ }\r
+ }\r
\r
//reference\r
makeReference(config, nomStatus, nameId, rs, partitioner);\r
//Details\r
dbAttrName = "details";\r
cdmAttrName = "citationMicroReference";\r
- success &= ImportHelper.addStringValue(rs, nomStatus, dbAttrName, cdmAttrName);\r
+ success &= ImportHelper.addStringValue(rs, nomStatus, dbAttrName, cdmAttrName, true);\r
\r
//doubtful\r
if (doubtful){\r
taxonName.addStatus(nomStatus);\r
namesToSave.add(taxonName);\r
}catch (UnknownCdmTypeException e) {\r
- //TODO\r
logger.warn("NomStatusType " + nomStatusFk + " not yet implemented");\r
success = false;\r
}\r
\r
//nom reference map\r
nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
- cdmClass = ReferenceBase.class;\r
+ cdmClass = Reference.class;\r
idSet = referenceIdSet;\r
- Map<String, ReferenceBase> nomReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+ Map<String, Reference> nomReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
result.put(nameSpace, nomReferenceMap);\r
\r
//biblio reference map\r
nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
- cdmClass = ReferenceBase.class;\r
+ cdmClass = Reference.class;\r
idSet = referenceIdSet;\r
- Map<String, ReferenceBase> biblioReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+ Map<String, Reference> biblioReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
result.put(nameSpace, biblioReferenceMap);\r
\r
//nom refDetail map\r
nameSpace = BerlinModelRefDetailImport.NOM_REFDETAIL_NAMESPACE;\r
- cdmClass = ReferenceBase.class;\r
+ cdmClass = Reference.class;\r
idSet = refDetailIdSet;\r
- Map<String, ReferenceBase> nomRefDetailMap= (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+ Map<String, Reference> nomRefDetailMap= (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
result.put(nameSpace, nomRefDetailMap);\r
\r
//biblio refDetail map\r
nameSpace = BerlinModelRefDetailImport.BIBLIO_REFDETAIL_NAMESPACE;\r
- cdmClass = ReferenceBase.class;\r
+ cdmClass = Reference.class;\r
idSet = refDetailIdSet;\r
- Map<String, ReferenceBase> biblioRefDetailMap= (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+ Map<String, Reference> biblioRefDetailMap= (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
result.put(nameSpace, biblioRefDetailMap);\r
\r
\r
int nameId, ResultSet rs, ResultSetPartitioner partitioner) \r
throws SQLException{\r
\r
- Map<String, ReferenceBase> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
- Map<String, ReferenceBase> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
- Map<String, ReferenceBase> biblioDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.BIBLIO_REFDETAIL_NAMESPACE);\r
- Map<String, ReferenceBase> nomRefDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.NOM_REFDETAIL_NAMESPACE);\r
+ Map<String, Reference> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
+ Map<String, Reference> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
+ Map<String, Reference> biblioDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.BIBLIO_REFDETAIL_NAMESPACE);\r
+ Map<String, Reference> nomRefDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.NOM_REFDETAIL_NAMESPACE);\r
\r
Object nomRefFkObj = rs.getObject("NomStatusRefFk");\r
Object nomRefDetailFkObj = rs.getObject("NomStatusRefDetailFk");\r
if (nomRefFkObj != null){\r
String nomRefFk = String.valueOf(nomRefFkObj);\r
String nomRefDetailFk = String.valueOf(nomRefDetailFkObj);\r
- ReferenceBase ref = getReferenceFromMaps(biblioRefMap,\r
+ Reference<?> ref = getReferenceFromMaps(biblioRefMap,\r
nomRefMap, biblioDetailMap, nomRefDetailMap,\r
nomRefDetailFk, nomRefFk); \r
\r
if (ref == null ){\r
//TODO\r
if (! config.isIgnoreNull()){logger.warn("Reference (refFk = " + nomRefFk + ") for NomStatus of TaxonName (nameId = " + nameId + ")"+\r
- " was not found in reference store. Nomenclatural reference was not set!!");}\r
+ " was not found in reference store. Nomenclatural status reference was not set!!");}\r
}else{\r
nomStatus.setCitation(ref);\r
}\r