merge-update from trunk
authorPatric Plitzner <p.plitzner@bgbm.org>
Wed, 17 Sep 2014 16:51:14 +0000 (16:51 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Wed, 17 Sep 2014 16:51:14 +0000 (16:51 +0000)
1  2 
.gitattributes
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206Import.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206ImportConfigurator.java
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/SpecimenImportTest.java

diff --cc .gitattributes
Simple merge
index 791a3034872d331e1d2159f42299c083edadd662,61c99a1161b1a26f21ea5c069641f8dd518be698..1b04de4628c88fe775733dfe62385796f05d8da9
@@@ -42,6 -42,6 +42,7 @@@ import eu.etaxonomy.cdm.model.agent.Ins
  import eu.etaxonomy.cdm.model.agent.Person;
  import eu.etaxonomy.cdm.model.agent.Team;
  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.IdentifiableSource;
  import eu.etaxonomy.cdm.model.common.Language;
@@@ -67,12 -67,9 +68,13 @@@ import eu.etaxonomy.cdm.model.name.Spec
  import eu.etaxonomy.cdm.model.name.TaxonNameBase;
  import eu.etaxonomy.cdm.model.name.ZoologicalName;
  import eu.etaxonomy.cdm.model.occurrence.Collection;
 +import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
 +import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
  import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
  import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
++import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
  import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
 +import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
  import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
  import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
  import eu.etaxonomy.cdm.model.reference.Reference;
@@@ -106,6 -103,6 +108,7 @@@ public class Abcd206Import extends Spec
  
      private Abcd206DataHolder dataHolder;
      private DerivedUnit derivedUnitBase;
++    private FieldUnit fieldUnit;
  
      private List<OriginalSourceBase<?>> associationRefs = new ArrayList<OriginalSourceBase<?>>();
      boolean associationSourcesSet=false;
  
          dataHolder = null;
          derivedUnitBase = null;
++        fieldUnit = null;
  
          associationRefs = new ArrayList<OriginalSourceBase<?>>();
          associationSourcesSet=false;
              // create facade
              DerivedUnitFacade derivedUnitFacade = getFacade();
              derivedUnitBase = derivedUnitFacade.innerDerivedUnit();
++            fieldUnit = derivedUnitFacade.getFieldUnit(true);
  
              /**
               * GATHERING EVENT
                      try {
                          media = getImageMedia(multimediaObject, READ_MEDIA_DATA);
                          derivedUnitFacade.addDerivedUnitMedia(media);
-                         if(state.getConfig().isDoAddMediaAsMediaSpecimen()){
-                             //add media also as media specimen
++                        if(state.getConfig().isAddMediaAsMediaSpecimen()){
++                            //add media also as specimen scan
 +                            MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(SpecimenOrObservationType.Media);
 +                            mediaSpecimen.setMediaSpecimen(media);
++                            DefinedTermBase specimenScanTerm = getTermService().load(UUID.fromString("acda15be-c0e2-4ea8-8783-b9b0c4ad7f03"));
++                            if(specimenScanTerm instanceof DefinedTerm){
++                                mediaSpecimen.setKindOfUnit((DefinedTerm) specimenScanTerm);
++                            }
 +                            DerivationEvent derivationEvent = DerivationEvent.NewInstance(DerivationEventType.PREPARATION());
 +                            derivationEvent.addDerivative(mediaSpecimen);
 +                            derivedUnitFacade.innerDerivedUnit().addDerivationEvent(derivationEvent);
 +                        }
 +
                      } catch (MalformedURLException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
          determinationEvent.setIdentifiedUnit(derivedUnitBase);
          derivedUnitBase.addDetermination(determinationEvent);
  
--        try {
--            if(DEBUG){
--                logger.info("NB TYPES INFO: "+ dataHolder.statusList.size());
--            }
--            for (SpecimenTypeDesignationStatus specimenTypeDesignationstatus : dataHolder.statusList) {
--                if (specimenTypeDesignationstatus != null) {
--                    if(DEBUG){
--                        logger.info("specimenTypeDesignationstatus :"+ specimenTypeDesignationstatus);
--                    }
++        if(DEBUG){
++            logger.info("NB TYPES INFO: "+ dataHolder.statusList.size());
++        }
++        for (SpecimenTypeDesignationStatus specimenTypeDesignationstatus : dataHolder.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(derivedUnitBase);
--                    name.addTypeDesignation(designation, true);
++                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(derivedUnitBase);
++                name.addTypeDesignation(designation, true);
              }
--        } catch (Exception e) {
--            logger.warn("PB addding SpecimenType " + e);
          }
  
          for (String[] fullReference : dataHolder.referenceList) {
--            try{
- //                System.out.println(fullReference);
--                List<Reference> references = getReferenceService().list(Reference.class, null, null, null, null);
--
--                String strReference=fullReference[0];
--                String citationDetail = fullReference[1];
--                String citationURL = fullReference[2];
--
--                if (isNotBlank(strReference)){
--                    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);
++            List<Reference> references = getReferenceService().list(Reference.class, null, null, null, null);
++
++            String strReference=fullReference[0];
++            String citationDetail = fullReference[1];
++            String citationURL = fullReference[2];
++
++            if (isNotBlank(strReference)){
++                Reference<?> reference = null;
++                for (Reference<?> refe: references) {
++                    if (refe.getTitleCache().equalsIgnoreCase(strReference)) {
++                        reference =refe;
++                        break;
                      }
-                     if (reference ==null){
-                         reference = ReferenceFactory.newGeneric();
-                         /*<<<<<<< .courant
-                     reference.setTitleCache(strReference);
-                     System.out.println("reference hasproblem2 "+reference.hasProblem());
-                     IdentifiableSource sour = IdentifiableSource.NewInstance(reference,citationDetail);
-                     getReferenceService().saveOrUpdate(sour.getCitation());
- =======*/
-                         reference.setTitleCache(strReference, true);
-                         save(reference, state);
-                     }
--                    determinationEvent.addReference(reference);
                  }
