Aktueller Stand der neuen Sci-Typen.

git-svn-id: https://svn.libreccm.org/ccm/trunk@1271 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-11-19 18:59:14 +00:00
parent f6ef24d03c
commit 8a7d217789
7 changed files with 222 additions and 126 deletions

View File

@ -92,7 +92,7 @@ query getIdsOfPublicationsForOrgaUnitOneRowPerAuthor {
String language; String language;
do { do {
select cms_pages.item_id, select distinct on (cms_pages.item_id) cms_pages.item_id,
cms_pages.title, cms_pages.title,
acs_objects.object_type, acs_objects.object_type,
cms_organizationalunits.organizationalunit_id, cms_organizationalunits.organizationalunit_id,
@ -135,7 +135,7 @@ query getIdsOfPublicationsForOrgaUnit {
Boolean reviewed; Boolean reviewed;
do { do {
select cms_pages.item_id, select distinct on (cms_pages.item_id) cms_pages.item_id,
acs_objects.object_type, acs_objects.object_type,
cms_pages.title, cms_pages.title,
cms_organizationalunits.organizationalunit_id, cms_organizationalunits.organizationalunit_id,

View File

@ -99,7 +99,8 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
config.getPageSize()); config.getPageSize());
if ((paginator.getPageCount() > config.getEnableSearchLimit()) if ((paginator.getPageCount() > config.getEnableSearchLimit())
|| !(surnameFilter.getFilter().trim().isEmpty())) { || ((surnameFilter.getFilter() != null)
&& !(surnameFilter.getFilter().trim().isEmpty()))) {
surnameFilter.generateXml(filtersElem); surnameFilter.generateXml(filtersElem);
} }
@ -151,8 +152,7 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
personsFilter.append(String.format("orgaunitId = %s", personsFilter.append(String.format("orgaunitId = %s",
subDepartmentsQuery.get( subDepartmentsQuery.get(
"orgaunitId").toString()));*/ "orgaunitId").toString()));*/
orgaUnitIds.add(subDepartmentsQuery.get( orgaUnitIds.add(subDepartmentsQuery.get("orgaunitId").toString());
"orgaunitId").toString());
} }
} else { } else {
/*personsFilter.append(String.format("orgaunitId = %s", /*personsFilter.append(String.format("orgaunitId = %s",
@ -182,9 +182,9 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
statusFilter.setValue(statusValue); statusFilter.setValue(statusValue);
} }
String filter = statusFilter.getFilter(); final String filter = statusFilter.getFilter();
if ((filter != null) && !(filter.trim().isEmpty())) { if ((filter != null) && !(filter.trim().isEmpty())) {
persons.addFilter(statusFilter.getFilter()); persons.addFilter(filter);
} }
} }

View File

@ -66,7 +66,7 @@ public class SciInstituteConfig extends AbstractConfig {
new StringParameter( new StringParameter(
"com.arsdigita.cms.contenttypes.sciinstitute.tabs", "com.arsdigita.cms.contenttypes.sciinstitute.tabs",
Parameter.REQUIRED, Parameter.REQUIRED,
"summary:com.arsdigita.cms.contenttypes.ui.SciInstituteSummaryTab"); "summary:com.arsdigita.cms.contenttypes.ui.SciInstituteSummaryTab;desc:com.arsdigita.cms.contenttypes.ui.SciInstituteDescTab;members:com.arsdigita.cms.contenttypes.ui.SciInstituteMembersTab;projects:com.arsdigita.cms.contenttypes.ui.SciInstituteProjectsTab;publications:com.arsdigita.cms.contenttypes.ui.SciInstitutePublicationsTab");
register(enableDepartmentsStep); register(enableDepartmentsStep);
register(enableDepartmentInstitutesStep); register(enableDepartmentInstitutesStep);

View File

@ -42,14 +42,16 @@ public class SciInstituteDescTab implements GenericOrgaUnitTab {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final Desc desc = getData(orgaunit); final Desc desc = getData(orgaunit);
final Element descTabElem = parent.newChildElement("instituteDescription");
if ((desc.getShortDesc() != null) if ((desc.getShortDesc() != null)
&& !desc.getShortDesc().trim().isEmpty()) { && !desc.getShortDesc().trim().isEmpty()) {
final Element shortDescElem = parent.newChildElement( final Element shortDescElem = descTabElem.newChildElement(
"shortDescription"); "shortDescription");
shortDescElem.setText(desc.getShortDesc()); shortDescElem.setText(desc.getShortDesc());
} }
final Element descElem = parent.newChildElement("description"); final Element descElem = descTabElem.newChildElement("description");
descElem.setText(desc.getDesc()); descElem.setText(desc.getDesc());
logger.debug(String.format("Generated XML for description tab of " logger.debug(String.format("Generated XML for description tab of "

View File

@ -3,7 +3,6 @@ package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
import com.arsdigita.cms.contenttypes.GenericPerson; import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciInstitute; import com.arsdigita.cms.contenttypes.SciInstitute;
import com.arsdigita.cms.contenttypes.ui.panels.CompareFilter; import com.arsdigita.cms.contenttypes.ui.panels.CompareFilter;
@ -14,6 +13,8 @@ import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.SessionManager; 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.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -31,7 +32,7 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
private static final String SURNAME_PARAM = "memberSurname"; private static final String SURNAME_PARAM = "memberSurname";
private final CompareFilter statusFilter = new CompareFilter( private final CompareFilter statusFilter = new CompareFilter(
STATUS_PARAM, STATUS_PARAM,
GenericOrganizationalUnitPersonCollection.LINK_STATUS, "status",
false, false,
false, false,
false); false);
@ -79,12 +80,25 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
final Element filtersElem = depMembersElem.newChildElement("filters"); final Element filtersElem = depMembersElem.newChildElement("filters");
statusFilter.generateXml(filtersElem);
if (persons.isEmpty()) {
if ((surnameFilter != null)
&& (surnameFilter.getFilter() != null)
&& (!surnameFilter.getFilter().trim().isEmpty())) {
surnameFilter.generateXml(filtersElem);
}
depMembersElem.newChildElement("noMembers");
return;
}
final Paginator paginator = new Paginator(request, final Paginator paginator = new Paginator(request,
(int) persons.size(), (int) persons.size(),
config.getPageSize()); config.getPageSize());
statusFilter.generateXml(filtersElem); if (paginator.getPageCount() > config.getEnableSearchLimit()
if (paginator.getPageCount() > config.getEnableSearchLimit()) { || ((surnameFilter.getFilter() != null)
&& !(surnameFilter.getFilter().trim().isEmpty()))) {
surnameFilter.generateXml(filtersElem); surnameFilter.generateXml(filtersElem);
} }
@ -117,7 +131,8 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
final DataQuery personsQuery = SessionManager.getSession(). final DataQuery personsQuery = SessionManager.getSession().
retrieveQuery( retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfMembersOfOrgaUnits"); "com.arsdigita.cms.contenttypes.getIdsOfMembersOfOrgaUnits");
final StringBuffer personsFilter = new StringBuffer(); //final StringBuffer personsFilter = new StringBuffer();
final List<String> orgaunitsIds = new ArrayList<String>();
if (config.isMergingMembers()) { if (config.isMergingMembers()) {
final DataQuery departmentsQuery = final DataQuery departmentsQuery =
@ -129,19 +144,22 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
SciInstituteDepartmentsStep.ASSOC_TYPE); SciInstituteDepartmentsStep.ASSOC_TYPE);
while (departmentsQuery.next()) { while (departmentsQuery.next()) {
if (personsFilter.length() > 0) { /*if (personsFilter.length() > 0) {
personsFilter.append(" or "); personsFilter.append(" or ");
} }
personsFilter.append(String.format("orgaunitId = %s", personsFilter.append(String.format("orgaunitId = %s",
departmentsQuery.get( departmentsQuery.get(
"orgaunitId").toString())); "orgaunitId").toString()));*/
orgaunitsIds.add(departmentsQuery.get("orgaunitId").toString());
} }
} else { } else {
personsFilter.append(String.format("orgaunitId = %s", /*personsFilter.append(String.format("orgaunitId = %s",
orgaunit.getID().toString())); orgaunit.getID().toString()));*/
orgaunitsIds.add(orgaunit.getID().toString());
} }
personsQuery.addFilter(personsFilter.toString()); //personsQuery.addFilter(personsFilter.toString());
personsQuery.setParameter("orgaunitIds", orgaunitsIds);
personsQuery.addOrder(GenericPerson.SURNAME); personsQuery.addOrder(GenericPerson.SURNAME);
personsQuery.addOrder(GenericPerson.GIVENNAME); personsQuery.addOrder(GenericPerson.GIVENNAME);
@ -162,7 +180,10 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
statusFilter.setValue(statusValue); statusFilter.setValue(statusValue);
} }
persons.addFilter(statusFilter.getFilter()); final String filter = statusFilter.getFilter();
if ((filter != null) && !(filter.trim().isEmpty())) {
persons.addFilter(filter);
}
} }
private void applySurnameFilter(final DataQuery persons, private void applySurnameFilter(final DataQuery persons,
@ -172,7 +193,10 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
surnameFilter.setValue(surnameValue); surnameFilter.setValue(surnameValue);
} }
persons.addFilter(surnameFilter.getFilter()); final String filter = surnameFilter.getFilter();
if ((filter != null) && !(filter.trim().isEmpty())) {
persons.addFilter(filter);
}
} }
protected void generateMemberXml(final BigDecimal memberId, protected void generateMemberXml(final BigDecimal memberId,
@ -193,6 +217,7 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final XmlGenerator generator = new XmlGenerator(member); final XmlGenerator generator = new XmlGenerator(member);
generator.setUseExtraXml(false); generator.setUseExtraXml(false);
generator.setItemElemName("member", "");
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
logger.debug(String.format("Generated XML for member '%s' in %d ms.", logger.debug(String.format("Generated XML for member '%s' in %d ms.",
member.getFullName(), member.getFullName(),

View File

@ -17,6 +17,10 @@ import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager; 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.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -37,6 +41,7 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
"projectEnd", "projectEnd",
false, false,
false, false,
false,
true); true);
private final TextFilter titleFilter = new TextFilter(TITLE_PARAM, private final TextFilter titleFilter = new TextFilter(TITLE_PARAM,
ContentPage.TITLE); ContentPage.TITLE);
@ -45,6 +50,23 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
config.load(); config.load();
} }
public SciInstituteProjectsTab() {
final Calendar now = new GregorianCalendar();
final String today = String.format("%d-%02d-%02d",
now.get(Calendar.YEAR),
now.get(Calendar.MONTH) + 1,
now.get(Calendar.DAY_OF_MONTH));
statusFilter.addOption("currentProjects",
CompareFilter.Operators.GTEQ,
today,
true);
statusFilter.addOption("finishedProjects",
CompareFilter.Operators.LT,
today,
false);
}
public boolean hasData(final GenericOrganizationalUnit orgaunit) { public boolean hasData(final GenericOrganizationalUnit orgaunit) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final ContentTypeCollection types = ContentType.getAllContentTypes(); final ContentTypeCollection types = ContentType.getAllContentTypes();
@ -81,9 +103,13 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
statusFilter.generateXml(filtersElem); statusFilter.generateXml(filtersElem);
if (((request.getParameter(STATUS_PARAM) == null) if (((request.getParameter(STATUS_PARAM) == null)
|| (request.getParameter(STATUS_PARAM).trim().isEmpty())) || (request.getParameter(STATUS_PARAM).trim().isEmpty())
|| (statusFilter.getFilter() == null)
|| (statusFilter.getFilter().trim().isEmpty()))
&& ((request.getParameter(TITLE_PARAM) == null) && ((request.getParameter(TITLE_PARAM) == null)
|| request.getParameter(TITLE_PARAM).trim().isEmpty())) { || request.getParameter(TITLE_PARAM).trim().isEmpty())
|| (titleFilter.getFilter() == null)
|| !(titleFilter.getFilter().trim().isEmpty())) {
depProjectsElem.newChildElement("greeting"); depProjectsElem.newChildElement("greeting");
@ -124,6 +150,7 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
orgaunit.getName(), orgaunit.getName(),
System.currentTimeMillis() - start)); System.currentTimeMillis() - start));
} }
protected DataQuery getData(final GenericOrganizationalUnit orgaunit) { protected DataQuery getData(final GenericOrganizationalUnit orgaunit) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
@ -137,8 +164,9 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
final DataQuery projectsQuery = SessionManager.getSession(). final DataQuery projectsQuery = SessionManager.getSession().
retrieveQuery( retrieveQuery(
"com.arsdigita.cms.contenttypes. getIdsOfProjectsOfOrgaUnit"); "com.arsdigita.cms.contenttypes.getIdsOfProjectsOfOrgaUnit");
final StringBuffer projectsFilter = new StringBuffer(); //final StringBuffer projectsFilter = new StringBuffer();
final List<String> orgaunitIds = new ArrayList<String>();
if (config.isMergingProjects()) { if (config.isMergingProjects()) {
final DataQuery subDepartmentsQuery = final DataQuery subDepartmentsQuery =
@ -150,19 +178,22 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
SciInstituteProjectsStep.ASSOC_TYPE); SciInstituteProjectsStep.ASSOC_TYPE);
while (subDepartmentsQuery.next()) { while (subDepartmentsQuery.next()) {
if (projectsFilter.length() > 0) { /*if (projectsFilter.length() > 0) {
projectsFilter.append(" or "); projectsFilter.append(" or ");
} }
projectsFilter.append(String.format("orgaunitId = %s", projectsFilter.append(String.format("orgaunitId = %s",
subDepartmentsQuery.get( subDepartmentsQuery.get(
"orgaunitId").toString())); "orgaunitId").toString()));*/
orgaunitIds.add(subDepartmentsQuery.get("orgaunitId").toString());
} }
} else { } else {
projectsFilter.append(String.format("orgaunitId = %s", /*projectsFilter.append(String.format("orgaunitId = %s",
orgaunit.getID().toString())); orgaunit.getID().toString()));*/
orgaunitIds.add(orgaunit.getID().toString());
} }
projectsQuery.addFilter(projectsFilter.toString()); //projectsQuery.addFilter(projectsFilter.toString());
projectsQuery.setParameter("orgaunitIds", orgaunitIds);
logger.debug(String.format( logger.debug(String.format(
"Got projects of institute '%s'" "Got projects of institute '%s'"
@ -180,8 +211,11 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
statusFilter.setValue(statusValue); statusFilter.setValue(statusValue);
} }
if ((statusFilter.getFilter() != null)
&& !(statusFilter.getFilter().trim().isEmpty())) {
projects.addFilter(statusFilter.getFilter()); projects.addFilter(statusFilter.getFilter());
} }
}
private void applyTitleFilter(final DataQuery projects, private void applyTitleFilter(final DataQuery projects,
final HttpServletRequest request) { final HttpServletRequest request) {
@ -190,8 +224,11 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
titleFilter.setValue(titleValue); titleFilter.setValue(titleValue);
} }
if ((titleFilter.getFilter() != null)
&& !(titleFilter.getFilter().trim().isEmpty())) {
projects.addFilter(titleFilter.getFilter()); projects.addFilter(titleFilter.getFilter());
} }
}
private void generateProjectXml(final BigDecimal projectId, private void generateProjectXml(final BigDecimal projectId,
final Element parent, final Element parent,
@ -212,6 +249,8 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
final PageState state) { final PageState state) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final XmlGenerator generator = new XmlGenerator(project); final XmlGenerator generator = new XmlGenerator(project);
generator.setItemElemName("project", "");
generator.setUseExtraXml(false);
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
logger.debug(String.format("Generated XML for project '%s' in %d ms.", logger.debug(String.format("Generated XML for project '%s' in %d ms.",
project.getName(), project.getName(),

View File

@ -17,6 +17,8 @@ import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager; 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.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -34,16 +36,17 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
private static final String YEAR_PARAM = "year"; private static final String YEAR_PARAM = "year";
private static final String TITLE_PARAM = "title"; private static final String TITLE_PARAM = "title";
private static final String AUTHOR_PARAM = "author"; private static final String AUTHOR_PARAM = "author";
private static final String SORT_PARAM = "sortBy"; /*private static final String SORT_PARAM = "sortBy";
private static final String SORT_BY_YEAR_ASC = "yearAsc"; private static final String SORT_BY_YEAR_ASC = "yearAsc";
private static final String SORT_BY_YEAR_DESC = "yearDesc"; private static final String SORT_BY_YEAR_DESC = "yearDesc";
private static final String SORT_BY_TITLE = "title"; private static final String SORT_BY_TITLE = "title";
private static final String SORT_BY_AUTHOR = "author"; private static final String SORT_BY_AUTHOR = "author";*/
private final SelectFilter yearFilter = new SelectFilter(YEAR_PARAM, private final SelectFilter yearFilter = new SelectFilter(YEAR_PARAM,
YEAR_PARAM, YEAR_PARAM,
true, true,
true,
false, false,
false, true,
true); true);
private final TextFilter titleFilter = new TextFilter(TITLE_PARAM, private final TextFilter titleFilter = new TextFilter(TITLE_PARAM,
ContentPage.TITLE); ContentPage.TITLE);
@ -97,15 +100,15 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
final String yearValue = request.getParameter(YEAR_PARAM); final String yearValue = request.getParameter(YEAR_PARAM);
final String titleValue = request.getParameter(TITLE_PARAM); final String titleValue = request.getParameter(TITLE_PARAM);
final String authorValue = request.getParameter(AUTHOR_PARAM); final String authorValue = request.getParameter(AUTHOR_PARAM);
final String sortValue = request.getParameter(SORT_PARAM); //final String sortValue = request.getParameter(SORT_PARAM);
final Element filtersElem = publicationsElem.newChildElement( final Element filtersElem = publicationsElem.newChildElement(
"filters"); "filters");
if (((yearValue == null) || yearValue.trim().isEmpty()) if (((yearValue == null) || yearValue.trim().isEmpty())
&& ((titleValue == null) || titleValue.trim().isEmpty()) && ((titleValue == null) || titleValue.trim().isEmpty())
&& ((authorValue == null) || authorValue.trim().isEmpty()) && ((authorValue == null) || authorValue.trim().isEmpty())) {
&& ((sortValue == null) || sortValue.trim().isEmpty())) { // && ((sortValue == null) || sortValue.trim().isEmpty())) {
publicationsElem.newChildElement("greeting"); publicationsElem.newChildElement("greeting");
@ -119,13 +122,15 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
publications.setRange(1, config.getGreetingSize() + 1); publications.setRange(1, config.getGreetingSize() + 1);
yearFilter.setDataQuery(publications, "year");
yearFilter.generateXml(filtersElem); yearFilter.generateXml(filtersElem);
titleFilter.generateXml(filtersElem); titleFilter.generateXml(filtersElem);
authorFilter.generateXml(filtersElem); authorFilter.generateXml(filtersElem);
} else { } else {
if (SORT_BY_AUTHOR.equals(sortValue)) { /*if (SORT_BY_AUTHOR.equals(sortValue)) {
if (config.getOneRowPerAuthor()) { if (config.getOneRowPerAuthor()) {
publications.addOrder("surname"); publications.addOrder("surname");
} else { } else {
@ -165,8 +170,18 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
} }
publications.addOrder("title"); publications.addOrder("title");
publications.addOrder("year asc"); publications.addOrder("year asc");
}*/
if (config.getOneRowPerAuthor()) {
publications.addOrder("surname");
publications.addOrder("title");
} else {
publications.addOrder("authors");
publications.addOrder("title");
} }
yearFilter.setDataQuery(publications, "year");
applyYearFilter(publications, request); applyYearFilter(publications, request);
applyTitleFilter(publications, request); applyTitleFilter(publications, request);
applyAuthorFilter(publications, request); applyAuthorFilter(publications, request);
@ -185,7 +200,7 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
paginator.generateXml(publicationsElem); paginator.generateXml(publicationsElem);
} }
final Element sortFieldsElem = publicationsElem.newChildElement( /*final Element sortFieldsElem = publicationsElem.newChildElement(
"sortFields"); "sortFields");
sortFieldsElem.addAttribute("sortBy", sortValue); sortFieldsElem.addAttribute("sortBy", sortValue);
@ -196,7 +211,7 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
sortFieldsElem.newChildElement("sortField").addAttribute("label", sortFieldsElem.newChildElement("sortField").addAttribute("label",
SORT_BY_YEAR_ASC); SORT_BY_YEAR_ASC);
sortFieldsElem.newChildElement("sortField").addAttribute("label", sortFieldsElem.newChildElement("sortField").addAttribute("label",
SORT_BY_YEAR_DESC); SORT_BY_YEAR_DESC);*/
while (publications.next()) { while (publications.next()) {
generatePublicationXml( generatePublicationXml(
@ -236,7 +251,8 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
retrieveQuery( retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfPublicationsForOrgaUnit"); "com.arsdigita.cms.contenttypes.getIdsOfPublicationsForOrgaUnit");
} }
final StringBuffer publicationsFilter = new StringBuffer(); //final StringBuffer publicationsFilter = new StringBuffer();
final List<String> orgaunitIds = new ArrayList<String>();
if (config.isMergingPublications()) { if (config.isMergingPublications()) {
final DataQuery departmentsQuery = final DataQuery departmentsQuery =
@ -247,19 +263,22 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
departmentsQuery.setParameter("assocType", departmentsQuery.setParameter("assocType",
SciInstituteDepartmentsStep.ASSOC_TYPE); SciInstituteDepartmentsStep.ASSOC_TYPE);
while (departmentsQuery.next()) { while (departmentsQuery.next()) {
if (publicationsFilter.length() > 0) { /*if (publicationsFilter.length() > 0) {
publicationsFilter.append(" or "); publicationsFilter.append(" or ");
} }
publicationsFilter.append(String.format("orgaunitId = %s", publicationsFilter.append(String.format("orgaunitId = %s",
departmentsQuery.get( departmentsQuery.get(
"orgaunitId").toString())); "orgaunitId").toString()));*/
orgaunitIds.add(departmentsQuery.get("orgaunitId").toString());
} }
} else { } else {
publicationsFilter.append(String.format("orgaunitId = %s", /*publicationsFilter.append(String.format("orgaunitId = %s",
orgaunit.getID().toString())); orgaunit.getID().toString()));*/
orgaunitIds.add(orgaunit.getID().toString());
} }
publicationsQuery.addFilter(publicationsFilter.toString()); //publicationsQuery.addFilter(publicationsFilter.toString());
publicationsQuery.setParameter("orgaunitIds", orgaunitIds);
logger.debug(String.format( logger.debug(String.format(
"Got publications of institute '%s'" "Got publications of institute '%s'"
@ -277,8 +296,11 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
yearFilter.setValue(yearValue); yearFilter.setValue(yearValue);
} }
if ((yearFilter.getFilter() != null)
&& !(yearFilter.getFilter().isEmpty())) {
publications.addFilter(yearFilter.getFilter()); publications.addFilter(yearFilter.getFilter());
} }
}
private void applyTitleFilter(final DataQuery publications, private void applyTitleFilter(final DataQuery publications,
final HttpServletRequest request) { final HttpServletRequest request) {
@ -287,8 +309,11 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
titleFilter.setValue(titleValue); titleFilter.setValue(titleValue);
} }
if ((titleFilter.getFilter() != null)
&& !(titleFilter.getFilter().isEmpty())) {
publications.addFilter(titleFilter.getFilter()); publications.addFilter(titleFilter.getFilter());
} }
}
private void applyAuthorFilter(final DataQuery publications, private void applyAuthorFilter(final DataQuery publications,
final HttpServletRequest request) { final HttpServletRequest request) {
@ -297,8 +322,11 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
authorFilter.setValue(authorValue); authorFilter.setValue(authorValue);
} }
if ((authorFilter.getFilter() != null)
&& !(authorFilter.getFilter().isEmpty())) {
publications.addFilter(authorFilter.getFilter()); publications.addFilter(authorFilter.getFilter());
} }
}
private void generatePublicationXml(final BigDecimal publicationId, private void generatePublicationXml(final BigDecimal publicationId,
final String objectType, final String objectType,
@ -319,6 +347,8 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
final PageState state) { final PageState state) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final XmlGenerator generator = new XmlGenerator(publication); final XmlGenerator generator = new XmlGenerator(publication);
generator.setUseExtraXml(false);
generator.setItemElemName("publication", "");
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
logger.debug(String.format( logger.debug(String.format(
"Generated XML for publication '%s' in %d ms.", "Generated XML for publication '%s' in %d ms.",