Project

General

Profile

« Previous | Next » 

Revision ad2e9ab4

Added by Katja Luther over 5 years ago

ref #7854: continue session handling in distribution editor

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/DistributionEditor.java
81 81
import eu.etaxonomy.cdm.model.common.TermIdInVocabularyComparator;
82 82
import eu.etaxonomy.cdm.model.common.TermLanguageComparator;
83 83
import eu.etaxonomy.cdm.model.common.TermVocabulary;
84
import eu.etaxonomy.cdm.model.description.DescriptionBase;
85 84
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
86 85
import eu.etaxonomy.cdm.model.description.Distribution;
87 86
import eu.etaxonomy.cdm.model.description.TaxonDescription;
......
136 135
    EventList<TaxonDistributionDTO> taxonList;
137 136
    Map<UUID,Map<NamedArea,Set<DescriptionElementBase>>> taxonDistributionMap = new HashMap();
138 137

  
139
    Set<TaxonDescription> descriptionsToSave;
138
    List<TaxonDistributionDTO> descriptionsToSave = new ArrayList();
140 139

  
141 140

  
142 141
    SortedSet<DefinedTermBase> areas;
......
213 212
    }
214 213

  
215 214

  
216
    public Set<TaxonDescription> getDescriptionsToSave() {
215
    public List<TaxonDistributionDTO> getDescriptionsToSave() {
217 216
        return descriptionsToSave;
218 217
    }
219 218

  
220
    public void setDescriptionsToSave(Set<TaxonDescription> descriptionsToSave) {
219
    public void setDescriptionsToSave(List<TaxonDistributionDTO> descriptionsToSave) {
221 220
        this.descriptionsToSave = descriptionsToSave;
222 221
    }
223 222

  
......
437 436

  
438 437
            @Override
439 438
            public void widgetSelected(SelectionEvent event) {
440
                defaultSource = ReferenceSelectionDialog.select(AbstractUtility.getShell(), null);
439
                defaultSource = part.getCdmEntitySession().load(ReferenceSelectionDialog.select(AbstractUtility.getShell(), null), true);
441 440

  
442 441
                String defaultSourceStr = (defaultSource == null) ? "" : "Default Source Reference: " + defaultSource.getTitleCache();
443 442
                if (defaultSourceStr.length()> 100){
......
487 486
        }
488 487
       taxonList.stream().forEach(wrapper->DistributionEditor.this.taxonList.add(wrapper));
489 488
       statusLabel.setText(ELEMENT_COUNT + (taxonList != null ? taxonList.size() : UNKNOWN));
490
       Iterator<TaxonDistributionDTO> iterator = this.taxonList.iterator();
491
       while (iterator.hasNext()){
492
           TaxonDistributionDTO dto = iterator.next();
493
           TaxonDescriptionDTO descriptionDto = dto.getDescriptionsWrapper();
494
           for (TaxonDescription desc: descriptionDto.getDescriptions()){
495
               for (DescriptionElementBase descElement: desc.getElements()){
496
                   if (descElement instanceof Distribution){
497
                       Map<NamedArea, Set<DescriptionElementBase>> distributionsMap = taxonDistributionMap.get(dto.getTaxonUuid());
498

  
499
                       if (distributionsMap == null){
500
                           distributionsMap = new HashMap();
501
                           taxonDistributionMap.put(dto.getTaxonUuid(), distributionsMap);
502
                       }
503
                       Set<DescriptionElementBase> distributions = distributionsMap.get(((Distribution) descElement).getArea());
504
                       if (distributions == null){
505
                           distributions = new HashSet();
506
                           distributionsMap.put(((Distribution)descElement).getArea(), distributions);
507
                       }
508
                       distributions.add(descElement);
509

  
510
                   }
511
               }
512
           }
513
       }
489
       createTaxonDistributionMap();
514 490
    }
515 491

  
492
    protected void createTaxonDistributionMap() {
493
        Iterator<TaxonDistributionDTO> iterator = this.taxonList.iterator();
494
           while (iterator.hasNext()){
495
               TaxonDistributionDTO dto = iterator.next();
496
               TaxonDescriptionDTO descriptionDto = dto.getDescriptionsWrapper();
497
               for (TaxonDescription desc: descriptionDto.getDescriptions()){
498
                   if(this.part.getCdmEntitySession()!=null){
499
                       this.part.getCdmEntitySession().load(desc, true);
500
                   }
501
                   for (DescriptionElementBase descElement: desc.getElements()){
502
                       if (descElement instanceof Distribution){
503
                           Map<NamedArea, Set<DescriptionElementBase>> distributionsMap = taxonDistributionMap.get(dto.getTaxonUuid());
504

  
505
                           if (distributionsMap == null){
506
                               distributionsMap = new HashMap();
507
                               taxonDistributionMap.put(dto.getTaxonUuid(), distributionsMap);
508
                           }
509
                           Set<DescriptionElementBase> distributions = distributionsMap.get(((Distribution) descElement).getArea());
510
                           if (distributions == null){
511
                               distributions = new HashSet();
512
                               distributionsMap.put(((Distribution)descElement).getArea(), distributions);
513
                           }
514
                           distributions.add(descElement);
516 515

  
517

  
518
    public List<DescriptionBase> getDistributions() {
519
        List<DescriptionBase> descriptions = new ArrayList();
520

  
521
        taxonList.forEach(taxonDto -> taxonDto.getDescriptionsWrapper().getDescriptions().forEach(taxDesc -> descriptions.add(taxDesc)));
522

  
523
        for (DescriptionBase description: descriptions){
524
            List<DescriptionElementBase> toDelete = new ArrayList();
525
           for (Object desc: description.getElements()){
526
               if (desc instanceof Distribution){
527
                   Distribution distribution = (Distribution) desc;
528
                   if (distribution.getStatus() == null || !distribution.getStatus().isPersited()){
529
                       toDelete.add(distribution);
516
                       }
530 517
                   }
531 518
               }
532 519
           }
533
           for (DescriptionElementBase element: toDelete){
534
               description.removeElement(element);
535
           }
520
    }
536 521

  
537
        }
538 522

  
539 523

  
540
        return descriptions;
541 524

  
542
    }
543 525

  
544 526
    private void initLabels() {
545 527

  
......
678 660
        return defaultSource;
679 661
    }
680 662

  
663
    /**
664
     * @param result
665
     */
666
    public void reloadDistributions() {
667
       loadDistributions(taxonList);
668

  
669
    }
670

  
681 671

  
682 672

  
683 673
}

Also available in: Unified diff