-             }catch(Exception e){logger.warn("pv getReferenceList "+e);}
 -            } catch (Exception e) {
 -                logger.warn("pv getReferenceList " + e);
++                if (reference ==null){
++                    reference = ReferenceFactory.newGeneric();
++                    reference.setTitleCache(strReference, true);
++                    save(reference, state);
++                }
++                determinationEvent.addReference(reference);
+             }
          }
          save(derivedUnitBase, state);
  
              }
  
              makeIndividualsAssociation(state, taxon, determinationEvent);
++
++            if(state.getConfig().isDeterminationOnFieldUnitLevel()){
++                DeterminationEvent fieldUnitDeterminationEvent = DeterminationEvent.NewInstance();
++                fieldUnitDeterminationEvent.setTaxon(determinationEvent.getTaxon());
++                fieldUnitDeterminationEvent.setPreferredFlag(determinationEvent.getPreferredFlag());
++                fieldUnitDeterminationEvent.setIdentifiedUnit(fieldUnit);
++                Set<Reference> references = determinationEvent.getReferences();
++                for (Reference reference : references) {
++                    fieldUnitDeterminationEvent.addReference(reference);
++                }
++                fieldUnit.addDetermination(fieldUnitDeterminationEvent);
++                makeIndividualsAssociation(state, taxon, fieldUnitDeterminationEvent);
++            }
++
              save(derivedUnitBase, state);
          }
      }
      }
  
      /**
--     * @param derivedUnitBase2
++     * @param specimen
       * @param source
       * @return
       */
