Project

General

Profile

« Previous | Next » 

Revision 8d7c7784

Added by Andreas Müller almost 2 years ago

make TypeDesignationWorkingSet a decorator and not inherit directly from LinkedHashMap

View differences:

cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/name/TypeDesignationWorkingSet.java
13 13
import java.util.Comparator;
14 14
import java.util.LinkedHashMap;
15 15
import java.util.List;
16
import java.util.Set;
16 17

  
17 18
import eu.etaxonomy.cdm.compare.name.NullTypeDesignationStatus;
18 19
import eu.etaxonomy.cdm.model.common.VersionableEntity;
......
36 37
 * @author a.kohlbecker
37 38
 * @since Mar 10, 2017
38 39
 */
39
public class TypeDesignationWorkingSet
40
        extends LinkedHashMap<TypeDesignationStatusBase<?>,
41
                              Collection<TypeDesignationDTO>> {
42

  
43
    private static final long serialVersionUID = -1329007606500890729L;
40
public class TypeDesignationWorkingSet {
44 41

  
45 42
    public static final NullTypeDesignationStatus NULL_STATUS = NullTypeDesignationStatus.SINGLETON();
46 43

  
......
49 46
    //maybe removed in future as redundant with baseEntity
50 47
    private TypedEntityReference<? extends VersionableEntity> baseEntityReference;
51 48

  
49
    private LinkedHashMap<TypeDesignationStatusBase<?>,Collection<TypeDesignationDTO>> designationByStatusMap = new LinkedHashMap<>();
50

  
52 51
    private VersionableEntity baseEntity;
53 52

  
54 53
    public enum TypeDesignationWorkingSetType {
......
78 77

  
79 78
    public List<TypeDesignationDTO> getTypeDesignations() {
80 79
        List<TypeDesignationDTO> typeDesignations = new ArrayList<>();
81
        this.values().forEach(typeDesignationReferences -> typeDesignationReferences.forEach(td -> typeDesignations.add(td)));
80
        designationByStatusMap.values().forEach(typeDesignationDtos -> typeDesignationDtos.forEach(td -> typeDesignations.add(td)));
82 81
        return typeDesignations;
83 82
    }
84 83

  
84
    public Set<TypeDesignationStatusBase<?>> keySet() {
85
        return designationByStatusMap.keySet();
86
    }
87

  
88
    public Collection<TypeDesignationDTO> get(TypeDesignationStatusBase<?> typeStatus) {
89
        return designationByStatusMap.get(typeStatus);
90
    }
91

  
85 92
    public void insert(TypeDesignationStatusBase<?> status,
86
            TypeDesignationDTO typeDesignationEntityReference) {
93
            TypeDesignationDTO<?> typeDesignationDto) {
87 94

  
88 95
        if(status == null){
89 96
            status = NULL_STATUS;
90 97
        }
91
        if(!this.containsKey(status)){
92
            this.put(status, new ArrayList<>());
98
        if(!designationByStatusMap.containsKey(status)){
99
            designationByStatusMap.put(status, new ArrayList<>());
93 100
        }
94
        this.get(status).add(typeDesignationEntityReference);
101
        designationByStatusMap.get(status).add(typeDesignationDto);
95 102
    }
96 103

  
104
    public Collection<TypeDesignationDTO> put(TypeDesignationStatusBase<?> status,
105
            Collection<TypeDesignationDTO> typeDesignationDtos) {
106
        if(status == null){
107
            status = NULL_STATUS;
108
        }
109
        return designationByStatusMap.put(status, typeDesignationDtos);
110
    }
111

  
112

  
97 113
    public String getLabel() {
98 114
        return label;
99 115
    }
......
132 148
     */
133 149
    public TypeDesignationStatusBase<?> highestTypeStatus(Comparator<TypeDesignationStatusBase<?>> comparator) {
134 150
        TypeDesignationStatusBase<?> highestTypeStatus = null;
135
        for(TypeDesignationStatusBase<?> status : keySet()) {
151
        for(TypeDesignationStatusBase<?> status : designationByStatusMap.keySet()) {
136 152
            if(comparator.compare(status, highestTypeStatus) < 0){
137 153
                highestTypeStatus = status;
138 154
            }

Also available in: Unified diff