import eu.etaxonomy.cdm.model.agent.Institution;
import eu.etaxonomy.cdm.model.agent.Team;
import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.ISourceable;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
return true;
}
- /**
- * @param specimen
- * @param source
- * @return
- */
- private boolean sourceNotLinkedToElement(SpecimenOrObservationBase<?> specimen, OriginalSourceBase<?> source) {
- Set<IdentifiableSource> linkedSources = specimen.getSources();
- for (IdentifiableSource is:linkedSources){
- Reference a = is.getCitation();
- Reference b = source.getCitation();
- String c = is.getCitationMicroReference();
- String d = source.getCitationMicroReference();
+ private <T extends OriginalSourceBase<?>> boolean sourceNotLinkedToElement(ISourceable<T> sourcable, Reference reference, String microReference) {
+ Set<T> linkedSources = sourcable.getSources();
+ for (T is:linkedSources){
+ Reference unitReference = is.getCitation();
+ String unitMicroReference = is.getCitationMicroReference();
boolean refMatch=false;
boolean microMatch=false;
try{
- if (a==null && b==null) {
+ if (unitReference==null && reference==null) {
refMatch=true;
}
- if (a!=null && b!=null) {
- if (a.getTitleCache().equalsIgnoreCase(b.getTitleCache())) {
+ if (unitReference!=null && reference!=null) {
+ if (unitReference.getTitleCache().equalsIgnoreCase(reference.getTitleCache())) {
refMatch=true;
}
}
}catch(Exception e){}
-
try{
- if (c==null && d==null) {
+ if (unitMicroReference==null && microReference==null) {
microMatch=true;
}
- if(c!=null && d!=null) {
- if(c.equalsIgnoreCase(d)) {
+ if(unitMicroReference!=null && microReference!=null) {
+ if(unitMicroReference.equalsIgnoreCase(microReference)) {
microMatch=true;
}
}
if (microMatch && refMatch) {
return false;
}
-
-
- }
- return true;
- }
-
- /**
- * @param indAssociation
- * @param ref2
- * @param object
- * @return
- */
- private boolean sourceNotLinkedToElement(IndividualsAssociation indAssociation, Reference a, String d) {
- Set<DescriptionElementSource> linkedSources = indAssociation.getSources();
- for (DescriptionElementSource is:linkedSources){
- Reference b = is.getCitation();
- String c = is.getCitationMicroReference();
-
- boolean refMatch=false;
- boolean microMatch=false;
-
- try{
- if (a==null && b==null) {
- refMatch=true;
- }
- if (a!=null && b!=null) {
- if (a.getTitleCache().equalsIgnoreCase(b.getTitleCache())) {
- refMatch=true;
- }
- }
- }catch(Exception e){}
-
-
- try{
- if (c==null && d==null) {
- microMatch=true;
- }
- if(c!=null && d!=null) {
- if(c.equalsIgnoreCase(d)) {
- microMatch=true;
- }
- }
- }
- catch(Exception e){}
-
- if (microMatch && refMatch) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * @param taxonDescription
- * @param ref2
- * @param object
- * @return
- */
- private boolean sourceNotLinkedToElement(TaxonDescription taxonDescription, Reference a, String d) {
- Set<IdentifiableSource> linkedSources = taxonDescription.getSources();
- for (IdentifiableSource is:linkedSources){
- Reference b = is.getCitation();
- String c = is.getCitationMicroReference();
-
- boolean refMatch=false;
- boolean microMatch=false;
-
- try{
- if (a==null && b==null) {
- refMatch=true;
- }
- if (a!=null && b!=null) {
- if (a.getTitleCache().equalsIgnoreCase(b.getTitleCache())) {
- refMatch=true;
- }
- }
- }catch(Exception e){}
-
-
- try{
- if (c==null && d==null) {
- microMatch=true;
- }
- if(c!=null && d!=null) {
- if(c.equalsIgnoreCase(d)) {
- microMatch=true;
- }
- }
- }
- catch(Exception e){}
-
- if (microMatch && refMatch) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * @param indAssociation
- * @param source
- * @return
- */
- private boolean sourceNotLinkedToElement(IndividualsAssociation indAssociation, OriginalSourceBase<?> source) {
- Set<DescriptionElementSource> linkedSources = indAssociation.getSources();
- for (DescriptionElementSource is:linkedSources){
- Reference a = is.getCitation();
- Reference b = source.getCitation();
- String c = is.getCitationMicroReference();
- String d = source.getCitationMicroReference();
-
- boolean refMatch=false;
- boolean microMatch=false;
-
- try{
- if (a==null && b==null) {
- refMatch=true;
- }
- if (a!=null && b!=null) {
- if (a.getTitleCache().equalsIgnoreCase(b.getTitleCache())) {
- refMatch=true;
- }
- }
- }catch(Exception e){}
-
-
- try{
- if (c==null && d==null) {
- microMatch=true;
- }
- if(c!=null && d!=null) {
- if(c.equalsIgnoreCase(d)) {
- microMatch=true;
- }
- }
- }
- catch(Exception e){}
-
- if (microMatch && refMatch) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * @param taxonDescription
- * @param sour
- * @return
- */
- private boolean sourceNotLinkedToElement(TaxonDescription taxonDescription, OriginalSourceBase<?> sour) {
- Set<IdentifiableSource> linkedSources = taxonDescription.getSources();
- for (IdentifiableSource is:linkedSources){
- Reference a = is.getCitation();
- Reference b = sour.getCitation();
- String c = is.getCitationMicroReference();
- String d = sour.getCitationMicroReference();
-
- boolean refMatch=false;
- boolean microMatch=false;
-
- try{
- if (a==null && b==null) {
- refMatch=true;
- }
- if (a!=null && b!=null) {
- if (a.getTitleCache().equalsIgnoreCase(b.getTitleCache())) {
- refMatch=true;
- }
- }
- }catch(Exception e){}
-
-
- try{
- if (c==null && d==null) {
- microMatch=true;
- }
- if(c!=null && d!=null) {
- if(c.equalsIgnoreCase(d)) {
- microMatch=true;
- }
- }
- }
- catch(Exception e){}
-
- if (microMatch && refMatch) {
- return false;
- }
-
-
}
return true;
}
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.DefinedTerm;
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.ISourceable;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
e.printStackTrace();
}
}
-
-<<<<<<< e12074844fd16df32275a14151d604461a15a064
-
-
-
-
-
-=======
- /**
- * Look if the Institution does already exist
- * @param institutionCode: a string with the institutioncode
- * @param config : the configurator
- * @return the Institution (existing or new)
- */
- private Institution getInstitution(String institutionCode, Abcd206ImportState state) {
- Abcd206ImportConfigurator config = state.getConfig();
- Institution institution=null;
- List<Institution> institutions;
- try {
- institutions = getAgentService().list(Institution.class, null, null, null, null);
- } catch (Exception e) {
- institutions = new ArrayList<Institution>();
- logger.warn(e);
- }
- if (institutions.size() > 0 && config.isReUseExistingMetadata()) {
- for (Institution institut:institutions){
- try{
- if (institut.getCode().equalsIgnoreCase(institutionCode)) {
- institution=institut;
- }
- }catch(Exception e){logger.warn("no institution code in the db");}
- }
- }
- if(DEBUG) {
- if(institution !=null) {
- logger.info("getinstitution " + institution.toString());
- }
- }
- if (institution == null){
- // create institution
- institution = Institution.NewInstance();
- institution.setCode(institutionCode);
- institution.setTitleCache(institutionCode, true);
- }
- save(institution, state);
- return institution;
- }
-
- /**
- * Look if the Collection does already exist
- * @param collectionCode
- * @param collectionCode: a string
- * @param config : the configurator
- * @return the Collection (existing or new)
- */
- private Collection getCollection(Institution institution, String collectionCode, Abcd206ImportState state) {
- Abcd206ImportConfigurator config = state.getConfig();
- Collection collection = null;
- List<Collection> collections;
- try {
- collections = getCollectionService().list(Collection.class, null, null, null, null);
- } catch (Exception e) {
- collections = new ArrayList<Collection>();
- }
- if (collections.size() > 0 && config.isReUseExistingMetadata()) {
- for (Collection coll:collections){
- if (coll.getCode() != null && coll.getInstitute() != null
- && coll.getCode().equalsIgnoreCase(collectionCode) && coll.getInstitute().equals(institution)) {
- collection = coll;
- break;
- }
- }
- }
-
- if(collection == null){
- collection =Collection.NewInstance();
- collection.setCode(collectionCode);
- collection.setInstitute(institution);
- collection.setTitleCache(collectionCode);
- }
- save(collection, state);
- return collection;
- }
-
-
- /**
- * join DeterminationEvent to the Taxon Object
- * @param state : the ABCD import state
- * @param taxon: the current Taxon
- * @param preferredFlag :if the current name is preferred
- * @param derivedFacade : the derived Unit Facade
- */
- @SuppressWarnings("rawtypes")
- private void linkDeterminationEvent(Abcd206ImportState state, Taxon taxon, boolean preferredFlag, DerivedUnitFacade derivedFacade) {
- Abcd206ImportConfigurator config = state.getConfig();
- if(DEBUG){
- logger.info("start linkdetermination with taxon:" + taxon.getUuid()+", "+taxon);
- }
-
- DeterminationEvent determinationEvent = DeterminationEvent.NewInstance();
- determinationEvent.setTaxonName(taxon.getName());
- determinationEvent.setPreferredFlag(preferredFlag);
-
- determinationEvent.setIdentifiedUnit(state.getDerivedUnitBase());
- state.getDerivedUnitBase().addDetermination(determinationEvent);
-
- if(DEBUG){
- logger.info("NB TYPES INFO: "+ state.getDataHolder().statusList.size());
- }
- for (SpecimenTypeDesignationStatus specimenTypeDesignationstatus : state.getDataHolder().statusList) {
- if (specimenTypeDesignationstatus != null) {
- if(DEBUG){
- logger.info("specimenTypeDesignationstatus :"+ specimenTypeDesignationstatus);
- }
-
- ICdmApplicationConfiguration cdmAppController = config.getCdmAppController();
- if(cdmAppController == null){
- cdmAppController = this;
- }
- specimenTypeDesignationstatus = (SpecimenTypeDesignationStatus) cdmAppController.getTermService().find(specimenTypeDesignationstatus.getUuid());
- //Designation
- TaxonNameBase<?,?> name = taxon.getName();
- SpecimenTypeDesignation designation = SpecimenTypeDesignation.NewInstance();
-
- designation.setTypeStatus(specimenTypeDesignationstatus);
- designation.setTypeSpecimen(state.getDerivedUnitBase());
- name.addTypeDesignation(designation, true);
- }
- }
-
- for (String[] fullReference : state.getDataHolder().referenceList) {
-
-
- String strReference=fullReference[0];
- String citationDetail = fullReference[1];
- String citationURL = fullReference[2];
- List<Reference> references = getReferenceService().listByTitle(Reference.class, "strReference", MatchMode.EXACT, null, null, null, null, null);
-
- if (!references.isEmpty()){
- Reference reference = null;
- for (Reference refe: references) {
- if (refe.getTitleCache().equalsIgnoreCase(strReference)) {
- reference =refe;
- break;
- }
- }
- if (reference ==null){
- reference = ReferenceFactory.newGeneric();
- reference.setTitleCache(strReference, true);
- save(reference, state);
- }
- determinationEvent.addReference(reference);
- }
- }
- save(state.getDerivedUnitBase(), state);
-
- if (config.isAddIndividualsAssociationsSuchAsSpecimenAndObservations() && preferredFlag) {
- //do not add IndividualsAssociation to non-preferred taxa
- if(DEBUG){
- logger.info("isDoCreateIndividualsAssociations");
- }
-
- makeIndividualsAssociation(state, taxon, determinationEvent);
-
- save(state.getDerivedUnitBase(), state);
- }
- }
-
- /**
- * create and link each association (specimen, observation..) to the accepted taxon
- * @param state : the ABCD import state
- * @param taxon: the current Taxon
- * @param determinationEvent:the determinationevent
- */
- private void makeIndividualsAssociation(Abcd206ImportState state, Taxon taxon, DeterminationEvent determinationEvent) {
- Abcd206ImportConfigurator config = state.getConfig();
- SpecimenUserInteraction sui = config.getSpecimenUserInteraction();
-
- if (DEBUG) {
- logger.info("MAKE INDIVIDUALS ASSOCIATION");
- }
-
- TaxonDescription taxonDescription = null;
- Set<TaxonDescription> descriptions= taxon.getDescriptions();
- if (((Abcd206ImportConfigurator) state.getConfig()).isInteractWithUser()){
- if(!state.isDescriptionGroupSet()){
- taxonDescription = sui.askForDescriptionGroup(descriptions);
- state.setDescriptionGroup(taxonDescription);
- state.setDescriptionGroupSet(true);
- }else{
- taxonDescription=state.getDescriptionGroup();
- }
- } else {
- for (TaxonDescription description : descriptions){
- Set<IdentifiableSource> sources = new HashSet<>();
- sources.addAll(description.getTaxon().getSources());
- sources.addAll(description.getSources());
- for (IdentifiableSource source:sources){
- if(state.getRef().equals(source.getCitation())) {
- taxonDescription = description;
- }
- }
- }
- }
- if (taxonDescription == null){
- taxonDescription = TaxonDescription.NewInstance(taxon, false);
- if(sourceNotLinkedToElement(taxonDescription,state.getRef(),null)) {
- taxonDescription.addSource(OriginalSourceType.Import, null, null, state.getRef(), null);
- }
- state.setDescriptionGroup(taxonDescription);
- taxon.addDescription(taxonDescription);
- }
-
- //PREPARE REFERENCE QUESTIONS
-
- Map<String,OriginalSourceBase<?>> sourceMap = new HashMap<String, OriginalSourceBase<?>>();
-
- List<IdentifiableSource> issTmp = new ArrayList<>();//getCommonService().list(IdentifiableSource.class, null, null, null, null);
- List<DescriptionElementSource> issTmp2 = new ArrayList<>();//getCommonService().list(DescriptionElementSource.class, null, null, null, null);
-
- Set<OriginalSourceBase> osbSet = new HashSet<OriginalSourceBase>();
- if(issTmp2!=null) {
- osbSet.addAll(issTmp2);
- }
- if(issTmp!=null) {
- osbSet.addAll(issTmp);
- }
-
-
- addToSourceMap(sourceMap, osbSet);
-
- if (((Abcd206ImportConfigurator) state.getConfig()).isInteractWithUser()){
- List<OriginalSourceBase<?>> res = null;
- if(!state.isDescriptionSourcesSet()){
- res = sui.askForSource(sourceMap, "the description group ("+taxon+")",
- "The current reference is "+state.getRef().getTitleCache(),getReferenceService(), state.getDataHolder().docSources);
- state.setDescriptionRefs(res);
- state.setDescriptionSourcesSet(true);
- }
- else{
- res=state.getDescriptionRefs();
- }
- if(res !=null) {
- for (OriginalSourceBase<?> sour:res){
- if(sour.isInstanceOf(IdentifiableSource.class)){
- try {
- if(sourceNotLinkedToElement(taxonDescription,sour)) {
- taxonDescription.addSource((IdentifiableSource)sour.clone());
- }
- } catch (CloneNotSupportedException e) {
- logger.warn("no cloning?");
- }
- }else{
- if(sourceNotLinkedToElement(taxonDescription,sour)) {
- taxonDescription.addSource(OriginalSourceType.Import,null, null, sour.getCitation(),sour.getCitationMicroReference());
- }
- }
- }
- }
- }
- else {
- if(sourceNotLinkedToElement(taxonDescription,state.getRef(),null)) {
- taxonDescription.addSource(OriginalSourceType.Import,null, null, state.getRef(), null);
- }
- }
- state.setDescriptionGroup(taxonDescription);
-
- IndividualsAssociation indAssociation = IndividualsAssociation.NewInstance();
- Feature feature = makeFeature(state.getDerivedUnitBase());
- indAssociation.setAssociatedSpecimenOrObservation(state.getDerivedUnitBase());
- indAssociation.setFeature(feature);
-
- if (((Abcd206ImportConfigurator) state.getConfig()).isInteractWithUser()){
- sourceMap = new HashMap<String, OriginalSourceBase<?>>();
-
- issTmp = getCommonService().list(IdentifiableSource.class, null, null, null, null);
- issTmp2 = getCommonService().list(DescriptionElementSource.class, null, null, null, null);
-
- osbSet = new HashSet<OriginalSourceBase>();
- if(issTmp2!=null) {
- osbSet.addAll(issTmp2);
- }
- if(issTmp!=null) {
- osbSet.addAll(issTmp);
- }
-
-
- addToSourceMap(sourceMap, osbSet);
-
- List<OriginalSourceBase<?>> sources =null;
- if(!state.isAssociationSourcesSet()) {
- sources = sui.askForSource(sourceMap, "descriptive element (association) ",taxon.toString(),
- getReferenceService(),state.getDataHolder().docSources);
- state.setAssociationRefs(sources);
- state.setAssociationSourcesSet(true);
- }
- else{
- sources=state.getAssociationRefs();
- }
- if(sources !=null) {
- for (OriginalSourceBase<?> source: sources) {
- if(source !=null) {
- if(source.isInstanceOf(DescriptionElementSource.class)){
- try {
- if(sourceNotLinkedToElement(indAssociation,source)) {
- indAssociation.addSource((DescriptionElementSource)source.clone());
- }
- } catch (CloneNotSupportedException e) {
- logger.warn("clone forbidden?");
- }
- }else{
- if(sourceNotLinkedToElement(indAssociation,source)) {
- indAssociation.addSource(OriginalSourceType.Import,null, null, source.getCitation(),source.getCitationMicroReference());
- }
- try {
- if(sourceNotLinkedToElement(state.getDerivedUnitBase(), source)) {
- state.getDerivedUnitBase().addSource((IdentifiableSource) source.clone());
- }
- } catch (CloneNotSupportedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- }
- }
- }
- }else {
- if(sourceNotLinkedToElement(indAssociation,state.getRef(),null)) {
- indAssociation.addSource(OriginalSourceType.Import,null, null, state.getRef(), null);
- }
- if(sourceNotLinkedToElement(state.getDerivedUnitBase(), state.getRef(),null)) {
- state.getDerivedUnitBase().addSource(OriginalSourceType.Import,null, null, state.getRef(), null);
- }
- for (Reference citation : determinationEvent.getReferences()) {
- if(sourceNotLinkedToElement(indAssociation,citation,null))
- {
- indAssociation.addSource(DescriptionElementSource.NewInstance(OriginalSourceType.Import, null, null, citation, null));
- }
- if(sourceNotLinkedToElement(state.getDerivedUnitBase(), state.getRef(),null)) {
- state.getDerivedUnitBase().addSource(OriginalSourceType.Import,null, null, state.getRef(), null);
- }
- }
- }
-
- taxonDescription.addElement(indAssociation);
-
- save(taxonDescription, state);
- save(taxon, state);
- state.getReport().addDerivate(state.getDerivedUnitBase(), config);
- state.getReport().addIndividualAssociation(taxon, state.getDataHolder().unitID, state.getDerivedUnitBase());
- }
-
- private <T extends OriginalSourceBase<?>> boolean sourceNotLinkedToElement(ISourceable<T> sourcable, Reference reference, String microReference) {
- Set<T> linkedSources = sourcable.getSources();
- for (T is:linkedSources){
- Reference unitReference = is.getCitation();
- String unitMicroReference = is.getCitationMicroReference();
-
- boolean refMatch=false;
- boolean microMatch=false;
-
- try{
- if (unitReference==null && reference==null) {
- refMatch=true;
- }
- if (unitReference!=null && reference!=null) {
- if (unitReference.getTitleCache().equalsIgnoreCase(reference.getTitleCache())) {
- refMatch=true;
- }
- }
- }catch(Exception e){}
-
- try{
- if (unitMicroReference==null && microReference==null) {
- microMatch=true;
- }
- if(unitMicroReference!=null && microReference!=null) {
- if(unitMicroReference.equalsIgnoreCase(microReference)) {
- microMatch=true;
- }
- }
- }
- catch(Exception e){}
-
- if (microMatch && refMatch) {
- return false;
- }
- }
- return true;
- }
-
- private <T extends OriginalSourceBase<?>> boolean sourceNotLinkedToElement(ISourceable<T> sourcable, OriginalSourceBase<?> source) {
- return sourceNotLinkedToElement(sourcable, source.getCitation(), source.getCitationMicroReference());
- }
->>>>>>> fix #6001 Clean up multiple sourceNotLinked() methods
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// private void compareABCDtoCDM(URI urlFileName, List<String> knownElts, Abcd206XMLFieldGetter abcdFieldGetter) {
// try {