--    private boolean sourceNotLinkedToElement(DerivedUnit derivedUnitBase2, OriginalSourceBase<?> source) {
--        Set<IdentifiableSource> linkedSources = derivedUnitBase2.getSources();
++    private boolean sourceNotLinkedToElement(SpecimenOrObservationBase<?> specimen, OriginalSourceBase<?> source) {
++        Set<IdentifiableSource> linkedSources = specimen.getSources();
          for (IdentifiableSource is:linkedSources){
              Reference a = is.getCitation();
              Reference b = source.getCitation();
                  if (spe != null){
                      species = getTaxon(state, prefix+" "+name+" "+spe, -1, Rank.SPECIES());
                      if (preferredFlag) {
--                        parent =      saveOrUpdateClassification(subgenus, species, state);
++                        parent = saveOrUpdateClassification(subgenus, species, state);
                      }
                  }
              }
                  if (name != null){
                      species = getTaxon(state, prefix+" "+name, -1, Rank.SPECIES());
                      if (preferredFlag) {
--                        parent =      saveOrUpdateClassification(genus, species, state);
++                        parent = saveOrUpdateClassification(genus, species, state);
                      }
                  }
              }
          if (rank.isInfraSpecific()){
              subspecies = getTaxon(state, nvname.getFullTitleCache(), -1, Rank.SUBSPECIES());
              if (preferredFlag) {
--                parent =      saveOrUpdateClassification(species, subspecies, state);
++                parent = saveOrUpdateClassification(species, subspecies, state);
              }
          }
          if (preferredFlag) {
index 28b80874d98b0320c85737b63cbac266893203bc,39c376c7d3cf077c599a3aafb7dc64b916533048..9e5f888d5e443f100d645befdc60d572baa2d88e
@@@ -49,7 -49,6 +49,8 @@@ public class Abcd206ImportConfigurator 
      private Map<String, Person> titleCachePerson;\r
      private String defaultAuthor="";\r
      private boolean allowReuseOtherClassifications =true;\r
-     private boolean doAddMediaAsMediaSpecimen = false;\r
++    private boolean addMediaAsMediaSpecimen = false;\r
++    private boolean determinationOnFieldUnitLevel = false;\r
  \r
  \r
      private final SpecimenUserInteraction specimenUserInteraction = new SpecimenUserInteraction();\r
          return namedAreaDecisions.get(areaStr);\r
      }\r
  \r
-     public boolean isDoAddMediaAsMediaSpecimen() {\r
-         return doAddMediaAsMediaSpecimen;\r
 +    /**\r
 +     * @return the doAddMediaAsMediaSpecimen\r
 +     */\r
-     /**\r
-      * @param doAddMediaAsMediaSpecimen the doAddMediaAsMediaSpecimen to set\r
-      */\r
-     public void setDoAddMediaAsMediaSpecimen(boolean doAddMediaAsMediaSpecimen) {\r
-         this.doAddMediaAsMediaSpecimen = doAddMediaAsMediaSpecimen;\r
++    public boolean isAddMediaAsMediaSpecimen() {\r
++        return addMediaAsMediaSpecimen;\r
 +    }\r
 +\r
++    public void setAddMediaAsMediaSpecimen(boolean addMediaAsMediaSpecimen) {\r
++        this.addMediaAsMediaSpecimen = addMediaAsMediaSpecimen;\r
++    }\r
++\r
++    public boolean isDeterminationOnFieldUnitLevel() {\r
++        return determinationOnFieldUnitLevel;\r
++    }\r
++\r
++    public void setDeterminationOnFieldUnitLevel(boolean determinationOnFieldUnitLevel) {\r
++        this.determinationOnFieldUnitLevel = determinationOnFieldUnitLevel;\r
 +    }\r
  \r
      /**\r
       * @return the allowReuseOtherClassifications\r
index 17d8b183528da2d5bcef3020f4c3b0ddb0c3aa19,17d8b183528da2d5bcef3020f4c3b0ddb0c3aa19..c4579a4c33ae5abb40bd376221ee65c5ad561171
@@@ -109,6 -109,6 +109,6 @@@ public class SpecimenImportTest extend
          assertEquals("Number of TaxonNodes is incorrect", 5, taxonNodeService.count(TaxonNode.class));\r
                assertEquals("Number of derived units is incorrect", 11, occurrenceService.count(DerivedUnit.class));\r
                assertEquals("Number of field units is incorrect", 11, occurrenceService.count(FieldUnit.class));\r
--              assertEquals("Number of field units is incorrect", 1, referenceService.count(Reference.class));\r
++              assertEquals("Number of references is incorrect", 1, referenceService.count(Reference.class));\r
        }\r
  }\r