source: VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/Provider.java @ 5372

Last change on this file since 5372 was 5372, checked in by Twan Goosen, 10 years ago

[In preparation of creation of an EPIC2 PID provider, refs #581]

Added Spring, using it for creation, initialisation and injection of:

VirtualCollectionRegistry is no longer a static singleton.
Spring extensions for Wicket and Jersey added.

Also fixed log4j configuration

  • Property svn:eol-style set to native
File size: 5.0 KB
Line 
1package eu.clarin.cmdi.virtualcollectionregistry.gui.table;
2
3import eu.clarin.cmdi.virtualcollectionregistry.QueryOptions;
4import eu.clarin.cmdi.virtualcollectionregistry.QueryOptions.Property;
5import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistry;
6import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException;
7import eu.clarin.cmdi.virtualcollectionregistry.gui.Application;
8import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession;
9import eu.clarin.cmdi.virtualcollectionregistry.gui.DetachableVirtualCollectionModel;
10import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
11import java.util.Iterator;
12import java.util.List;
13import org.apache.wicket.WicketRuntimeException;
14import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.IFilterStateLocator;
15import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
16import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
17import org.apache.wicket.model.IModel;
18
19@SuppressWarnings("serial")
20class Provider extends
21        SortableDataProvider<VirtualCollection> implements
22        IFilterStateLocator<FilterState> {
23    private final boolean privateMode;
24    private FilterState filterstate = new FilterState();
25
26    public Provider(boolean privateMode) {
27        this.privateMode = privateMode;
28        setSort("created", false);
29    }
30
31    @Override
32    public FilterState getFilterState() {
33        return filterstate;
34    }
35
36    @Override
37    public void setFilterState(FilterState state) {
38        this.filterstate = state;
39    }
40
41    @Override
42    public IModel<VirtualCollection> model(VirtualCollection vc) {
43        return new DetachableVirtualCollectionModel(vc);
44    }
45
46    @Override
47    public int size() {
48        try {
49            final VirtualCollectionRegistry vcr =
50                Application.get().getRegistry();
51            return vcr.getVirtualCollectionCount(getFilter());
52        } catch (VirtualCollectionRegistryException e) {
53            throw new WicketRuntimeException(e);
54        }
55    }
56
57    @Override
58    public Iterator<? extends VirtualCollection> iterator(int first,
59            int count) {
60        try {
61            final VirtualCollectionRegistry vcr =
62                Application.get().getRegistry();
63            final List<VirtualCollection> results =
64                vcr.getVirtualCollections(first, count, getFilter());
65            return results.iterator();
66        } catch (VirtualCollectionRegistryException e) {
67            throw new WicketRuntimeException(e);
68        }
69    }
70
71    private QueryOptions getFilter() {
72        QueryOptions options = new QueryOptions();
73
74        QueryOptions.Filter filter = options.and();
75        if (privateMode) {
76            ApplicationSession session = ApplicationSession.get();
77            filter.add(QueryOptions.Property.VC_OWNER,
78                       QueryOptions.Relation.EQ,
79                       session.getUser());
80        } else {
81            filter.add(QueryOptions.Property.VC_STATE,
82                       QueryOptions.Relation.EQ,
83                       VirtualCollection.State.PUBLIC);
84        }
85        if (filterstate.hasName()) {
86            filter.add(QueryOptions.Property.VC_NAME,
87                       QueryOptions.Relation.EQ,
88                       filterstate.getNameWithWildcard());
89        }
90        if (filterstate.hasType()) {
91            filter.add(QueryOptions.Property.VC_TYPE,
92                       QueryOptions.Relation.EQ,
93                       filterstate.getType());
94        }
95        if (filterstate.hasState()) {
96            filter.add(QueryOptions.Property.VC_STATE,
97                       QueryOptions.Relation.EQ,
98                       filterstate.getState());
99        }
100        if (filterstate.hasDescription()) {
101            filter.add(QueryOptions.Property.VC_DESCRIPTION,
102                       QueryOptions.Relation.EQ,
103                       filterstate.getDescriptionWithWildcard());
104        }
105        if (filterstate.hasCreated()) {
106            filter.add(QueryOptions.Property.VC_CREATION_DATE,
107                       filterstate.getCreatedRelation(),
108                       filterstate.getCreated());
109        }
110        options.setFilter(filter);
111
112        final SortParam s = getSort();
113        if (s != null) {
114            final String p = s.getProperty();
115            Property property = null;
116            if ("name".equals(p)) {
117                property = Property.VC_NAME;
118            } else if ("type".equals(p)) {
119                property = Property.VC_TYPE;
120            } else if ("state".equals(p)) {
121                property = Property.VC_STATE;
122            } else if ("description".equals(p)) {
123                property = Property.VC_DESCRIPTION;
124            } else if ("created".equals(p)) {
125                property = Property.VC_CREATION_DATE;
126            }
127            if (property != null) {
128                options.addSortProperty(property, s.isAscending());
129            }
130        }
131        return options;
132    }
133
134} // class VirtualCollectionProvider
Note: See TracBrowser for help on using the repository browser.