From: Andreas Müller Date: Thu, 6 Jun 2013 14:17:01 +0000 (+0000) Subject: update factory methods for original sources #1549 X-Git-Tag: cdmlib-parent-3.3.0~396^2~290 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/commitdiff_plain/fad74844bd8face7f35484034c522691fb4c17b5 update factory methods for original sources #1549 --- diff --git a/cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/bci/BciServiceWrapper.java b/cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/bci/BciServiceWrapper.java index 93f8a6a598..0d7f5f6f1c 100644 --- a/cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/bci/BciServiceWrapper.java +++ b/cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/bci/BciServiceWrapper.java @@ -39,6 +39,7 @@ import eu.etaxonomy.cdm.ext.common.SchemaAdapterBase; import eu.etaxonomy.cdm.ext.common.ServiceWrapperBase; import eu.etaxonomy.cdm.model.common.IdentifiableEntity; import eu.etaxonomy.cdm.model.common.LSID; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.occurrence.Collection; import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.cdm.model.reference.ReferenceFactory; @@ -228,7 +229,7 @@ public class BciServiceWrapper extends ServiceWrapperBase implements //id, citation Reference citation = getBciCitation(appConfig); - result.addSource(id, null, citation, null); + result.addSource(OriginalSourceType.Lineage, id, null, citation, null); return result; diff --git a/cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/ipni/IpniService.java b/cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/ipni/IpniService.java index 56e7b65857..bd7c1916c0 100644 --- a/cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/ipni/IpniService.java +++ b/cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/ipni/IpniService.java @@ -42,6 +42,7 @@ import eu.etaxonomy.cdm.model.common.Extension; import eu.etaxonomy.cdm.model.common.ExtensionType; import eu.etaxonomy.cdm.model.common.IdentifiableEntity; import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.TimePeriod; import eu.etaxonomy.cdm.model.name.BotanicalName; import eu.etaxonomy.cdm.model.name.NomenclaturalCode; @@ -377,7 +378,7 @@ public class IpniService implements IIpniService{ //source Reference citation = getIpniCitation(appConfig); - ref.addSource(valueMap.get(ID), "Publication", citation, valueMap.get(VERSION)); + ref.addSource(OriginalSourceType.Lineage, valueMap.get(ID), "Publication", citation, valueMap.get(VERSION)); @@ -549,7 +550,7 @@ public class IpniService implements IIpniService{ //source Reference citation = getIpniCitation(appConfig); - name.addSource(valueMap.get(ID), "Name", citation, valueMap.get(VERSION)); + name.addSource(OriginalSourceType.Lineage, valueMap.get(ID), "Name", citation, valueMap.get(VERSION)); // //TODO @@ -671,10 +672,10 @@ public class IpniService implements IIpniService{ person.setFirstname(valueMap.get(DEFAULT_AUTHOR_FORENAME)); person.setLastname(valueMap.get(DEFAULT_AUTHOR_SURNAME)); - Reference citation = getIpniCitation(appConfig); + Reference citation = getIpniCitation(appConfig); //id, version - person.addSource(valueMap.get(ID), "Author", citation, valueMap.get(VERSION)); + person.addSource(OriginalSourceType.Lineage, valueMap.get(ID), "Author", citation, valueMap.get(VERSION)); //dates TimePeriod lifespan = TimePeriod.parseString(valueMap.get(DATES)); @@ -699,7 +700,7 @@ public class IpniService implements IIpniService{ private Reference getIpniCitation(ICdmApplicationConfiguration appConfig) { - Reference ipniReference; + Reference ipniReference; if (appConfig != null){ ipniReference = appConfig.getReferenceService().find(uuidIpni); if (ipniReference == null){ @@ -717,7 +718,7 @@ public class IpniService implements IIpniService{ * @return */ private Reference getNewIpniReference() { - Reference ipniReference; + Reference ipniReference; ipniReference = ReferenceFactory.newDatabase(); ipniReference.setTitleCache("The International Plant Names Index (IPNI)"); return ipniReference; diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java index 5c38107a17..6dc2813f9a 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java @@ -278,7 +278,7 @@ public class BerlinModelCommonNamesImport extends BerlinModelImportBase { if (nameInSourceFk != null && nameUsedInSource == null){ logger.warn("Name used in source (" + nameInSourceFk + ") was not found for common name " + commonNameId); } - DescriptionElementSource source = DescriptionElementSource.NewInstance(reference, microCitation, nameUsedInSource, originalNameString); + DescriptionElementSource source = DescriptionElementSource.NewPrimarySourceInstance(reference, microCitation, nameUsedInSource, originalNameString); for (CommonTaxonName commonTaxonName : commonTaxonNames){ commonTaxonName.addSource(source); } diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelFactsImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelFactsImport.java index 2365f13629..775b1e795d 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelFactsImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelFactsImport.java @@ -305,7 +305,7 @@ public class BerlinModelFactsImport extends BerlinModelImportBase { } //reference - Reference citation = null; + Reference citation = null; String factRefFk = String.valueOf(factRefFkObj); if (factRefFkObj != null){ citation = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, factRefFk); @@ -314,10 +314,8 @@ public class BerlinModelFactsImport extends BerlinModelImportBase { logger.warn("Citation not found in referenceMap: " + factRefFk); success = false; } - if (citation != null || CdmUtils.isNotEmpty(details)){ - DescriptionElementSource originalSource = DescriptionElementSource.NewInstance(); - originalSource.setCitation(citation); - originalSource.setCitationMicroReference(details); + if (citation != null || StringUtils.isNotBlank(details)){ + DescriptionElementSource originalSource = DescriptionElementSource.NewPrimarySourceInstance(citation, details); textData.addSource(originalSource); } taxonDescription.addElement(textData); diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelNameFactsImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelNameFactsImport.java index 5b26a8e852..92bebaa9a2 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelNameFactsImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelNameFactsImport.java @@ -39,6 +39,7 @@ import eu.etaxonomy.cdm.io.common.ResultSetPartitioner; import eu.etaxonomy.cdm.model.agent.Person; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.description.TaxonNameDescription; import eu.etaxonomy.cdm.model.description.TextData; @@ -133,9 +134,9 @@ public class BerlinModelNameFactsImport extends BerlinModelImportBase { String category = CdmUtils.Nz(rs.getString("NameFactCategory")); String nameFact = CdmUtils.Nz(rs.getString("nameFact")); - TaxonNameBase taxonNameBase = nameMap.get(String.valueOf(nameId)); + TaxonNameBase taxonNameBase = nameMap.get(String.valueOf(nameId)); String nameFactRefFk = String.valueOf(nameFactRefFkObj); - Reference citation = getReferenceOnlyFromMaps(biblioRefMap, + Reference citation = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, nameFactRefFk); if (taxonNameBase != null){ @@ -149,12 +150,12 @@ public class BerlinModelNameFactsImport extends BerlinModelImportBase { TaxonNameDescription description = TaxonNameDescription.NewInstance(); TextData protolog = TextData.NewInstance(Feature.PROTOLOGUE()); protolog.addMedia(media); - protolog.addSource(String.valueOf(nameFactId), NAMESPACE, null, null, null, null); + protolog.addSource(OriginalSourceType.Import, String.valueOf(nameFactId), NAMESPACE, null, null, null, null); description.addElement(protolog); taxonNameBase.addDescription(description); if (citation != null){ - description.addSource(null, null, citation, null); - protolog.addSource(null, null, citation, nameFactRefDetail, null, null); + description.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, null); + protolog.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, nameFactRefDetail, null, null); } }//end NAME_FACT_PROTOLOGUE }catch(NullPointerException e){ @@ -168,8 +169,10 @@ public class BerlinModelNameFactsImport extends BerlinModelImportBase { //TODO language Language language = Language.DEFAULT(); additionalPublication.putText(language, nameFact); - additionalPublication.addSource(String.valueOf(nameFactId), NAMESPACE, citation, - nameFactRefDetail, null, null); + additionalPublication.addSource(OriginalSourceType.Import, String.valueOf(nameFactId), NAMESPACE, null,null, null, null); + if (citation != null || isNotBlank(nameFactRefDetail)){ + additionalPublication.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, nameFactRefDetail, null, null); + } description.addElement(additionalPublication); taxonNameBase.addDescription(description); } @@ -180,8 +183,10 @@ public class BerlinModelNameFactsImport extends BerlinModelImportBase { //TODO language Language language = Language.DEFAULT(); bibliography.putText(language, nameFact); - bibliography.addSource(String.valueOf(nameFactId), NAMESPACE, citation, - nameFactRefDetail, null, null); + bibliography.addSource(OriginalSourceType.Import, String.valueOf(nameFactId), NAMESPACE, null,null, null, null); + if (citation != null || isNotBlank(nameFactRefDetail)){ + bibliography.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, nameFactRefDetail, null, null); + } description.addElement(bibliography); taxonNameBase.addDescription(description); } diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceImport.java index 45a0f19ac1..fe4aae4b3b 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceImport.java @@ -188,7 +188,7 @@ public class BerlinModelOccurrenceImport extends BerlinModelImportBase { Distribution duplicate = checkIsNoDuplicate(taxonDescription, distribution, duplicateMap , occurrenceId); if (duplicate == null){ taxonDescription.addElement(distribution); - distribution.addSource(String.valueOf(occurrenceId), NAMESPACE, state.getTransactionalSourceReference(), null); + distribution.addImportSource(String.valueOf(occurrenceId), NAMESPACE, state.getTransactionalSourceReference(), null); countDistributions++; if (taxonDescription != oldDescription){ taxaToSave.add(taxonDescription.getTaxon()); @@ -197,7 +197,7 @@ public class BerlinModelOccurrenceImport extends BerlinModelImportBase { } }else{ countDuplicates++; - duplicate.addSource(String.valueOf(occurrenceId), NAMESPACE, state.getTransactionalSourceReference(), null); + duplicate.addImportSource(String.valueOf(occurrenceId), NAMESPACE, state.getTransactionalSourceReference(), null); logger.info("Distribution is duplicate"); } } else { logger.warn("Distribution " + area.getLabel() + " ignored. OccurrenceId = " + occurrenceId); diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceSourceImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceSourceImport.java index 6da239a0dc..ce3c83d846 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceSourceImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceSourceImport.java @@ -28,6 +28,7 @@ import eu.etaxonomy.cdm.io.common.ResultSetPartitioner; import eu.etaxonomy.cdm.io.common.Source; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.DescriptionElementSource; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; import eu.etaxonomy.cdm.model.description.Distribution; import eu.etaxonomy.cdm.model.name.NonViralName; @@ -134,13 +135,13 @@ public class BerlinModelOccurrenceSourceImport extends BerlinModelImportBase { Reference ref = getReference(refId, state); if (ref != null){ - DescriptionElementSource originalSource = DescriptionElementSource.NewInstance(); + DescriptionElementSource originalSource = DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource); originalSource.setCitation(ref); TaxonNameBase taxonName; taxonName = getName(state, oldName, oldNameFk); if (taxonName != null){ originalSource.setNameUsedInSource(taxonName); - }else if(CdmUtils.isNotEmpty(oldName)){ + }else if(isNotBlank(oldName)){ originalSource.setOriginalNameString(oldName); } distribution.addSource(originalSource); diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelReferenceImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelReferenceImport.java index 8bc1b7f43f..589a205e7e 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelReferenceImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelReferenceImport.java @@ -20,9 +20,6 @@ import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.REF_PART_OF import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.REF_PRINT_SERIES; import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.REF_UNKNOWN; import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.REF_WEBSITE; -import static eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES.ALL; -import static eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES.CONCEPT_REFERENCES; -import static eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES.NOMENCLATURAL; import static eu.etaxonomy.cdm.io.common.ImportHelper.NO_OVERWRITE; import static eu.etaxonomy.cdm.io.common.ImportHelper.OBLIGATORY; import static eu.etaxonomy.cdm.io.common.ImportHelper.OVERWRITE; @@ -67,9 +64,7 @@ import eu.etaxonomy.cdm.model.common.IdentifiableSource; import eu.etaxonomy.cdm.model.common.Marker; import eu.etaxonomy.cdm.model.common.MarkerType; import eu.etaxonomy.cdm.model.reference.IArticle; -import eu.etaxonomy.cdm.model.reference.IBook; import eu.etaxonomy.cdm.model.reference.IBookSection; -import eu.etaxonomy.cdm.model.reference.IJournal; import eu.etaxonomy.cdm.model.reference.IPrintSeries; import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.cdm.model.reference.ReferenceFactory; @@ -511,8 +506,8 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase { //idInSource String idInSource = (String)valueMap.get("IdInSource".toLowerCase()); - if (CdmUtils.isNotEmpty(idInSource)){ - IdentifiableSource source = IdentifiableSource.NewInstance(idInSource); + if (isNotBlank(idInSource)){ + IdentifiableSource source = IdentifiableSource.NewDataImportInstance(idInSource); source.setIdNamespace("import to Berlin Model"); referenceBase.addSource(source); } diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelTaxonRelationImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelTaxonRelationImport.java index 2d25a9f790..abcecea3c6 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelTaxonRelationImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelTaxonRelationImport.java @@ -126,7 +126,7 @@ public class BerlinModelTaxonRelationImport extends BerlinModelImportBase { if (i == 1 && state.getConfig().getClassificationUuid() != null){ tree.setUuid(state.getConfig().getClassificationUuid()); } - IdentifiableSource identifiableSource = IdentifiableSource.NewInstance(ptRefFk, TREE_NAMESPACE); + IdentifiableSource identifiableSource = IdentifiableSource.NewDataImportInstance(ptRefFk, TREE_NAMESPACE); tree.addSource(identifiableSource); getClassificationService().save(tree); diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmImportBase.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmImportBase.java index 38ad3b46af..199fb6f3b2 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmImportBase.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmImportBase.java @@ -43,6 +43,7 @@ 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.OrderedTermVocabulary; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.Representation; import eu.etaxonomy.cdm.model.common.TermVocabulary; import eu.etaxonomy.cdm.model.description.DescriptionBase; @@ -788,14 +789,15 @@ public abstract class CdmImportBase)cdmBase; Object id = idAttributeValue; String strId = String.valueOf(id); String microCitation = null; + OriginalSourceType type = OriginalSourceType.Import; if (cdmBase instanceof IdentifiableEntity){ - source = IdentifiableSource.NewInstance(strId, namespace, citation, microCitation); + source = IdentifiableSource.NewInstance(type, strId, namespace, citation, microCitation); }else if (cdmBase instanceof DescriptionElementBase){ - source = DescriptionElementSource.NewInstance(strId, namespace, citation, microCitation); + source = DescriptionElementSource.NewInstance(type, strId, namespace, citation, microCitation); }else{ logger.warn("ISourceable not beeing identifiable entities or description element base are not yet supported. CdmBase is of type " + cdmBase.getClass().getName() + ". Original source not added."); return; @@ -870,7 +872,7 @@ public abstract class CdmImportBase ref = null; return getTaxonNameDescription(name, ref, isImageGallery, createNewIfNotExists); } @@ -896,7 +898,7 @@ public abstract class CdmImportBase originalSource; + OriginalSourceType type = OriginalSourceType.Import; if (HibernateProxyHelper.isInstanceOf(sourceable, IdentifiableEntity.class)){ - originalSource = IdentifiableSource.NewInstance(sourceId, namespace, sourceReference, null); + originalSource = IdentifiableSource.NewInstance(type, sourceId, namespace, sourceReference, null); }else if (HibernateProxyHelper.isInstanceOf(sourceable, DescriptionElementBase.class)){ - originalSource = DescriptionElementSource.NewInstance(sourceId, namespace, sourceReference, null); + originalSource = DescriptionElementSource.NewInstance(type, sourceId, namespace, sourceReference, null); }else{ throw new ClassCastException("Unknown implementing class for ISourceable "+ sourceable.getClass() + " . Not supported bei ImportHelper."); } diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementCreationMapperBase.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementCreationMapperBase.java index eec73625ef..45d82dffec 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementCreationMapperBase.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementCreationMapperBase.java @@ -14,11 +14,13 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Set; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import eu.etaxonomy.cdm.common.CdmUtils; import eu.etaxonomy.cdm.io.common.DbImportStateBase; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; import eu.etaxonomy.cdm.model.description.TaxonDescription; import eu.etaxonomy.cdm.model.reference.Reference; @@ -74,7 +76,7 @@ public abstract class DbImportDescriptionElementCreationMapperBase citation = (Reference) getState().getRelatedObject(sourceNamespace, String.valueOf(rs.getObject(dbCitationAttribute))); - element.addSource(null, null, citation, microCitation); + element.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, microCitation); } /** diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementSourceCreationMapper.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementSourceCreationMapper.java index 544b6d3749..9f18d1d64a 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementSourceCreationMapper.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementSourceCreationMapper.java @@ -18,6 +18,7 @@ import org.apache.log4j.Logger; import eu.etaxonomy.cdm.common.CdmUtils; import eu.etaxonomy.cdm.io.common.DbImportStateBase; import eu.etaxonomy.cdm.model.common.DescriptionElementSource; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; import eu.etaxonomy.cdm.model.reference.Reference; @@ -93,7 +94,7 @@ public class DbImportDescriptionElementSourceCreationMapper extends DbImportObje */ @Override protected DescriptionElementSource createObject(ResultSet rs)throws SQLException { - DescriptionElementSource source = DescriptionElementSource.NewInstance(); + DescriptionElementSource source = DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource); return source; } diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportObjectCreationMapperBase.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportObjectCreationMapperBase.java index ec669b8be2..98b8e1a34a 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportObjectCreationMapperBase.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportObjectCreationMapperBase.java @@ -102,9 +102,9 @@ public abstract class DbImportObjectCreationMapperBase idResult = new MappedCdmBase(idTerm, refId, newRef); resultList.add(idResult); } diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/in/GbifReferenceCsv2CdmConverter.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/in/GbifReferenceCsv2CdmConverter.java index 99d63016b5..1a710ed44c 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/in/GbifReferenceCsv2CdmConverter.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/in/GbifReferenceCsv2CdmConverter.java @@ -27,6 +27,7 @@ import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.DescriptionElementSource; import eu.etaxonomy.cdm.model.common.LSID; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.TimePeriod; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.description.TaxonDescription; @@ -185,7 +186,7 @@ public class GbifReferenceCsv2CdmConverter extends PartitionableConverterBase> sourceList = sourceDataHolder.getSources(); for (Map sourceMap : sourceList){ - DescriptionElementSource source = DescriptionElementSource.NewInstance(); //ref Reference ref = ReferenceFactory.newGeneric(); boolean refExists = false; //in case none of the ref fields exists, the ref should not be added for (SourceType type : sourceMap.keySet()){ String value = sourceMap.get(type); if (type.equals(SourceType.Author)){ - TeamOrPersonBase author = getAuthorAccordingToConfig(value, state); + TeamOrPersonBase author = getAuthorAccordingToConfig(value, state); ref.setAuthorTeam(author); }else if (type.equals(SourceType.Title)) { ref.setTitle(value); @@ -393,6 +393,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase { } refExists = true; } + DescriptionElementSource source = DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource); if (refExists){ ref = getReferenceAccordingToConfig(ref, state); source.setCitation(ref); diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupDocumentImportNoComponent.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupDocumentImportNoComponent.java index d0b83b22d9..2ead380936 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupDocumentImportNoComponent.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupDocumentImportNoComponent.java @@ -42,6 +42,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.Extension; import eu.etaxonomy.cdm.model.common.ExtensionType; import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.TermVocabulary; import eu.etaxonomy.cdm.model.description.CommonTaxonName; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; @@ -873,12 +874,12 @@ public class MarkupDocumentImportNoComponent extends MarkupImportBase { // TODO use concrete source (e.g. DAPHNIPHYLLACEAE in FM // vol.13) Reference citation = state.getConfig().getSourceReference(); - media.addSource(numString, "num", citation, null); + media.addImportSource( numString, "num", citation, null); // TODO name used in source if available } // TODO which citation if (StringUtils.isNotBlank(id)) { - media.addSource(id, null, state.getConfig().getSourceReference(), null); + media.addImportSource(id, null, state.getConfig().getSourceReference(), null); } else { String message = "Figure id should never be empty or null"; fireWarningEvent(message, next, 6); @@ -1124,7 +1125,8 @@ public class MarkupDocumentImportNoComponent extends MarkupImportBase { TaxonDescription description = getTaxonDescription(taxon, descriptionRef, false, true); TextData featurePlaceholder = docImport.getFeaturePlaceholder(state, description, feature, true); for (Reference citation : refs) { - featurePlaceholder.addSource(null, null, citation, null); + featurePlaceholder.addSource(OriginalSourceType.PrimaryTaxonomicSource, + null, null, citation, null); } } else { String message = "No reference found in references"; diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupNomenclatureImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupNomenclatureImport.java index 7922863b3f..7892247678 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupNomenclatureImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupNomenclatureImport.java @@ -24,6 +24,7 @@ import org.apache.log4j.Logger; import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor; import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.TimePeriod; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.description.TaxonDescription; @@ -672,7 +673,7 @@ public class MarkupNomenclatureImport extends MarkupImportBase { .getSourceReference(), false, true); TextData citation = TextData.NewInstance(Feature.CITATION()); // TODO name used in source - citation.addSource(null, null, reference, microCitation); + citation.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, reference, microCitation); td.addElement(citation); } else if (TYPE.equalsIgnoreCase(classValue)) { handleNotYetImplementedAttributeValue(parentEvent, CLASS, diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDDataSetImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDDataSetImport.java index d969f116b0..c206b38a65 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDDataSetImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDDataSetImport.java @@ -51,6 +51,7 @@ import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.LanguageString; import eu.etaxonomy.cdm.model.common.Marker; import eu.etaxonomy.cdm.model.common.MarkerType; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.Representation; import eu.etaxonomy.cdm.model.common.TermBase; import eu.etaxonomy.cdm.model.common.TermVocabulary; @@ -421,7 +422,8 @@ public class SDDDataSetImport extends CdmImportBase descriptionSource = ReferenceFactory.newGeneric(); sources.add(descriptionSource); - td.addSource(null, null, descriptionSource, null); + //TODO type + td.addSource(OriginalSourceType.Unknown, null, null, descriptionSource, null); this.associateImageWithCdmBase(ref,descriptionSource); } } else { @@ -637,7 +639,7 @@ public class SDDDataSetImport extends CdmImportBase publication = publications.get(citations.get(ref)); if (locations.containsKey(ref)) { Annotation location = Annotation.NewInstance(locations.get(ref), datasetLanguage); AnnotationType annotationType = AnnotationType.NewInstance("", "location", ""); @@ -645,7 +647,8 @@ public class SDDDataSetImport extends CdmImportBase nonViralName = NonViralName.NewInstance(null); String id = new String("" + taxonNamesCount); - IdentifiableSource source = IdentifiableSource.NewInstance(id, "TaxonName"); + IdentifiableSource source = IdentifiableSource.NewDataImportInstance( id, "TaxonName"); importRepresentation(elCodedDescription, sddNamespace, nonViralName, id, cdmState); if(cdmState.getConfig().isDoMatchTaxa()){ @@ -1457,7 +1459,7 @@ public class SDDDataSetImport extends CdmImportBase Person person = Person.NewInstance(); importRepresentation(elAgent, sddNamespace, person, idA, cdmState); - person.addSource(IdentifiableSource.NewInstance(idA, "Agent")); + person.addSource(IdentifiableSource.NewDataImportInstance(idA, "Agent")); /*XIM Element elLinks = elAgent.getChild("Links",sddNamespace); diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java index 59d5805be4..be12930c06 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java @@ -52,6 +52,7 @@ import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.LanguageString; import eu.etaxonomy.cdm.model.common.Marker; import eu.etaxonomy.cdm.model.common.MarkerType; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.Representation; import eu.etaxonomy.cdm.model.common.TermBase; import eu.etaxonomy.cdm.model.common.TermVocabulary; @@ -396,7 +397,8 @@ public class SDDImport extends XmlImportBase descriptionSource = ReferenceFactory.newGeneric(); sources.add(descriptionSource); - td.addSource(null, null, descriptionSource, null); + //TODO type + td.addSource(OriginalSourceType.Unknown, null, null, descriptionSource, null); this.associateImageWithCdmBase(ref,descriptionSource); } } else { @@ -620,7 +622,7 @@ public class SDDImport extends XmlImportBase nonViralName = NonViralName.NewInstance(Rank.UNKNOWN_RANK()); String id = new String("" + taxonNamesCount); - IdentifiableSource source = IdentifiableSource.NewInstance(id, "TaxonName"); + IdentifiableSource source = IdentifiableSource.NewDataImportInstance(id, "TaxonName"); importRepresentation(elCodedDescription, sddNamespace, nonViralName, id, cdmState); if(cdmState.getConfig().isDoMatchTaxa()){ @@ -1430,7 +1433,7 @@ public class SDDImport extends XmlImportBase Person person = Person.NewInstance(); importRepresentation(elAgent, sddNamespace, person, idA, cdmState); - person.addSource(IdentifiableSource.NewInstance(idA, "Agent")); + person.addSource(IdentifiableSource.NewDataImportInstance(idA, "Agent")); /*XIM Element elLinks = elAgent.getChild("Links",sddNamespace); diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206Import.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206Import.java index d16c535d33..1a66ead030 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206Import.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206Import.java @@ -47,6 +47,7 @@ import eu.etaxonomy.cdm.model.agent.Team; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.DescriptionElementSource; import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.UuidAndTitleCache; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.description.IndividualsAssociation; @@ -594,7 +595,8 @@ public class Abcd206Import extends SpecimenImportBase citation : determinationEvent.getReferences()) { - indAssociation.addSource(DescriptionElementSource.NewInstance(null, null, citation, null)); + indAssociation.addSource(DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource, + null, null, citation, null)); } taxonDescription.addElement(indAssociation); diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenCdmExcelImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenCdmExcelImport.java index 09257b87b9..582949e170 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenCdmExcelImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenCdmExcelImport.java @@ -232,7 +232,7 @@ public class SpecimenCdmExcelImport extends ExcelTaxonOrSpecimenImportBase reference){ - IdentifiableSource source = getOrMakeSource(key); + IdentifiableSource source = getOrMakeSource(key, OriginalSourceType.Unknown); source.setCitation(reference); } @@ -368,10 +369,10 @@ public class SpecimenRow extends ExcelRowBase{ * @param key * @return */ - private IdentifiableSource getOrMakeSource(int key) { + private IdentifiableSource getOrMakeSource(int key, OriginalSourceType type) { IdentifiableSource source = sources.get(key); if (source == null){ - source = IdentifiableSource.NewInstance(); + source = IdentifiableSource.NewInstance(type); sources.put(key, source); } return source; diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenSythesysExcelImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenSythesysExcelImport.java index 058b521522..e48ef6508c 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenSythesysExcelImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenSythesysExcelImport.java @@ -41,6 +41,7 @@ import eu.etaxonomy.cdm.model.agent.Person; import eu.etaxonomy.cdm.model.agent.Team; import eu.etaxonomy.cdm.model.common.DescriptionElementSource; import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.TimePeriod; import eu.etaxonomy.cdm.model.common.UuidAndTitleCache; import eu.etaxonomy.cdm.model.description.Feature; @@ -550,7 +551,7 @@ public class SpecimenSythesysExcelImport extends CdmImportBase reference = ReferenceFactory.newGeneric(); reference.setTitleCache(originalsource, true); - derivedUnitBase.addSource(originalsource, "", reference, ""); + derivedUnitBase.addSource(OriginalSourceType.Unknown, originalsource, "", reference, ""); } /** * INSTITUTION & COLLECTION @@ -702,7 +703,7 @@ public class SpecimenSythesysExcelImport extends CdmImportBase citation : determinationEvent.getReferences()) { - indAssociation.addSource(DescriptionElementSource.NewInstance(null, null, citation, null)); + indAssociation.addSource(DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, null)); } taxonDescription.addElement(indAssociation); diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx/TaxonXDescriptionImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx/TaxonXDescriptionImport.java index 8c96436e52..5ff7258bc1 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx/TaxonXDescriptionImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx/TaxonXDescriptionImport.java @@ -30,6 +30,7 @@ import eu.etaxonomy.cdm.io.common.ICdmIO; import eu.etaxonomy.cdm.io.common.IImportConfigurator; import eu.etaxonomy.cdm.model.common.DescriptionElementSource; import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.TermVocabulary; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; import eu.etaxonomy.cdm.model.description.Feature; @@ -111,7 +112,7 @@ public class TaxonXDescriptionImport extends CdmIoBase implem TaxonDescription description = TaxonDescription.NewInstance(); description.setTitleCache(getDescriptionTitle(state), true); if (modsReference != null){ - description.addSource(null, null, modsReference, null); + description.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, modsReference, null); } Element elTaxonBody = root.getChild("taxonxBody", nsTaxonx); @@ -141,7 +142,7 @@ public class TaxonXDescriptionImport extends CdmIoBase implem //add reference if (modsReference != null){ - descriptionElement.addSource(null, null, modsReference, null, null, null); + descriptionElement.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, modsReference, null, null, null); } } diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfTaxonImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfTaxonImport.java index 07fb3220d0..feb6f6cb76 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfTaxonImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfTaxonImport.java @@ -27,6 +27,7 @@ import eu.etaxonomy.cdm.io.common.ICdmIO; import eu.etaxonomy.cdm.io.common.ImportHelper; import eu.etaxonomy.cdm.io.common.MapWrapper; import eu.etaxonomy.cdm.model.common.DescriptionElementSource; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; import eu.etaxonomy.cdm.model.description.Distribution; import eu.etaxonomy.cdm.model.description.Feature; @@ -140,7 +141,7 @@ public class TcsRdfTaxonImport extends TcsRdfImportBase implements ICdmIO taxonNameBase = taxonNameMap.get(strNameResource); if (taxonNameBase == null){ logger.warn("Taxon has no name: " + taxonAbout + "; Resource: " + strNameResource); } @@ -157,7 +158,7 @@ public class TcsRdfTaxonImport extends TcsRdfImportBase implements ICdmIO sec = referenceMap.get(strAccordingTo); if (sec == null){ sec = nomRefMap.get(strAccordingTo); } @@ -165,7 +166,7 @@ public class TcsRdfTaxonImport extends TcsRdfImportBase implements ICdmIO taxonBase; Namespace geoNamespace = config.getGeoNamespace(); if (hasIsSynonymRelation(elTaxonConcept, rdfNamespace) || isSynonym(elTaxonConcept, config.getPalmNamespace())){ //Synonym @@ -179,10 +180,12 @@ public class TcsRdfTaxonImport extends TcsRdfImportBase implements ICdmIO geoList = makeGeo(elTaxonConcept, geoNamespace, rdfNamespace); TaxonDescription description = TaxonDescription.NewInstance(taxon); - description.addSource(null, null, taxon.getSec(), null); + //TODO type + description.addSource(OriginalSourceType.Unknown, null, null, taxon.getSec(), null); for (DescriptionElementBase geo: geoList){ description.addElement(geo); - DescriptionElementSource source = DescriptionElementSource.NewInstance(null, null, taxon.getSec(), null); + //TODO type + DescriptionElementSource source = DescriptionElementSource.NewInstance(OriginalSourceType.Unknown, null, null, taxon.getSec(), null); geo.addSource(source); } taxon.addDescription(description); diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/DescriptionElementSource.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/DescriptionElementSource.java index a357ed9695..171048e83a 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/DescriptionElementSource.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/DescriptionElementSource.java @@ -59,56 +59,62 @@ public class DescriptionElementSource extends OriginalSourceBase nameUsedInSource; - private DescriptionElementSource(){ - + private DescriptionElementSource(OriginalSourceType type){ + super(type); } diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ISourceable.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ISourceable.java index c738bfe0a4..0ca85cab52 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ISourceable.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ISourceable.java @@ -30,14 +30,16 @@ public interface ISourceable { /** - * Adds a source that is newly created by its components. If all components are null + * Adds a source that is newly created by its components. If all components except for the + * type are null * no source is added. - * @param id - * @param idNamespace - * @param citation - * @param microCitation + * @param type the {@link OriginalSourceType type} of the source + * @param idInSource the id used in the source + * @param idNamespace the namespace for the id in the source + * @param citation the source as a {@link Reference reference} + * @param microReference the details (e.g. page number) in the reference */ - public T addSource(String id, String idNamespace, Reference citation, String microCitation); + public T addSource(OriginalSourceType type, String id, String idNamespace, Reference citation, String microCitation); /** @@ -46,4 +48,16 @@ public interface ISourceable { */ public void removeSource(T source); + /** + * Adds a {@link IOriginalSource source} of {@link OriginalSourceType type} Import to this description element. + * + * @param idInSource the id used in the source + * @param idNamespace the namespace for the id in the source + * @param citation the source as a {@link Reference reference} + * @param microReference the details (e.g. page number) in the reference + * @param nameUsedInSource the taxon name used in the source + * @param originalNameString the name as text used in the source + */ + public T addImportSource(String id, String idNamespace, Reference citation, String microCitation); + } \ No newline at end of file diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableEntity.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableEntity.java index d2652d13b8..19ab525d24 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableEntity.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableEntity.java @@ -444,11 +444,25 @@ public abstract class IdentifiableEntity citation, String microCitation) { + if (id == null && idNamespace == null && citation == null && microCitation == null){ + return null; + } + IdentifiableSource source = IdentifiableSource.NewInstance(OriginalSourceType.Import, id, idNamespace, citation, microCitation); addSource(source); return source; } diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableSource.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableSource.java index 1528fe942b..51a6d56f99 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableSource.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableSource.java @@ -46,36 +46,43 @@ public class IdentifiableSource extends OriginalSourceBase{ @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(IdentifiableSource.class); - /** * Factory method * @return */ - public static IdentifiableSource NewInstance(){ - return new IdentifiableSource(); + public static IdentifiableSource NewInstance(OriginalSourceType type){ + return new IdentifiableSource(type); } - public static IdentifiableSource NewInstance(String id){ - IdentifiableSource result = new IdentifiableSource(); + public static IdentifiableSource NewDataImportInstance(String id){ + IdentifiableSource result = new IdentifiableSource(OriginalSourceType.Import); result.setIdInSource(id); return result; } - public static IdentifiableSource NewInstance(String id, String idNamespace){ - IdentifiableSource result = NewInstance(id); + public static IdentifiableSource NewDataImportInstance(String id, String idNamespace){ + IdentifiableSource result = NewDataImportInstance(id); result.setIdNamespace(idNamespace); return result; } + + public static IdentifiableSource NewDataImportInstance(String id, String idNamespace, Reference ref){ + IdentifiableSource result = NewDataImportInstance(id, idNamespace); + result.setCitation(ref); + return result; + } - public static IdentifiableSource NewInstance(String id, String idNamespace, Reference citation, String microCitation){ - IdentifiableSource result = NewInstance(id, idNamespace); + public static IdentifiableSource NewInstance(OriginalSourceType type, String id, String idNamespace, Reference citation, String microCitation){ + IdentifiableSource result = NewInstance(OriginalSourceType.Import); + result.setIdInSource(id); + result.setIdNamespace(idNamespace); result.setCitation(citation); result.setCitationMicroReference(microCitation); return result; } - public static IdentifiableSource NewInstance(Reference citation, String microCitation){ - IdentifiableSource result = NewInstance(); + public static IdentifiableSource NewPrimarySourceInstance(Reference citation, String microCitation){ + IdentifiableSource result = NewInstance(OriginalSourceType.PrimaryTaxonomicSource); result.setCitation(citation); result.setCitationMicroReference(microCitation); return result; @@ -90,8 +97,13 @@ public class IdentifiableSource extends OriginalSourceBase{ optional = false) @JoinColumn(name = "sourcedObj_id") @NotAudited - private IdentifiableEntity sourcedObj; + private IdentifiableEntity sourcedObj; + + private IdentifiableSource(OriginalSourceType type) { + super(type); + } + /* (non-Javadoc) * @see eu.etaxonomy.cdm.model.common.IOriginalSource#getSourcedObj() diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSourceBase.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSourceBase.java index 74dfbb6aac..59eea9c895 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSourceBase.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSourceBase.java @@ -26,6 +26,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.hibernate.annotations.Table; import org.hibernate.envers.Audited; +import org.springframework.util.Assert; import eu.etaxonomy.cdm.common.CdmUtils; @@ -54,6 +55,7 @@ public abstract class OriginalSourceBase extends Referenc @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(OriginalSourceBase.class); + @XmlAttribute(name ="type") @Column(name="refType") @NotNull @@ -70,9 +72,10 @@ public abstract class OriginalSourceBase extends Referenc /** * Constructor + * @param type2 */ - protected OriginalSourceBase(){ - super(); + protected OriginalSourceBase(OriginalSourceType type){ + Assert.notNull(type, "OriginalSourceType must not be null"); } //**************** GETTER / SETTER *******************************/ @@ -111,6 +114,7 @@ public abstract class OriginalSourceBase extends Referenc } public void setType(OriginalSourceType type) { + Assert.notNull(type, "OriginalSourceType must not be null"); this.type = type; } @@ -122,7 +126,7 @@ public abstract class OriginalSourceBase extends Referenc */ @Override public Object clone() throws CloneNotSupportedException{ - OriginalSourceBase result = (OriginalSourceBase)super.clone(); + OriginalSourceBase result = (OriginalSourceBase)super.clone(); //no changes to: idInSource, sourcedObj return result; diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSourceType.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSourceType.java index 9913ad8082..a758e0638a 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSourceType.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSourceType.java @@ -49,9 +49,22 @@ public enum OriginalSourceType implements IDefinedTerm, Seri * */ @XmlEnumValue("Primary Taxonomic Source") - PrimaryTaxonomicSource(UUID.fromString("c990beb3-3bc9-4dad-bbdf-9c11683493da"), "Primary Taxonomic Source"), + Unknown(UUID.fromString("c990beb3-3bc9-4dad-bbdf-9c11683493da"), "Primary Taxonomic Source"), //1 + /** + * Primary Taxonomic Source describes the sources a taxonomist uses to gather certain information. + * E.g. a taxonomist may have used three books/articles/other references to gather information + * about the distribution status of a taxon. + * He/she will store these references as original source of type Primary Taxonomic Source. + * This is a specification of PROV-O Primary Source + * ({@link http://www.w3.org/TR/2013/REC-prov-o-20130430/#PrimarySource}) + * + */ + @XmlEnumValue("Primary Taxonomic Source") + PrimaryTaxonomicSource(UUID.fromString("c990beb3-3bc9-4dad-bbdf-9c11683493da"), "Primary Taxonomic Source"), + + //2 /** * Data Lineage describes the data life cycle of electronically available data. A typical use-case for * data lineage is a data import from one database to another. Sources of type data lineage will store information about the @@ -61,7 +74,7 @@ public enum OriginalSourceType implements IDefinedTerm, Seri @XmlEnumValue("Data Lineage") Lineage(UUID.fromString("4f9fdf9a-f3b5-490c-96f0-90e050599b0e"), "Data Lineage"), - //2 + //3 /** * Database Import is a specialisation of {@value #Lineage}. It describes the electronic import of data * from an external datasource into the given datasource. This step may include data transformations also @@ -70,7 +83,7 @@ public enum OriginalSourceType implements IDefinedTerm, Seri @XmlEnumValue("Database Import") Import(UUID.fromString("2a3902ff-06a7-4307-b542-c743e664b8f2"), "Database Import"), - //3 + //4 /** * Data Transformation is a specification of {@value #Lineage} and describes a data transformation process that happens primarily on the given dataset * but may also include external data. @@ -79,7 +92,7 @@ public enum OriginalSourceType implements IDefinedTerm, Seri Transformation(UUID.fromString("d59e80e5-cbb7-4658-b74d-0626bbb0da7f"), "Data Transformation"), - //4 + //5 /** * Data aggregation is a spcification of {@value #Lineage} and describes the data transformation process * that primarily includes data aggregation processes but may also include data imports and transformation. diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/DescriptionElementBase.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/DescriptionElementBase.java index ec14881ca2..3223504ea7 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/DescriptionElementBase.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/DescriptionElementBase.java @@ -46,10 +46,12 @@ import eu.etaxonomy.cdm.jaxb.MultilanguageTextAdapter; import eu.etaxonomy.cdm.model.common.AnnotatableEntity; import eu.etaxonomy.cdm.model.common.DescriptionElementSource; import eu.etaxonomy.cdm.model.common.IMultiLanguageTextHolder; +import eu.etaxonomy.cdm.model.common.IOriginalSource; import eu.etaxonomy.cdm.model.common.ISourceable; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.LanguageString; import eu.etaxonomy.cdm.model.common.MultilanguageText; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.TermVocabulary; import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.cdm.model.name.TaxonNameBase; @@ -376,19 +378,43 @@ public abstract class DescriptionElementBase extends AnnotatableEntity implement } /* (non-Javadoc) - * @see eu.etaxonomy.cdm.model.common.ISourceable#addSource(java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String) + * @see eu.etaxonomy.cdm.model.common.ISourceable#addSource(eu.etaxonomy.cdm.model.common.OriginalSourceType, java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String) */ - public DescriptionElementSource addSource(String id, String idNamespace, Reference citation, String microCitation) { + public DescriptionElementSource addSource(OriginalSourceType type, String id, String idNamespace, Reference citation, String microCitation) { if (id == null && idNamespace == null && citation == null && microCitation == null){ return null; } - DescriptionElementSource source = DescriptionElementSource.NewInstance(id, idNamespace, citation, microCitation); + DescriptionElementSource source = DescriptionElementSource.NewInstance(type, id, idNamespace, citation, microCitation); + addSource(source); + return source; + } + + + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.model.common.ISourceable#addImportSource(java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String) + */ + @Override + public DescriptionElementSource addImportSource(String id, String idNamespace, Reference citation, String microCitation) { + if (id == null && idNamespace == null && citation == null && microCitation == null){ + return null; + } + DescriptionElementSource source = DescriptionElementSource.NewInstance(OriginalSourceType.Import, id, idNamespace, citation, microCitation); addSource(source); return source; } - public void addSource(String id, String idNamespace, Reference citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){ - DescriptionElementSource newSource = DescriptionElementSource.NewInstance(id, idNamespace, citation, microReference, nameUsedInSource, originalNameString); + /** + * Adds a {@link IOriginalSource source} to this description element. + * @param type the type of the source + * @param idInSource the id used in the source + * @param idNamespace the namespace for the id in the source + * @param citation the source as a {@link Reference reference} + * @param microReference the details (e.g. page number) in the reference + * @param nameUsedInSource the taxon name used in the source + * @param originalNameString the name as text used in the source + */ + public void addSource(OriginalSourceType type, String idInSource, String idNamespace, Reference citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){ + DescriptionElementSource newSource = DescriptionElementSource.NewInstance(type, idInSource, idNamespace, citation, microReference, nameUsedInSource, originalNameString); addSource(newSource); } diff --git a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/DescriptionElementTest.java b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/DescriptionElementTest.java index cef62f0cee..53a5038ccf 100644 --- a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/DescriptionElementTest.java +++ b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/DescriptionElementTest.java @@ -30,6 +30,7 @@ import eu.etaxonomy.cdm.model.common.DefaultTermInitializer; import eu.etaxonomy.cdm.model.common.DescriptionElementSource; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.LanguageString; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.TermVocabulary; import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.cdm.model.name.BotanicalName; @@ -71,7 +72,7 @@ private static Logger logger = Logger.getLogger(DescriptionElementTest.class); Media media = Media.NewInstance(null, 1000, "jpeg", null); categorialData.addMedia(media); - DescriptionElementSource source = DescriptionElementSource.NewInstance(); + DescriptionElementSource source = DescriptionElementSource.NewInstance(OriginalSourceType.Unknown); Reference citation = ReferenceFactory.newArticle(); citation.setTitle("Test"); source.setCitation(citation); diff --git a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/occurrence/SpecimenTest.java b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/occurrence/SpecimenTest.java index b10ee7608d..8f838b5ae8 100644 --- a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/occurrence/SpecimenTest.java +++ b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/occurrence/SpecimenTest.java @@ -186,7 +186,7 @@ public class SpecimenTest { Marker marker = Marker.NewInstance(MarkerType.COMPLETE(), false); Rights right = Rights.NewInstance("right", Language.DEFAULT()); Media media = Media.NewInstance(); - IdentifiableSource source = IdentifiableSource.NewInstance("12", "idNamespace"); + IdentifiableSource source = IdentifiableSource.NewDataImportInstance("12", "idNamespace"); specimen.setAccessionNumber(accessionNumber); specimen.setCatalogNumber(catalogNumber); diff --git a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/test/function/TestSpecimen.java b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/test/function/TestSpecimen.java index 898450ba28..d629c60f9f 100644 --- a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/test/function/TestSpecimen.java +++ b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/test/function/TestSpecimen.java @@ -124,9 +124,8 @@ public class TestSpecimen { specimen.addMedia(media); //Original ID - IdentifiableSource source = IdentifiableSource.NewInstance(); String id = "22"; - source.setIdInSource(id); + IdentifiableSource source = IdentifiableSource.NewDataImportInstance(id); specimen.addSource(source); FieldObservation fieldObservation = FieldObservation.NewInstance(); diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/SchemaUpdater_31_33.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/SchemaUpdater_31_33.java index 1bbf1e55fe..b996f2b42f 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/SchemaUpdater_31_33.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/SchemaUpdater_31_33.java @@ -15,6 +15,7 @@ import java.util.List; import org.apache.log4j.Logger; +import eu.etaxonomy.cdm.database.update.ColumnAdder; import eu.etaxonomy.cdm.database.update.ISchemaUpdater; import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep; import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase; @@ -57,10 +58,33 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase { List stepList = new ArrayList(); + //TODO still needed? Does it throw exception if table does not exist? //drop TypeDesignationBase_TaxonNameBase //from schemaUpdater 301_31 String stepName = "Drop duplicate TypeDesignation-TaxonName table"; String tableName = "TypeDesignationBase_TaxonNameBase"; - TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT); + ISchemaUpdaterStep step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT); + stepList.add(step); + + //create original source type column + stepName = "Create original source type column"; + tableName = "OriginalSourceBase"; + String columnName = "type"; + //TODO NOT NULL unclear + step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName, INCLUDE_AUDIT, true, null); + stepList.add(step); + + //TODO update original source type + + //create taxon node tree index + stepName = "Create taxon node tree index"; + tableName = "TaxonNode"; + columnName = "treeIndex"; + //TODO NOT NULL unclear + step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName, INCLUDE_AUDIT, true, null); + stepList.add(step); + + //TODO update tree index + diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java index 2536338cc5..0aae3fdc48 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java @@ -57,6 +57,7 @@ import eu.etaxonomy.cdm.model.common.MarkerType; import eu.etaxonomy.cdm.model.common.OrderedTermBase; import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary; import eu.etaxonomy.cdm.model.common.OriginalSourceBase; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.RelationshipTermBase; import eu.etaxonomy.cdm.model.common.Representation; import eu.etaxonomy.cdm.model.common.TermVocabulary; @@ -632,8 +633,8 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{ article1.addExtension(extension1); article2.addExtension(extension2); - IdentifiableSource source1 = IdentifiableSource.NewInstance(); - IdentifiableSource source2 = IdentifiableSource.NewInstance(); + IdentifiableSource source1 = IdentifiableSource.NewInstance(OriginalSourceType.Unknown); + IdentifiableSource source2 = IdentifiableSource.NewInstance(OriginalSourceType.Unknown); article1.addSource(source1); article2.addSource(source2); @@ -655,7 +656,7 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{ TaxonDescription taxDesc = TaxonDescription.NewInstance(taxon1); taxDesc.setTitleCache("taxDesc", true); - taxDesc.addSource(null, null, article2, null); + taxDesc.addSource(OriginalSourceType.Unknown, null, null, article2, null); taxonDao.save(taxon1); diff --git a/cdmlib-remote/src/test/java/eu/etaxonomy/cdm/remote/dto/assembler/lsid/AssemblerTest.java b/cdmlib-remote/src/test/java/eu/etaxonomy/cdm/remote/dto/assembler/lsid/AssemblerTest.java index ef3c76faa9..42455ff964 100644 --- a/cdmlib-remote/src/test/java/eu/etaxonomy/cdm/remote/dto/assembler/lsid/AssemblerTest.java +++ b/cdmlib-remote/src/test/java/eu/etaxonomy/cdm/remote/dto/assembler/lsid/AssemblerTest.java @@ -49,6 +49,7 @@ import eu.etaxonomy.cdm.model.common.IdentifiableSource; import eu.etaxonomy.cdm.model.common.LSID; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.LanguageString; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.TimePeriod; import eu.etaxonomy.cdm.model.description.Distribution; import eu.etaxonomy.cdm.model.description.PresenceTerm; @@ -166,7 +167,7 @@ public class AssemblerTest extends UnitilsJUnit4 { book.setUri(new URI("http://persitent.books.foo/myBook")); book.setUuid(UUID.randomUUID()); book.setVolume("Volume 1"); - book.addSource(IdentifiableSource.NewInstance("http://persitent.IdentifiableSources.foo/1")); + book.addSource(IdentifiableSource.NewDataImportInstance("http://persitent.IdentifiableSources.foo/1")); bookSection = ReferenceFactory.newBookSection(); bookSection.setInReference((Reference)book); @@ -179,7 +180,7 @@ public class AssemblerTest extends UnitilsJUnit4 { bookSection.setUri(new URI("http://persitent.books.foo/myBookSection")); bookSection.setUuid(UUID.randomUUID()); bookSection.addCredit(Credit.NewInstance(authorTeam, "Credits to the authorTeam")); - bookSection.addSource(IdentifiableSource.NewInstance("http://persitent.IdentifiableSources.foo/2")); + bookSection.addSource(IdentifiableSource.NewDataImportInstance("http://persitent.IdentifiableSources.foo/2")); } @Test diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacade.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacade.java index f386f95564..1238c81c73 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacade.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacade.java @@ -28,9 +28,12 @@ import eu.etaxonomy.cdm.model.agent.AgentBase; import eu.etaxonomy.cdm.model.agent.Person; import eu.etaxonomy.cdm.model.common.Annotation; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.common.IOriginalSource; import eu.etaxonomy.cdm.model.common.IdentifiableSource; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.LanguageString; +import eu.etaxonomy.cdm.model.common.OriginalSourceBase; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.TimePeriod; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; import eu.etaxonomy.cdm.model.description.Feature; @@ -2190,15 +2193,16 @@ public class DerivedUnitFacade { } /** - * Creates an orignal source, adds it to the specimen and returns it. + * Creates an {@link IOriginalSource orignal source} or type , + * adds it to the specimen and returns it. * * @param reference * @param microReference * @param originalNameString * @return */ - public IdentifiableSource addSource(Reference reference, String microReference, String originalNameString) { - IdentifiableSource source = IdentifiableSource.NewInstance(reference, microReference); + public IdentifiableSource addSource(OriginalSourceType type, Reference reference, String microReference, String originalNameString) { + IdentifiableSource source = IdentifiableSource.NewInstance(type, null, null, reference, microReference); source.setOriginalNameString(originalNameString); addSource(source); return source; diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java index 4cf784f755..5ab98a3931 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java @@ -58,6 +58,7 @@ import eu.etaxonomy.cdm.model.common.IdentifiableEntity; import eu.etaxonomy.cdm.model.common.IdentifiableSource; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary; +import eu.etaxonomy.cdm.model.common.OriginalSourceType; import eu.etaxonomy.cdm.model.common.RelationshipBase; import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction; import eu.etaxonomy.cdm.model.common.UuidAndTitleCache; @@ -1935,9 +1936,9 @@ public class TaxonServiceImpl extends IdentifiableServiceBase reference = ReferenceFactory.newBook(); + IdentifiableSource source1 = specimenFacade.addSource(OriginalSourceType.PrimaryTaxonomicSource, reference, "54", "myName"); + Assert.assertEquals("One source should exist now", 1, specimenFacade.getSources().size()); + IdentifiableSource source2 = IdentifiableSource.NewDataImportInstance("1", "myTable"); specimenFacade.addSource(source2); - Assert.assertEquals("One source should exist now", 2, specimenFacade - .getSources().size()); + Assert.assertEquals("One source should exist now", 2, specimenFacade.getSources().size()); specimenFacade.removeSource(source1); - Assert.assertEquals("One source should exist now", 1, specimenFacade - .getSources().size()); + Assert.assertEquals("One source should exist now", 1, specimenFacade.getSources().size()); Reference reference2 = ReferenceFactory.newJournal(); - IdentifiableSource sourceNotUsed = specimenFacade.addSource(reference2, - null, null); + IdentifiableSource sourceNotUsed = specimenFacade.addSource(OriginalSourceType.PrimaryTaxonomicSource, reference2,null, null); specimenFacade.removeSource(sourceNotUsed); - Assert.assertEquals("One source should still exist", 1, specimenFacade - .getSources().size()); - Assert.assertEquals("1", specimenFacade.getSources().iterator().next() - .getIdInSource()); + Assert.assertEquals("One source should still exist", 1, specimenFacade.getSources().size()); + Assert.assertEquals("1", specimenFacade.getSources().iterator().next().getIdInSource()); specimenFacade.removeSource(source2); - Assert.assertEquals("No sources should exist anymore", 0, - specimenFacade.getSources().size()); + Assert.assertEquals("No sources should exist anymore", 0,specimenFacade.getSources().size()); } @Test public void testAddGetRemoveDuplicate() { - Assert.assertEquals("No duplicates should be available yet", 0, - specimenFacade.getDuplicates().size()); + Assert.assertEquals("No duplicates should be available yet", 0,specimenFacade.getDuplicates().size()); Specimen newSpecimen1 = Specimen.NewInstance(); specimenFacade.addDuplicate(newSpecimen1); - Assert.assertEquals("There should be 1 duplicate now", 1, - specimenFacade.getDuplicates().size()); + Assert.assertEquals("There should be 1 duplicate now", 1,specimenFacade.getDuplicates().size()); Specimen newSpecimen2 = Specimen.NewInstance(); DerivationEvent newDerivationEvent = DerivationEvent.NewInstance(DerivationEventType.ACCESSIONING()); newSpecimen2.setDerivedFrom(newDerivationEvent); @@ -1479,8 +1469,7 @@ public class DerivedUnitFacadeTest extends CdmTransactionalIntegrationTest { "The derivation event should be 'newDerivationEvent'", newDerivationEvent, newSpecimen2.getDerivedFrom()); specimenFacade.addDuplicate(newSpecimen2); - Assert.assertEquals("There should be 2 duplicates now", 2, - specimenFacade.getDuplicates().size()); + Assert.assertEquals("There should be 2 duplicates now", 2, specimenFacade.getDuplicates().size()); Assert.assertNotSame( "The derivation event should not be 'newDerivationEvent' anymore", newDerivationEvent, newSpecimen2.getDerivedFrom()); @@ -1501,7 +1490,7 @@ public class DerivedUnitFacadeTest extends CdmTransactionalIntegrationTest { String catalogNumber = "1234890"; String accessionNumber = "345345"; String collectorsNumber = "lkjewe"; - TaxonNameBase storedUnder = BotanicalName.NewInstance(Rank.SPECIES()); + TaxonNameBase storedUnder = BotanicalName.NewInstance(Rank.SPECIES()); PreservationMethod method = PreservationMethod.NewInstance(); Specimen duplicateSpecimen = specimenFacade.addDuplicate(newCollection, catalogNumber, accessionNumber, storedUnder, diff --git a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameServiceImplTest.java b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameServiceImplTest.java index 00a4926ea8..43212e18a8 100644 --- a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameServiceImplTest.java +++ b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameServiceImplTest.java @@ -548,7 +548,7 @@ public class NameServiceImplTest extends CdmTransactionalIntegrationTest { TextData textData = TextData.NewInstance("Any text", lang, null); textData.setFeature(feature); taxonDescription.addElement(textData); - DescriptionElementSource source = DescriptionElementSource.NewInstance(null, null, name1, ""); + DescriptionElementSource source = DescriptionElementSource.NewPrimarySourceInstance(null, null, name1, ""); textData.addSource(source); taxonService.saveOrUpdate(taxon); nameService.save(name1);