update factory methods for original sources #1549
authorAndreas Müller <a.mueller@bgbm.org>
Thu, 6 Jun 2013 14:17:01 +0000 (14:17 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Thu, 6 Jun 2013 14:17:01 +0000 (14:17 +0000)
45 files changed:
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/bci/BciServiceWrapper.java
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/ipni/IpniService.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelFactsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelNameFactsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceSourceImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelReferenceImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelTaxonRelationImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmImportBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/ImportHelper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementCreationMapperBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementSourceCreationMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportObjectCreationMapperBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/in/DwcTaxonCsv2CdmTaxonConverter.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/in/GbifReferenceCsv2CdmConverter.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/excel/common/ExcelRowBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupDocumentImportNoComponent.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupNomenclatureImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDDataSetImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206Import.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenCdmExcelImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenRow.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenSythesysExcelImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx/TaxonXDescriptionImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfTaxonImport.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/DescriptionElementSource.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ISourceable.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableEntity.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableSource.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSourceBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSourceType.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/DescriptionElementBase.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/DescriptionElementTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/occurrence/SpecimenTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/test/function/TestSpecimen.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/SchemaUpdater_31_33.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java
cdmlib-remote/src/test/java/eu/etaxonomy/cdm/remote/dto/assembler/lsid/AssemblerTest.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacade.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacadeTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameServiceImplTest.java

index 93f8a6a59875cb808e780745924689078f528f11..0d7f5f6f1cca07319716ea2c2d6e99280a4cc3a3 100644 (file)
@@ -39,6 +39,7 @@ import eu.etaxonomy.cdm.ext.common.SchemaAdapterBase;
 import eu.etaxonomy.cdm.ext.common.ServiceWrapperBase;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.common.LSID;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.occurrence.Collection;\r
 import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
@@ -228,7 +229,7 @@ public class BciServiceWrapper extends ServiceWrapperBase<Collection> implements
                \r
                //id, citation\r
                Reference citation = getBciCitation(appConfig);\r
-               result.addSource(id, null, citation, null);\r
+               result.addSource(OriginalSourceType.Lineage, id, null, citation, null);\r
                \r
                \r
                return result;\r
index 56e7b65857e2127a430e7cd52670582151eb8b82..bd7c1916c00973a11d954b84ee0d228757820b86 100644 (file)
@@ -42,6 +42,7 @@ import eu.etaxonomy.cdm.model.common.Extension;
 import eu.etaxonomy.cdm.model.common.ExtensionType;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
@@ -377,7 +378,7 @@ public class IpniService  implements IIpniService{
 \r
                //source\r
                Reference citation = getIpniCitation(appConfig);\r
-               ref.addSource(valueMap.get(ID), "Publication", citation, valueMap.get(VERSION));\r
+               ref.addSource(OriginalSourceType.Lineage, valueMap.get(ID), "Publication", citation, valueMap.get(VERSION));\r
 \r
                \r
                \r
@@ -549,7 +550,7 @@ public class IpniService  implements IIpniService{
                \r
                //source\r
                Reference citation = getIpniCitation(appConfig);\r
-               name.addSource(valueMap.get(ID), "Name", citation, valueMap.get(VERSION));\r
+               name.addSource(OriginalSourceType.Lineage, valueMap.get(ID), "Name", citation, valueMap.get(VERSION));\r
                \r
                \r
 //             //TODO\r
@@ -671,10 +672,10 @@ public class IpniService  implements IIpniService{
                person.setFirstname(valueMap.get(DEFAULT_AUTHOR_FORENAME));\r
                person.setLastname(valueMap.get(DEFAULT_AUTHOR_SURNAME));\r
                \r
-               Reference citation = getIpniCitation(appConfig);\r
+               Reference<?> citation = getIpniCitation(appConfig);\r
                \r
                //id, version\r
-               person.addSource(valueMap.get(ID), "Author", citation, valueMap.get(VERSION));\r
+               person.addSource(OriginalSourceType.Lineage, valueMap.get(ID), "Author", citation, valueMap.get(VERSION));\r
                \r
                //dates\r
                TimePeriod lifespan = TimePeriod.parseString(valueMap.get(DATES));\r
@@ -699,7 +700,7 @@ public class IpniService  implements IIpniService{
 \r
        \r
        private Reference getIpniCitation(ICdmApplicationConfiguration appConfig) {\r
-               Reference ipniReference;\r
+               Reference<?> ipniReference;\r
                if (appConfig != null){\r
                        ipniReference = appConfig.getReferenceService().find(uuidIpni);\r
                        if (ipniReference == null){\r
@@ -717,7 +718,7 @@ public class IpniService  implements IIpniService{
         * @return\r
         */\r
        private Reference getNewIpniReference() {\r
-               Reference ipniReference;\r
+               Reference<?> ipniReference;\r
                ipniReference = ReferenceFactory.newDatabase();\r
                ipniReference.setTitleCache("The International Plant Names Index (IPNI)");\r
                return ipniReference;\r
index 5c38107a17ad710edb331dceca15072aa43d3ab8..6dc2813f9a7769f0394c4030a81c2567e3d578ae 100644 (file)
@@ -278,7 +278,7 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
                                if (nameInSourceFk != null && nameUsedInSource == null){\r
                                        logger.warn("Name used in source (" + nameInSourceFk + ") was not found for common name " + commonNameId);\r
                                }\r
-                               DescriptionElementSource source = DescriptionElementSource.NewInstance(reference, microCitation, nameUsedInSource, originalNameString);\r
+                               DescriptionElementSource source = DescriptionElementSource.NewPrimarySourceInstance(reference, microCitation, nameUsedInSource, originalNameString);\r
                                for (CommonTaxonName commonTaxonName : commonTaxonNames){\r
                                        commonTaxonName.addSource(source);\r
                                }\r
index 2365f13629b1a45b4f8087bcd7f610484d0e0fe6..775b1e795d93023f541b638c56722e4328c9afd3 100644 (file)
@@ -305,7 +305,7 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
                                                }\r
                                                \r
                                                //reference\r
-                                               Reference citation = null;\r
+                                               Reference<?> citation = null;\r
                                                String factRefFk = String.valueOf(factRefFkObj);\r
                                                if (factRefFkObj != null){\r
                                                        citation = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, factRefFk);        \r
@@ -314,10 +314,8 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
                                                                logger.warn("Citation not found in referenceMap: " + factRefFk);\r
                                                        success = false;\r
                                                        }\r
-                                               if (citation != null || CdmUtils.isNotEmpty(details)){\r
-                                                       DescriptionElementSource originalSource = DescriptionElementSource.NewInstance();\r
-                                                       originalSource.setCitation(citation);\r
-                                                       originalSource.setCitationMicroReference(details);\r
+                                               if (citation != null || StringUtils.isNotBlank(details)){\r
+                                                       DescriptionElementSource originalSource = DescriptionElementSource.NewPrimarySourceInstance(citation, details);\r
                                                        textData.addSource(originalSource);\r
                                                }\r
                                                taxonDescription.addElement(textData);\r
index 5b26a8e85206af94129b6abe7df2539d3511f424..92bebaa9a2302b9cc80d2560b85f0d5f6211950c 100644 (file)
@@ -39,6 +39,7 @@ import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
 import eu.etaxonomy.cdm.model.agent.Person;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.description.TaxonNameDescription;\r
 import eu.etaxonomy.cdm.model.description.TextData;\r
@@ -133,9 +134,9 @@ public class BerlinModelNameFactsImport  extends BerlinModelImportBase  {
                                String category = CdmUtils.Nz(rs.getString("NameFactCategory"));\r
                                String nameFact = CdmUtils.Nz(rs.getString("nameFact"));\r
                                \r
-                               TaxonNameBase taxonNameBase = nameMap.get(String.valueOf(nameId));\r
+                               TaxonNameBase<?,?> taxonNameBase = nameMap.get(String.valueOf(nameId));\r
                                String nameFactRefFk = String.valueOf(nameFactRefFkObj);\r
-                               Reference citation = getReferenceOnlyFromMaps(biblioRefMap, \r
+                               Reference<?> citation = getReferenceOnlyFromMaps(biblioRefMap, \r
                                                nomRefMap, nameFactRefFk);\r
                                \r
                                if (taxonNameBase != null){\r
@@ -149,12 +150,12 @@ public class BerlinModelNameFactsImport  extends BerlinModelImportBase  {
                                                                TaxonNameDescription description = TaxonNameDescription.NewInstance();\r
                                                                TextData protolog = TextData.NewInstance(Feature.PROTOLOGUE());\r
                                                                protolog.addMedia(media);\r
-                                                               protolog.addSource(String.valueOf(nameFactId), NAMESPACE, null, null, null, null);\r
+                                                               protolog.addSource(OriginalSourceType.Import, String.valueOf(nameFactId), NAMESPACE, null, null, null, null);\r
                                                                description.addElement(protolog);\r
                                                                taxonNameBase.addDescription(description);\r
                                                                if (citation != null){\r
-                                                                       description.addSource(null, null, citation, null);\r
-                                                                       protolog.addSource(null, null, citation, nameFactRefDetail, null, null);\r
+                                                                       description.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, null);\r
+                                                                       protolog.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, nameFactRefDetail, null, null);\r
                                                                }\r
                                                        }//end NAME_FACT_PROTOLOGUE\r
                                                }catch(NullPointerException e){\r
@@ -168,8 +169,10 @@ public class BerlinModelNameFactsImport  extends BerlinModelImportBase  {
                                                        //TODO language\r
                                                        Language language = Language.DEFAULT();\r
                                                        additionalPublication.putText(language, nameFact);\r
-                                                       additionalPublication.addSource(String.valueOf(nameFactId), NAMESPACE, citation, \r
-                                                                       nameFactRefDetail, null, null);\r
+                                                       additionalPublication.addSource(OriginalSourceType.Import, String.valueOf(nameFactId), NAMESPACE, null,null, null, null);\r
+                                                       if (citation != null || isNotBlank(nameFactRefDetail)){\r
+                                                               additionalPublication.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, nameFactRefDetail, null, null);\r
+                                                       }\r
                                                        description.addElement(additionalPublication);\r
                                                        taxonNameBase.addDescription(description);\r
                                                }\r
@@ -180,8 +183,10 @@ public class BerlinModelNameFactsImport  extends BerlinModelImportBase  {
                                                        //TODO language\r
                                                        Language language = Language.DEFAULT();\r
                                                        bibliography.putText(language, nameFact);\r
-                                                       bibliography.addSource(String.valueOf(nameFactId), NAMESPACE, citation, \r
-                                                                       nameFactRefDetail, null, null);\r
+                                                       bibliography.addSource(OriginalSourceType.Import, String.valueOf(nameFactId), NAMESPACE, null,null, null, null);\r
+                                                       if (citation != null || isNotBlank(nameFactRefDetail)){\r
+                                                               bibliography.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, nameFactRefDetail, null, null);\r
+                                                       }\r
                                                        description.addElement(bibliography);\r
                                                        taxonNameBase.addDescription(description);\r
                                                }\r
index 45a0f19ac130a8ca3c81889c773f9e8d3ef3cc13..fe4aae4b3b096858193f996c699b364f1b9b7040 100644 (file)
@@ -188,7 +188,7 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                                   Distribution duplicate = checkIsNoDuplicate(taxonDescription, distribution, duplicateMap , occurrenceId);\r
                                if (duplicate == null){\r
                                           taxonDescription.addElement(distribution); \r
-                                      distribution.addSource(String.valueOf(occurrenceId), NAMESPACE, state.getTransactionalSourceReference(), null);\r
+                                      distribution.addImportSource(String.valueOf(occurrenceId), NAMESPACE, state.getTransactionalSourceReference(), null);\r
                                           countDistributions++; \r
                                       if (taxonDescription != oldDescription){ \r
                                           taxaToSave.add(taxonDescription.getTaxon()); \r
@@ -197,7 +197,7 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                                        } \r
                                }else{                                    \r
                                   countDuplicates++;\r
-                                  duplicate.addSource(String.valueOf(occurrenceId), NAMESPACE, state.getTransactionalSourceReference(), null);\r
+                                  duplicate.addImportSource(String.valueOf(occurrenceId), NAMESPACE, state.getTransactionalSourceReference(), null);\r
                                   logger.info("Distribution is duplicate");                               }\r
                                } else { \r
                                        logger.warn("Distribution " + area.getLabel() + " ignored. OccurrenceId = " + occurrenceId);\r
index 6da239a0dc43e7e620d7bbff5126663e3875483a..ce3c83d846c49505d578491c0dd64f1a1c89cfe7 100644 (file)
@@ -28,6 +28,7 @@ import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
 import eu.etaxonomy.cdm.io.common.Source;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.description.Distribution;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
@@ -134,13 +135,13 @@ public class BerlinModelOccurrenceSourceImport  extends BerlinModelImportBase {
                                Reference<?> ref = getReference(refId, state);\r
 \r
                                if (ref != null){\r
-                                       DescriptionElementSource originalSource = DescriptionElementSource.NewInstance();\r
+                                       DescriptionElementSource originalSource = DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource);\r
                                        originalSource.setCitation(ref);\r
                                        TaxonNameBase<?, ?> taxonName;\r
                                                taxonName = getName(state, oldName, oldNameFk);\r
                                                if (taxonName != null){\r
                                                originalSource.setNameUsedInSource(taxonName);\r
-                                       }else if(CdmUtils.isNotEmpty(oldName)){\r
+                                       }else if(isNotBlank(oldName)){\r
                                                originalSource.setOriginalNameString(oldName);\r
                                        }\r
                                        distribution.addSource(originalSource);\r
index 8bc1b7f43f3794291628a9c382df325316c7b42e..589a205e7e082bc5efbc4cd6a5ab25d729402ee9 100644 (file)
@@ -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;\r
 import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.REF_UNKNOWN;\r
 import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.REF_WEBSITE;\r
-import static eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES.ALL;\r
-import static eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES.CONCEPT_REFERENCES;\r
-import static eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES.NOMENCLATURAL;\r
 import static eu.etaxonomy.cdm.io.common.ImportHelper.NO_OVERWRITE;\r
 import static eu.etaxonomy.cdm.io.common.ImportHelper.OBLIGATORY;\r
 import static eu.etaxonomy.cdm.io.common.ImportHelper.OVERWRITE;\r
@@ -67,9 +64,7 @@ import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.Marker;\r
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
 import eu.etaxonomy.cdm.model.reference.IArticle;\r
-import eu.etaxonomy.cdm.model.reference.IBook;\r
 import eu.etaxonomy.cdm.model.reference.IBookSection;\r
-import eu.etaxonomy.cdm.model.reference.IJournal;\r
 import eu.etaxonomy.cdm.model.reference.IPrintSeries;\r
 import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
@@ -511,8 +506,8 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                        \r
                        //idInSource\r
                        String idInSource = (String)valueMap.get("IdInSource".toLowerCase());\r
-                       if (CdmUtils.isNotEmpty(idInSource)){\r
-                               IdentifiableSource source = IdentifiableSource.NewInstance(idInSource);\r
+                       if (isNotBlank(idInSource)){\r
+                               IdentifiableSource source = IdentifiableSource.NewDataImportInstance(idInSource);\r
                                source.setIdNamespace("import to Berlin Model");\r
                                referenceBase.addSource(source);\r
                        }\r
index 2d25a9f790f75ed8b49ea4962f4b06bd4c37c06a..abcecea3c602b78534888248430c95f480380e28 100644 (file)
@@ -126,7 +126,7 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
                                        if (i == 1 && state.getConfig().getClassificationUuid() != null){\r
                                                tree.setUuid(state.getConfig().getClassificationUuid());\r
                                        }\r
-                                       IdentifiableSource identifiableSource = IdentifiableSource.NewInstance(ptRefFk, TREE_NAMESPACE);\r
+                                       IdentifiableSource identifiableSource = IdentifiableSource.NewDataImportInstance(ptRefFk, TREE_NAMESPACE);\r
                                        tree.addSource(identifiableSource);\r
                                        \r
                                        getClassificationService().save(tree);\r
index 38ad3b46afa9ed2278501bf700ab8ec21071c9ee..199fb6f3b2b4abfc10955f9952fea33d3db92e70 100644 (file)
@@ -43,6 +43,7 @@ import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.Marker;\r
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
 import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.Representation;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
@@ -788,14 +789,15 @@ public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE ex
        public void addOriginalSource(CdmBase cdmBase, Object idAttributeValue, String namespace, Reference citation)  {\r
                if (cdmBase instanceof ISourceable ){\r
                        IOriginalSource source;\r
-                       ISourceable sourceable = (ISourceable)cdmBase;\r
+                       ISourceable sourceable = (ISourceable<?>)cdmBase;\r
                        Object id = idAttributeValue;\r
                        String strId = String.valueOf(id);\r
                        String microCitation = null;\r
+                       OriginalSourceType type = OriginalSourceType.Import;\r
                        if (cdmBase instanceof IdentifiableEntity){\r
-                               source = IdentifiableSource.NewInstance(strId, namespace, citation, microCitation);\r
+                               source = IdentifiableSource.NewInstance(type, strId, namespace, citation, microCitation);\r
                        }else if (cdmBase instanceof DescriptionElementBase){\r
-                               source = DescriptionElementSource.NewInstance(strId, namespace, citation, microCitation);\r
+                               source = DescriptionElementSource.NewInstance(type, strId, namespace, citation, microCitation);\r
                        }else{\r
                                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.");\r
                                return;\r
@@ -870,7 +872,7 @@ public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE ex
         * @return\r
         */\r
        public TaxonNameDescription getTaxonNameDescription(TaxonNameBase name, boolean isImageGallery, boolean createNewIfNotExists) {\r
-               Reference ref = null;\r
+               Reference<?> ref = null;\r
                return getTaxonNameDescription(name, ref, isImageGallery, createNewIfNotExists);\r
        }\r
        \r
@@ -896,7 +898,7 @@ public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE ex
                        result = TaxonNameDescription.NewInstance(name);\r
                        result.setImageGallery(isImageGallery);\r
                        if (ref != null){\r
-                               result.addSource(null, null, ref, null);\r
+                               result.addImportSource(null, null, ref, null);\r
                        }\r
                }\r
                return result;\r
@@ -939,7 +941,7 @@ public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE ex
                        result = TaxonDescription.NewInstance(taxon);\r
                        result.setImageGallery(isImageGallery);\r
                        if (ref != null){\r
-                               result.addSource(null, null, ref, null);\r
+                               result.addImportSource(null, null, ref, null);\r
                        }\r
                }\r
                return result;\r
@@ -982,7 +984,7 @@ public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE ex
                        result = SpecimenDescription.NewInstance(specimen);\r
                        result.setImageGallery(isImageGallery);\r
                        if (ref != null){\r
-                               result.addSource(null, null, ref, null);\r
+                               result.addImportSource(null, null, ref, null);\r
                        }\r
                }\r
                return result;\r
index 9fd24fdd32a04acb555921759ef90706ec47cb13..2a55672cbd03a83c19921bd4a491ff0ffa9c2e13 100644 (file)
@@ -30,6 +30,7 @@ import eu.etaxonomy.cdm.model.common.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
@@ -61,11 +62,12 @@ public class ImportHelper {
         * @return\r
         */\r
        public static boolean setOriginalSource(ISourceable sourceable, Reference sourceReference, String sourceId, String namespace){\r
-               IOriginalSource originalSource;\r
+               IOriginalSource<?> originalSource;\r
+               OriginalSourceType type = OriginalSourceType.Import;\r
                if (HibernateProxyHelper.isInstanceOf(sourceable, IdentifiableEntity.class)){\r
-                       originalSource = IdentifiableSource.NewInstance(sourceId, namespace, sourceReference, null);\r
+                       originalSource = IdentifiableSource.NewInstance(type, sourceId, namespace, sourceReference, null);\r
                }else if (HibernateProxyHelper.isInstanceOf(sourceable, DescriptionElementBase.class)){\r
-                       originalSource = DescriptionElementSource.NewInstance(sourceId, namespace, sourceReference, null);\r
+                       originalSource = DescriptionElementSource.NewInstance(type, sourceId, namespace, sourceReference, null);\r
                }else{\r
                        throw new ClassCastException("Unknown implementing class for ISourceable "+ sourceable.getClass() + " . Not supported bei ImportHelper.");\r
                }\r
index eec73625efa9e8a1234171f5683fed106a71304a..45d82dffece29073c46c3cc534424b474458d34e 100644 (file)
@@ -14,11 +14,13 @@ import java.sql.ResultSet;
 import java.sql.SQLException;\r
 import java.util.Set;\r
 \r
+import org.apache.commons.lang.StringUtils;\r
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.io.common.DbImportStateBase;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
 import eu.etaxonomy.cdm.model.reference.Reference;\r
@@ -74,7 +76,7 @@ public abstract class DbImportDescriptionElementCreationMapperBase<ELEMENT exten
                        logger.info("Taxon could not be determined. Description element was not add to any description or taxon");\r
                }\r
                //Source\r
-               if (CdmUtils.isNotEmpty(dbCitationAttribute)){\r
+               if (StringUtils.isNotBlank(dbCitationAttribute)){\r
                        addSource(rs, element);\r
                }\r
                return element;\r
@@ -89,7 +91,7 @@ public abstract class DbImportDescriptionElementCreationMapperBase<ELEMENT exten
        private void addSource(ResultSet rs, ELEMENT element) throws SQLException {\r
                String microCitation = getStringDbValue(rs, dbMicroCitationAttribute);\r
                Reference<?> citation = (Reference<?>) getState().getRelatedObject(sourceNamespace, String.valueOf(rs.getObject(dbCitationAttribute)));\r
-               element.addSource(null, null, citation, microCitation);\r
+               element.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, microCitation);\r
        }\r
 \r
        /**\r
index 544b6d37496f8cb70aabc7c284d1fabc531faaca..9f18d1d64a5977d86fffc131089fe8acc95fb76f 100644 (file)
@@ -18,6 +18,7 @@ import org.apache.log4j.Logger;
 import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.io.common.DbImportStateBase;\r
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
@@ -93,7 +94,7 @@ public class DbImportDescriptionElementSourceCreationMapper extends DbImportObje
         */\r
        @Override\r
        protected DescriptionElementSource createObject(ResultSet rs)throws SQLException {\r
-               DescriptionElementSource source = DescriptionElementSource.NewInstance();\r
+               DescriptionElementSource source = DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource);\r
                return source;\r
        }\r
 \r
index ec669b8be2d5601dd646d938e6ffbc018322124f..98b8e1a34a1fe866818e93aec3e9c46c4246ac9b 100644 (file)
@@ -102,9 +102,9 @@ public abstract class DbImportObjectCreationMapperBase<CREATE extends Versionabl
                        \r
                        String microCitation = null;\r
                        if (cdmBase instanceof IdentifiableEntity){\r
-                               source = IdentifiableSource.NewInstance(strId, idNamespace, citation, microCitation);\r
+                               source = IdentifiableSource.NewDataImportInstance(strId, idNamespace, citation);\r
                        }else if (cdmBase instanceof DescriptionElementBase){\r
-                               source = DescriptionElementSource.NewInstance(strId, idNamespace, citation, microCitation);\r
+                               source = DescriptionElementSource.NewDataImportInstance(strId, idNamespace, citation);\r
                        }else{\r
                                logger.warn("ISourceable not beeing identifiable entities or description element base are not yet supported. CdmBase is of type " + cdmBase.getClass().getSimpleName() + ". Original source not added.");\r
                                return;\r
index b9b4213da727a18938704a98f1cb72372ac3987f..c569d585a1c4ae1ab71baade0832b311401fc7f6 100644 (file)
@@ -25,6 +25,7 @@ import eu.etaxonomy.cdm.io.dwca.TermUri;
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
 import eu.etaxonomy.cdm.model.common.LSID;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
@@ -78,7 +79,7 @@ public class DwcTaxonCsv2CdmTaxonConverter extends PartitionableConverterBase<Dw
                \r
                //original source\r
                String id = csvTaxonRecord.get(ID);\r
-               IdentifiableSource source = taxonBase.addSource(id, "Taxon", sourceReference, sourceReferenceDetail);\r
+               IdentifiableSource source = taxonBase.addImportSource(id, "Taxon", sourceReference, sourceReferenceDetail);\r
                MappedCdmBase mappedSource = new MappedCdmBase(csvTaxonRecord.get(ID), source);\r
                resultList.add(mappedSource);\r
                csvTaxonRecord.remove(ID);\r
@@ -213,7 +214,7 @@ public class DwcTaxonCsv2CdmTaxonConverter extends PartitionableConverterBase<Dw
                                String classificationId = StringUtils.isBlank(datasetId)? datasetName : datasetId;\r
                                Classification classification = Classification.NewInstance(classificationName);\r
                                //source\r
-                               IdentifiableSource source = classification.addSource(classificationId, "Dataset", sourceReference, sourceReferecenDetail);\r
+                               IdentifiableSource source = classification.addSource(OriginalSourceType.Lineage, classificationId, "Dataset", sourceReference, sourceReferecenDetail);\r
                                //add to result\r
                                resultList.add(new MappedCdmBase(idTerm, datasetId, classification));\r
                                resultList.add(new MappedCdmBase(strTerm, datasetName, classification));\r
@@ -231,7 +232,7 @@ public class DwcTaxonCsv2CdmTaxonConverter extends PartitionableConverterBase<Dw
                                        taxonBase.setSec(ref);\r
                                }else{\r
                                        //dataset as original source\r
-                                       taxonBase.addSource(null, null, ref, null);\r
+                                       taxonBase.addSource(OriginalSourceType.Lineage, null, null, ref, null);\r
                                }\r
                        }\r
                }else{\r
@@ -324,7 +325,8 @@ public class DwcTaxonCsv2CdmTaxonConverter extends PartitionableConverterBase<Dw
                if (strScientificNameId != null){\r
                        if (config.isScientificNameIdAsOriginalSourceId()){\r
                                if (name != null){\r
-                                       IdentifiableSource source = IdentifiableSource.NewInstance(strScientificNameId, TermUri.DWC_SCIENTIFIC_NAME_ID.toString(), sourceReference, null);\r
+                                       IdentifiableSource source = IdentifiableSource.NewDataImportInstance(strScientificNameId, \r
+                                                       TermUri.DWC_SCIENTIFIC_NAME_ID.toString(), sourceReference);\r
                                        name.addSource(source);\r
                                }\r
                        }else{\r
@@ -379,7 +381,7 @@ public class DwcTaxonCsv2CdmTaxonConverter extends PartitionableConverterBase<Dw
                                                fireWarningEvent(message, item, 4);\r
                                        }else{\r
                                                newRef = ReferenceFactory.newGeneric();  //TODO handle other types if possible\r
-                                               newRef.addSource(refId, idTerm.toString(), sourceCitation, null);\r
+                                               newRef.addImportSource(refId, idTerm.toString(), sourceCitation, null);\r
                                                MappedCdmBase<Reference> idResult = new MappedCdmBase<Reference>(idTerm, refId, newRef);\r
                                                resultList.add(idResult);\r
                                        }\r
index 99d63016b57c037ae009376c4169139588ab49d7..1a710ed44ccbbbb0f45fac0ef105c3a31264e5a2 100644 (file)
@@ -27,6 +27,7 @@ import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;\r
 import eu.etaxonomy.cdm.model.common.LSID;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
@@ -185,7 +186,7 @@ public class GbifReferenceCsv2CdmConverter extends PartitionableConverterBase<Dw
        private void createCitation(TaxonDescription desc, Reference ref, TaxonNameBase nameUsedInSource) {\r
                Feature feature = Feature.CITATION();\r
                TextData textData = TextData.NewInstance(feature);\r
-               DescriptionElementSource source = DescriptionElementSource.NewInstance(ref, null, nameUsedInSource, null);\r
+               DescriptionElementSource source = DescriptionElementSource.NewPrimarySourceInstance(ref, null, nameUsedInSource, null);\r
                textData.addSource(source);\r
                desc.addElement(textData);\r
        }\r
index c2310e44d564f66af4d2a0e6aa560ef13de94a90..9a35515aaed08049a8bcc4ff064addc6f08b7f08 100644 (file)
@@ -21,6 +21,7 @@ import org.apache.log4j.Logger;
 \r
 import eu.etaxonomy.cdm.io.excel.common.ExcelTaxonOrSpecimenImportBase.SourceType;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
@@ -169,7 +170,7 @@ public abstract class ExcelRowBase {
        private IdentifiableSource getOrMakeSource(int key) {\r
                IdentifiableSource  source = sources.get(key);\r
                if (source == null){\r
-                       source = IdentifiableSource.NewInstance();\r
+                       source = IdentifiableSource.NewInstance(OriginalSourceType.Unknown);\r
                        sources.put(key, source);\r
                }\r
                return source;\r
index a1c84d58fab7e4ed16e2937f7b72b8a7bc6da5b6..7a91d4c58c894d3c2758a90c72212c57ae833a45 100644 (file)
@@ -33,6 +33,7 @@ import eu.etaxonomy.cdm.model.common.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.common.Extension;\r
 import eu.etaxonomy.cdm.model.common.ExtensionType;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
@@ -374,14 +375,13 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                                List<Map<SourceType, String>> sourceList = sourceDataHolder.getSources();\r
                                for (Map<SourceType, String> sourceMap : sourceList){\r
                                \r
-                                       DescriptionElementSource source = DescriptionElementSource.NewInstance();\r
                                        //ref\r
                                        Reference<?> ref = ReferenceFactory.newGeneric();\r
                                        boolean refExists = false; //in case none of the ref fields exists, the ref should not be added\r
                                        for (SourceType type : sourceMap.keySet()){\r
                                                String value = sourceMap.get(type);\r
                                                if (type.equals(SourceType.Author)){\r
-                                                       TeamOrPersonBase author = getAuthorAccordingToConfig(value, state);\r
+                                                       TeamOrPersonBase<?> author = getAuthorAccordingToConfig(value, state);\r
                                                        ref.setAuthorTeam(author);\r
                                                }else if (type.equals(SourceType.Title)) {\r
                                                        ref.setTitle(value);\r
@@ -393,6 +393,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                                                }\r
                                                refExists = true;\r
                                        }\r
+                                       DescriptionElementSource source = DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource);\r
                                        if (refExists){\r
                                                ref = getReferenceAccordingToConfig(ref, state);\r
                                                source.setCitation(ref);\r
index d0b83b22d9581a672de83bae1541ac7733d2be55..2ead380936b446d0257aceb7fdf5f6e5d9f19a03 100644 (file)
@@ -42,6 +42,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Extension;\r
 import eu.etaxonomy.cdm.model.common.ExtensionType;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
@@ -873,12 +874,12 @@ public class MarkupDocumentImportNoComponent extends MarkupImportBase {
                                        // TODO use concrete source (e.g. DAPHNIPHYLLACEAE in FM\r
                                        // vol.13)\r
                                        Reference<?> citation = state.getConfig().getSourceReference();\r
-                                       media.addSource(numString, "num", citation, null);\r
+                                       media.addImportSource(  numString, "num", citation, null);\r
                                        // TODO name used in source if available\r
                                }\r
                                // TODO which citation\r
                                if (StringUtils.isNotBlank(id)) {\r
-                                       media.addSource(id, null, state.getConfig().getSourceReference(), null);\r
+                                       media.addImportSource(id, null, state.getConfig().getSourceReference(), null);\r
                                } else {\r
                                        String message = "Figure id should never be empty or null";\r
                                        fireWarningEvent(message, next, 6);\r
@@ -1124,7 +1125,8 @@ public class MarkupDocumentImportNoComponent extends MarkupImportBase {
                                        TaxonDescription description = getTaxonDescription(taxon, descriptionRef, false, true);\r
                                        TextData featurePlaceholder = docImport.getFeaturePlaceholder(state, description, feature, true);\r
                                        for (Reference<?> citation : refs) {\r
-                                               featurePlaceholder.addSource(null, null, citation, null);\r
+                                               featurePlaceholder.addSource(OriginalSourceType.PrimaryTaxonomicSource,\r
+                                                               null, null, citation, null);\r
                                        }\r
                                } else {\r
                                        String message = "No reference found in references";\r
index 7922863b3f8c3ab9920a6b2c7a308cd56f5d06f9..78922476784775f7030a857a10dc26cd9bd9d149 100644 (file)
@@ -24,6 +24,7 @@ import org.apache.log4j.Logger;
 import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor;\r
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
@@ -672,7 +673,7 @@ public class MarkupNomenclatureImport extends MarkupImportBase {
                                        .getSourceReference(), false, true);\r
                        TextData citation = TextData.NewInstance(Feature.CITATION());\r
                        // TODO name used in source\r
-                       citation.addSource(null, null, reference, microCitation);\r
+                       citation.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, reference, microCitation);\r
                        td.addElement(citation);\r
                } else if (TYPE.equalsIgnoreCase(classValue)) {\r
                        handleNotYetImplementedAttributeValue(parentEvent, CLASS,\r
index d969f116b0ecf5dc36c72f1f1bbdf9aeca6bd9ef..c206b38a65a8f1bf66389caf720952983da2e186 100644 (file)
@@ -51,6 +51,7 @@ import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
 import eu.etaxonomy.cdm.model.common.Marker;\r
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.Representation;\r
 import eu.etaxonomy.cdm.model.common.TermBase;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
@@ -421,7 +422,8 @@ public class SDDDataSetImport extends CdmImportBase<SDDImportConfigurator, SDDIm
                                        } else {\r
                                                Reference<?> descriptionSource = ReferenceFactory.newGeneric();\r
                                                sources.add(descriptionSource);\r
-                                               td.addSource(null, null, descriptionSource, null);\r
+                                               //TODO type\r
+                                               td.addSource(OriginalSourceType.Unknown, null, null, descriptionSource, null);\r
                                                this.associateImageWithCdmBase(ref,descriptionSource);\r
                                        }\r
                                } else {\r
@@ -637,7 +639,7 @@ public class SDDDataSetImport extends CdmImportBase<SDDImportConfigurator, SDDIm
                for (String ref : taxonDescriptions.keySet()){\r
                        TaxonDescription td = taxonDescriptions.get(ref);\r
                        if (citations.containsKey(ref)) {\r
-                               Reference publication = publications.get(citations.get(ref));\r
+                               Reference<?> publication = publications.get(citations.get(ref));\r
                                if (locations.containsKey(ref)) {\r
                                        Annotation location = Annotation.NewInstance(locations.get(ref), datasetLanguage);\r
                                        AnnotationType annotationType = AnnotationType.NewInstance("", "location", "");\r
@@ -645,7 +647,8 @@ public class SDDDataSetImport extends CdmImportBase<SDDImportConfigurator, SDDIm
                                        location.setAnnotationType(annotationType);\r
                                        (publication).addAnnotation(location);\r
                                }\r
-                               td.addSource(null, null, publication, null);\r
+                               //TODO type\r
+                               td.addSource(OriginalSourceType.Unknown, null, null, publication, null);\r
                        }\r
                }\r
                logger.info("end makeTaxonDescriptions ...");\r
@@ -912,12 +915,11 @@ public class SDDDataSetImport extends CdmImportBase<SDDImportConfigurator, SDDIm
                                if (!id.equals("")) {\r
                                        tnb = NonViralName.NewInstance(null);\r
                                        IdentifiableSource source = null;\r
-                                       if (uri != null) {\r
-                                               if (!uri.equals("")) {\r
-                                                       source = IdentifiableSource.NewInstance(id, "TaxonName", ReferenceFactory.newGeneric(), uri);\r
-                                               }\r
+                                       if (isNotBlank(uri)) {\r
+                                               //TODO type\r
+                                               source = IdentifiableSource.NewInstance(OriginalSourceType.Unknown, id, "TaxonName", ReferenceFactory.newGeneric(), uri);\r
                                        } else {\r
-                                               source = IdentifiableSource.NewInstance(id, "TaxonName");\r
+                                               source = IdentifiableSource.NewDataImportInstance(id, "TaxonName");\r
                                        }\r
                                        tnb.addSource(source);\r
                                        taxonNameBases.put(id,tnb);\r
@@ -1216,9 +1218,9 @@ public class SDDDataSetImport extends CdmImportBase<SDDImportConfigurator, SDDIm
        private Taxon handleCDNoScope(Namespace sddNamespace,\r
                        SDDImportState cdmState, Element elCodedDescription     ) {\r
                Taxon taxon = null;\r
-               NonViralName nonViralName = NonViralName.NewInstance(null);\r
+               NonViralName<?> nonViralName = NonViralName.NewInstance(null);\r
                String id = new String("" + taxonNamesCount);\r
-               IdentifiableSource source = IdentifiableSource.NewInstance(id, "TaxonName");\r
+               IdentifiableSource source = IdentifiableSource.NewDataImportInstance( id, "TaxonName");\r
                importRepresentation(elCodedDescription, sddNamespace, nonViralName, id, cdmState);\r
                \r
                if(cdmState.getConfig().isDoMatchTaxa()){\r
@@ -1457,7 +1459,7 @@ public class SDDDataSetImport extends CdmImportBase<SDDImportConfigurator, SDDIm
                                        //  </Representation>\r
                                        Person person = Person.NewInstance();\r
                                        importRepresentation(elAgent, sddNamespace, person, idA, cdmState);\r
-                                       person.addSource(IdentifiableSource.NewInstance(idA, "Agent"));\r
+                                       person.addSource(IdentifiableSource.NewDataImportInstance(idA, "Agent"));\r
 \r
                                        /*XIM <Links>\r
                                        Element elLinks = elAgent.getChild("Links",sddNamespace);\r
index 59d5805be4adaf9f5efc92058da3ffa0c1c2125c..be12930c0676ee800c3c251683ed85b7a203edb9 100644 (file)
@@ -52,6 +52,7 @@ import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
 import eu.etaxonomy.cdm.model.common.Marker;\r
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.Representation;\r
 import eu.etaxonomy.cdm.model.common.TermBase;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
@@ -396,7 +397,8 @@ public class SDDImport extends XmlImportBase<SDDImportConfigurator, SDDImportSta
                                        } else {\r
                                                Reference<?> descriptionSource = ReferenceFactory.newGeneric();\r
                                                sources.add(descriptionSource);\r
-                                               td.addSource(null, null, descriptionSource, null);\r
+                                               //TODO type\r
+                                               td.addSource(OriginalSourceType.Unknown, null, null, descriptionSource, null);\r
                                                this.associateImageWithCdmBase(ref,descriptionSource);\r
                                        }\r
                                } else {\r
@@ -620,7 +622,7 @@ public class SDDImport extends XmlImportBase<SDDImportConfigurator, SDDImportSta
                                        location.setAnnotationType(annotationType);\r
                                        (publication).addAnnotation(location);\r
                                }\r
-                               td.addSource(null, null,publication, null);\r
+                               td.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null,publication, null);\r
                        }\r
                }\r
                logger.info("end makeTaxonDescriptions ...");\r
@@ -887,11 +889,12 @@ public class SDDImport extends XmlImportBase<SDDImportConfigurator, SDDImportSta
                                        tnb = NonViralName.NewInstance(Rank.UNKNOWN_RANK());\r
                                        IdentifiableSource source = null;\r
                                        if (uri != null) {\r
-                                               if (!uri.equals("")) {\r
-                                                       source = IdentifiableSource.NewInstance(id, "TaxonName", ReferenceFactory.newGeneric(), uri);\r
+                                               if (! isNotBlank(uri)) {\r
+                                                       //TODO type\r
+                                                       source = IdentifiableSource.NewInstance(OriginalSourceType.Unknown, id, "TaxonName", ReferenceFactory.newGeneric(), uri);\r
                                                }\r
                                        } else {\r
-                                               source = IdentifiableSource.NewInstance(id, "TaxonName");\r
+                                               source = IdentifiableSource.NewDataImportInstance(id, "TaxonName");\r
                                        }\r
                                        tnb.addSource(source);\r
                                        taxonNameBases.put(id,tnb);\r
@@ -1191,7 +1194,7 @@ public class SDDImport extends XmlImportBase<SDDImportConfigurator, SDDImportSta
                Taxon taxon = null;\r
                NonViralName<?> nonViralName = NonViralName.NewInstance(Rank.UNKNOWN_RANK());\r
                String id = new String("" + taxonNamesCount);\r
-               IdentifiableSource source = IdentifiableSource.NewInstance(id, "TaxonName");\r
+               IdentifiableSource source = IdentifiableSource.NewDataImportInstance(id, "TaxonName");\r
                importRepresentation(elCodedDescription, sddNamespace, nonViralName, id, cdmState);\r
                \r
                if(cdmState.getConfig().isDoMatchTaxa()){\r
@@ -1430,7 +1433,7 @@ public class SDDImport extends XmlImportBase<SDDImportConfigurator, SDDImportSta
                                        //  </Representation>\r
                                        Person person = Person.NewInstance();\r
                                        importRepresentation(elAgent, sddNamespace, person, idA, cdmState);\r
-                                       person.addSource(IdentifiableSource.NewInstance(idA, "Agent"));\r
+                                       person.addSource(IdentifiableSource.NewDataImportInstance(idA, "Agent"));\r
 \r
                                        /*XIM <Links>\r
                                        Element elLinks = elAgent.getChild("Links",sddNamespace);\r
index d16c535d3345851c44b98d28747de100383f65b6..1a66ead03090fcfcfbc521c56f6f7f1461382ffd 100644 (file)
@@ -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<Abcd206ImportConfigurator,
                indAssociation.setFeature(feature);
 
                for (Reference<?> citation : determinationEvent.getReferences()) {
-                       indAssociation.addSource(DescriptionElementSource.NewInstance(null, null, citation, null));
+                       indAssociation.addSource(DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource,
+                                       null, null, citation, null));
                }
 
                taxonDescription.addElement(indAssociation);
index 09257b87b9cdf3ac49c6aa70dd48c993363b1d22..582949e17008a6c258cd50f7db3da08e4a84ec57 100644 (file)
@@ -232,7 +232,7 @@ public class SpecimenCdmExcelImport  extends ExcelTaxonOrSpecimenImportBase<Spec
                
                
                } else if(keyValue.key.matches(SOURCE_COLUMN)) {
-                       row.putSourceReference(keyValue.index, getOrMakeReference(state, value));       
+                       row.putSourceReference(keyValue.index, getOrMakeReference(state, value) );      
                } else if(keyValue.key.matches(ID_IN_SOURCE_COLUMN)) {
                        row.putIdInSource(keyValue.index, value);               
                } else if(keyValue.key.matches(EXTENSION_COLUMN)) {
index 881aca90f08a777b77be723d9c576a84bf46f1a1..bd412e57ca7b68b99be52a98cba3395000503cd8 100644 (file)
@@ -18,6 +18,7 @@ import org.apache.log4j.Logger;
 \r
 import eu.etaxonomy.cdm.io.excel.common.ExcelRowBase;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
@@ -310,11 +311,11 @@ public class SpecimenRow extends ExcelRowBase{
 \r
 \r
        public void putIdInSource(int key, String id){\r
-               IdentifiableSource source = getOrMakeSource(key);\r
+               IdentifiableSource source = getOrMakeSource(key, OriginalSourceType.Import);\r
                source.setIdInSource(id);\r
        }\r
        public void putSourceReference(int key, Reference<?> reference){\r
-               IdentifiableSource source = getOrMakeSource(key);\r
+               IdentifiableSource source = getOrMakeSource(key, OriginalSourceType.Unknown);\r
                source.setCitation(reference);\r
        }\r
 \r
@@ -368,10 +369,10 @@ public class SpecimenRow extends ExcelRowBase{
         * @param key\r
         * @return\r
         */\r
-       private IdentifiableSource getOrMakeSource(int key) {\r
+       private IdentifiableSource getOrMakeSource(int key, OriginalSourceType type) {\r
                IdentifiableSource  source = sources.get(key);\r
                if (source == null){\r
-                       source = IdentifiableSource.NewInstance();\r
+                       source = IdentifiableSource.NewInstance(type);\r
                        sources.put(key, source);\r
                }\r
                return source;\r
index 058b52152259b77105bb0fd311b627900b45e9cc..e48ef6508c9ae46fa7d358b601f77f5ed9a1eed8 100644 (file)
@@ -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<SpecimenSynthesy
             if (!originalsource.isEmpty()){
                 Reference<?> 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<SpecimenSynthesy
         indAssociation.setFeature(feature);
 
         for (Reference<?> citation : determinationEvent.getReferences()) {
-            indAssociation.addSource(DescriptionElementSource.NewInstance(null, null, citation, null));
+            indAssociation.addSource(DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource, null, null, citation, null));
         }
 
         taxonDescription.addElement(indAssociation);
index 8c96436e52bdb64419d12d26529e1b5307d9829e..5ff7258bc18a4feabaaf103080b060be5b2f3d94 100644 (file)
@@ -30,6 +30,7 @@ import eu.etaxonomy.cdm.io.common.ICdmIO;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
@@ -111,7 +112,7 @@ public class TaxonXDescriptionImport extends CdmIoBase<TaxonXImportState> implem
                TaxonDescription description = TaxonDescription.NewInstance();\r
                description.setTitleCache(getDescriptionTitle(state), true);\r
                if (modsReference != null){\r
-                       description.addSource(null, null, modsReference, null);\r
+                       description.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, modsReference, null);\r
                }\r
                \r
                Element elTaxonBody = root.getChild("taxonxBody", nsTaxonx);\r
@@ -141,7 +142,7 @@ public class TaxonXDescriptionImport extends CdmIoBase<TaxonXImportState> implem
                                \r
                                //add reference\r
                                if (modsReference != null){\r
-                                       descriptionElement.addSource(null, null, modsReference, null, null, null);\r
+                                       descriptionElement.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, modsReference, null, null, null);\r
                                }\r
                        }\r
 \r
index 07fb3220d04de7b91c98becf66516838bc6b9a19..feb6f6cb76bd219759752e2fe087acc05390247e 100644 (file)
@@ -27,6 +27,7 @@ import eu.etaxonomy.cdm.io.common.ICdmIO;
 import eu.etaxonomy.cdm.io.common.ImportHelper;\r
 import eu.etaxonomy.cdm.io.common.MapWrapper;\r
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.description.Distribution;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
@@ -140,7 +141,7 @@ public class TcsRdfTaxonImport  extends TcsRdfImportBase implements ICdmIO<TcsRd
                        xmlAttributeName = "resource";\r
                        attributeNamespace = rdfNamespace;\r
                        String strNameResource= XmlHelp.getChildAttributeValue(elTaxonConcept, xmlElementName, elementNamespace, xmlAttributeName, attributeNamespace);\r
-                       TaxonNameBase taxonNameBase = taxonNameMap.get(strNameResource);\r
+                       TaxonNameBase<?,?> taxonNameBase = taxonNameMap.get(strNameResource);\r
                        if (taxonNameBase == null){\r
                                logger.warn("Taxon has no name: " + taxonAbout + "; Resource: " + strNameResource);\r
                        }\r
@@ -157,7 +158,7 @@ public class TcsRdfTaxonImport  extends TcsRdfImportBase implements ICdmIO<TcsRd
                        \r
 //                     //FIXME\r
 //                     String secId = "pub_999999";\r
-                       Reference sec = referenceMap.get(strAccordingTo);\r
+                       Reference<?> sec = referenceMap.get(strAccordingTo);\r
                        if (sec == null){\r
                                sec = nomRefMap.get(strAccordingTo);\r
                        }\r
@@ -165,7 +166,7 @@ public class TcsRdfTaxonImport  extends TcsRdfImportBase implements ICdmIO<TcsRd
                                logger.warn("sec could not be found in referenceMap or nomRefMap for secId: " + strAccordingTo);\r
                        }\r
                        \r
-                       TaxonBase taxonBase;\r
+                       TaxonBase<?> taxonBase;\r
                        Namespace geoNamespace = config.getGeoNamespace();\r
                        if (hasIsSynonymRelation(elTaxonConcept, rdfNamespace) || isSynonym(elTaxonConcept, config.getPalmNamespace())){\r
                                //Synonym\r
@@ -179,10 +180,12 @@ public class TcsRdfTaxonImport  extends TcsRdfImportBase implements ICdmIO<TcsRd
                                Taxon taxon = Taxon.NewInstance(taxonNameBase, sec);\r
                                List<DescriptionElementBase> geoList = makeGeo(elTaxonConcept, geoNamespace, rdfNamespace);\r
                                TaxonDescription description = TaxonDescription.NewInstance(taxon);\r
-                               description.addSource(null, null, taxon.getSec(), null);\r
+                               //TODO type\r
+                               description.addSource(OriginalSourceType.Unknown, null, null, taxon.getSec(), null);\r
                                for (DescriptionElementBase geo: geoList){\r
                                        description.addElement(geo);\r
-                                       DescriptionElementSource source = DescriptionElementSource.NewInstance(null, null, taxon.getSec(), null);\r
+                                       //TODO type\r
+                                       DescriptionElementSource source = DescriptionElementSource.NewInstance(OriginalSourceType.Unknown, null, null, taxon.getSec(), null);\r
                                        geo.addSource(source);\r
                                }\r
                                taxon.addDescription(description);\r
index a357ed9695667aba61e1a71e59995a977f6ba67f..171048e83a9098842cdd3001e48ee3e7ccf00865 100644 (file)
@@ -59,56 +59,62 @@ public class DescriptionElementSource extends OriginalSourceBase<DescriptionElem
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(DescriptionElementSource.class);\r
        \r
-\r
        /**\r
         * Factory method\r
         * @return\r
         */\r
-       public static DescriptionElementSource NewInstance(){\r
-               return new DescriptionElementSource();\r
+       public static DescriptionElementSource NewInstance(OriginalSourceType type){\r
+               return new DescriptionElementSource(type);\r
        }\r
        \r
-       public static DescriptionElementSource NewInstance(String id){\r
-               DescriptionElementSource result = new DescriptionElementSource();\r
+       public static DescriptionElementSource NewDataImportInstance(String id){\r
+               DescriptionElementSource result = new DescriptionElementSource(OriginalSourceType.Import);\r
                result.setIdInSource(id);\r
                return result;\r
        }\r
 \r
-       public static DescriptionElementSource NewInstance(String id, String idNamespace){\r
-               DescriptionElementSource result = NewInstance(id);\r
+       public static DescriptionElementSource NewDataImportInstance(String id, String idNamespace){\r
+               DescriptionElementSource result = NewDataImportInstance(id);\r
                result.setIdNamespace(idNamespace);\r
                return result;\r
        }\r
        \r
-       public static DescriptionElementSource NewInstance(String id, String idNamespace, Reference citation){\r
-               DescriptionElementSource result = NewInstance(id, idNamespace);\r
+       public static DescriptionElementSource NewDataImportInstance(String id, String idNamespace, Reference ref){\r
+               DescriptionElementSource result = NewDataImportInstance(id, idNamespace);\r
+               result.setCitation(ref);\r
+               return result;\r
+       }\r
+       \r
+       public static DescriptionElementSource NewInstance(OriginalSourceType type, String id, String idNamespace, Reference citation){\r
+               DescriptionElementSource result = NewInstance(type);\r
+               result.setIdInSource(id);\r
+               result.setIdNamespace(idNamespace);\r
                result.setCitation(citation);           \r
                return result;\r
        }\r
 \r
-       public static DescriptionElementSource NewInstance(String id, String idNamespace, Reference citation, String microCitation){\r
-               DescriptionElementSource result = NewInstance(id, idNamespace);\r
-               result.setCitation(citation);\r
+       public static DescriptionElementSource NewInstance(OriginalSourceType type, String id, String idNamespace, Reference citation, String microCitation){\r
+               DescriptionElementSource result = NewInstance(type, id, idNamespace, citation);\r
                result.setCitationMicroReference(microCitation);\r
                return result;\r
        }\r
        \r
-       public static DescriptionElementSource NewInstance(String id, String idNamespace, Reference citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){\r
-               DescriptionElementSource result = NewInstance(id, idNamespace, citation, microReference);\r
+       public static DescriptionElementSource NewInstance(OriginalSourceType type, String id, String idNamespace, Reference citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){\r
+               DescriptionElementSource result = NewInstance(type, id, idNamespace, citation, microReference);\r
                result.setNameUsedInSource(nameUsedInSource);\r
                result.setOriginalNameString(originalNameString);\r
                return result;\r
        }\r
        \r
-       public static DescriptionElementSource NewInstance(Reference citation, String microCitation){\r
-               DescriptionElementSource result = NewInstance();\r
+       public static DescriptionElementSource NewPrimarySourceInstance(Reference citation, String microCitation){\r
+               DescriptionElementSource result = NewInstance(OriginalSourceType.PrimaryTaxonomicSource);\r
                result.setCitation(citation);\r
                result.setCitationMicroReference(microCitation);\r
                return result;\r
        }\r
 \r
-       public static DescriptionElementSource NewInstance(Reference citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){\r
-               DescriptionElementSource result = NewInstance(citation, microReference);\r
+       public static DescriptionElementSource NewPrimarySourceInstance(Reference citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){\r
+               DescriptionElementSource result = NewPrimarySourceInstance(citation, microReference);\r
                result.setNameUsedInSource(nameUsedInSource);\r
                result.setOriginalNameString(originalNameString);\r
                return result;\r
@@ -132,10 +138,10 @@ public class DescriptionElementSource extends OriginalSourceBase<DescriptionElem
        @XmlSchemaType(name = "IDREF")\r
        @ManyToOne(fetch = FetchType.LAZY)\r
        @Cascade({CascadeType.SAVE_UPDATE})\r
-       private TaxonNameBase nameUsedInSource;\r
+       private TaxonNameBase<?,?> nameUsedInSource;\r
        \r
-       private DescriptionElementSource(){\r
-               \r
+       private DescriptionElementSource(OriginalSourceType type){\r
+               super(type);\r
        }\r
        \r
        \r
index c738bfe0a46bf15d38df1f822db25a939ea28146..0ca85cab52d9492d808b6c7386ee5e4edf99fbe3 100644 (file)
@@ -30,14 +30,16 @@ public interface ISourceable<T extends IOriginalSource> {
        
        
        /**
-        * Adds a source that is newly created by its components. If all components are <code>null</null>
+        * Adds a source that is newly created by its components. If all components except for the 
+        * type are <code>null</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<T extends IOriginalSource> {
         */
        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
index d2652d13b87d7d4bd58f38c4028f38ab55f38190..19ab525d24f9ca0b4ca8fc6609156ed6d3a6e226 100644 (file)
@@ -444,11 +444,25 @@ public abstract class IdentifiableEntity<S extends IIdentifiableEntityCacheStrat
      * @see eu.etaxonomy.cdm.model.common.ISourceable#addSource(java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)
      */
     @Override
-    public IdentifiableSource addSource(String id, String idNamespace, Reference citation, String microCitation) {
+    public IdentifiableSource addSource(OriginalSourceType type, String id, String idNamespace, Reference citation, String microCitation) {
         if (id == null && idNamespace == null && citation == null && microCitation == null){
             return null;
         }
-        IdentifiableSource source = IdentifiableSource.NewInstance(id, idNamespace, citation, microCitation);
+        IdentifiableSource source = IdentifiableSource.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 IdentifiableSource addImportSource(String id, String idNamespace, Reference<?> 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;
     }
index 1528fe942b416792c2756dcc9a8b35662cdeacd7..51a6d56f99d991ccca8bcc7dc78625d7d22b2ea1 100644 (file)
@@ -46,36 +46,43 @@ public class IdentifiableSource extends OriginalSourceBase<IdentifiableEntity>{
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(IdentifiableSource.class);\r
        \r
-\r
        /**\r
         * Factory method\r
         * @return\r
         */\r
-       public static IdentifiableSource NewInstance(){\r
-               return new IdentifiableSource();\r
+       public static IdentifiableSource NewInstance(OriginalSourceType type){\r
+               return new IdentifiableSource(type);\r
        }\r
        \r
-       public static IdentifiableSource NewInstance(String id){\r
-               IdentifiableSource result = new IdentifiableSource();\r
+       public static IdentifiableSource NewDataImportInstance(String id){\r
+               IdentifiableSource result = new IdentifiableSource(OriginalSourceType.Import);\r
                result.setIdInSource(id);\r
                return result;\r
        }\r
 \r
-       public static IdentifiableSource NewInstance(String id, String idNamespace){\r
-               IdentifiableSource result = NewInstance(id);\r
+       public static IdentifiableSource NewDataImportInstance(String id, String idNamespace){\r
+               IdentifiableSource result = NewDataImportInstance(id);\r
                result.setIdNamespace(idNamespace);\r
                return result;\r
        }\r
+\r
+       public static IdentifiableSource NewDataImportInstance(String id, String idNamespace, Reference ref){\r
+               IdentifiableSource result = NewDataImportInstance(id, idNamespace);\r
+               result.setCitation(ref);\r
+               return result;\r
+       }\r
        \r
-       public static IdentifiableSource NewInstance(String id, String idNamespace, Reference citation, String microCitation){\r
-               IdentifiableSource result = NewInstance(id, idNamespace);\r
+       public static IdentifiableSource NewInstance(OriginalSourceType type, String id, String idNamespace, Reference citation, String microCitation){\r
+               IdentifiableSource result = NewInstance(OriginalSourceType.Import);\r
+               result.setIdInSource(id);\r
+               result.setIdNamespace(idNamespace);\r
                result.setCitation(citation);\r
                result.setCitationMicroReference(microCitation);\r
                return result;\r
        }\r
 \r
-       public static IdentifiableSource NewInstance(Reference citation, String microCitation){\r
-               IdentifiableSource result = NewInstance();\r
+       public static IdentifiableSource NewPrimarySourceInstance(Reference citation, String microCitation){\r
+               IdentifiableSource result = NewInstance(OriginalSourceType.PrimaryTaxonomicSource);\r
                result.setCitation(citation);\r
                result.setCitationMicroReference(microCitation);\r
                return result;\r
@@ -90,8 +97,13 @@ public class IdentifiableSource extends OriginalSourceBase<IdentifiableEntity>{
                 optional = false)\r
        @JoinColumn(name = "sourcedObj_id")\r
        @NotAudited\r
-       private IdentifiableEntity sourcedObj;\r
+       private IdentifiableEntity<?> sourcedObj;\r
+\r
 \r
+       private IdentifiableSource(OriginalSourceType type) {\r
+               super(type);\r
+       }\r
+       \r
 \r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.model.common.IOriginalSource#getSourcedObj()\r
index 74dfbb6aaccea8b878e051f1446cdafb2a8ff1be..59eea9c8959a7b7efca9974d9f0ce3a15a861edb 100644 (file)
@@ -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<T extends ISourceable> 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<T extends ISourceable> 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<T extends ISourceable> 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<T extends ISourceable> 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;
index 9913ad8082d78c7bd5fdc496c819b9b1d9572d83..a758e0638a4c3d346c896319af96e5319bddbd25 100644 (file)
@@ -49,9 +49,22 @@ public enum OriginalSourceType implements IDefinedTerm<OriginalSourceType>, Seri
         *   \r
         */\r
        @XmlEnumValue("Primary Taxonomic Source")\r
-       PrimaryTaxonomicSource(UUID.fromString("c990beb3-3bc9-4dad-bbdf-9c11683493da"), "Primary Taxonomic Source"),\r
+       Unknown(UUID.fromString("c990beb3-3bc9-4dad-bbdf-9c11683493da"), "Primary Taxonomic Source"),\r
        \r
        //1\r
+       /**\r
+        * Primary Taxonomic Source describes the sources a taxonomist uses to gather certain information. \r
+        * E.g. a taxonomist may have used three books/articles/other references to gather information\r
+        * about the distribution status of a taxon.\r
+        * He/she will store these references as original source of type Primary Taxonomic Source.\r
+        * This is a specification of PROV-O Primary Source \r
+        * ({@link http://www.w3.org/TR/2013/REC-prov-o-20130430/#PrimarySource})\r
+        *   \r
+        */\r
+       @XmlEnumValue("Primary Taxonomic Source")\r
+       PrimaryTaxonomicSource(UUID.fromString("c990beb3-3bc9-4dad-bbdf-9c11683493da"), "Primary Taxonomic Source"),\r
+       \r
+       //2\r
        /**\r
         * Data Lineage describes the data life cycle of electronically available data. A typical use-case for \r
         * data lineage is a data import from one database to another. Sources of type data lineage will store information about the\r
@@ -61,7 +74,7 @@ public enum OriginalSourceType implements IDefinedTerm<OriginalSourceType>, Seri
        @XmlEnumValue("Data Lineage")\r
        Lineage(UUID.fromString("4f9fdf9a-f3b5-490c-96f0-90e050599b0e"), "Data Lineage"),\r
 \r
-       //2\r
+       //3\r
        /**\r
         * Database Import is a specialisation of {@value #Lineage}. It describes the electronic import of data \r
         * from an external datasource into the given datasource. This step may include data transformations also\r
@@ -70,7 +83,7 @@ public enum OriginalSourceType implements IDefinedTerm<OriginalSourceType>, Seri
        @XmlEnumValue("Database Import")\r
        Import(UUID.fromString("2a3902ff-06a7-4307-b542-c743e664b8f2"), "Database Import"),\r
 \r
-       //3\r
+       //4\r
        /**\r
         * Data Transformation is a specification of {@value #Lineage} and describes a data transformation process that happens primarily  on the given dataset\r
         * but may also include external data.\r
@@ -79,7 +92,7 @@ public enum OriginalSourceType implements IDefinedTerm<OriginalSourceType>, Seri
        Transformation(UUID.fromString("d59e80e5-cbb7-4658-b74d-0626bbb0da7f"), "Data Transformation"),\r
 \r
 \r
-       //4\r
+       //5\r
        /**\r
         * Data aggregation is a spcification of {@value #Lineage} and describes the data transformation process\r
         * that primarily includes data aggregation processes but may also include data imports and transformation.\r
index ec14881ca278eb93232e1b6f4752aa35ec13b1aa..3223504ea73856bce6f7ee4a1b041c2660d05e0c 100644 (file)
@@ -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);
     }
 
index cef62f0ceea71179e037e48606ef7daf6f57b67b..53a5038ccf57acae299dacf6d950df44cbb5a481 100644 (file)
@@ -30,6 +30,7 @@ import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.cdm.model.media.Media;\r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
@@ -71,7 +72,7 @@ private static Logger logger = Logger.getLogger(DescriptionElementTest.class);
                Media media = Media.NewInstance(null, 1000, "jpeg", null);\r
                categorialData.addMedia(media);\r
                \r
-               DescriptionElementSource source = DescriptionElementSource.NewInstance();\r
+               DescriptionElementSource source = DescriptionElementSource.NewInstance(OriginalSourceType.Unknown);\r
                Reference<?> citation = ReferenceFactory.newArticle();\r
                citation.setTitle("Test");\r
                source.setCitation(citation);\r
index b10ee7608d420b31b77d91907754afbbd9fdaef5..8f838b5ae8d91ec127ea1862678138417b3accd1 100644 (file)
@@ -186,7 +186,7 @@ public class SpecimenTest {
                Marker marker = Marker.NewInstance(MarkerType.COMPLETE(), false);\r
                Rights right = Rights.NewInstance("right", Language.DEFAULT());\r
                Media media = Media.NewInstance();\r
-               IdentifiableSource source = IdentifiableSource.NewInstance("12", "idNamespace");\r
+               IdentifiableSource source = IdentifiableSource.NewDataImportInstance("12", "idNamespace");\r
                \r
                specimen.setAccessionNumber(accessionNumber);\r
                specimen.setCatalogNumber(catalogNumber);\r
index 898450ba284c4d77cb6b8aba6866f1936699715a..d629c60f9f4a4bfa4fa825d3a2ed1bbd5a385b04 100644 (file)
@@ -124,9 +124,8 @@ public class TestSpecimen {
                specimen.addMedia(media);\r
 \r
                //Original ID\r
-               IdentifiableSource source = IdentifiableSource.NewInstance();\r
                String id = "22";\r
-               source.setIdInSource(id);\r
+               IdentifiableSource source = IdentifiableSource.NewDataImportInstance(id);\r
                specimen.addSource(source);\r
                \r
                FieldObservation fieldObservation = FieldObservation.NewInstance();\r
index 1bbf1e55fe63e14926b6cb1e8f14269d184cb0c6..b996f2b42f8b08892d4f4a0d871df10a9a1a84c4 100644 (file)
@@ -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<ISchemaUpdaterStep> stepList = new ArrayList<ISchemaUpdaterStep>();
                
+               //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
+               
                
                
                
index 2536338cc587bf37109c61b2f401699c8cc42a89..0aae3fdc48530ecea057aa83c8f0432acd985e63 100644 (file)
@@ -57,6 +57,7 @@ import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.common.OrderedTermBase;\r
 import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
 import eu.etaxonomy.cdm.model.common.OriginalSourceBase;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.RelationshipTermBase;\r
 import eu.etaxonomy.cdm.model.common.Representation;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
@@ -632,8 +633,8 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                article1.addExtension(extension1);\r
                article2.addExtension(extension2);\r
                \r
-               IdentifiableSource source1 = IdentifiableSource.NewInstance();\r
-               IdentifiableSource source2 = IdentifiableSource.NewInstance();\r
+               IdentifiableSource source1 = IdentifiableSource.NewInstance(OriginalSourceType.Unknown);\r
+               IdentifiableSource source2 = IdentifiableSource.NewInstance(OriginalSourceType.Unknown);\r
                \r
                article1.addSource(source1);\r
                article2.addSource(source2);\r
@@ -655,7 +656,7 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                \r
                TaxonDescription taxDesc = TaxonDescription.NewInstance(taxon1);\r
                taxDesc.setTitleCache("taxDesc", true);\r
-               taxDesc.addSource(null, null, article2, null);\r
+               taxDesc.addSource(OriginalSourceType.Unknown, null, null, article2, null);\r
 \r
                taxonDao.save(taxon1);\r
 \r
index ef3c76faa967822b77b92696383223cd92f94a20..42455ff964db3bc2e6f4f78634e2a5b68b245303 100644 (file)
@@ -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
index f386f95564d433a035e617bf2517b15c2124acb6..1238c81c73151100978e362e65b352b158892e03 100644 (file)
@@ -28,9 +28,12 @@ import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Person;\r
 import eu.etaxonomy.cdm.model.common.Annotation;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.IOriginalSource;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceBase;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
@@ -2190,15 +2193,16 @@ public class DerivedUnitFacade {
        }\r
 \r
        /**\r
-        * Creates an orignal source, adds it to the specimen and returns it.\r
+        * Creates an {@link IOriginalSource orignal source} or type , \r
+        * adds it to the specimen and returns it.\r
         * \r
         * @param reference\r
         * @param microReference\r
         * @param originalNameString\r
         * @return\r
         */\r
-       public IdentifiableSource addSource(Reference reference, String microReference, String originalNameString) {\r
-               IdentifiableSource source = IdentifiableSource.NewInstance(reference, microReference);\r
+       public IdentifiableSource addSource(OriginalSourceType type, Reference reference, String microReference, String originalNameString) {\r
+               IdentifiableSource source = IdentifiableSource.NewInstance(type, null, null, reference, microReference);\r
                source.setOriginalNameString(originalNameString);\r
                addSource(source);\r
                return source;\r
index 4cf784f7556037155e6e5cc94831b9f9baf6274c..5ab98a3931ef051a1c67a52538dc66efb5ef96cd 100644 (file)
@@ -58,6 +58,7 @@ import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
 import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;\r
 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;\r
@@ -1935,9 +1936,9 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
         String idInSourceSyn= getIdInSource(syn);\r
 \r
         if (idInSourceParent != null && idInSourceSyn != null) {\r
-            IdentifiableSource originalSource = IdentifiableSource.NewInstance(idInSourceSyn + "; " + idInSourceParent, POTENTIAL_COMBINATION_NAMESPACE, sourceReference, null);\r
+            IdentifiableSource originalSource = IdentifiableSource.NewInstance(OriginalSourceType.Transformation, idInSourceSyn + "; " + idInSourceParent, POTENTIAL_COMBINATION_NAMESPACE, sourceReference, null);\r
             inferredSynName.addSource(originalSource);\r
-            originalSource = IdentifiableSource.NewInstance(idInSourceSyn + "; " + idInSourceParent, POTENTIAL_COMBINATION_NAMESPACE, sourceReference, null);\r
+            originalSource = IdentifiableSource.NewInstance(OriginalSourceType.Transformation, idInSourceSyn + "; " + idInSourceParent, POTENTIAL_COMBINATION_NAMESPACE, sourceReference, null);\r
             potentialCombination.addSource(originalSource);\r
         }\r
 \r
@@ -1998,19 +1999,23 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
 \r
         // Add the original source\r
         if (idInSourceSyn != null && idInSourceTaxon != null) {\r
-            IdentifiableSource originalSource = IdentifiableSource.NewInstance(idInSourceSyn + "; " + idInSourceTaxon, INFERRED_GENUS_NAMESPACE, sourceReference, null);\r
+            IdentifiableSource originalSource = IdentifiableSource.NewInstance(OriginalSourceType.Transformation, \r
+                       idInSourceSyn + "; " + idInSourceTaxon, INFERRED_GENUS_NAMESPACE, sourceReference, null);\r
             inferredGenus.addSource(originalSource);\r
 \r
-            originalSource = IdentifiableSource.NewInstance(idInSourceSyn + "; " + idInSourceTaxon, INFERRED_GENUS_NAMESPACE, sourceReference, null);\r
+            originalSource = IdentifiableSource.NewInstance(OriginalSourceType.Transformation, \r
+                       idInSourceSyn + "; " + idInSourceTaxon, INFERRED_GENUS_NAMESPACE, sourceReference, null);\r
             inferredSynName.addSource(originalSource);\r
             originalSource = null;\r
 \r
         }else{\r
             logger.error("There is an idInSource missing: " + idInSourceSyn + " of Synonym or " + idInSourceTaxon + " of Taxon");\r
-            IdentifiableSource originalSource = IdentifiableSource.NewInstance(idInSourceSyn + "; " + idInSourceTaxon, INFERRED_GENUS_NAMESPACE, sourceReference, null);\r
+            IdentifiableSource originalSource = IdentifiableSource.NewInstance(OriginalSourceType.Transformation, \r
+                       idInSourceSyn + "; " + idInSourceTaxon, INFERRED_GENUS_NAMESPACE, sourceReference, null);\r
             inferredGenus.addSource(originalSource);\r
 \r
-            originalSource = IdentifiableSource.NewInstance(idInSourceSyn + "; " + idInSourceTaxon, INFERRED_GENUS_NAMESPACE, sourceReference, null);\r
+            originalSource = IdentifiableSource.NewInstance(OriginalSourceType.Transformation, \r
+                       idInSourceSyn + "; " + idInSourceTaxon, INFERRED_GENUS_NAMESPACE, sourceReference, null);\r
             inferredSynName.addSource(originalSource);\r
             originalSource = null;\r
         }\r
@@ -2102,11 +2107,13 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
         String taxonId = idInSourceTaxon+ "; " + idInSourceSyn;\r
 \r
 \r
-        IdentifiableSource originalSource = IdentifiableSource.NewInstance(taxonId, INFERRED_EPITHET_NAMESPACE, sourceReference, null);\r
+        IdentifiableSource originalSource = IdentifiableSource.NewInstance(OriginalSourceType.Transformation, \r
+                       taxonId, INFERRED_EPITHET_NAMESPACE, sourceReference, null);\r
 \r
         inferredEpithet.addSource(originalSource);\r
 \r
-        originalSource = IdentifiableSource.NewInstance(taxonId, INFERRED_EPITHET_NAMESPACE, sourceReference, null);\r
+        originalSource = IdentifiableSource.NewInstance(OriginalSourceType.Transformation, \r
+                       taxonId, INFERRED_EPITHET_NAMESPACE, sourceReference, null);\r
 \r
         inferredSynName.addSource(originalSource);\r
 \r
index 9717384254f8bb213d11d2fccddada380c608da3..80a674ecb2b07aa1324d144a810a2e42b7a0cc6f 100644 (file)
@@ -36,6 +36,7 @@ import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.common.User;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
@@ -1436,42 +1437,31 @@ public class DerivedUnitFacadeTest extends CdmTransactionalIntegrationTest {
 \r
     @Test\r
     public void testAddGetRemoveSource() {\r
-        Assert.assertEquals("No sources should exist yet", 0, specimenFacade\r
-                .getSources().size());\r
-        Reference reference = ReferenceFactory.newBook();\r
-        IdentifiableSource source1 = specimenFacade.addSource(reference, "54",\r
-                "myName");\r
-        Assert.assertEquals("One source should exist now", 1, specimenFacade\r
-                .getSources().size());\r
-        IdentifiableSource source2 = IdentifiableSource.NewInstance("1",\r
-                "myTable");\r
+        Assert.assertEquals("No sources should exist yet", 0, specimenFacade.getSources().size());\r
+        \r
+        Reference<?> reference = ReferenceFactory.newBook();\r
+        IdentifiableSource source1 = specimenFacade.addSource(OriginalSourceType.PrimaryTaxonomicSource, reference, "54", "myName");\r
+        Assert.assertEquals("One source should exist now", 1, specimenFacade.getSources().size());\r
+        IdentifiableSource source2 = IdentifiableSource.NewDataImportInstance("1", "myTable");\r
         specimenFacade.addSource(source2);\r
-        Assert.assertEquals("One source should exist now", 2, specimenFacade\r
-                .getSources().size());\r
+        Assert.assertEquals("One source should exist now", 2, specimenFacade.getSources().size());\r
         specimenFacade.removeSource(source1);\r
-        Assert.assertEquals("One source should exist now", 1, specimenFacade\r
-                .getSources().size());\r
+        Assert.assertEquals("One source should exist now", 1, specimenFacade.getSources().size());\r
         Reference reference2 = ReferenceFactory.newJournal();\r
-        IdentifiableSource sourceNotUsed = specimenFacade.addSource(reference2,\r
-                null, null);\r
+        IdentifiableSource sourceNotUsed = specimenFacade.addSource(OriginalSourceType.PrimaryTaxonomicSource, reference2,null, null);\r
         specimenFacade.removeSource(sourceNotUsed);\r
-        Assert.assertEquals("One source should still exist", 1, specimenFacade\r
-                .getSources().size());\r
-        Assert.assertEquals("1", specimenFacade.getSources().iterator().next()\r
-                .getIdInSource());\r
+        Assert.assertEquals("One source should still exist", 1, specimenFacade.getSources().size());\r
+        Assert.assertEquals("1", specimenFacade.getSources().iterator().next().getIdInSource());\r
         specimenFacade.removeSource(source2);\r
-        Assert.assertEquals("No sources should exist anymore", 0,\r
-                specimenFacade.getSources().size());\r
+        Assert.assertEquals("No sources should exist anymore", 0,specimenFacade.getSources().size());\r
     }\r
 \r
     @Test\r
     public void testAddGetRemoveDuplicate() {\r
-        Assert.assertEquals("No duplicates should be available yet", 0,\r
-                specimenFacade.getDuplicates().size());\r
+        Assert.assertEquals("No duplicates should be available yet", 0,specimenFacade.getDuplicates().size());\r
         Specimen newSpecimen1 = Specimen.NewInstance();\r
         specimenFacade.addDuplicate(newSpecimen1);\r
-        Assert.assertEquals("There should be 1 duplicate now", 1,\r
-                specimenFacade.getDuplicates().size());\r
+        Assert.assertEquals("There should be 1 duplicate now", 1,specimenFacade.getDuplicates().size());\r
         Specimen newSpecimen2 = Specimen.NewInstance();\r
         DerivationEvent newDerivationEvent = DerivationEvent.NewInstance(DerivationEventType.ACCESSIONING());\r
         newSpecimen2.setDerivedFrom(newDerivationEvent);\r
@@ -1479,8 +1469,7 @@ public class DerivedUnitFacadeTest extends CdmTransactionalIntegrationTest {
                 "The derivation event should be 'newDerivationEvent'",\r
                 newDerivationEvent, newSpecimen2.getDerivedFrom());\r
         specimenFacade.addDuplicate(newSpecimen2);\r
-        Assert.assertEquals("There should be 2 duplicates now", 2,\r
-                specimenFacade.getDuplicates().size());\r
+        Assert.assertEquals("There should be 2 duplicates now", 2, specimenFacade.getDuplicates().size());\r
         Assert.assertNotSame(\r
                 "The derivation event should not be 'newDerivationEvent' anymore",\r
                 newDerivationEvent, newSpecimen2.getDerivedFrom());\r
@@ -1501,7 +1490,7 @@ public class DerivedUnitFacadeTest extends CdmTransactionalIntegrationTest {
         String catalogNumber = "1234890";\r
         String accessionNumber = "345345";\r
         String collectorsNumber = "lkjewe";\r
-        TaxonNameBase storedUnder = BotanicalName.NewInstance(Rank.SPECIES());\r
+        TaxonNameBase<?,?> storedUnder = BotanicalName.NewInstance(Rank.SPECIES());\r
         PreservationMethod method = PreservationMethod.NewInstance();\r
         Specimen duplicateSpecimen = specimenFacade.addDuplicate(newCollection,\r
                 catalogNumber, accessionNumber, storedUnder,\r
index 00a4926ea8f4d87154dae0e7ac28f13c26d35199..43212e18a88bfd1810c81b71013e50b4e441f38c 100644 (file)
@@ -548,7 +548,7 @@ public class NameServiceImplTest extends CdmTransactionalIntegrationTest {
         TextData textData = TextData.NewInstance("Any text", lang, null);\r
         textData.setFeature(feature);\r
         taxonDescription.addElement(textData);\r
-        DescriptionElementSource source = DescriptionElementSource.NewInstance(null, null, name1, "");\r
+        DescriptionElementSource source = DescriptionElementSource.NewPrimarySourceInstance(null, null, name1, "");\r
         textData.addSource(source);\r
         taxonService.saveOrUpdate(taxon);\r
         nameService.save(name1);\r