Author: ekoneil
Date: Tue Feb 1 07:56:39 2005
New Revision: 149411
URL: http://svn.apache.org/viewcvs?view=rev&rev=149411
Log:
Rebuild filter support in the codec / model way that sort and paging are built.
Add / update tests for the filter codec and filter model.
BB: self
DRT: NetUI pass
Added:
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterModelTest.java
(with props)
Modified:
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/filter/FilterModel.java
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/filter/FilterCodec.java
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterCodecTest.java
Modified:
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/filter/FilterModel.java
URL:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/filter/FilterModel.java?view=diff&r1=149410&r2=149411
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/filter/FilterModel.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/filter/FilterModel.java
Tue Feb 1 07:56:39 2005
@@ -31,11 +31,11 @@
public class FilterModel {
private String _namespace = null;
- private String _filterParamKey = null;
private Map<String, List<IFilter>> _filters = null;
- public FilterModel(String name) {
+ public FilterModel(String name, Map<String, List<IFilter>> filters) {
_namespace = name;
+ _filters = filters;
}
public List<IFilter> getFilters(String filterExpression) {
@@ -49,20 +49,16 @@
if(_filters == null)
return false;
- if(_filters.containsKey(filterExpression)) {
- assert _filters.get(filterExpression).size() > 0;
+ if(_filters.containsKey(filterExpression) &&
lookupFilters(filterExpression).size() > 0)
return true;
- } else
- return false;
+ else return false;
}
private List<IFilter> lookupFilters(String filterExpression) {
assert filterExpression != null;
assert !filterExpression.equals("");
- if(_filters == null)
- return null;
-
- return _filters.get(filterExpression);
+ List<IFilter> filters = _filters.get(filterExpression);
+ return filters;
}
}
Modified:
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java
URL:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java?view=diff&r1=149410&r2=149411
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java
Tue Feb 1 07:56:39 2005
@@ -30,8 +30,11 @@
import org.apache.beehive.netui.databinding.datagrid.model.sort.SortModel;
import
org.apache.beehive.netui.databinding.datagrid.model.sort.ISort.SortDirection;
import org.apache.beehive.netui.databinding.datagrid.model.PagerModel;
+import org.apache.beehive.netui.databinding.datagrid.model.filter.IFilter;
+import org.apache.beehive.netui.databinding.datagrid.model.filter.FilterModel;
import org.apache.beehive.netui.databinding.datagrid.services.sort.SortCodec;
import org.apache.beehive.netui.databinding.datagrid.services.pager.PagerCodec;
+import
org.apache.beehive.netui.databinding.datagrid.services.filter.FilterCodec;
/**
* A DataGridStateService is an object that is shared between all data grids
@@ -77,6 +80,9 @@
private PagerCodec _pagerCodec = null;
private Map<String, PagerModel> _pagers = null;
+ private FilterCodec _filterCodec = null;
+ private Map<String, Map<String, List<IFilter>>> _filters = null;
+
private DataGridStateService(ServletRequest request) {
_urlParams = request.getParameterMap();
@@ -85,11 +91,9 @@
_pagerCodec = new PagerCodec();
_pagers = _pagerCodec.decode(_urlParams);
- }
- public SortModel getSortModel(String namespace) {
- /* todo: caching */
- return new SortModel(namespace, getSorts(namespace));
+ _filterCodec = new FilterCodec();
+ _filters = _filterCodec.decode(_urlParams);
}
public PagerModel getPagerModel(String namespace) {
@@ -102,11 +106,14 @@
return pm;
}
- private List<ISort> getSorts(String namespace) {
- if(_sorts != null)
- return _sorts.get(namespace);
- else
- return null;
+ public SortModel getSortModel(String namespace) {
+ /* todo: caching */
+ return new SortModel(namespace, getSorts(namespace));
+ }
+
+ public FilterModel getFilterModel(String namespace) {
+ /* todo: caching */
+ return new FilterModel(namespace, getFilters(namespace));
}
public Map buildSortQueryParamsMap(String namespace) {
@@ -181,6 +188,19 @@
return _pagerCodec.getRowQueryParamKey();
}
+ private List<ISort> getSorts(String namespace) {
+ if(_sorts != null)
+ return _sorts.get(namespace);
+ else
+ return null;
+ }
+
+ private Map<String, List<IFilter>> getFilters(String namespace) {
+ if(_filters != null)
+ return _filters.get(namespace);
+ else return null;
+ }
+
private Map buildQueryParamMap_pager(String namespace, int page) {
PagerModel pagerModel = getPagerModel(namespace);
Map params = new HashMap();
Modified:
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/filter/FilterCodec.java
URL:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/filter/FilterCodec.java?view=diff&r1=149410&r2=149411
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/filter/FilterCodec.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/filter/FilterCodec.java
Tue Feb 1 07:56:39 2005
@@ -41,13 +41,13 @@
return IFilter.FILTER_PARAM_KEY;
}
- public Map<String, List<IFilter>> decode(Map params) {
+ public Map<String, Map<String, List<IFilter>>> decode(Map params) {
String[] queryParams = (String[])params.get(getQueryParamKey());
if(queryParams == null)
return null;
- Map<String, List<IFilter>> map = new HashMap<String, List<IFilter>>();
+ Map<String, Map<String, List<IFilter>>> map = new HashMap<String,
Map<String, List<IFilter>>>();
for(String filterParam : queryParams) {
@@ -79,34 +79,39 @@
assert filter != null;
- List<IFilter> list = map.get(namespace);
- if(list == null) {
- list = new ArrayList<IFilter>();
- map.put(namespace, list);
+ Map<String, List<IFilter>> allFilters = map.get(namespace);
+ if(allFilters == null) {
+ allFilters = new HashMap<String, List<IFilter>>();
+ map.put(namespace, allFilters);
}
- list.add(filter);
- }
+ List<IFilter> filters =
allFilters.get(filter.getFilterExpression());
+ if(filters == null) {
+ filters = new ArrayList<IFilter>();
+ allFilters.put(filter.getFilterExpression(), filters);
+ }
+ filters.add(filter);
+ }
return map;
}
- public Map encode(String namespace, List<IFilter> filters) {
- HashMap params = new HashMap();
-
- if(filters == null || filters.size() == 0)
+ public Map<String, String[]> encode(String namespace, Map<String,
List<IFilter>> allFilters) {
+ if(allFilters == null || allFilters.size() == 0)
return Collections.EMPTY_MAP;
- StringBuilder builder = null;
- String[] strFilters = new String[filters.size()];
- for(int i = 0; i < filters.size(); i++) {
- builder = new StringBuilder();
- IFilter filter = filters.get(i);
- strFilters[i] = write(builder, namespace, filter);
+ ArrayList<String> filterStrings = new ArrayList<String>();
+ for(String filterExpr : allFilters.keySet()) {
+ List<IFilter> filters = allFilters.get(filterExpr);
+ for(int i = 0; i < filters.size(); i++) {
+ StringBuilder builder = new StringBuilder();
+ IFilter filter = filters.get(i);
+ filterStrings.add(write(builder, namespace, filter));
+ }
}
HashMap<String, String[]> map = new HashMap<String, String[]>();
- map.put(getQueryParamKey(), strFilters);
+ map.put(getQueryParamKey(), (String[])filterStrings.toArray(new
String[0]));
return map;
}
Modified:
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterCodecTest.java
URL:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterCodecTest.java?view=diff&r1=149410&r2=149411
==============================================================================
---
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterCodecTest.java
(original)
+++
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterCodecTest.java
Tue Feb 1 07:56:39 2005
@@ -43,8 +43,9 @@
DataGridTestUtil.initQueryString(_request, "netui_filter=" +
_namespace + "~CUSTOMERNAME~eq~homer");
FilterCodec codec = new FilterCodec();
- Map<String, List<IFilter>> allFilters =
codec.decode(_request.getParameterMap());
- List<IFilter> filters = allFilters.get(_namespace);
+ Map<String, Map<String, List<IFilter>>> allFilters =
codec.decode(_request.getParameterMap());
+ Map<String, List<IFilter>> gridFilters = allFilters.get(_namespace);
+ List<IFilter> filters = gridFilters.get("CUSTOMERNAME");
assertTrue(filters != null);
assertEquals(1, filters.size());
@@ -57,8 +58,9 @@
DataGridTestUtil.initQueryString(_request, "netui_filter=" +
_namespace + "~CUSTOMERNAME~eq~homer&netui_filter=products~ID~ne~1234");
FilterCodec codec = new FilterCodec();
- Map<String, List<IFilter>> allFilters =
codec.decode(_request.getParameterMap());
- List<IFilter> filters = allFilters.get(_namespace);
+ Map<String, Map<String, List<IFilter>>> allFilters =
codec.decode(_request.getParameterMap());
+ Map<String, List<IFilter>> gridFilters = allFilters.get(_namespace);
+ List<IFilter> filters = gridFilters.get("CUSTOMERNAME");
assertTrue(filters != null);
assertEquals(1, filters.size());
@@ -66,7 +68,8 @@
assertEquals("homer", filters.get(0).getValue());
assertEquals("CUSTOMERNAME", filters.get(0).getFilterExpression());
- filters = allFilters.get("products");
+ gridFilters = allFilters.get("products");
+ filters = gridFilters.get("ID");
assertTrue(filters != null);
assertEquals(1, filters.size());
assertEquals(IFilter.FilterOperation.NOT_EQUAL,
filters.get(0).getOperation());
@@ -79,9 +82,10 @@
DataGridTestUtil.initQueryString(_request, "netui_filter=" +
customerNameParam + "&netui_filter=products~ID~ne~1234");
FilterCodec codec = new FilterCodec();
- Map<String, List<IFilter>> allFilters =
codec.decode(_request.getParameterMap());
+ Map<String, Map<String, List<IFilter>>> allFilters =
codec.decode(_request.getParameterMap());
+ Map<String, List<IFilter>> gridFilters = allFilters.get(_namespace);
- Map<String, String[]> queryParams = codec.encode(_namespace,
allFilters.get(_namespace));
+ Map<String, String[]> queryParams = codec.encode(_namespace,
gridFilters);
String[] params = queryParams.get(codec.getQueryParamKey());
assertNotNull(queryParams);
Added:
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterModelTest.java
URL:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterModelTest.java?view=auto&rev=149411
==============================================================================
---
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterModelTest.java
(added)
+++
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterModelTest.java
Tue Feb 1 07:56:39 2005
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.netui.test.datagrid;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import
org.apache.beehive.netui.databinding.datagrid.services.DataGridStateService;
+import org.apache.beehive.netui.databinding.datagrid.model.sort.SortModel;
+import org.apache.beehive.netui.databinding.datagrid.model.sort.ISort;
+import org.apache.beehive.netui.databinding.datagrid.model.filter.FilterModel;
+import
org.apache.beehive.netui.databinding.datagrid.model.filter.IFilter.FilterOperation;
+import org.apache.beehive.netui.test.servlet.ServletFactory;
+
+/**
+ *
+ */
+public class FilterModelTest
+ extends TestCase {
+
+ private HttpServletRequest _request = null;
+ private String _namespace = "bugs";
+
+ public void testSortModelSimple() {
+ DataGridTestUtil.initQueryString(_request, "netui_filter=" +
_namespace + "~CUSTOMERNAME~eq~homer&netui_filter=products~ID~ne~1234");
+ DataGridStateService dgss = DataGridStateService.getInstance(_request);
+ FilterModel fm = dgss.getFilterModel(_namespace);
+
+ assertNotNull(fm);
+ assertNotNull(fm.getFilters("CUSTOMERNAME"));
+ assertTrue(fm.isFiltered("CUSTOMERNAME"));
+ assertEquals(FilterOperation.EQUAL,
fm.getFilters("CUSTOMERNAME").get(0).getOperation());
+
+ fm = dgss.getFilterModel("products");
+ assertNotNull(fm);
+ assertNotNull(fm.getFilters("ID"));
+ assertTrue(fm.isFiltered("ID"));
+ assertEquals(FilterOperation.NOT_EQUAL,
fm.getFilters("ID").get(0).getOperation());
+ }
+
+ public void testSortModelSimple2() {
+ DataGridTestUtil.initQueryString(_request, "foo=bar");
+ }
+
+ protected void setUp() {
+ _request = ServletFactory.getServletRequest();
+ }
+
+ protected void tearDown() {
+ _request = null;
+ }
+
+ public FilterModelTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(FilterModelTest.class);
+ }
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(suite());
+ }
+}
\ No newline at end of file
Propchange:
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterModelTest.java
------------------------------------------------------------------------------
svn:eol-style = native