- refactored DTO assembly for compressed specimen table in the data portal
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / dto / DerivateDataDTO.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.net.URI;
13 import java.util.ArrayList;
14 import java.util.List;
15
16 import org.hibernate.envers.tools.Pair;
17
18 /**
19 * @author pplitzner
20 * @date Mar 26, 2015
21 *
22 */
23 public class DerivateDataDTO {
24
25 private List<Pair<String, String>> specimenScans;
26 private List<MolecularData> molecularDataList;
27 private List<Pair<String, String>> detailImages;
28
29 /**
30 * @return the molecularData
31 */
32 public List<MolecularData> getMolecularDataList() {
33 return molecularDataList;
34 }
35
36 public MolecularData addProviderLink(URI uri, String linkText) {
37 if(this.molecularDataList==null){
38 molecularDataList = new ArrayList<MolecularData>();
39 }
40 MolecularData molecularData = new MolecularData(new Link(uri, linkText));
41 this.molecularDataList.add(molecularData);
42 return molecularData;
43 }
44
45 /**
46 * @return the specimenScans
47 */
48 public List<Pair<String, String>> getSpecimenScans() {
49 return specimenScans;
50 }
51
52 public void addSpecimenScan(String uri, String herbarium){
53 if(specimenScans==null){
54 specimenScans = new ArrayList<Pair<String,String>>();
55 }
56 specimenScans.add(new Pair<String, String>(uri, herbarium));
57 }
58
59 /**
60 * @return the detailImages
61 */
62 public List<Pair<String, String>> getDetailImages() {
63 return detailImages;
64 }
65
66 public void addDetailImage(String uri, String motif){
67 if(detailImages==null){
68 detailImages = new ArrayList<Pair<String,String>>();
69 }
70 detailImages.add(new Pair<String, String>(uri, motif));
71 }
72
73 public class MolecularData{
74 private final Link providerLink;
75 private List<ContigFile> contigFiles;
76
77 public MolecularData(Link providerLink) {
78 super();
79 this.providerLink = providerLink;
80 }
81
82 public ContigFile addContigFile(URI uri, String linkText){
83 if(contigFiles==null){
84 contigFiles = new ArrayList<ContigFile>();
85 }
86 ContigFile contigFile = new ContigFile(new Link(uri, linkText));
87 contigFiles.add(contigFile);
88 return contigFile;
89 }
90
91 public synchronized Link getProviderLink() {
92 return providerLink;
93 }
94
95 public List<ContigFile> getContigFiles() {
96 return contigFiles;
97 }
98
99 }
100
101 public class ContigFile{
102 private final Link contigLink;
103 private List<Link> primerLinks;
104
105 public ContigFile(Link contigLink) {
106 this.contigLink = contigLink;
107 }
108
109 public void addPrimerLink(URI uri, String linkText){
110 if(primerLinks==null){
111 primerLinks = new ArrayList<Link>();
112 }
113 primerLinks.add(new Link(uri, linkText));
114 }
115
116 public Link getContigLink() {
117 return contigLink;
118 }
119
120 public List<Link> getPrimerLinks() {
121 return primerLinks;
122 }
123
124 }
125
126 public class Link{
127 private String linkText;
128 private URI uri;
129
130 public Link(URI uri, String linkText) {
131 super();
132 this.linkText = linkText;
133 this.uri = uri;
134 }
135 /**
136 * @return the linkText
137 */
138 public synchronized String getLinkText() {
139 return linkText;
140 }
141 /**
142 * @param linkText the linkText to set
143 */
144 public synchronized void setLinkText(String linkText) {
145 this.linkText = linkText;
146 }
147 /**
148 * @return the uri
149 */
150 public synchronized URI getUri() {
151 return uri;
152 }
153 /**
154 * @param uri the uri to set
155 */
156 public synchronized void setUri(URI uri) {
157 this.uri = uri;
158 }
159 /* (non-Javadoc)
160 * @see java.lang.Object#hashCode()
161 */
162 @Override
163 public int hashCode() {
164 final int prime = 31;
165 int result = 1;
166 result = prime * result + ((linkText == null) ? 0 : linkText.hashCode());
167 result = prime * result + ((uri == null) ? 0 : uri.hashCode());
168 return result;
169 }
170 /* (non-Javadoc)
171 * @see java.lang.Object#equals(java.lang.Object)
172 */
173 @Override
174 public boolean equals(Object obj) {
175 if (this == obj) {
176 return true;
177 }
178 if (obj == null) {
179 return false;
180 }
181 if (getClass() != obj.getClass()) {
182 return false;
183 }
184 Link other = (Link) obj;
185 if (linkText == null) {
186 if (other.linkText != null) {
187 return false;
188 }
189 } else if (!linkText.equals(other.linkText)) {
190 return false;
191 }
192 if (uri == null) {
193 if (other.uri != null) {
194 return false;
195 }
196 } else if (!uri.equals(other.uri)) {
197 return false;
198 }
199 return true;
200 }
201 }
202
203
204 }