Project

General

Profile

« Previous | Next » 

Revision fdb645e1

Added by Andreas Kohlbecker almost 7 years ago

ref #6724 implementing SpecimenTypeDesignationWorkingSetDTO as editor dto and modifying the TypeDesignationConverter accordingly

  • SpecimenTypeDesignation editor operates on SpecimenTypeDesignationWorkingSetDTO
  • TypeDesignationConverter.TypeDesignationWorkingSet have field for the baseEntity

View differences:

src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/TypeDesignationConverter.java
22 22

  
23 23
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
24 24
import eu.etaxonomy.cdm.model.common.CdmBase;
25
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
25 26
import eu.etaxonomy.cdm.model.common.TermVocabulary;
27
import eu.etaxonomy.cdm.model.common.VersionableEntity;
26 28
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
27 29
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
28 30
import eu.etaxonomy.cdm.model.name.TaxonName;
......
64 66
     */
65 67
    private LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> orderedByTypesByBaseEntity;
66 68

  
67

  
68 69
    private EntityReference typifiedName;
69 70

  
70 71
    private String finalString = null;
71 72

  
72 73
    final NullTypeDesignationStatus NULL_STATUS = new NullTypeDesignationStatus();
73 74

  
75
    private List<String> probelms = new ArrayList<>();
76

  
74 77
    /**
75 78
     * @param taxonName
76 79
     * @throws RegistrationValidationException
......
90 93

  
91 94
        TypeDesignationStatusBase<?> status = td.getTypeStatus();
92 95

  
93
        final TypedEntityReference baseEntityReference = baseEntityReference(td);
96
        try {
97
            final IdentifiableEntity<?> baseEntity = baseEntity(td);
98
            final TypedEntityReference<IdentifiableEntity<?>> baseEntityReference = makeEntityReference(baseEntity);
94 99

  
95
        EntityReference typeDesignationEntityReference = new EntityReference(td.getId(), stringify(td));
100
            EntityReference typeDesignationEntityReference = new EntityReference(td.getId(), stringify(td));
96 101

  
97
        TypeDesignationWorkingSet typedesignationWorkingSet;
98
        if(!byBaseEntityByTypeStatus.containsKey(baseEntityReference)){
99
            TypedEntityReference containigEntityReference = new TypedEntityReference(containgEntity.getClass(), containgEntity.getId(), containgEntity.toString());
100
            byBaseEntityByTypeStatus.put(baseEntityReference, new TypeDesignationWorkingSet(containigEntityReference, baseEntityReference));
101
        }
102
            TypeDesignationWorkingSet typedesignationWorkingSet;
103
            if(!byBaseEntityByTypeStatus.containsKey(baseEntityReference)){
104
                TypedEntityReference containigEntityReference = new TypedEntityReference(containgEntity.getClass(), containgEntity.getId(), containgEntity.toString());
105
                byBaseEntityByTypeStatus.put(baseEntityReference, new TypeDesignationWorkingSet(containigEntityReference, baseEntity, baseEntityReference));
106
            }
102 107

  
103
        typedesignationWorkingSet = byBaseEntityByTypeStatus.get(baseEntityReference);
104
        typedesignationWorkingSet.insert(status, typeDesignationEntityReference);
108
            typedesignationWorkingSet = byBaseEntityByTypeStatus.get(baseEntityReference);
109
            typedesignationWorkingSet.insert(status, typeDesignationEntityReference);
110
        } catch (DataIntegrityException e){
111
            probelms.add(e.getMessage());
112
        }
105 113
    }
106 114

  
107 115
    /**
108 116
     * @param td
109 117
     * @return
118
     * @throws DataIntegrityException
110 119
     */
