1 | |
|
2 | |
|
3 | |
|
4 | |
|
5 | |
|
6 | |
|
7 | |
|
8 | |
|
9 | |
|
10 | |
|
11 | |
|
12 | |
|
13 | |
|
14 | |
|
15 | |
|
16 | |
package org.kuali.student.common.ui.client.widgets.list; |
17 | |
|
18 | |
import java.util.ArrayList; |
19 | |
import java.util.Collections; |
20 | |
import java.util.List; |
21 | |
|
22 | |
import org.kuali.student.common.assembly.data.LookupMetadata; |
23 | |
import org.kuali.student.common.search.dto.ResultColumnInfo; |
24 | |
import org.kuali.student.common.search.dto.SearchResultRow; |
25 | |
|
26 | |
|
27 | |
|
28 | |
|
29 | |
|
30 | |
|
31 | |
|
32 | |
|
33 | |
public class SearchResultListItems implements ListItems{ |
34 | |
|
35 | |
private ArrayList<String> attrKeys; |
36 | 0 | private List<SearchResultRow> resultDataMap = new ArrayList<SearchResultRow>(); |
37 | 0 | private int attrOffset = 0; |
38 | |
|
39 | |
|
40 | |
|
41 | 0 | private int sortAttrNdx = 1; |
42 | 0 | private int itemTextAttrNdx = 1; |
43 | 0 | private int keyAttrNdx = 0; |
44 | |
|
45 | |
public int getSortAttrNdx() { |
46 | 0 | return sortAttrNdx; |
47 | |
} |
48 | |
|
49 | |
public void setSortAttrNdx(int sortAttrNdx) { |
50 | 0 | this.sortAttrNdx = sortAttrNdx; |
51 | 0 | } |
52 | |
|
53 | |
public void setSortAttrNdxFromAttrKey(List<SearchResultRow> results, String sortAttrKey) { |
54 | 0 | this.sortAttrNdx = getAttrKeyNdx(results, sortAttrKey); |
55 | 0 | } |
56 | |
|
57 | |
public int getKeyAttrNdx() { |
58 | 0 | return keyAttrNdx; |
59 | |
} |
60 | |
|
61 | |
public void setKeyAttrNdx(int keyAttrNdx) { |
62 | 0 | this.keyAttrNdx = keyAttrNdx; |
63 | 0 | } |
64 | |
|
65 | |
public void setKeyAttrNdxFromAttrKey(List<SearchResultRow> results, String keyAttrKey) { |
66 | 0 | this.keyAttrNdx = getAttrKeyNdx(results, keyAttrKey); |
67 | 0 | } |
68 | |
|
69 | |
public int getItemTextAttrNdx() { |
70 | 0 | return itemTextAttrNdx; |
71 | |
} |
72 | |
|
73 | |
public void setItemTextAttrNdx(int itemTextAttrNdx) { |
74 | 0 | this.itemTextAttrNdx = itemTextAttrNdx; |
75 | 0 | } |
76 | |
|
77 | |
public void setItemTextAttrNdxFromAttrKey(List<SearchResultRow> results, String itemTextAttrKey) { |
78 | 0 | this.itemTextAttrNdx = getAttrKeyNdx(results, itemTextAttrKey); |
79 | 0 | } |
80 | |
|
81 | 0 | public SearchResultListItems(){ |
82 | 0 | } |
83 | |
|
84 | |
private void setAttrNdxs(List<SearchResultRow> results, LookupMetadata lookupMetadata) { |
85 | |
|
86 | 0 | setItemTextAttrNdxFromAttrKey(results, lookupMetadata.getResultDisplayKey()); |
87 | 0 | setKeyAttrNdxFromAttrKey(results, lookupMetadata.getResultReturnKey()); |
88 | 0 | setSortAttrNdxFromAttrKey(results, lookupMetadata.getResultSortKey()); |
89 | 0 | } |
90 | |
|
91 | 0 | public SearchResultListItems(List<ResultColumnInfo> resultColumns, List<SearchResultRow> results, LookupMetadata lookupMetadata){ |
92 | |
|
93 | 0 | setAttrNdxs(results, lookupMetadata); |
94 | 0 | setResultColumns(resultColumns); |
95 | 0 | setResults(results); |
96 | 0 | } |
97 | |
|
98 | 0 | public SearchResultListItems(List<SearchResultRow> results, LookupMetadata lookupMetadata){ |
99 | |
|
100 | 0 | setAttrNdxs(results, lookupMetadata); |
101 | 0 | setResults(results); |
102 | 0 | } |
103 | |
|
104 | 0 | public SearchResultListItems(List<SearchResultRow> results){ |
105 | |
|
106 | 0 | setResults(results); |
107 | 0 | } |
108 | |
|
109 | |
public void setResultColumns(List<ResultColumnInfo> resultColumns){ |
110 | 0 | attrKeys = new ArrayList<String>(); |
111 | |
|
112 | 0 | for (ResultColumnInfo r:resultColumns){ |
113 | 0 | attrKeys.add(r.getName()); |
114 | |
} |
115 | |
|
116 | |
|
117 | 0 | attrKeys.remove(0); |
118 | 0 | attrOffset = 1; |
119 | 0 | } |
120 | |
|
121 | |
public void setResults(List<SearchResultRow> results) { |
122 | 0 | resultDataMap.clear(); |
123 | |
|
124 | 0 | if (results != null){ |
125 | 0 | resultDataMap = new ArrayList<SearchResultRow>(results); |
126 | |
|
127 | |
|
128 | 0 | if (results.size() > 0){ |
129 | 0 | SearchResultRow r = results.get(0); |
130 | 0 | if (attrKeys == null){ |
131 | 0 | attrKeys = new ArrayList<String>(); |
132 | 0 | for (int i=0; i < r.getCells().size(); i ++){ |
133 | 0 | attrKeys.add("attr" + String.valueOf(i)); |
134 | |
} |
135 | |
} |
136 | |
} |
137 | |
} |
138 | 0 | } |
139 | |
|
140 | |
private int getAttrKeyNdx(List<SearchResultRow> results, String keyAttrKey) { |
141 | |
|
142 | 0 | if (results.size() > 0){ |
143 | 0 | for (int i=0; i < results.get(0).getCells().size(); i++){ |
144 | 0 | if (results.get(0).getCells().get(i).getKey().equals(keyAttrKey)) { |
145 | 0 | return i; |
146 | |
} |
147 | |
} |
148 | |
} |
149 | |
|
150 | 0 | return 0; |
151 | |
} |
152 | |
|
153 | |
@Override |
154 | |
public List<String> getAttrKeys() { |
155 | 0 | return attrKeys; |
156 | |
} |
157 | |
|
158 | |
@Override |
159 | |
public String getItemAttribute(String id, String attrKey) { |
160 | 0 | SearchResultRow r = getListItem(id); |
161 | |
|
162 | 0 | int attrIndex = attrKeys.indexOf(attrKey); |
163 | 0 | if (attrIndex >= 0 && r != null){ |
164 | 0 | return r.getCells().get(attrIndex + attrOffset).getValue(); |
165 | |
} |
166 | |
|
167 | 0 | return null; |
168 | |
} |
169 | |
|
170 | |
|
171 | |
|
172 | |
|
173 | |
@Override |
174 | |
public int getItemCount() { |
175 | 0 | return resultDataMap.size(); |
176 | |
} |
177 | |
|
178 | |
|
179 | |
|
180 | |
|
181 | |
@Override |
182 | |
public List<String> getItemIds() { |
183 | 0 | List<String> ids = new ArrayList<String>(); |
184 | |
|
185 | 0 | for (SearchResultRow s:resultDataMap){ |
186 | 0 | ids.add(s.getCells().get(keyAttrNdx).getValue()); |
187 | |
} |
188 | |
|
189 | 0 | return ids; |
190 | |
} |
191 | |
|
192 | |
|
193 | |
|
194 | |
|
195 | |
@Override |
196 | |
public String getItemText(String id) { |
197 | 0 | return getListItem(id).getCells().get(itemTextAttrNdx).getValue(); |
198 | |
} |
199 | |
|
200 | |
private SearchResultRow getListItem(String id) { |
201 | 0 | for (SearchResultRow s : resultDataMap) { |
202 | 0 | if (s.getCells().get(keyAttrNdx).getValue().equals(id)) { |
203 | 0 | return s; |
204 | |
} |
205 | |
} |
206 | 0 | return null; |
207 | |
} |
208 | |
|
209 | |
|
210 | |
|
211 | |
|
212 | |
|
213 | |
|
214 | |
|
215 | |
public List<SearchResultRow> getReadOnlyResults() { |
216 | 0 | return Collections.unmodifiableList(resultDataMap); |
217 | |
} |
218 | |
} |