Filterbox für Folder verwendet jetzt eine Substring-Search (... LIKE '%foo%' statt ... LIKE 'foo%'

git-svn-id: https://svn.libreccm.org/ccm/trunk@921 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-05-18 06:58:16 +00:00
parent d957e4e786
commit 7e17c324dc
2 changed files with 35 additions and 11 deletions

View File

@ -109,6 +109,7 @@ public class FolderBrowser extends Table {
private final static String SORT_KEY_CREATION_DATE = "creationDate"; private final static String SORT_KEY_CREATION_DATE = "creationDate";
private StringParameter m_sortType = new StringParameter("sortType"); private StringParameter m_sortType = new StringParameter("sortType");
private StringParameter m_sortDirection = new StringParameter("sortDirn"); private StringParameter m_sortDirection = new StringParameter("sortDirn");
private StringParameter m_aToZfilter = null;
private StringParameter m_filter = null; private StringParameter m_filter = null;
private FolderManipulator.FilterForm m_filterForm; private FolderManipulator.FilterForm m_filterForm;
private long m_folderSize; private long m_folderSize;
@ -245,6 +246,10 @@ public class FolderBrowser extends Table {
m_filterForm = filterForm; m_filterForm = filterForm;
} }
protected void setAtoZfilterParameter(StringParameter aToZfilter) {
m_aToZfilter = aToZfilter;
}
protected void setFilterParameter(StringParameter filter) { protected void setFilterParameter(StringParameter filter) {
m_filter = filter; m_filter = filter;
} }
@ -285,14 +290,20 @@ public class FolderBrowser extends Table {
} else { } else {
t.getRowSelectionModel().clearSelection(s); t.getRowSelectionModel().clearSelection(s);
s_log.debug(String.format("filter = '%s'", s.getValue(m_filter))); s_log.debug(String.format("filter = '%s'", s.getValue(m_filter)));
Folder.ItemCollection itemColl = (Folder.ItemCollection) m_itemColl. Folder.ItemCollection itemColl =
get(s); (Folder.ItemCollection) m_itemColl.get(s);
s_log.debug(String.format("itemColl.size = %d", itemColl.size())); s_log.debug(String.format("itemColl.size = %d", itemColl.size()));
m_folderSize = itemColl.size(); m_folderSize = itemColl.size();
if (s.getValue(m_filter) != null) { if (s.getValue(m_aToZfilter) != null) {
itemColl.addFilter(String.format( itemColl.addFilter(String.format(
"lower(name) like lower('%s%%') or lower(displayName) like lower('%s%%')", "lower(name) like lower('%s%%') or lower(displayName) like lower('%s%%')",
s.getValue(m_aToZfilter),
s.getValue(m_aToZfilter)));
}
if (s.getValue(m_filter) != null) {
itemColl.addFilter(String.format(
"lower(name) like lower('%%%s%%') or lower(displayName) like lower('%%%s%%')",
s.getValue(m_filter), s.getValue(m_filter),
s.getValue(m_filter))); s.getValue(m_filter)));
} }
@ -329,9 +340,15 @@ public class FolderBrowser extends Table {
return 0; return 0;
} }
if (state.getValue(m_filter) != null) { if (state.getValue(m_aToZfilter) != null) {
itemColl.addFilter(String.format( itemColl.addFilter(String.format(
"lower(name) like lower('%s%%') or lower(displayName) like lower('%s%%')", "lower(name) like lower('%s%%') or lower(displayName) like lower('%s%%')",
state.getValue(m_aToZfilter),
state.getValue(m_aToZfilter)));
}
if (state.getValue(m_filter) != null) {
itemColl.addFilter(String.format(
"lower(name) like lower('%%%s%%') or lower(displayName) like lower('%%%s%%')",
state.getValue(m_filter), state.getValue(m_filter),
state.getValue(m_filter))); state.getValue(m_filter)));
} }
@ -481,7 +498,8 @@ public class FolderBrowser extends Table {
} else { } else {
ItemResolver resolver = section.getItemResolver(); ItemResolver resolver = section.getItemResolver();
return new Link(name, resolver.generateItemURL(state, id, return new Link(name, resolver.generateItemURL(state, id,
name, section, coll. name, section,
coll.
getVersion())); getVersion()));
} }
} }

