Project

General

Profile

« Previous | Next » 

Revision c386f139

Added by Andreas Müller over 3 years ago

ref #9279 improve generics for TypedEntityReference

View differences:

cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/dto/RegistrationDTO.java
26 26
import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager;
27 27
import eu.etaxonomy.cdm.api.service.name.TypeDesignationWorkingSet;
28 28
import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
29
import eu.etaxonomy.cdm.model.common.VersionableEntity;
29 30
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
30 31
import eu.etaxonomy.cdm.model.name.Registration;
31 32
import eu.etaxonomy.cdm.model.name.RegistrationStatus;
......
242 243
        return name;
243 244
    }
244 245

  
245
    public LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> getOrderdTypeDesignationWorkingSets() {
246
    public LinkedHashMap<TypedEntityReference<? extends VersionableEntity>, TypeDesignationWorkingSet> getOrderdTypeDesignationWorkingSets() {
246 247
        return typeDesignationManager != null ? typeDesignationManager.getOrderedTypeDesignationWorkingSets() : null;
247 248
    }
248 249

  
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/name/TypeDesignationSetFormatter.java
17 17

  
18 18
import eu.etaxonomy.cdm.common.UTF8;
19 19
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
20
import eu.etaxonomy.cdm.model.common.VersionableEntity;
20 21
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
21 22
import eu.etaxonomy.cdm.model.name.TaxonName;
22 23
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
......
85 86
        }
86 87

  
87 88
        int typeSetCount = 0;
88
        LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> orderedByTypesByBaseEntity = manager.getOrderedTypeDesignationWorkingSets();
89
        LinkedHashMap<TypedEntityReference<? extends VersionableEntity>, TypeDesignationWorkingSet> orderedByTypesByBaseEntity = manager.getOrderedTypeDesignationWorkingSets();
