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
// the University of Bremen
// Copyright (C) 2010 Jens Pelzetter
//
// This library is free software; you can redistribute it and/or
// 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.addAttribute("type", "select");
filter.addAttribute("label", label);
if(options.isEmpty()) {
return;
@ -123,8 +124,7 @@ public class SelectFilter implements Filter {
} else {
selected = value;
}
filter.addAttribute("label", label);
filter.addAttribute("selected", selected);
if (emptyDefaultOption) {

View File

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

View File

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

View File

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

View File

@ -99,18 +99,17 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
"instituteProjects");
final Element filtersElem = depProjectsElem.newChildElement(
"filters");
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).trim().isEmpty()
)) {
|| request.getParameter(TITLE_PARAM).trim().isEmpty())) {
statusFilter.generateXml(filtersElem);
depProjectsElem.newChildElement("greeting");
projects.addOrder("projectEnd desc");
projects.addOrder("projectBegin desc");
projects.addOrder("title");
@ -121,28 +120,35 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
} else {
projects.addOrder("title");
applyStatusFilter(projects, request);
applyTitleFilter(projects, request);
statusFilter.generateXml(filtersElem);
final Paginator paginator = new Paginator(request,
(int) projects.size(),
config.getPageSize());
if (paginator.getPageCount() > config.getEnableSearchLimit()) {
if (projects.isEmpty()) {
titleFilter.generateXml(filtersElem);
depProjectsElem.newChildElement("noProjects");
} else {
final Paginator paginator = new Paginator(request,
(int) projects.size(),
config.getPageSize());
if ((paginator.getPageCount() > config.getEnableSearchLimit())
|| ((request.getParameter(TITLE_PARAM) != null)
|| !(request.getParameter(TITLE_PARAM).trim().isEmpty()))) {
titleFilter.generateXml(filtersElem);
}
paginator.applyLimits(projects);
paginator.generateXml(depProjectsElem);
}
paginator.applyLimits(projects);
paginator.generateXml(depProjectsElem);
}
while (projects.next()) {
generateProjectXml((BigDecimal) projects.get("projectId"),
depProjectsElem,
state);
while (projects.next()) {
generateProjectXml((BigDecimal) projects.get("projectId"),
depProjectsElem,
state);
}
}
logger.debug(String.format("Generated projects list of department '%s' "

View File

@ -207,19 +207,40 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
publications.addOrder("title");
}
yearFilter.setDataQuery(getData(orgaunit), "year");
final DataQuery yearQuery = getData(orgaunit);
yearFilter.setDataQuery(yearQuery, "year");
applyYearFilter(publications, request);
applyTitleFilter(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,
(int) publications.size(),
config.getPageSize());
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);
}
if ((paginator.getPageCount() > config.getEnableSearchLimit())
|| ((request.getParameter(AUTHOR_PARAM) != null)
&& !(request.getParameter(AUTHOR_PARAM).trim().isEmpty()))) {
authorFilter.generateXml(filtersElem);
}

View File

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