View File

@ -113,6 +113,7 @@ public class FolderManipulator extends SimpleContainer
private ItemView m_itemView; private ItemView m_itemView;
private TargetSelector m_targetSelector; private TargetSelector m_targetSelector;
private FilterForm m_filterForm; private FilterForm m_filterForm;
private StringParameter m_aToZfilter = new StringParameter("aToZfilter");
private StringParameter m_filter = new StringParameter("filter"); private StringParameter m_filter = new StringParameter("filter");
public FolderManipulator(FolderSelectionModel folderSel) { public FolderManipulator(FolderSelectionModel folderSel) {
@ -144,6 +145,7 @@ public class FolderManipulator extends SimpleContainer
p.setVisibleDefault(m_filterForm, true); p.setVisibleDefault(m_filterForm, true);
p.addComponentStateParam(this, m_sources); p.addComponentStateParam(this, m_sources);
p.addComponentStateParam(this, m_action); p.addComponentStateParam(this, m_action);
p.addComponentStateParam(this, m_aToZfilter);
p.addComponentStateParam(this, m_filter); p.addComponentStateParam(this, m_filter);
} }
@ -348,6 +350,7 @@ public class FolderManipulator extends SimpleContainer
m_targetSelector.reset(s); m_targetSelector.reset(s);
s.setValue(m_action, null); s.setValue(m_action, null);
s.setValue(m_sources, null); s.setValue(m_sources, null);
s.setValue(m_aToZfilter, null);
s.setValue(m_filter, null); s.setValue(m_filter, null);
} }
@ -456,6 +459,7 @@ public class FolderManipulator extends SimpleContainer
group.setSubject(panel); group.setSubject(panel);
m_browser = new FolderBrowser(m_srcFolderSel); m_browser = new FolderBrowser(m_srcFolderSel);
m_browser.setAtoZfilterParameter(m_aToZfilter);
m_browser.setFilterParameter(m_filter); m_browser.setFilterParameter(m_filter);
m_browser.setFilterForm(m_filterForm); m_browser.setFilterForm(m_filterForm);
m_paginator = new Paginator((PaginationModelBuilder) m_browser. m_paginator = new Paginator((PaginationModelBuilder) m_browser.
@ -503,6 +507,7 @@ public class FolderManipulator extends SimpleContainer
m_checkboxGroup.setValue(s, null); m_checkboxGroup.setValue(s, null);
m_actionSel.setValue(s, null); m_actionSel.setValue(s, null);
m_paginator.reset(s); m_paginator.reset(s);
s.setValue(m_aToZfilter, null);
s.setValue(m_filter, null); s.setValue(m_filter, null);
m_filterForm.getFilterField().setValue(s, null); m_filterForm.getFilterField().setValue(s, null);
} }
@ -551,6 +556,7 @@ public class FolderManipulator extends SimpleContainer
allLink.addActionListener(new ActionListener() { allLink.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) { public void actionPerformed(ActionEvent event) {
event.getPageState().setValue(m_aToZfilter, "");
event.getPageState().setValue(m_filter, ""); event.getPageState().setValue(m_filter, "");
} }
}); });
@ -563,7 +569,7 @@ public class FolderManipulator extends SimpleContainer
link.addActionListener(new ActionListener() { link.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) { public void actionPerformed(ActionEvent event) {
event.getPageState().setValue(m_filter, event.getPageState().setValue(m_aToZfilter,
Character.toString( Character.toString(
lowerCaseChar)); lowerCaseChar));
} }