Revision c386f139
Added by Andreas Müller over 3 years ago
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
ref #9279 improve generics for TypedEntityReference