X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib-apps.git/blobdiff_plain/8422c0cda9d8661101ad991e935b549176bd85c7..69584a18d1c3bb00d432c238167e698fc50591db:/app-import/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java b/app-import/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java index 1910b0e5..d015d138 100644 --- a/app-import/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java +++ b/app-import/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java @@ -32,8 +32,6 @@ import eu.etaxonomy.cdm.io.common.IOValidator; import eu.etaxonomy.cdm.io.common.ResultSetPartitioner; import eu.etaxonomy.cdm.io.common.Source; import eu.etaxonomy.cdm.io.common.TdwgAreaProvider; -import eu.etaxonomy.cdm.model.common.Annotation; -import eu.etaxonomy.cdm.model.common.AnnotationType; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.Extension; import eu.etaxonomy.cdm.model.common.ExtensionType; @@ -41,12 +39,14 @@ import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.Marker; import eu.etaxonomy.cdm.model.common.MarkerType; import eu.etaxonomy.cdm.model.common.Representation; +import eu.etaxonomy.cdm.model.common.TermType; +import eu.etaxonomy.cdm.model.common.TermVocabulary; import eu.etaxonomy.cdm.model.description.CommonTaxonName; import eu.etaxonomy.cdm.model.description.DescriptionElementSource; import eu.etaxonomy.cdm.model.description.TaxonDescription; import eu.etaxonomy.cdm.model.location.Country; import eu.etaxonomy.cdm.model.location.NamedArea; -import eu.etaxonomy.cdm.model.name.TaxonNameBase; +import eu.etaxonomy.cdm.model.name.TaxonName; import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonBase; @@ -54,15 +54,18 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase; /** * * @author a.mueller - * @created 20.03.2008 + * @since 20.03.2008 */ @Component public class BerlinModelCommonNamesImport extends BerlinModelImportBase { - private static final Logger logger = Logger.getLogger(BerlinModelCommonNamesImport.class); + private static final long serialVersionUID = -8921948187177864321L; + + private static final Logger logger = Logger.getLogger(BerlinModelCommonNamesImport.class); public static final UUID REFERENCE_LANGUAGE_ISO639_2_UUID = UUID.fromString("40c4f8dd-3d9c-44a4-b77a-76e137a89a5f"); public static final UUID REFERENCE_LANGUAGE_STRING_UUID = UUID.fromString("2a1b678f-c27d-48c1-b43e-98fd0d426305"); - public static final UUID STATUS_ANNOTATION_UUID = UUID.fromString("e3f7b80a-1286-458d-812c-5e818f731968"); + public static final UUID COMMONNAME_STATUS_RECOMMENDED_UUID = UUID.fromString("e3f7b80a-1286-458d-812c-5e818f731968"); + public static final UUID COMMONNAME_STATUS_SYNONYM_UUID = UUID.fromString("169b2d97-a706-49de-b28b-c67f0ee6764b"); public static final String NAMESPACE = "common name"; @@ -72,7 +75,7 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { //map that stores the regions (named areas) and makes them accessible via the regionFk - private Map regionMap = new HashMap(); + private Map regionMap = new HashMap<>(); public BerlinModelCommonNamesImport(){ super(dbTableName, pluralString); @@ -81,9 +84,10 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { @Override protected String getIdQuery(BerlinModelImportState state) { String result = " SELECT CommonNameId FROM emCommonName WHERE (1=1) "; - if (StringUtils.isNotBlank(state.getConfig().getCommonNameFilter())){ + if (isNotBlank(state.getConfig().getCommonNameFilter())){ result += " AND " + state.getConfig().getCommonNameFilter(); } + result += " ORDER BY CommonNameId "; return result; } @@ -92,21 +96,30 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { protected String getRecordQuery(BerlinModelImportConfigurator config) { String recordQuery = ""; recordQuery = - " SELECT cn.CommonNameId, cn.CommonName, PTaxon.RIdentifier AS taxonId, cn.PTNameFk, cn.RefFk AS refId, cn.Status, cn.RegionFks, cn.MisNameRefFk, " + - " cn.NameInSourceFk, cn.Created_When, cn.Updated_When, cn.Created_Who, cn.Updated_Who, cn.Note AS Notes, languageCommonName.Language, " + - " languageCommonName.LanguageOriginal, languageCommonName.ISO639_1, languageCommonName.ISO639_2, " + - " emLanguageReference.RefFk AS languageRefRefFk, emLanguageReference.ReferenceShort, emLanguageReference.ReferenceLong, " + - " emLanguageReference.LanguageFk, languageReferenceLanguage.Language AS refLanguage, languageReferenceLanguage.ISO639_2 AS refLanguageIso639_2, "+ - " misappliedTaxon.RIdentifier AS misappliedTaxonId " + - " FROM PTaxon AS misappliedTaxon RIGHT OUTER JOIN " + - " emLanguage AS languageReferenceLanguage RIGHT OUTER JOIN " + - " emLanguageReference ON languageReferenceLanguage.LanguageId = emLanguageReference.LanguageFk RIGHT OUTER JOIN " + - " emCommonName AS cn INNER JOIN " + - " PTaxon ON cn.PTNameFk = PTaxon.PTNameFk AND cn.PTRefFk = PTaxon.PTRefFk ON " + - " emLanguageReference.ReferenceId = cn.LanguageRefFk LEFT OUTER JOIN " + - " emLanguage AS languageCommonName ON cn.LanguageFk = languageCommonName.LanguageId ON misappliedTaxon.PTNameFk = cn.NameInSourceFk AND " + - " misappliedTaxon.PTRefFk = cn.MisNameRefFk " + - " WHERE cn.CommonNameId IN (" + ID_LIST_TOKEN + ")"; + " SELECT rel.RelPTaxonId, rel.RelQualifierFk, acc.RIdentifier accTaxonId, factTaxon.RIdentifier factTaxonId, accName.NameId, f.FactId, " + + " cn.CommonNameId, cn.CommonName, tax.RIdentifier AS taxonId, cn.PTNameFk, cn.RefFk AS refId, cn.Status, cn.RegionFks, cn.MisNameRefFk, " + + " cn.NameInSourceFk, cn.Created_When, cn.Updated_When, cn.Created_Who, cn.Updated_Who, cn.Note AS Notes, languageCommonName.Language, " + + " languageCommonName.LanguageOriginal, languageCommonName.ISO639_1, languageCommonName.ISO639_2, " + + " emLanguageReference.RefFk AS languageRefRefFk, emLanguageReference.ReferenceShort, emLanguageReference.ReferenceLong, " + + " emLanguageReference.LanguageFk, languageReferenceLanguage.Language AS refLanguage, languageReferenceLanguage.ISO639_2 AS refLanguageIso639_2, "+ + " misappliedTaxon.RIdentifier AS misappliedTaxonId " + + " FROM PTaxon AS misappliedTaxon RIGHT OUTER JOIN " + + " emLanguage AS languageReferenceLanguage RIGHT OUTER JOIN " + + " emLanguageReference ON languageReferenceLanguage.LanguageId = emLanguageReference.LanguageFk RIGHT OUTER JOIN " + + " emCommonName AS cn INNER JOIN " + + " PTaxon AS tax ON cn.PTNameFk = tax.PTNameFk AND cn.PTRefFk = tax.PTRefFk ON " + + " emLanguageReference.ReferenceId = cn.LanguageRefFk LEFT OUTER JOIN " + + " emLanguage AS languageCommonName ON cn.LanguageFk = languageCommonName.LanguageId ON misappliedTaxon.PTNameFk = cn.NameInSourceFk AND " + + " misappliedTaxon.PTRefFk = cn.MisNameRefFk " + + + " LEFT OUTER JOIN Fact f ON cn.CommonNameId = f.ExtensionFk " + + " LEFT OUTER JOIN PTaxon factTaxon ON factTaxon.PTNameFk = f.PTNameFk AND factTaxon.PTRefFk = f.PTRefFk " + + " LEFT OUTER JOIN RelPTaxon rel ON rel.PTNameFk1 = tax.PTNameFk AND rel.PTRefFk1 = tax.PTRefFk AND rel.RelQualifierFk IN (2,6,7) " + + " LEFT OUTER JOIN PTaxon acc ON rel.PTNameFk2 = acc.PTNameFk AND rel.PTRefFk2 = acc.PTRefFk " + + " LEFT OUTER JOIN Name accName ON accName.NameId = acc.PTNameFk " + + " WHERE cn.CommonNameId IN (" + ID_LIST_TOKEN + ") " + + " ORDER BY cn.CommonNameId "; + return recordQuery; } @@ -129,7 +142,7 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { */ private void makeRegions(BerlinModelImportState state) { try { - SortedSet regionFks = new TreeSet(); + SortedSet regionFks = new TreeSet<>(); Source source = state.getConfig().getSource(); //fill set with all regionFk from emCommonName.regionFks @@ -159,23 +172,29 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { public boolean doPartition(ResultSetPartitioner partitioner, BerlinModelImportState state) { boolean success = true ; - Set taxaToSave = new HashSet(); - Map taxonMap = partitioner.getObjectMap(BerlinModelTaxonImport.NAMESPACE); - Map taxonNameMap = partitioner.getObjectMap(BerlinModelTaxonNameImport.NAMESPACE); + Set taxaToSave = new HashSet<>(); + @SuppressWarnings("unchecked") + Map taxonMap = partitioner.getObjectMap(BerlinModelTaxonImport.NAMESPACE); + @SuppressWarnings("unchecked") + Map taxonNameMap = partitioner.getObjectMap(BerlinModelTaxonNameImport.NAMESPACE); + @SuppressWarnings("unchecked") + Map refMap = partitioner.getObjectMap(BerlinModelReferenceImport.REFERENCE_NAMESPACE); - Map refMap = partitioner.getObjectMap(BerlinModelReferenceImport.REFERENCE_NAMESPACE); - - Map iso6392Map = new HashMap(); + Map iso6392Map = new HashMap<>(); // logger.warn("MisappliedNameRefFk not yet implemented for Common Names"); ResultSet rs = partitioner.getResultSet(); + Integer lastCommonNameId = null; try{ while (rs.next()){ //create TaxonName element Integer commonNameId = rs.getInt("CommonNameId"); int taxonId = rs.getInt("taxonId"); + Integer factTaxonId = nullSafeInt(rs, "factTaxonId"); + Integer accTaxonId = nullSafeInt(rs, "accTaxonId"); //if common name is related to synonym this is the accepted taxon id + Integer refId = nullSafeInt(rs, "refId"); // Integer ptNameFk = nullSafeInt(rs,"PTNameFk"); String commonNameString = rs.getString("CommonName"); @@ -191,9 +210,15 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { Integer nameInSourceFk = nullSafeInt( rs, "NameInSourceFk"); Integer misappliedTaxonId = nullSafeInt( rs, "misappliedTaxonId"); + if (commonNameId == lastCommonNameId){ + logger.warn("CommonNameId >1 times in query. This may happen due to LEFT JOINS to fact and/or accepted taxon and e.g. multiple taxon relationships. 2018-04-01 no such double relation existed in E+M. "); + }else{ + lastCommonNameId = commonNameId; + } + //regions String regionFks = rs.getString("RegionFks"); - String[] regionFkSplit = regionFks.split(","); + String[] regionFkSplit = (regionFks==null)? new String[0] : regionFks.split(","); //commonNameString if (isBlank(commonNameString)){ @@ -208,18 +233,29 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { if (taxonBase == null){ logger.warn("Taxon (" + taxonId + ") could not be found. Common name " + commonNameString + "(" + commonNameId + ") not imported"); continue; - }else if (! taxonBase.isInstanceOf(Taxon.class)){ - logger.warn("taxon (" + taxonId + ") is not accepted. Can't import common name " + commonNameId); - continue; + }else if (taxonBase.isInstanceOf(Taxon.class)){ + taxon = CdmBase.deproxy(taxonBase, Taxon.class); + if (factTaxonId != null && !factTaxonId.equals(taxonId)){ + logger.warn("Fact taxon ("+factTaxonId+") for common name "+commonNameId+" differs from common name taxon " + taxonId); + } }else{ - taxon = CdmBase.deproxy(taxonBase, Taxon.class); + Taxon factTaxon = null; + if (factTaxonId != null && factTaxonId.equals(accTaxonId)){ + factTaxon = taxonMap.get(String.valueOf(factTaxonId)); + } + if (factTaxon != null){ + taxon = factTaxon; + }else{ + logger.warn("taxon (" + taxonId + ") is not accepted. Can't import common name " + commonNameId + ". FactTaxonId= " + factTaxonId + "; accTaxonId = " + accTaxonId); + continue; + } } //Language Language language = getAndHandleLanguage(iso6392Map, iso639_2, iso639_1, languageString, originalLanguageString, state); //CommonTaxonName - List commonTaxonNames = new ArrayList(); + List commonTaxonNames = new ArrayList<>(); for (String regionFk : regionFkSplit){ // CommonTaxonName commonTaxonName; if (commonTaxonNames.size() == 0){ @@ -231,7 +267,7 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { regionFk = regionFk.trim(); NamedArea area = regionMap.get(regionFk); if (area == null){ - if (regionFkSplit.length > 1 && StringUtils.isNotBlank(regionFk)){ + if (regionFkSplit.length > 1 && isNotBlank(regionFk)){ logger.warn("Area for " + regionFk + " not defined in regionMap."); }else{ //no region is defined @@ -249,7 +285,7 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { if (languageRefRefFk == null){ languageRefRefFk = refId; }else{ - logger.warn("CommonName.RefFk (" + CdmUtils.Nz(refId) + ") and LanguageReference.RefFk " + (languageRefRefFk==null? "null" : languageRefRefFk) + " are not equal. I will import only languageReference.RefFk"); + logger.warn("CommonName.RefFk (" + CdmUtils.Nz(refId) + ") and LanguageReference.RefFk " + languageRefRefFk + " are not equal. I will import only languageReference.RefFk"); } } @@ -260,13 +296,15 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { String microCitation = null; String originalNameString = null; - TaxonNameBase nameUsedInSource = taxonNameMap.get(String.valueOf(nameInSourceFk)); + TaxonName nameUsedInSource = taxonNameMap.get(String.valueOf(nameInSourceFk)); if (nameInSourceFk != null && nameUsedInSource == null){ - logger.warn("Name used in source (" + nameInSourceFk + ") was not found for common name " + commonNameId); + if (nameInSourceFk != -1 || !state.getConfig().isEuroMed()){ + logger.warn("Name used in source (" + nameInSourceFk + ") was not found for common name " + commonNameId); + } } - DescriptionElementSource source = DescriptionElementSource.NewPrimarySourceInstance(reference, microCitation, nameUsedInSource, originalNameString); for (CommonTaxonName commonTaxonName : commonTaxonNames){ - commonTaxonName.addSource(source); + DescriptionElementSource source = DescriptionElementSource.NewPrimarySourceInstance(reference, microCitation, nameUsedInSource, originalNameString); + commonTaxonName.addSource(source); } @@ -300,7 +338,7 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { } if (misappliedNameTaxon != null){ - if (! taxon.getMisappliedNames().contains(misappliedNameTaxon)){ + if (! taxon.getMisappliedNames(false).contains(misappliedNameTaxon)){ taxon.addMisappliedName(misappliedNameTaxon,state.getTransactionalSourceReference(), null); logger.warn("Misapplied name for common name was not found related to the accepted taxon. Created new relationship. CommonNameId: " + commonNameId); } @@ -311,7 +349,8 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { misappliedNameDescription.addElement(commonNameClone); } }else{ - logger.warn("Misapplied name is null for common name " + commonNameId); + //wird schon oben gelogged + //logger.warn("Misapplied name is null for common name " + commonNameId); } } @@ -334,10 +373,26 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { //status if (isNotBlank(status)){ - AnnotationType statusAnnotationType = getAnnotationType( state, STATUS_ANNOTATION_UUID, "status","The status of this object","status", null); - for (CommonTaxonName commonTaxonName : commonTaxonNames){ - Annotation annotation = Annotation.NewInstance(status, statusAnnotationType, Language.DEFAULT()); - commonTaxonName.addAnnotation(annotation); + TermVocabulary markerTypeVoc = getVocabulary(TermType.MarkerType, BerlinModelTransformer.uuidVocEMMarkerType, + "Euro+Med marker type vocabulary", "E+M marker types", null, null, false, MarkerType.COMPLETE()); + MarkerType recommendedMarkerType = getMarkerType( state, COMMONNAME_STATUS_RECOMMENDED_UUID, "recommended","If the common name has the status recommended (see also status 'synonym', if none of them is true the default status is 'unassessed')", + "recommended", markerTypeVoc); + MarkerType synonymMarkerType = getMarkerType( state, COMMONNAME_STATUS_SYNONYM_UUID, "synonym","If the common name has the status synonym (see also status 'recommended', if none of them is true the default status is 'unassessed')", + "synonym", markerTypeVoc); + for (CommonTaxonName commonTaxonName : commonTaxonNames){ + Marker marker = null; + if (status.equals("recommended")){ + marker = Marker.NewInstance(recommendedMarkerType, true); + }else if (status.equals("synonym")){ + marker = Marker.NewInstance(synonymMarkerType, true); + }else if (status.equals("unassessed")){ + //do nothing + }else{ + logger.warn("Unknown common name status: " + status); + } + if (marker != null){ + commonTaxonName.addMarker(marker); + } } } @@ -354,7 +409,9 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { return false; } catch (ClassCastException e) { e.printStackTrace(); - } + } catch (Exception e) { + throw e; + } // logger.info( i + " names handled"); getTaxonService().save(taxaToSave); @@ -503,11 +560,11 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { NamedArea newArea = getNamedArea(state, null, region, "Language region '" + region + "'", null, null, null); // getTermService().save(newArea); regionMap.put(String.valueOf(regionId), newArea); - logger.warn("Found new area: " + region); + logger.info("Found new area: " + region); }else if (splitRegion.length == 2){ String emCode = splitRegion[1].trim(); String tdwgCode = emTdwgMap.get(emCode); - if (StringUtils.isNotBlank(tdwgCode) ){ + if (isNotBlank(tdwgCode) ){ NamedArea tdwgArea = getNamedArea(state, tdwgCode); regionMap.put(String.valueOf(regionId), tdwgArea); }else { @@ -543,7 +600,12 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { area = Country.RUSSIANFEDERATION(); }else if (tdwgCode.equalsIgnoreCase("Gg")){ area = Country.GEORGIA(); - }else{ + }else if (tdwgCode.equalsIgnoreCase("SM")){ + area = getNamedArea(state, BerlinModelTransformer.uuidSM , "Serbia & Montenegro", "Serbia & Montenegro", "SM", null, null); + getTermService().saveOrUpdate(area); + }else if (tdwgCode.equalsIgnoreCase("Tu")){ + area = Country.TURKEYREPUBLICOF(); + }else{ area = TdwgAreaProvider.getAreaByTdwgAbbreviation(tdwgCode); } if (area == null){ @@ -575,18 +637,19 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { private Map getEmTdwgMap(Source source) throws SQLException { String sql; ResultSet rs; - Map emTdwgMap = new HashMap(); + Map emTdwgMap = new HashMap<>(); sql = " SELECT EmCode, TDWGCode FROM emArea "; rs = source.getResultSet(sql); while (rs.next()){ String emCode = rs.getString("EMCode"); String TDWGCode = rs.getString("TDWGCode"); - if (StringUtils.isNotBlank(emCode) ){ + if (isNotBlank(emCode) ){ emCode = emCode.trim(); if (emCode.equalsIgnoreCase("Ab") || emCode.equalsIgnoreCase("Rf")|| - emCode.equalsIgnoreCase("Uk") || emCode.equalsIgnoreCase("Gg")){ + emCode.equalsIgnoreCase("Uk") || emCode.equalsIgnoreCase("Gg") + || emCode.equalsIgnoreCase("SM") || emCode.equalsIgnoreCase("Tu")){ emTdwgMap.put(emCode, emCode); - }else if (StringUtils.isNotBlank(TDWGCode)){ + }else if (isNotBlank(TDWGCode)){ emTdwgMap.put(emCode, TDWGCode.trim()); } } @@ -597,6 +660,7 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { emTdwgMap.put("Uk / Uk(U)", "Uk"); emTdwgMap.put("Ar / Ar(A)", "TCS-AR"); emTdwgMap.put("Hs / Hs(S)", "SPA-SP"); + emTdwgMap.put("Hb / Hb(E)", "IRE-IR"); return emTdwgMap; } @@ -625,16 +689,17 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { String nameSpace; Class cdmClass; Set idSet; - Map> result = new HashMap>(); + Map> result = new HashMap<>(); String pos = "0"; try{ - Set taxonIdSet = new HashSet(); - Set nameIdSet = new HashSet(); - Set referenceIdSet = new HashSet(); + Set taxonIdSet = new HashSet<>(); + Set nameIdSet = new HashSet<>(); + Set referenceIdSet = new HashSet<>(); while (rs.next()){ handleForeignKey(rs, taxonIdSet, "taxonId"); - handleForeignKey(rs, taxonIdSet, "misappliedTaxonId"); + handleForeignKey(rs, taxonIdSet, "factTaxonId"); + handleForeignKey(rs, taxonIdSet, "misappliedTaxonId"); handleForeignKey(rs, referenceIdSet, "refId"); handleForeignKey(rs, referenceIdSet, "languageRefRefFk"); handleForeignKey(rs, nameIdSet, "NameInSourceFk"); @@ -644,23 +709,26 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { //name map nameSpace = BerlinModelTaxonNameImport.NAMESPACE; - cdmClass = TaxonNameBase.class; + cdmClass = TaxonName.class; idSet = nameIdSet; - Map> nameMap = (Map>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace); + @SuppressWarnings("unchecked") + Map nameMap = (Map)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace); result.put(nameSpace, nameMap); //taxon map nameSpace = BerlinModelTaxonImport.NAMESPACE; cdmClass = TaxonBase.class; idSet = taxonIdSet; - Map> taxonMap = (Map>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace); + @SuppressWarnings("unchecked") + Map> taxonMap = (Map>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace); result.put(nameSpace, taxonMap); //reference map nameSpace = BerlinModelReferenceImport.REFERENCE_NAMESPACE; cdmClass = Reference.class; idSet = referenceIdSet; - Map referenceMap = (Map)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace); + @SuppressWarnings("unchecked") + Map referenceMap = (Map)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace); result.put(nameSpace, referenceMap); // TODO remove if problem with duplicate DescElement_Annot id is solved } catch (SQLException e) {