1 package org.kuali.ole.deliver.api;
2
3 import org.kuali.rice.core.api.CoreConstants;
4 import org.kuali.rice.core.api.criteria.QueryResults;
5 import org.kuali.rice.core.api.mo.ModelBuilder;
6 import org.w3c.dom.Element;
7
8 import javax.xml.bind.annotation.*;
9 import java.util.ArrayList;
10 import java.util.Collection;
11 import java.util.Collections;
12 import java.util.List;
13
14
15
16
17
18
19
20
21 @XmlRootElement(name = OlePatronQueryResults.Constants.ROOT_ELEMENT_NAME)
22 @XmlAccessorType(XmlAccessType.NONE)
23 @XmlType(name = OlePatronQueryResults.Constants.TYPE_NAME, propOrder = {
24 OlePatronQueryResults.Elements.RESULTS,
25 OlePatronQueryResults.Elements.TOTAL_ROW_COUNT,
26 OlePatronQueryResults.Elements.MORE_RESULTS_AVAILALBE,
27 CoreConstants.CommonElements.FUTURE_ELEMENTS})
28
29 public class OlePatronQueryResults implements QueryResults<OlePatronDefinition> {
30
31 @XmlElementWrapper(name = Elements.RESULTS, required = false)
32 @XmlElement(name = Elements.RESULT_ELEM, required = false)
33 private final List<OlePatronDefinition> results;
34
35 @XmlElement(name = Elements.TOTAL_ROW_COUNT, required = false)
36 private final Integer totalRowCount;
37
38 @XmlElement(name = Elements.MORE_RESULTS_AVAILALBE, required = true)
39 private final boolean moreResultsAvailable;
40
41 @SuppressWarnings("unused")
42 @XmlAnyElement
43 private final Collection<Element> _futureElements = null;
44
45 public OlePatronQueryResults() {
46 this.results = null;
47 this.totalRowCount = null;
48 this.moreResultsAvailable = false;
49 }
50
51 private OlePatronQueryResults(Builder builder) {
52 final List<OlePatronDefinition> temp = new ArrayList<OlePatronDefinition>();
53 for (OlePatronDefinition.Builder b : builder.getResults()) {
54 if (b != null) {
55 temp.add(b.build());
56 }
57 }
58
59 this.results = Collections.unmodifiableList(temp);
60 this.totalRowCount = builder.getTotalRowCount();
61 this.moreResultsAvailable = builder.isMoreResultsAvailable();
62 }
63
64 @Override
65 public List<OlePatronDefinition> getResults() {
66 return results;
67 }
68
69 @Override
70 public Integer getTotalRowCount() {
71 return totalRowCount;
72 }
73
74 @Override
75 public boolean isMoreResultsAvailable() {
76 return moreResultsAvailable;
77 }
78
79 public static class Builder implements ModelBuilder, QueryResults<OlePatronDefinition.Builder> {
80
81 private List<OlePatronDefinition.Builder> results;
82 private Integer totalRowCount;
83 private boolean moreResultsAvailable;
84
85 public static Builder create() {
86 return new Builder();
87 }
88
89 private Builder() {
90 this.results = new ArrayList<OlePatronDefinition.Builder>();
91 this.moreResultsAvailable = false;
92 }
93
94 @Override
95 public OlePatronQueryResults build() {
96 return new OlePatronQueryResults(this);
97 }
98
99 @Override
100 public List<OlePatronDefinition.Builder> getResults() {
101 return Collections.unmodifiableList(this.results);
102 }
103
104 public void setResults(List<OlePatronDefinition.Builder> results) {
105 this.results = new ArrayList<OlePatronDefinition.Builder>(results);
106 }
107
108 @Override
109 public Integer getTotalRowCount() {
110 return this.totalRowCount;
111 }
112
113 public void setTotalRowCount(Integer totalRowCount) {
114 this.totalRowCount = totalRowCount;
115 }
116
117 @Override
118 public boolean isMoreResultsAvailable() {
119 return this.moreResultsAvailable;
120 }
121
122 public void setMoreResultsAvailable(boolean moreResultsAvailable) {
123 this.moreResultsAvailable = moreResultsAvailable;
124 }
125
126 }
127
128
129
130
131 public static class Constants {
132 public final static String ROOT_ELEMENT_NAME = "patronQueryResults";
133 public final static String TYPE_NAME = "patronQueryResultsType";
134 }
135
136
137
138
139
140 public static class Elements {
141 public final static String RESULTS = "results";
142 public final static String RESULT_ELEM = "patron";
143 public final static String TOTAL_ROW_COUNT = "totalRowCount";
144 public final static String MORE_RESULTS_AVAILALBE = "moreResultsAvailable";
145 }
146 }