Verbesserung des Filter-Handlings für Projekt- und Publikationstab bei Abteilungen und Instituten

git-svn-id: https://svn.libreccm.org/ccm/trunk@1309 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-11-30 14:00:23 +00:00
parent 2aff85e105
commit b52d0a3c96
8 changed files with 99 additions and 46 deletions

View File

@ -1,6 +1,5 @@
// //
// Copyright (C) 2010 Jens Pelzetter, for the Center of Social Politics (ZeS) of // Copyright (C) 2010 Jens Pelzetter
// the University of Bremen
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License // modify it under the terms of the GNU Lesser General Public License

View File

@ -107,6 +107,7 @@ public class SelectFilter implements Filter {
filter = parent.newChildElement("filter"); filter = parent.newChildElement("filter");
filter.addAttribute("type", "select"); filter.addAttribute("type", "select");
filter.addAttribute("label", label);
if(options.isEmpty()) { if(options.isEmpty()) {
return; return;
@ -124,7 +125,6 @@ public class SelectFilter implements Filter {
selected = value; selected = value;
} }
filter.addAttribute("label", label);
filter.addAttribute("selected", selected); filter.addAttribute("selected", selected);
if (emptyDefaultOption) { if (emptyDefaultOption) {

View File

@ -14,7 +14,6 @@ import com.arsdigita.persistence.SessionManager;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;

View File

@ -109,6 +109,7 @@ public class SciDepartmentProjectsTab implements GenericOrgaUnitTab {
depProjectsElem.newChildElement("greeting"); depProjectsElem.newChildElement("greeting");
projects.addOrder("projectEnd desc");
projects.addOrder("projectBegin desc"); projects.addOrder("projectBegin desc");
projects.addOrder("title"); projects.addOrder("title");
@ -124,11 +125,18 @@ public class SciDepartmentProjectsTab implements GenericOrgaUnitTab {
statusFilter.generateXml(filtersElem); statusFilter.generateXml(filtersElem);
if (projects.isEmpty()) {
titleFilter.generateXml(filtersElem);
depProjectsElem.newChildElement("noProjects");
} else {
final Paginator paginator = new Paginator(request, final Paginator paginator = new Paginator(request,
(int) projects.size(), (int) projects.size(),
config.getPageSize()); config.getPageSize());
if (paginator.getPageCount() > config.getEnableSearchLimit()) { if ((paginator.getPageCount() > config.getEnableSearchLimit())
|| ((request.getParameter(TITLE_PARAM) != null)
|| !(request.getParameter(TITLE_PARAM).trim().isEmpty()))) {
titleFilter.generateXml(filtersElem); titleFilter.generateXml(filtersElem);
} }
@ -141,6 +149,7 @@ public class SciDepartmentProjectsTab implements GenericOrgaUnitTab {
depProjectsElem, depProjectsElem,
state); state);
} }
}
logger.debug(String.format("Generated projects list of department '%s' " logger.debug(String.format("Generated projects list of department '%s' "
+ "in %d ms.", + "in %d ms.",

View File

@ -181,22 +181,41 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
publications.addOrder("title"); publications.addOrder("title");
} }
yearFilter.setDataQuery(getData(orgaunit), "year"); final DataQuery yearQuery = getData(orgaunit);
yearFilter.setDataQuery(yearQuery, "year");
applyYearFilter(publications, request); applyYearFilter(publications, request);
applyTitleFilter(publications, request); applyTitleFilter(publications, request);
applyAuthorFilter(publications, request); applyAuthorFilter(publications, request);
applyTitleFilter(yearQuery, request);
applyAuthorFilter(yearQuery, request);
if (publications.isEmpty()) {
yearFilter.generateXml(filtersElem);
titleFilter.generateXml(filtersElem);
authorFilter.generateXml(filtersElem);
depPublicationsElem.newChildElement("noPublications");
return;
}
final Paginator paginator = new Paginator(request, final Paginator paginator = new Paginator(request,
(int) publications.size(), (int) publications.size(),
config.getPageSize()); config.getPageSize());
if ((paginator.getPageCount() > config.getEnableSearchLimit())
|| (yearValue != null) || !(yearValue.trim().isEmpty())
|| (titleValue != null) || !(titleValue.trim().isEmpty())
|| (authorValue != null) || !(authorValue.trim().isEmpty())) {
yearFilter.generateXml(filtersElem); yearFilter.generateXml(filtersElem);
if ((paginator.getPageCount() > config.getEnableSearchLimit())
|| ((request.getParameter(TITLE_PARAM) != null)
&& !(request.getParameter(TITLE_PARAM).trim().isEmpty()))) {
titleFilter.generateXml(filtersElem); titleFilter.generateXml(filtersElem);
}
if ((paginator.getPageCount() > config.getEnableSearchLimit())
|| ((request.getParameter(AUTHOR_PARAM) != null)
&& !(request.getParameter(AUTHOR_PARAM).trim().isEmpty()))) {
authorFilter.generateXml(filtersElem); authorFilter.generateXml(filtersElem);
} }

View File

@ -101,16 +101,15 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
"filters"); "filters");
if (((request.getParameter(STATUS_PARAM) == null) if (((request.getParameter(STATUS_PARAM) == null)
|| (request.getParameter(STATUS_PARAM).trim().isEmpty()) || (request.getParameter(STATUS_PARAM).trim().isEmpty()))
)
&& ((request.getParameter(TITLE_PARAM) == null) && ((request.getParameter(TITLE_PARAM) == null)
|| request.getParameter(TITLE_PARAM).trim().isEmpty() || request.getParameter(TITLE_PARAM).trim().isEmpty())) {
)) {
statusFilter.generateXml(filtersElem); statusFilter.generateXml(filtersElem);
depProjectsElem.newChildElement("greeting"); depProjectsElem.newChildElement("greeting");
projects.addOrder("projectEnd desc");
projects.addOrder("projectBegin desc"); projects.addOrder("projectBegin desc");
projects.addOrder("title"); projects.addOrder("title");
@ -121,17 +120,23 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
} else { } else {
projects.addOrder("title"); projects.addOrder("title");
applyStatusFilter(projects, request); applyStatusFilter(projects, request);
applyTitleFilter(projects, request); applyTitleFilter(projects, request);
statusFilter.generateXml(filtersElem); statusFilter.generateXml(filtersElem);
if (projects.isEmpty()) {
titleFilter.generateXml(filtersElem);
depProjectsElem.newChildElement("noProjects");
} else {
final Paginator paginator = new Paginator(request, final Paginator paginator = new Paginator(request,
(int) projects.size(), (int) projects.size(),
config.getPageSize()); config.getPageSize());
if (paginator.getPageCount() > config.getEnableSearchLimit()) { if ((paginator.getPageCount() > config.getEnableSearchLimit())
|| ((request.getParameter(TITLE_PARAM) != null)
|| !(request.getParameter(TITLE_PARAM).trim().isEmpty()))) {
titleFilter.generateXml(filtersElem); titleFilter.generateXml(filtersElem);
} }
@ -144,6 +149,7 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
depProjectsElem, depProjectsElem,
state); state);
} }
}
logger.debug(String.format("Generated projects list of department '%s' " logger.debug(String.format("Generated projects list of department '%s' "
+ "in %d ms.", + "in %d ms.",

View File

@ -207,19 +207,40 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
publications.addOrder("title"); publications.addOrder("title");
} }
yearFilter.setDataQuery(getData(orgaunit), "year"); final DataQuery yearQuery = getData(orgaunit);
yearFilter.setDataQuery(yearQuery, "year");
applyYearFilter(publications, request); applyYearFilter(publications, request);
applyTitleFilter(publications, request); applyTitleFilter(publications, request);
applyAuthorFilter(publications, request); applyAuthorFilter(publications, request);
applyTitleFilter(yearQuery, request);
applyAuthorFilter(yearQuery, request);
if (publications.isEmpty()) {
yearFilter.generateXml(filtersElem);
titleFilter.generateXml(filtersElem);
authorFilter.generateXml(filtersElem);
publicationsElem.newChildElement("noPublications");
return;
}
final Paginator paginator = new Paginator(request, final Paginator paginator = new Paginator(request,
(int) publications.size(), (int) publications.size(),
config.getPageSize()); config.getPageSize());
yearFilter.generateXml(filtersElem); yearFilter.generateXml(filtersElem);
if (paginator.getPageCount() > config.getEnableSearchLimit()) { if ((paginator.getPageCount() > config.getEnableSearchLimit())
|| ((request.getParameter(TITLE_PARAM) != null)
&& !(request.getParameter(TITLE_PARAM).trim().isEmpty()))) {
titleFilter.generateXml(filtersElem); titleFilter.generateXml(filtersElem);
}
if ((paginator.getPageCount() > config.getEnableSearchLimit())
|| ((request.getParameter(AUTHOR_PARAM) != null)
&& !(request.getParameter(AUTHOR_PARAM).trim().isEmpty()))) {
authorFilter.generateXml(filtersElem); authorFilter.generateXml(filtersElem);
} }

View File

@ -190,7 +190,7 @@ public class SciInstituteSummaryTab implements GenericOrgaUnitTab {
institute. institute.
getSubordinateOrgaUnits(); getSubordinateOrgaUnits();
departments.addFilter( departments.addFilter(
String.format("%s = '%s", String.format("%s = '%s'",
GenericOrganizationalUnitSubordinateCollection.LINK_ASSOCTYPE, GenericOrganizationalUnitSubordinateCollection.LINK_ASSOCTYPE,
SciInstituteDepartmentsStep.ASSOC_TYPE)); SciInstituteDepartmentsStep.ASSOC_TYPE));