Merge branch 'release/5.18.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / checklist / e4 / StatusDataDisplayConverter.java
1 /**
2 * Copyright (C) 2018 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.taxeditor.editor.view.checklist.e4;
10
11 import java.util.HashSet;
12 import java.util.Iterator;
13
14 import org.apache.commons.lang3.StringUtils;
15 import org.eclipse.nebula.widgets.nattable.data.convert.DisplayConverter;
16
17 import eu.etaxonomy.cdm.model.description.Distribution;
18 import eu.etaxonomy.cdm.model.metadata.TermDisplayEnum;
19 import eu.etaxonomy.cdm.model.term.Representation;
20 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
21 import eu.etaxonomy.taxeditor.store.CdmStore;
22
23 /**
24 * @author k.luther
25 * @since 10.12.2018
26 *
27 */
28 public class StatusDataDisplayConverter extends DisplayConverter {
29 public static final String DEFAULT_ENTRY = "";
30 /**
31 * {@inheritDoc}
32 */
33 @Override
34 public Object canonicalToDisplayValue(Object canonicalValue) {
35 if(canonicalValue instanceof Distribution){
36
37 Distribution distribution = (Distribution) canonicalValue;
38
39 return extractStatusString(distribution);
40 }
41 else if(canonicalValue instanceof HashSet<?>){
42 HashSet<?> distributionSet = (HashSet<?>) canonicalValue;
43 Iterator<?> distributions = distributionSet.iterator();
44 String result = "";
45 while(distributions.hasNext()){
46 result.concat(extractStatusString((Distribution)distributions.next())+", ");
47 }
48 result = result.substring(1, result.length() - 1);
49 return result;
50 }
51
52 return null;
53 }
54
55 public Object extractStatusString(Distribution distribution) {
56 if (distribution.getStatus() == null){
57 return DEFAULT_ENTRY;
58 }
59
60 Representation rep = distribution.getStatus().getPreferredRepresentation(CdmStore.getDefaultLanguage());
61 String label = rep.getLabel();
62
63 if (label == null){
64 label = distribution.getStatus().getTitleCache();
65 }
66 if (PreferencesUtil.displayStatusInChecklistEditor() != null){
67 if(PreferencesUtil.displayStatusInChecklistEditor().equals(TermDisplayEnum.IdInVocabulary)){
68 return (StringUtils.isNotBlank(distribution.getStatus().getIdInVocabulary()))?distribution.getStatus().getIdInVocabulary():label;
69 }else if(PreferencesUtil.displayStatusInChecklistEditor().equals(TermDisplayEnum.Symbol1)){
70
71 return (StringUtils.isNotBlank(distribution.getStatus().getSymbol() ))?distribution.getStatus().getSymbol():label;
72 }else if(PreferencesUtil.displayStatusInChecklistEditor().equals(TermDisplayEnum.Symbol2)){
73 return (StringUtils.isNotBlank(distribution.getStatus().getSymbol2() ))?distribution.getStatus().getSymbol2():label;
74 }else{
75 return (label != null)?label:DEFAULT_ENTRY;
76 }
77
78 }else{
79 return (label != null)?label:DEFAULT_ENTRY;
80 }
81 }
82
83 /**
84 * {@inheritDoc}
85 */
86 @Override
87 public Object displayToCanonicalValue(Object displayValue) {
88 return null;
89 }
90 }