1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kew.framework.document.search;
17
18 import java.io.Serializable;
19 import java.util.ArrayList;
20 import java.util.Collection;
21 import java.util.List;
22 import javax.xml.bind.annotation.XmlAccessType;
23 import javax.xml.bind.annotation.XmlAccessorType;
24 import javax.xml.bind.annotation.XmlAnyElement;
25 import javax.xml.bind.annotation.XmlElement;
26 import javax.xml.bind.annotation.XmlElementWrapper;
27 import javax.xml.bind.annotation.XmlRootElement;
28 import javax.xml.bind.annotation.XmlType;
29
30 import org.apache.commons.lang.StringUtils;
31 import org.kuali.rice.core.api.CoreConstants;
32 import org.kuali.rice.core.api.mo.AbstractDataTransferObject;
33 import org.kuali.rice.core.api.mo.ModelBuilder;
34 import org.kuali.rice.core.api.mo.ModelObjectUtils;
35 import org.kuali.rice.kew.api.document.attribute.DocumentAttribute;
36 import org.kuali.rice.kew.api.document.attribute.DocumentAttributeContract;
37 import org.kuali.rice.kew.api.document.attribute.DocumentAttributeFactory;
38 import org.w3c.dom.Element;
39
40
41
42
43
44
45
46 @XmlRootElement(name = DocumentSearchResultValue.Constants.ROOT_ELEMENT_NAME)
47 @XmlAccessorType(XmlAccessType.NONE)
48 @XmlType(name = DocumentSearchResultValue.Constants.TYPE_NAME, propOrder = {
49 DocumentSearchResultValue.Elements.DOCUMENT_ID,
50 DocumentSearchResultValue.Elements.DOCUMENT_ATTRIBUTES,
51 CoreConstants.CommonElements.FUTURE_ELEMENTS
52 })
53 public final class DocumentSearchResultValue extends AbstractDataTransferObject
54 implements DocumentSearchResultValueContract {
55
56 @XmlElement(name = Elements.DOCUMENT_ID, required = true)
57 private final String documentId;
58
59 @XmlElementWrapper(name = Elements.DOCUMENT_ATTRIBUTES, required = false)
60 @XmlElement(name = Elements.DOCUMENT_ATTRIBUTE, required = false)
61 private final List<DocumentAttribute> documentAttributes;
62
63 @SuppressWarnings("unused")
64 @XmlAnyElement
65 private final Collection<Element> _futureElements = null;
66
67
68
69
70 @SuppressWarnings("unused")
71 private DocumentSearchResultValue() {
72 this.documentId = null;
73 this.documentAttributes = null;
74 }
75
76 private DocumentSearchResultValue(Builder builder) {
77 this.documentId = builder.getDocumentId();
78 this.documentAttributes = ModelObjectUtils.buildImmutableCopy(builder.getDocumentAttributes());
79 }
80
81 @Override
82 public String getDocumentId() {
83 return this.documentId;
84 }
85
86 @Override
87 public List<DocumentAttribute> getDocumentAttributes() {
88 return this.documentAttributes;
89 }
90
91
92
93
94
95 public final static class Builder implements Serializable, ModelBuilder, DocumentSearchResultValueContract {
96
97 private String documentId;
98 private List<DocumentAttribute.AbstractBuilder<?>> documentAttributes;
99
100 private Builder(String documentId) {
101 setDocumentId(documentId);
102 setDocumentAttributes(new ArrayList<DocumentAttribute.AbstractBuilder<?>>());
103 }
104
105
106
107
108
109
110
111
112
113
114 public static Builder create(String documentId) {
115 return new Builder(documentId);
116 }
117
118
119
120
121
122
123
124
125
126
127 public static Builder create(DocumentSearchResultValueContract contract) {
128 if (contract == null) {
129 throw new IllegalArgumentException("contract was null");
130 }
131 Builder builder = create(contract.getDocumentId());
132 if (contract.getDocumentAttributes() != null) {
133 for (DocumentAttributeContract documentAttribute : contract.getDocumentAttributes()) {
134 builder.getDocumentAttributes().add(DocumentAttributeFactory.loadContractIntoBuilder(documentAttribute));
135 }
136 }
137 return builder;
138 }
139
140 @Override
141 public DocumentSearchResultValue build() {
142 return new DocumentSearchResultValue(this);
143 }
144
145 @Override
146 public String getDocumentId() {
147 return this.documentId;
148 }
149
150 @Override
151 public List<DocumentAttribute.AbstractBuilder<?>> getDocumentAttributes() {
152 return this.documentAttributes;
153 }
154
155
156
157
158
159
160
161
162
163 public void setDocumentId(String documentId) {
164 if (StringUtils.isBlank(documentId)) {
165 throw new IllegalArgumentException("documentId was null or blank");
166 }
167 this.documentId = documentId;
168 }
169
170
171
172
173
174
175 public void setDocumentAttributes(List<DocumentAttribute.AbstractBuilder<?>> documentAttributes) {
176 this.documentAttributes = documentAttributes;
177 }
178
179 }
180
181
182
183
184 static class Constants {
185 final static String ROOT_ELEMENT_NAME = "documentSearchResultValue";
186 final static String TYPE_NAME = "DocumentSearchResultValueType";
187 }
188
189
190
191
192
193 static class Elements {
194 final static String DOCUMENT_ID = "documentId";
195 final static String DOCUMENT_ATTRIBUTES = "documentAttributes";
196 final static String DOCUMENT_ATTRIBUTE = "documentAttribute";
197 }
198
199 }