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 StringParameter m_sortType = new StringParameter("sortType");
private StringParameter m_sortDirection = new StringParameter("sortDirn");
private StringParameter m_aToZfilter = null;
private StringParameter m_filter = null;
private FolderManipulator.FilterForm m_filterForm;
private long m_folderSize;
@ -138,21 +139,21 @@ public class FolderBrowser extends Table {
m_currentFolder = currentFolder;
/*
This code should be uncommented if the desired behaviour is for a change
of folder to cause reversion to default ordering of contained items
(by name ascending). Our feeling is that the user selected ordering
should be retained for the duration of the folder browsing session. If
anyone wants this alternative behaviour it should be brought in under
the control of a config parameter.
m_currentFolder.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
PageState state = e.getPageState();
state.setValue(m_sortType, m_sortType.getDefaultValue());
state.setValue(m_sortDirection, m_sortDirection.getDefaultValue());
}});
*/
setClassAttr("dataTable");
@ -245,6 +246,10 @@ public class FolderBrowser extends Table {
m_filterForm = filterForm;
}
protected void setAtoZfilterParameter(StringParameter aToZfilter) {
m_aToZfilter = aToZfilter;
}
protected void setFilterParameter(StringParameter filter) {
m_filter = filter;
}
@ -285,14 +290,20 @@ public class FolderBrowser extends Table {
} else {
t.getRowSelectionModel().clearSelection(s);
s_log.debug(String.format("filter = '%s'", s.getValue(m_filter)));
Folder.ItemCollection itemColl = (Folder.ItemCollection) m_itemColl.
get(s);
Folder.ItemCollection itemColl =
(Folder.ItemCollection) m_itemColl.get(s);
s_log.debug(String.format("itemColl.size = %d", itemColl.size()));
m_folderSize = itemColl.size();
if (s.getValue(m_filter) != null) {
if (s.getValue(m_aToZfilter) != null) {
itemColl.addFilter(String.format(
"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)));
}
@ -329,9 +340,15 @@ public class FolderBrowser extends Table {
return 0;
}
if (state.getValue(m_filter) != null) {
if (state.getValue(m_aToZfilter) != null) {
itemColl.addFilter(String.format(
"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)));
}
@ -481,7 +498,8 @@ public class FolderBrowser extends Table {
} else {
ItemResolver resolver = section.getItemResolver();
return new Link(name, resolver.generateItemURL(state, id,
name, section, coll.
name, section,
coll.
getVersion()));
}
}

View File

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