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;
do {
select cms_pages.item_id,
select distinct on (cms_pages.item_id) cms_pages.item_id,
cms_pages.title,
acs_objects.object_type,
cms_organizationalunits.organizationalunit_id,
@ -135,7 +135,7 @@ query getIdsOfPublicationsForOrgaUnit {
Boolean reviewed;
do {
select cms_pages.item_id,
select distinct on (cms_pages.item_id) cms_pages.item_id,
acs_objects.object_type,
cms_pages.title,
cms_organizationalunits.organizationalunit_id,

View File

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

View File

@ -42,14 +42,16 @@ public class SciInstituteDescTab implements GenericOrgaUnitTab {
final long start = System.currentTimeMillis();
final Desc desc = getData(orgaunit);
final Element descTabElem = parent.newChildElement("instituteDescription");
if ((desc.getShortDesc() != null)
&& !desc.getShortDesc().trim().isEmpty()) {
final Element shortDescElem = parent.newChildElement(
final Element shortDescElem = descTabElem.newChildElement(
"shortDescription");
shortDescElem.setText(desc.getShortDesc());
}
final Element descElem = parent.newChildElement("description");
final Element descElem = descTabElem.newChildElement("description");
descElem.setText(desc.getDesc());
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.cms.ContentItem;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciInstitute;
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.xml.Element;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
@ -31,7 +32,7 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
private static final String SURNAME_PARAM = "memberSurname";
private final CompareFilter statusFilter = new CompareFilter(
STATUS_PARAM,
GenericOrganizationalUnitPersonCollection.LINK_STATUS,
"status",
false,
false,
false);
@ -79,12 +80,25 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
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,
(int) persons.size(),
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);
}
@ -117,7 +131,8 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
final DataQuery personsQuery = SessionManager.getSession().
retrieveQuery(
"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()) {
final DataQuery departmentsQuery =
@ -129,19 +144,22 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
SciInstituteDepartmentsStep.ASSOC_TYPE);
while (departmentsQuery.next()) {
if (personsFilter.length() > 0) {
/*if (personsFilter.length() > 0) {
personsFilter.append(" or ");
}
personsFilter.append(String.format("orgaunitId = %s",
departmentsQuery.get(
"orgaunitId").toString()));
"orgaunitId").toString()));*/
orgaunitsIds.add(departmentsQuery.get("orgaunitId").toString());
}
} else {
personsFilter.append(String.format("orgaunitId = %s",
orgaunit.getID().toString()));
/*personsFilter.append(String.format("orgaunitId = %s",
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.GIVENNAME);
@ -162,7 +180,10 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
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,
@ -172,7 +193,10 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
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,
@ -193,6 +217,7 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
final long start = System.currentTimeMillis();
final XmlGenerator generator = new XmlGenerator(member);
generator.setUseExtraXml(false);
generator.setItemElemName("member", "");
generator.generateXML(state, parent, "");
logger.debug(String.format("Generated XML for member '%s' in %d ms.",
member.getFullName(),

View File

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

View File

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