111
    protected TypedEntityReference baseEntityReference(TypeDesignationBase<?> td) {
120
    protected IdentifiableEntity<?> baseEntity(TypeDesignationBase<?> td) throws DataIntegrityException {
112 121

  
113
        CdmBase baseEntity = null;
114
        String label = "";
122
        IdentifiableEntity<?> baseEntity = null;
115 123
        if(td  instanceof SpecimenTypeDesignation){
116 124
            SpecimenTypeDesignation std = (SpecimenTypeDesignation) td;
117 125
            FieldUnit fu = findFieldUnit(std);
118 126
            if(fu != null){
119 127
                baseEntity = fu;
120
                label = fu.getTitleCache();
121 128
            } else if(((SpecimenTypeDesignation) td).getTypeSpecimen() != null){
122 129
                baseEntity = ((SpecimenTypeDesignation) td).getTypeSpecimen();
123
                label = ""; // empty label to avoid repeating the DerivedUnit details
124 130
            }
125 131
        } else if(td instanceof NameTypeDesignation){
126 132
            baseEntity = ((NameTypeDesignation)td).getTypeName();
127
            label = "";
128 133
        }
129 134
        if(baseEntity == null) {
130
            baseEntity = td;
131
            label = "INCOMPLETE DATA";
135
            throw new DataIntegrityException("Incomplete TypeDesignation, no type missin in " + td.toString());
132 136
        }
137
        return baseEntity;
138
    }
133 139

  
134
        TypedEntityReference baseEntityReference = new TypedEntityReference(baseEntity.getClass(), baseEntity.getId(), label);
140
    /**
141
     * @param td
142
     * @return
143
     */
144
    protected TypedEntityReference<IdentifiableEntity<?>> makeEntityReference(IdentifiableEntity<?> baseEntity) {
145
;
146
        String label = "";
147
        if(baseEntity  instanceof FieldUnit){
148
                label = ((FieldUnit)baseEntity).getTitleCache();
149
        }
150

  
151
        TypedEntityReference<IdentifiableEntity<?>> baseEntityReference = new TypedEntityReference(baseEntity.getClass(), baseEntity.getId(), label);
135 152

  
136 153
        return baseEntityReference;
137 154
    }
......
188 205
                }
189 206
            });
190 207
            // new LinkedHashMap for the ordered TypeDesignationStatusBase keys
191
            TypeDesignationWorkingSet orderedStringsByOrderedTypes = new TypeDesignationWorkingSet(typeDesignationWorkingSet.getContainigEntityReference(), baseEntityRef);
208
            TypeDesignationWorkingSet orderedStringsByOrderedTypes = new TypeDesignationWorkingSet(typeDesignationWorkingSet.getContainigEntityReference(),
209
                    typeDesignationWorkingSet.getBaseEntity(),
210
                    baseEntityRef);
192 211
            orderedStringsByOrderedTypes.setWorkingSetId(typeDesignationWorkingSet.workingSetId); // preserve original workingSetId
193 212
            keyList.forEach(key -> orderedStringsByOrderedTypes.put(key, typeDesignationWorkingSet.get(key)));
194 213
            stringsOrderedbyBaseEntityOrderdByType.put(baseEntityRef, orderedStringsByOrderedTypes);
......
501 520

  
502 521
        String workingSetRepresentation = null;
503 522

  
504
        TypedEntityReference containigEntityReference;
523
        TypedEntityReference<?> containigEntityReference;
524

  
525
        TypedEntityReference<IdentifiableEntity<?>> baseEntityReference;
526

  
527
        IdentifiableEntity<?> baseEntity;
505 528

  
506
        TypedEntityReference baseEntityReference;
529
        List<DerivedUnit> derivedUnits = null;
507 530

  
508 531
        int workingSetId = workingSetIdAutoIncrement++;
509 532

  
510 533
        /**
511 534
         * @param baseEntityReference
512 535
         */
513
        public TypeDesignationWorkingSet(TypedEntityReference containigEntityReference, TypedEntityReference baseEntityReference) {
536
        public TypeDesignationWorkingSet(TypedEntityReference<? extends VersionableEntity> containigEntityReference, IdentifiableEntity<?> baseEntity, TypedEntityReference<IdentifiableEntity<?>> baseEntityReference) {
514 537
            this.containigEntityReference = containigEntityReference;
538
            this.baseEntity = baseEntity;
515 539
            this.baseEntityReference = baseEntityReference;
516 540
        }
517 541

  
542
        /**
543
         * @return
544
         */
545
        public IdentifiableEntity<?> getBaseEntity() {
546
            return baseEntity;
547
        }
548

  
518 549
        public List<EntityReference> getTypeDesignations() {
519 550
            List<EntityReference> typeDesignations = new ArrayList<>();
520 551
            this.values().forEach(typeDesignationReferences -> typeDesignationReferences.forEach(td -> typeDesignations.add(td)));
......
592 623
         * @return
593 624
         */
594 625
        public boolean isSpecimenTypeDesigationWorkingSet() {
595
            return baseEntityReference.getType().isAssignableFrom(SpecimenOrObservationBase.class);
626
            return SpecimenOrObservationBase.class.isAssignableFrom(baseEntityReference.getType());
596 627
        }
597 628

  
598 629
    }

Also available in: Unified diff