ref #6072 test missing entity in webservice
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / dto / CondensedDistribution.java
1 // $Id$
2 /**
3 * Copyright (C) 2015 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10 package eu.etaxonomy.cdm.api.service.dto;
11
12 import java.util.ArrayList;
13 import java.util.Collections;
14 import java.util.Comparator;
15 import java.util.List;
16
17 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
18
19 /**
20 * @author a.kohlbecker
21 * @date Jun 25, 2015
22 *
23 */
24 public class CondensedDistribution {
25
26 private List<DistributionItem> indigenous = new ArrayList<DistributionItem>();
27 private List<DistributionItem> foreign = new ArrayList<DistributionItem>();
28
29 /**
30 * @return the foreign
31 */
32 public List<DistributionItem> getForeign() {
33 return foreign;
34 }
35
36 /**
37 * @param foreign the foreign to set
38 */
39 public void setForeign(List<DistributionItem> foreign) {
40 this.foreign = foreign;
41 }
42
43 /**
44 * @param indigenous the indigenous to set
45 */
46 public void setIndigenous(List<DistributionItem> indigenous) {
47 this.indigenous = indigenous;
48 }
49
50 /**
51 * @return the indigenous
52 */
53 public List<DistributionItem> getIndigenous() {
54 return indigenous;
55 }
56
57 public void addForeignDistributionItem(PresenceAbsenceTerm status, String areaStatusLabel, String sortString) {
58 foreign.add(new DistributionItem(status, areaStatusLabel, sortString));
59 }
60
61 public void addIndigenousDistributionItem(PresenceAbsenceTerm status, String areaStatusLabel, String sortString) {
62 indigenous.add(new DistributionItem(status, areaStatusLabel, sortString));
63 }
64
65
66 public void sortForeign() {
67 Collections.sort(foreign, new CondensedDistributionComparator());
68 }
69
70 public void sortIndigenous() {
71 Collections.sort(indigenous, new CondensedDistributionComparator());
72 }
73
74 @Override
75 public String toString() {
76
77 StringBuilder out = new StringBuilder();
78
79 boolean isFirst = true;
80 for(DistributionItem item : indigenous) {
81 if(!isFirst) {
82 out.append(" ");
83 }
84 out.append(item.areaStatusLabel);
85 isFirst = false;
86 }
87
88 if(!isFirst) {
89 out.append(" ");
90 }
91 isFirst = true;
92 if(!foreign.isEmpty()) {
93 out.append("[");
94 for(DistributionItem item : foreign) {
95 if(!isFirst) {
96 out.append(" ");
97 }
98 out.append(item.areaStatusLabel);
99 isFirst = false;
100 }
101 out.append("]");
102 }
103 return out.toString();
104 }
105
106 public class DistributionItem {
107
108
109 private PresenceAbsenceTerm status;
110 private String areaStatusLabel;
111 private final String sortString;
112
113 /**
114 * @param status
115 * @param areaStatusLabel
116 */
117 public DistributionItem(PresenceAbsenceTerm status, String areaStatusLabel, String sortString) {
118 this.status = status;
119 this.areaStatusLabel = areaStatusLabel;
120 this.sortString = sortString;
121 }
122 /**
123 * @return the status
124 */
125 public PresenceAbsenceTerm getStatus() {
126 return status;
127 }
128
129 /**
130 * @return the areaStatusLabel
131 */
132 public String getAreaStatusLabel() {
133 return areaStatusLabel;
134 }
135
136 /**
137 * @param status the status to set
138 */
139 public void setStatus(PresenceAbsenceTerm status) {
140 this.status = status;
141 }
142 /**
143 * @param areaStatusLabel the areaStatusLabel to set
144 */
145 public void setAreaStatusLabel(String areaStatusLabel) {
146 this.areaStatusLabel = areaStatusLabel;
147 }
148 }
149
150 class CondensedDistributionComparator implements Comparator<DistributionItem>{
151
152 /**
153 * {@inheritDoc}
154 */
155 @Override
156 public int compare(DistributionItem o1, DistributionItem o2) {
157 return o1.sortString.compareToIgnoreCase(o2.sortString);
158 }
159
160
161
162 }
163 }