Revision fdb645e1
Added by Andreas Kohlbecker almost 7 years ago
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
ref #6724 implementing SpecimenTypeDesignationWorkingSetDTO as editor dto and modifying the TypeDesignationConverter accordingly