//for each reference\r
while (rs.next()){\r
\r
- if ((i++ % modCount) == 0 && i!= 1 ){ logger.info("Facts handled: " + (i-1));}\r
+ if ((i++ % modCount) == 0 && i!= 1 ){ logger.info("Facts handled: " + (i-1));}\r
\r
int occurrenceId = rs.getInt("OccurrenceId");\r
int newTaxonId = rs.getInt("taxonId");\r
Integer emStatusId = (Integer)rs.getObject("emOccurSumCatId");\r
\r
try {\r
- //status\r
- PresenceAbsenceTermBase<?> status = null;\r
- String alternativeStatusString = null;\r
- if (emStatusId != null){\r
- status = BerlinModelTransformer.occStatus2PresenceAbsence(emStatusId);\r
- }else{\r
- String[] stringArray = new String[]{rs.getString("Native"), rs.getString("Introduced"), rs.getString("Cultivated")};\r
- alternativeStatusString = CdmUtils.concat(",", stringArray);\r
- }\r
+ //status\r
+ PresenceAbsenceTermBase<?> status = null;\r
+ String alternativeStatusString = null;\r
+ if (emStatusId != null){\r
+ status = BerlinModelTransformer.occStatus2PresenceAbsence(emStatusId);\r
+ }else{\r
+ String[] stringArray = new String[]{rs.getString("Native"), rs.getString("Introduced"), rs.getString("Cultivated")};\r
+ alternativeStatusString = CdmUtils.concat(",", stringArray);\r
+ }\r
\r
- //Create area list\r
- List<NamedArea> areas = new ArrayList<NamedArea>();\r
- if (tdwgCodeString != null){\r
- String[] tdwgCodes = tdwgCodeString.split(";");\r
- for (String tdwgCode : tdwgCodes){\r
- NamedArea area = TdwgArea.getAreaByTdwgAbbreviation(tdwgCode.trim());\r
- if (area == null){\r
- area = getOtherAreas(state, emCodeString, tdwgCodeString);\r
- }\r
- if (area != null){\r
- areas.add(area);\r
- }\r
- }\r
+ //Create area list\r
+ List<NamedArea> areas = new ArrayList<NamedArea>();\r
+ if (tdwgCodeString != null){\r
+ \r
+ String[] tdwgCodes = new String[]{tdwgCodeString};\r
+ if (state.getConfig().isSplitTdwgCodes()){\r
+ tdwgCodes = tdwgCodeString.split(";");\r
+ }\r
+ \r
+ for (String tdwgCode : tdwgCodes){\r
+ NamedArea area = TdwgArea.getAreaByTdwgAbbreviation(tdwgCode.trim());\r
+ if (area == null){\r
+ area = getOtherAreas(state, emCodeString, tdwgCodeString);\r
+ }\r
+ if (area != null){\r
+ areas.add(area);\r
+ }\r
+ }\r
}\r
+ \r
Reference<?> sourceRef = state.getConfig().getSourceReference();\r
//create description(elements)\r
TaxonDescription taxonDescription = getTaxonDescription(newTaxonId, oldTaxonId, oldDescription, taxonMap, occurrenceId, sourceRef);\r
return WaterbodyOrCountry.AZERBAIJANREPUBLICOF();\r
}else if("TCS-AB;TCS-AD;TCS-GR".equals(tdwg)){\r
return WaterbodyOrCountry.GEORGIA();\r
+ \r
+ \r
}else if("Cc".equals(em)){\r
return getNamedArea(state, BerlinModelTransformer.uuidCaucasia, "Caucasia (Ab + Ar + Gg + Rf(CS))", "Euro+Med area 'Caucasia (Ab + Ar + Gg + Rf(CS))'", "Cc", null, null);\r
}\r
\r
}else if("SM".equals(em)){\r
return getNamedArea(state, BerlinModelTransformer.uuidSerbiaMontenegro, "Serbia & Montenegro", "Euro+Med area 'Serbia & Montenegro'", "SM", NamedAreaType.ADMINISTRATION_AREA(), null);\r
+ }else if("Yu(K)".equals(em)){\r
+ return TdwgArea.getAreaByTdwgAbbreviation("YUG-KO");\r
\r
\r
//see #2769\r
return null; //not needed\r
}\r
\r
-\r
-// @Override\r
-// protected void doInvoke_old(BerlinModelImportState state){\r
-// logger.info("start make " + getPluralString() + " ...");\r
-//\r
-// boolean success = true;\r
-// initializeMappers(state);\r
-// BerlinModelImportConfigurator config = state.getConfig();\r
-// Source source = config.getSource();\r
-//\r
-// String strSelectId = " SELECT Reference.RefId as refId ";\r
-// String strSelectFull = \r
-// " SELECT Reference.* , InReference.RefId as InRefId, InReference.RefCategoryFk as InRefCategoryFk, " +\r
-// " InInReference.RefId as InInRefId, InInReference.RefCategoryFk as InInRefCategoryFk, " +\r
-// " InReference.InRefFk AS InRefInRefFk, InInReference.InRefFk AS InInRefInRefFk, RefSource.RefSource " ;\r
-// String strFrom = " FROM Reference AS InInReference " +\r
-// " RIGHT OUTER JOIN Reference AS InReference ON InInReference.RefId = InReference.InRefFk " + \r
-// " RIGHT OUTER JOIN %s ON InReference.RefId = Reference.InRefFk " + \r
-// " LEFT OUTER JOIN RefSource ON Reference.RefSourceFk = RefSource.RefSourceId " +\r
-// " WHERE (1=1) ";\r
-// String strWherePartitioned = " AND (Reference.refId IN ("+ ID_LIST_TOKEN + ") ) "; \r
-// \r
-// String referenceTable = CdmUtils.Nz(state.getConfig().getReferenceIdTable());\r
-// referenceTable = referenceTable.isEmpty() ? " Reference" : referenceTable + " as Reference ";\r
-// String strIdFrom = String.format(strFrom, referenceTable );\r
-// \r
-// \r
-// //test max number of recursions\r
-// String strQueryTestMaxRecursion = strSelectId + strIdFrom + \r
-// " AND (Reference.InRefFk is NOT NULL) AND (InReference.InRefFk is NOT NULL) AND (InInReference.InRefFk is NOT NULL) ";\r
-// ResultSet testMaxRecursionResultSet = source.getResultSet(strQueryTestMaxRecursion);\r
-// try {\r
-// if (testMaxRecursionResultSet.next() == true){\r
-// logger.error("Maximum allowed InReference recursions exceeded in Berlin Model. Maximum recursion level is 2.");\r
-// state.setUnsuccessfull();\r
-// return;\r
-// }\r
-// } catch (SQLException e1) {\r
-// e1.printStackTrace();\r
-// logger.error("There are references with more then 2 in-reference recursion. Maximum number of allowed recursions is 2. Records will not be stored.");\r
-// success = false;\r
-// }\r
-//\r
-// String strSelectIdBase = strSelectId + strIdFrom;\r
-// \r
-// String referenceFilter = CdmUtils.Nz(state.getConfig().getReferenceIdTable());\r
-// if (! referenceFilter.isEmpty()){\r
-// referenceFilter = " AND " + referenceFilter + " ";\r
-// }\r
-// referenceFilter = ""; //don't use it for now\r
-// \r
-// String strIdQueryNoInRef = strSelectIdBase + \r
-// " AND (Reference.InRefFk is NULL) " + referenceFilter;\r
-// String strIdQuery1InRef = strSelectIdBase + \r
-// " AND (Reference.InRefFk is NOT NULL) AND (InReference.InRefFk is NULL) " + referenceFilter;\r
-// String strIdQuery2InRefs = strSelectIdBase + \r
-// " AND (Reference.InRefFk is NOT NULL) AND (InReference.InRefFk is NOT NULL) AND (InInReference.InRefFk is NULL) " + referenceFilter;\r
-//\r
-// if (config.getDoReferences() == CONCEPT_REFERENCES){\r
-// strIdQueryNoInRef += " AND ( Reference.refId IN ( SELECT ptRefFk FROM PTaxon) ) " + referenceFilter;\r
-// }\r
-//\r
-// String strRecordQuery = strSelectFull + String.format(strFrom, " Reference ") + strWherePartitioned;\r
-// \r
-// int recordsPerTransaction = config.getRecordsPerTransaction();\r
-// try{\r
-// //NoInRefs\r
-// ResultSetPartitioner partitioner = ResultSetPartitioner.NewInstance(source, strIdQueryNoInRef, strRecordQuery, recordsPerTransaction);\r
-// while (partitioner.nextPartition()){\r
-// partitioner.doPartition(this, state);\r
-// }\r
-// logger.info("end make references with no in-references ... " + getSuccessString(success));\r
-//\r
-// if (config.getDoReferences() == ALL || config.getDoReferences() == NOMENCLATURAL){\r
-//\r
-// //1InRef\r
-// partitioner = ResultSetPartitioner.NewInstance(source, strIdQuery1InRef, strRecordQuery, recordsPerTransaction);\r
-// while (partitioner.nextPartition()){\r
-// partitioner.doPartition(this, state);\r
-// }\r
-// logger.info("end make references with no 1 in-reference ... " + getSuccessString(success));\r
-// \r
-// //2InRefs\r
-// partitioner = ResultSetPartitioner.NewInstance(source, strIdQuery2InRefs, strRecordQuery, recordsPerTransaction);\r
-// while (partitioner.nextPartition()){\r
-// partitioner.doPartition(this, state);\r
-// }\r
-// logger.info("end make references with no 2 in-reference ... " + getSuccessString(success));\r
-// }\r
-//\r
-// } catch (SQLException e) {\r
-// logger.error("SQLException:" + e);\r
-// state.setUnsuccessfull();\r
-// return;\r
-// }\r
-// logger.info("end make " + getPluralString() + " ... " + getSuccessString(success));\r
-// if (! success){\r
-// state.setUnsuccessfull();\r
-// }\r
-// return;\r
-// }\r
-\r
@Override\r
protected void doInvoke(BerlinModelImportState state){\r
logger.info("start make " + getPluralString() + " ...");\r
referenceTable = referenceTable.isEmpty() ? " Reference" : referenceTable + " as Reference ";\r
String strIdFrom = String.format(strFrom, referenceTable );\r
\r
- \r
- //test max number of recursions\r
-// String strQueryTestMaxRecursion = strSelectId + strIdFrom + \r
-// " AND (Reference.InRefFk is NOT NULL) AND (InReference.InRefFk is NOT NULL) AND (InInReference.InRefFk is NOT NULL) ";\r
-// ResultSet testMaxRecursionResultSet = source.getResultSet(strQueryTestMaxRecursion);\r
-// try {\r
-// if (testMaxRecursionResultSet.next() == true){\r
-// logger.error("Maximum allowed InReference recursions exceeded in Berlin Model. Maximum recursion level is 2.");\r
-// state.setUnsuccessfull();\r
-// return;\r
-// }\r
-// } catch (SQLException e1) {\r
-// e1.printStackTrace();\r
-// logger.error("There are references with more then 2 in-reference recursion. Maximum number of allowed recursions is 2. Records will not be stored.");\r
-// success = false;\r
-// }\r
-\r
String strSelectIdBase = strSelectId + strIdFrom;\r
\r
String referenceFilter = CdmUtils.Nz(state.getConfig().getReferenceIdTable());\r
inRefExists |= (inRef != null);\r
}\r
if (thisBiblioRef != null){\r
- Reference<?> inRef = (biblioInReference != null)? biblioInReference : nomInReference;\r
+ Reference<?> inRef = (biblioInReference != null)? nomInReference : biblioInReference ;\r
thisBiblioRef.setInReference(inRef);\r
biblioRefToSave.put(refId, thisBiblioRef);\r
//remember that an in reference exists\r
" WHERE name.nameId IN ("+ID_LIST_TOKEN+") ";\r
//strQuery += " AND RefDetail.PreliminaryFlag = 1 ";\r
//strQuery += " AND Name.Created_When > '03.03.2004' ";\r
- return strRecordQuery;\r
+ return strRecordQuery + "";\r
}\r
\r
\r
boolean useUnknownRank = true;\r
Rank rank = BerlinModelTransformer.rankId2Rank(rs, useUnknownRank, config.isSwitchSpeciesGroup());\r
\r
- if (rank.equals(Rank.UNKNOWN_RANK())){\r
- rank = handleProlesAndRace(state, rs);\r
+ if (rank == null || rank.equals(Rank.UNKNOWN_RANK()) || rank.equals(Rank.INFRASPECIFICTAXON())){\r
+ rank = handleProlesAndRace(state, rs, rank);\r
}\r
\r
if (rank.getId() == 0){\r
}\r
\r
\r
- private Rank handleProlesAndRace(BerlinModelImportState state, ResultSet rs) throws SQLException {\r
+ private Rank handleProlesAndRace(BerlinModelImportState state, ResultSet rs, Rank rank) throws SQLException {\r
Rank result;\r
String rankAbbrev = rs.getString("RankAbbrev");\r
String rankStr = rs.getString("Rank");\r
if (CdmUtils.nullSafeEqual(rankAbbrev, "prol.") ){\r
- result = getRank(state, BerlinModelTransformer.uuidRankProles, "Rank Proles", "Rank Proles", "prol.", Rank.SPECIES().getVocabulary());\r
+ result = getRank(state, BerlinModelTransformer.uuidRankProles, rankStr, "Rank Proles", rankAbbrev, Rank.SPECIES().getVocabulary());\r
}else if(CdmUtils.nullSafeEqual(rankAbbrev, "race")){\r
- result = getRank(state, BerlinModelTransformer.uuidRankRace, "Race", "Rank Race", "race", Rank.SPECIES().getVocabulary());\r
+ result = getRank(state, BerlinModelTransformer.uuidRankRace, rankStr, "Rank Race", rankAbbrev, Rank.SPECIES().getVocabulary());\r
}else{\r
- result = Rank.UNKNOWN_RANK();\r
+ result = rank;\r
+ logger.warn("Unhandled rank: " + rankAbbrev);\r
}\r
return result;\r
}\r