Revision 218fbd04
Added by Cherian Mathew about 9 years ago
src/main/java/eu/etaxonomy/cdm/vaadin/container/LeafNodeTaxonContainer.java | ||
---|---|---|
21 | 21 |
import org.apache.log4j.Logger; |
22 | 22 |
|
23 | 23 |
import com.vaadin.data.Container; |
24 |
import com.vaadin.data.Item; |
|
24 | 25 |
import com.vaadin.data.Property; |
25 | 26 |
import com.vaadin.data.util.filter.Compare; |
26 | 27 |
import com.vaadin.data.util.filter.IsNull; |
27 | 28 |
import com.vaadin.data.util.filter.Not; |
28 | 29 |
import com.vaadin.data.util.filter.SimpleStringFilter; |
30 |
import com.vaadin.data.util.sqlcontainer.RowId; |
|
29 | 31 |
import com.vaadin.data.util.sqlcontainer.RowItem; |
30 | 32 |
|
31 | 33 |
import eu.etaxonomy.cdm.vaadin.util.CdmQueryFactory; |
... | ... | |
52 | 54 |
public Set<Filter> currentFilters; |
53 | 55 |
|
54 | 56 |
|
55 |
private Filter nrFilter, unpFilter, unfFilter, unpbFilter, rankFilter, classificationFilter, synonymFilter; |
|
57 |
private Filter nrFilter, unpFilter, unfFilter, unpbFilter, rankFilter, classificationFilter, synonymFilter, idFilter;
|
|
56 | 58 |
private SimpleStringFilter nameFilter; |
57 | 59 |
|
58 | 60 |
private int classificationId = -1; |
59 | 61 |
|
62 |
private final Map<RowId, RowItem> synItems = new HashMap<RowId, RowItem>(); |
|
63 |
|
|
60 | 64 |
private final Map<Object,List<Object>> taxonSynonymMap; |
61 | 65 |
|
62 | 66 |
private final CdmSQLContainer synonymContainer; |
... | ... | |
121 | 125 |
removeContainerFilter(nameFilter); |
122 | 126 |
} |
123 | 127 |
|
128 |
public void setIdFilter(Object itemId) { |
|
129 |
removeIdFilter(); |
|
130 |
idFilter = new Compare.Equal("tb.id", itemId.toString()); |
|
131 |
addContainerFilter(idFilter); |
|
132 |
} |
|
133 |
|
|
134 |
public void removeIdFilter() { |
|
135 |
removeContainerFilter(idFilter); |
|
136 |
} |
|
137 |
|
|
138 |
public void removeDynamicFilters() { |
|
139 |
removeUnplacedFilter(); |
|
140 |
removeUnpublishedFilter(); |
|
141 |
removeNameFilter(); |
|
142 |
removeIdFilter(); |
|
143 |
|
|
144 |
} |
|
124 | 145 |
public int getTotalNoOfTaxa() { |
125 | 146 |
return size(); |
126 | 147 |
} |
... | ... | |
136 | 157 |
return synList; |
137 | 158 |
} |
138 | 159 |
|
139 |
Filter synonymOfTaxonFilter = new Compare.Equal("sr.relatedto_id", Integer.valueOf(itemId.toString())); |
|
140 |
synonymContainer.addContainerFilter(synonymOfTaxonFilter); |
|
141 |
synList = new ArrayList<Object>(); |
|
142 |
synList.addAll(synonymContainer.getItemIds()); |
|
143 |
for(Object synItemId : synList) { |
|
144 |
addTempItem((RowItem) synonymContainer.getItem(synItemId)); |
|
145 |
} |
|
146 |
synonymContainer.removeAllContainerFilters(); |
|
147 |
// cache the synonyms for later |
|
148 |
taxonSynonymMap.put(itemId, synList); |
|
149 |
|
|
150 |
return synList; |
|
160 |
return addToSynonymCache(itemId); |
|
151 | 161 |
} |
152 | 162 |
|
153 | 163 |
/* (non-Javadoc) |
... | ... | |
221 | 231 |
taxonSynonymMap.remove(itemId); |
222 | 232 |
} |
223 | 233 |
|
234 |
public void refreshSynonymCache() { |
|
235 |
for(Object taxonItemId : taxonSynonymMap.keySet()) { |
|
236 |
addToSynonymCache(taxonItemId); |
|
237 |
} |
|
238 |
} |
|
239 |
|
|
240 |
private List<Object> addToSynonymCache(Object taxonItemId) { |
|
241 |
Filter synonymOfTaxonFilter = new Compare.Equal("sr.relatedto_id", Integer.valueOf(taxonItemId.toString())); |
|
242 |
synonymContainer.addContainerFilter(synonymOfTaxonFilter); |
|
243 |
List<Object> synList = new ArrayList<Object>(); |
|
244 |
synList.addAll(synonymContainer.getItemIds()); |
|
245 |
for(Object synItemId : synList) { |
|
246 |
addSynItem((RowItem) synonymContainer.getItem(synItemId)); |
|
247 |
} |
|
248 |
synonymContainer.removeAllContainerFilters(); |
|
249 |
|
|
250 |
taxonSynonymMap.put(taxonItemId, synList); |
|
251 |
|
|
252 |
return synList; |
|
253 |
} |
|
254 |
|
|
255 |
@Override |
|
256 |
public Item getItem(Object itemId) { |
|
257 |
Item item = synItems.get(itemId); |
|
258 |
if(item == null) { |
|
259 |
item = super.getItem(itemId); |
|
260 |
} |
|
261 |
return item; |
|
262 |
} |
|
263 |
|
|
264 |
|
|
265 |
@Override |
|
266 |
public boolean removeAllItems() throws UnsupportedOperationException { |
|
267 |
taxonSynonymMap.clear(); |
|
268 |
synItems.clear(); |
|
269 |
return super.removeAllItems(); |
|
270 |
} |
|
271 |
|
|
272 |
@Override |
|
273 |
public void refresh() { |
|
274 |
synItems.clear(); |
|
275 |
refreshSynonymCache(); |
|
276 |
super.refresh(); |
|
277 |
} |
|
278 |
|
|
279 |
public void addSynItem(RowItem rowItem) { |
|
280 |
synItems.put(rowItem.getId(), rowItem); |
|
281 |
|
|
282 |
} |
|
224 | 283 |
|
225 | 284 |
} |
Also available in: Unified diff
CdmProgressComponent : Component which indicates progress via text and a progress bar
NewTaxonBaseComposite, StatusComposite : Added taxon name field for synonym creation and using new operation and progress component objects
StatusComposite : Corrections
CdmSQLContainer, LeafNodeTaxonContainer : Moved non-generic methods from CdmSQLContainer to LeafNodeTaxonContainer
StatusPresenter, IStatusComposite : added id filter methods as well as methods to remove all dynamic filters and to refresh the synonym cache
SelectionService : using UI.access to update ui
CdmQueryFactory : removed rank inner join for taxon base query
CdmVaadinOperation : Class which handles async and sync operations
CdmVaadinUtilities : Added methods to run new CdmVaadinOperation objects and to recursively enable / disable components