89 90
        if(orderedByTypesByBaseEntity != null){
90 91
            for(TypedEntityReference<?> baseEntityRef : orderedByTypesByBaseEntity.keySet()) {
91 92
                buildTaggedTextForSingleTypeSet(manager, withBrackets, finalBuilder,
......
99 100
    private void buildTaggedTextForSingleTypeSet(TypeDesignationSetManager manager, boolean withBrackets,
100 101
            TaggedTextBuilder finalBuilder, int typeSetCount, TypedEntityReference<?> baseEntityRef) {
101 102

  
102
        LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> orderedByTypesByBaseEntity = manager.getOrderedTypeDesignationWorkingSets();
103
        LinkedHashMap<TypedEntityReference<? extends VersionableEntity>, TypeDesignationWorkingSet> orderedByTypesByBaseEntity = manager.getOrderedTypeDesignationWorkingSets();
103 104

  
104 105
        TaggedTextBuilder workingsetBuilder = new TaggedTextBuilder();
105 106
        boolean isSpecimenTypeDesignation = SpecimenOrObservationBase.class.isAssignableFrom(baseEntityRef.getType());
......
232 233
    }
233 234

  
234 235
    private boolean hasMultipleTypes(
235
            LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> typeWorkingSets) {
236
            LinkedHashMap<TypedEntityReference<? extends VersionableEntity>, TypeDesignationWorkingSet> typeWorkingSets) {
236 237
        if (typeWorkingSets == null || typeWorkingSets.isEmpty()){
237 238
            return false;
238 239
        }else if (typeWorkingSets.keySet().size() > 1) {
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/name/TypeDesignationSetManager.java
81 81
     * Groups the EntityReferences for each of the TypeDesignations by the according TypeDesignationStatus.
82 82
     * The TypeDesignationStatusBase keys are already ordered by the term order defined in the vocabulary.
83 83
     */
84
    private LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> orderedByTypesByBaseEntity;
84
    private LinkedHashMap<TypedEntityReference<? extends VersionableEntity>, TypeDesignationWorkingSet> orderedByTypesByBaseEntity;
85 85

  
86 86
    private List<String> problems = new ArrayList<>();
87 87

  
......
212 212
        return baseEntity;
213 213
    }
214 214

  
215
    protected TypedEntityReference<? extends VersionableEntity> makeEntityReference(VersionableEntity baseEntity) {
215
    protected static TypedEntityReference<? extends VersionableEntity> makeEntityReference(VersionableEntity baseEntity) {
216 216

  
217 217
        baseEntity = CdmBase.deproxy(baseEntity);
218
        String label = "";
219
        if(baseEntity instanceof IdentifiableEntity<?>){
220
                label = ((IdentifiableEntity<?>)baseEntity).getTitleCache();
221
        }
218
        String label = entityLabel(baseEntity);
222 219

  
223 220
        TypedEntityReference<? extends VersionableEntity> baseEntityReference =
224 221
                new TypedEntityReference<>(baseEntity.getClass(), baseEntity.getUuid(), label);
......
226 223
        return baseEntityReference;
227 224
    }
228 225

  
229
    private LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> orderByTypeByBaseEntity(
226
    private static String entityLabel(VersionableEntity baseEntity) {
227
        String label = "";
228
        if(baseEntity instanceof IdentifiableEntity<?>){
229
                label = ((IdentifiableEntity<?>)baseEntity).getTitleCache();
230
        }
231
        return label;
232
    }
233

  
234
    private LinkedHashMap<TypedEntityReference<? extends VersionableEntity>, TypeDesignationWorkingSet> orderByTypeByBaseEntity(
230 235
            Map<TypedEntityReference<? extends VersionableEntity>, TypeDesignationWorkingSet> stringsByTypeByBaseEntity){
231 236

  
232 237
       // order the FieldUnit TypeName keys
......
263 268
       );
264 269

  
265 270
       // new LinkedHashMap for the ordered FieldUnitOrTypeName keys
266
       LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> stringsOrderedbyBaseEntityOrderdByType
271
       LinkedHashMap<TypedEntityReference<? extends VersionableEntity>, TypeDesignationWorkingSet> stringsOrderedbyBaseEntityOrderdByType
267 272
           = new LinkedHashMap<>(stringsByTypeByBaseEntity.size());
268 273

  
269 274
       for(TypedEntityReference<? extends VersionableEntity> baseEntityRef : baseEntityKeyList){
......
274 279
            Collections.sort(keyList, new TypeDesignationStatusComparator());
275 280
            // new LinkedHashMap for the ordered TypeDesignationStatusBase keys
276 281
            TypeDesignationWorkingSet orderedStringsByOrderedTypes = new TypeDesignationWorkingSet(
277
                    typeDesignationWorkingSet.getBaseEntity(),
278
                    baseEntityRef);
282
                    typeDesignationWorkingSet.getBaseEntity());
279 283
            keyList.forEach(key -> orderedStringsByOrderedTypes.put(key, typeDesignationWorkingSet.get(key)));
280 284
            stringsOrderedbyBaseEntityOrderdByType.put(baseEntityRef, orderedStringsByOrderedTypes);
281 285
       }
......
357 361
        return this.typeDesignations.get(typeDesignationRef.getUuid());
358 362
    }
359 363

  
360
    public LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> getOrderedTypeDesignationWorkingSets() {
364
    public LinkedHashMap<TypedEntityReference<? extends VersionableEntity>, TypeDesignationWorkingSet> getOrderedTypeDesignationWorkingSets() {
361 365
        return orderedByTypesByBaseEntity;
362 366
    }
363 367

  
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/name/TypeDesignationWorkingSet.java
48 48

  
49 49
    private String label = null;
50 50

  
51
    //maybe remove in future as redundant with baseEntity
51 52
    private TypedEntityReference<? extends VersionableEntity> baseEntityReference;
52 53

  
53 54
    private VersionableEntity baseEntity;
54 55

  
55
    public TypeDesignationWorkingSet(VersionableEntity baseEntity,
56
            TypedEntityReference<? extends VersionableEntity> baseEntityReference) {
56
// ********************************* CONSTRUCTOR **************************/
57

  
58
    public TypeDesignationWorkingSet(VersionableEntity baseEntity) {
57 59
        this.baseEntity = baseEntity;
58
        this.baseEntityReference = baseEntityReference;
60
        this.baseEntityReference = TypeDesignationSetManager.makeEntityReference(baseEntity);
59 61
    }
60 62

  
63
    public TypeDesignationWorkingSet(VersionableEntity baseEntity, TypedEntityReference<? extends VersionableEntity> baseEntityRef) {
64
        this.baseEntity = baseEntity;
65
        this.baseEntityReference = baseEntityRef;
66
    }
67

  
68
// ***********************************************************************/
69

  
61 70
    public VersionableEntity getBaseEntity() {
62 71
        return baseEntity;
63 72
    }
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TypeDesignationSetManagerTest.java
25 25
import eu.etaxonomy.cdm.model.agent.Person;
26 26
import eu.etaxonomy.cdm.model.agent.Team;
27 27
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
28
import eu.etaxonomy.cdm.model.common.VersionableEntity;
28 29
import eu.etaxonomy.cdm.model.media.Media;
29 30
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
30 31
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
......
205 206
                    , result
206 207
                    );
207 208

  
208
            @SuppressWarnings("rawtypes")
209
            LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> orderedTypeDesignations =
209
            LinkedHashMap<TypedEntityReference<? extends VersionableEntity>, TypeDesignationWorkingSet> orderedTypeDesignations =
210 210
                    typeDesignationManager.getOrderedTypeDesignationWorkingSets();
211 211
            Iterator<TypeDesignationWorkingSet> byStatusMapIterator = orderedTypeDesignations.values().iterator();
212 212
            Iterator<TypeDesignationStatusBase<?>> keyIt_1 = byStatusMapIterator.next().keySet().iterator();

Also available in: Unified diff