SciDepartmentPublicationsTab funktioniert jetzt wieder
git-svn-id: https://svn.libreccm.org/ccm/trunk@1616 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
39e6af24d1
commit
4e12119088
|
|
@ -1,5 +1,6 @@
|
||||||
package com.arsdigita.cms.contenttypes.ui.panels;
|
package com.arsdigita.cms.contenttypes.ui.panels;
|
||||||
|
|
||||||
|
import com.arsdigita.persistence.DataCollection;
|
||||||
import com.arsdigita.persistence.DataQuery;
|
import com.arsdigita.persistence.DataQuery;
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -161,7 +162,11 @@ public class SelectFilter implements Filter {
|
||||||
optionsSet = new HashSet<String>();
|
optionsSet = new HashSet<String>();
|
||||||
|
|
||||||
while (dataQuery.next()) {
|
while (dataQuery.next()) {
|
||||||
|
if (dataQuery instanceof DataCollection) {
|
||||||
|
obj = ((DataCollection) dataQuery.get(queryProperty));
|
||||||
|
} else {
|
||||||
obj = dataQuery.get(queryProperty);
|
obj = dataQuery.get(queryProperty);
|
||||||
|
}
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -179,4 +184,5 @@ public class SelectFilter implements Filter {
|
||||||
|
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -265,7 +265,7 @@ public class PersonalPublications implements ContentGenerator {
|
||||||
final XmlGenerator generator = new XmlGenerator(publication);
|
final XmlGenerator generator = new XmlGenerator(publication);
|
||||||
generator.setItemElemName("publications", "");
|
generator.setItemElemName("publications", "");
|
||||||
generator.setListMode(true);
|
generator.setListMode(true);
|
||||||
generator.generateXML(null, parent, "");
|
generator.generateXML(state, parent, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
private class XmlGenerator extends SimpleXMLGenerator {
|
private class XmlGenerator extends SimpleXMLGenerator {
|
||||||
|
|
|
||||||
|
|
@ -85,86 +85,27 @@ association {
|
||||||
Integer[0..1] publicationOrder = cms_organizationalunits_publications_map.publication_order INTEGER;
|
Integer[0..1] publicationOrder = cms_organizationalunits_publications_map.publication_order INTEGER;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Retrieves the publications (the ids). Allows filtering for a orgaunit id
|
|
||||||
//For each author there will be on row in the result
|
|
||||||
query getIdsOfPublicationsForOrgaUnitOneRowPerAuthor {
|
|
||||||
BigDecimal publicationId;
|
|
||||||
String objectType;
|
|
||||||
BigDecimal orgaunitId;
|
|
||||||
String title;
|
|
||||||
Integer year;
|
|
||||||
String authorSurname;
|
|
||||||
String authorGivenname;
|
|
||||||
String language;
|
|
||||||
|
|
||||||
do {
|
|
||||||
select distinct on (cms_pages.item_id) cms_pages.item_id,
|
|
||||||
cms_pages.title,
|
|
||||||
acs_objects.object_type,
|
|
||||||
cms_organizationalunits.organizationalunit_id,
|
|
||||||
ct_publications.year,
|
|
||||||
cms_persons.surname,
|
|
||||||
cms_persons.givenname,
|
|
||||||
cms_items.language
|
|
||||||
from cms_pages
|
|
||||||
join ct_publications on cms_pages.item_id = ct_publications.publication_id
|
|
||||||
join ct_publications_authorship on ct_publications.publication_id = ct_publications_authorship.publication_id
|
|
||||||
join cms_persons on ct_publications_authorship.person_id = cms_persons.person_id
|
|
||||||
join cms_organizationalunits_publications_map on cms_pages.item_id = cms_organizationalunits_publications_map.publication_id
|
|
||||||
join cms_organizationalunits on cms_organizationalunits_publications_map.orgaunit_id = cms_organizationalunits.organizationalunit_id
|
|
||||||
join acs_objects on cms_pages.item_id = acs_objects.object_id
|
|
||||||
join cms_items on cms_items.item_id = cms_pages.item_id
|
|
||||||
where cms_organizationalunits.organizationalunit_id in :orgaunitIds
|
|
||||||
} map {
|
|
||||||
publicationId = cms_pages.item_id;
|
|
||||||
objectType = acs_objects.object_type;
|
|
||||||
orgaunitId = cms_organizationalunits.organizationalunit_id;
|
|
||||||
title = cms_pages.title;
|
|
||||||
year = ct_publications.year;
|
|
||||||
authorSurname = cms_persons.surname;
|
|
||||||
authorGivenname = cms_persons.givenname;
|
|
||||||
language = cms_items.item_id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Retrieves the publications (the ids). Allows filtering for a orgaunit id
|
//Retrieves the publications (the ids). Allows filtering for a orgaunit id
|
||||||
//The authors are merged into one field in the result, each publication will
|
//The authors are merged into one field in the result, each publication will
|
||||||
//only appear one time
|
//only appear one time
|
||||||
query getIdsOfPublicationsForOrgaUnit {
|
query getIdsOfPublicationsForOrgaUnit {
|
||||||
BigDecimal publicationId;
|
BigDecimal publicationId;
|
||||||
String objectType;
|
|
||||||
BigDecimal orgaunitId;
|
BigDecimal orgaunitId;
|
||||||
String title;
|
String name;
|
||||||
Integer year;
|
|
||||||
String authors;
|
|
||||||
String language;
|
|
||||||
Boolean reviewed;
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
select distinct on (cms_pages.item_id) cms_pages.item_id,
|
select distinct on (ct_publication_bundles.bundle_id)
|
||||||
acs_objects.object_type,
|
ct_publication_bundles.bundle_id,
|
||||||
cms_pages.title,
|
cms_items.name,
|
||||||
cms_organizationalunits.organizationalunit_id,
|
cms_organizationalunits_publications_map.orgaunit_id
|
||||||
ct_publications.year,
|
from ct_publication_bundles
|
||||||
ct_publications.authors,
|
join cms_items on ct_publication_bundles.bundle_id = cms_items.item_id
|
||||||
cms_items.language,
|
join cms_organizationalunits_publications_map on ct_publication_bundles.bundle_id = cms_organizationalunits_publications_map.publication_id
|
||||||
ct_publications.reviewed
|
where cms_organizationalunits_publications_map.orgaunit_id in :orgaunitIds
|
||||||
from cms_pages
|
|
||||||
join ct_publications on cms_pages.item_id = ct_publications.publication_id
|
|
||||||
join cms_organizationalunits_publications_map on cms_pages.item_id = cms_organizationalunits_publications_map.publication_id
|
|
||||||
join cms_organizationalunits on cms_organizationalunits_publications_map.orgaunit_id = cms_organizationalunits.organizationalunit_id
|
|
||||||
join acs_objects on cms_pages.item_id = acs_objects.object_id
|
|
||||||
join cms_items on cms_pages.item_id = cms_items.item_id
|
|
||||||
where cms_organizationalunits.organizationalunit_id in :orgaunitIds
|
|
||||||
} map {
|
} map {
|
||||||
publicationId = cms_pages.item_id;
|
publicationId =ct_publication_bundles.bundle_id;
|
||||||
objectType = acs_objects.object_type;
|
orgaunitId = cms_organizationalunits_publications_map.orgaunit_id;
|
||||||
orgaunitId = cms_organizationalunits.organizationalunit_id;
|
name = cms_items.name;
|
||||||
title = cms_pages.title;
|
|
||||||
year = ct_publications.year;
|
|
||||||
authors = ct_publications.authors;
|
|
||||||
language = cms_items.language;
|
|
||||||
reviewed = ct_publications.reviewed;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -172,128 +113,18 @@ query getIdsOfPublicationsForOrgaUnit {
|
||||||
query getPublicationsForAuthor {
|
query getPublicationsForAuthor {
|
||||||
BigDecimal publicationId;
|
BigDecimal publicationId;
|
||||||
BigDecimal authorId;
|
BigDecimal authorId;
|
||||||
String objectType;
|
String name;
|
||||||
String title;
|
|
||||||
Integer year;
|
|
||||||
String language;
|
|
||||||
Boolean reviewed;
|
|
||||||
String authors;
|
|
||||||
BigDecimal parent;
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
select cms_pages.item_id,
|
select ct_publication_bundles.bundle_id,
|
||||||
acs_objects.object_type,
|
|
||||||
cms_pages.title,
|
|
||||||
ct_publications_authorship.person_id,
|
ct_publications_authorship.person_id,
|
||||||
ct_publications.year,
|
cms_items.name
|
||||||
cms_items.language,
|
from ct_publication_bundles.bundle_id,
|
||||||
ct_publications.reviewed,
|
join cms_items on ct_publication_bundles.bundle_id = cms_items.item_id
|
||||||
ct_publications.authors,
|
join ct_publications_authorship on ct_publication_bundles.bundle_id = ct_publications_authorship.publication_id
|
||||||
cms_items.parent_id
|
|
||||||
from cms_pages
|
|
||||||
join ct_publications on cms_pages.item_id = ct_publications.publication_id
|
|
||||||
join ct_publications_authorship on ct_publications.publication_id = ct_publications_authorship.publication_id
|
|
||||||
join cms_items on cms_pages.item_id = cms_items.item_id
|
|
||||||
join acs_objects on cms_pages.item_id = acs_objects.object_id
|
|
||||||
} map {
|
} map {
|
||||||
publicationId = cms_pages.item_id;
|
publicationId = ct_publication_bundles.bundle_id;
|
||||||
objectType = acs_objects.object_type;
|
|
||||||
authorId = ct_publications_authorship.person_id;
|
authorId = ct_publications_authorship.person_id;
|
||||||
title = cms_pages.title;
|
name = cms_items.name;
|
||||||
year = ct_publications.year;
|
|
||||||
language = ct_items.language;
|
|
||||||
reviewed = ct_publications.reviewed;
|
|
||||||
authors = ct_publications.authors;
|
|
||||||
parent = cms_items.parent_id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Retrieves all publications of an author
|
|
||||||
query getPublicationsForAuthorWithAuthors {
|
|
||||||
BigDecimal publicationId;
|
|
||||||
BigDecimal authorId;
|
|
||||||
String objectType;
|
|
||||||
String title;
|
|
||||||
Integer year;
|
|
||||||
String authors;
|
|
||||||
String language;
|
|
||||||
Boolean reviewed;
|
|
||||||
|
|
||||||
do {
|
|
||||||
select cms_pages.item_id,
|
|
||||||
acs_objects.object_type,
|
|
||||||
cms_pages.title,
|
|
||||||
ct_publications_authorship.person_id,
|
|
||||||
ct_publications.year,
|
|
||||||
ct_publications.reviewed,
|
|
||||||
ct_publications.authors
|
|
||||||
//(select array_to_string(array (select cms_persons.surname || ', ' || cms_persons.givenname
|
|
||||||
// from cms_persons
|
|
||||||
// join ct_publications_authorship on cms_persons.person_id = ct_publications_authorship.person_id
|
|
||||||
// where ct_publications_authorship.publication_id = cms_pages.item_id order by ct_publications_authorship.authorship_order), '; ')) as authors
|
|
||||||
from cms_pages
|
|
||||||
join ct_publications on cms_pages.item_id = ct_publications.publication_id
|
|
||||||
join ct_publications_authorship on ct_publications.publication_id = ct_publications_authorship.publication_id
|
|
||||||
join cms_items on cms_pages.item_id = cms_items.item_id
|
|
||||||
join acs_objects on cms_pages.item_id = acs_objects.object_id
|
|
||||||
} map {
|
|
||||||
publicationId = cms_pages.item_id;
|
|
||||||
objectType = acs_objects.object_type;
|
|
||||||
authorId = ct_publications_authorship.person_id;
|
|
||||||
title = cms_pages.title;
|
|
||||||
year = ct_publications.year;
|
|
||||||
authors = ct_publications.authors;
|
|
||||||
language = ct_items.language;
|
|
||||||
reviewed = ct_publications.reviewed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Old, possible obsolete queries. Will be removed soon
|
|
||||||
query getAllYearsOfPublication {
|
|
||||||
Integer yearOfPublication;
|
|
||||||
|
|
||||||
do {
|
|
||||||
select distinct ct_publications.year
|
|
||||||
from ct_publications
|
|
||||||
} map {
|
|
||||||
yearOfPublication = ct_publications.year;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
query getAllYearsOfPublicationForAuthor {
|
|
||||||
Integer yearOfPublication;
|
|
||||||
|
|
||||||
do {
|
|
||||||
select distinct ct_publications.year
|
|
||||||
from ct_publications join ct_publications_authorship on ct_publications.publication_id = ct_publications_authorship.publication_id
|
|
||||||
where person_id = :author
|
|
||||||
} map {
|
|
||||||
yearOfPublication = ct_publications.year;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
query getAllPublicationTypesForAuthor {
|
|
||||||
|
|
||||||
String objectType;
|
|
||||||
|
|
||||||
do {
|
|
||||||
select distinct acs_objects.object_type
|
|
||||||
from ct_publications join acs_objects on ct_publications.publication_id = acs_objects.object_id join ct_publications_authorship on ct_publications.publication_id = ct_publications_authorship.publication_id
|
|
||||||
where person_id = :author
|
|
||||||
} map {
|
|
||||||
objectType = acs_objects.object_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
query getIdsOfPublicationsOfSciMember {
|
|
||||||
BigDecimal publicationId;
|
|
||||||
|
|
||||||
do {
|
|
||||||
select ct_publications_authorship.publication_id
|
|
||||||
from ct_publications_authorship
|
|
||||||
where ct_publications_authorship.person_id = :author
|
|
||||||
} map {
|
|
||||||
publicationId = ct_publications_authorship.publication_id;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -39,13 +39,11 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
|
||||||
|
|
||||||
final Publication publication = (Publication) item;
|
final Publication publication = (Publication) item;
|
||||||
createAuthorsXml(publication, element, state);
|
createAuthorsXml(publication, element, state);
|
||||||
createOrgaUnitsXml(publication, element, state);
|
|
||||||
|
|
||||||
if (!listMode) {
|
if (!listMode) {
|
||||||
|
createOrgaUnitsXml(publication, element, state);
|
||||||
createSeriesXml(publication, element, state);
|
createSeriesXml(publication, element, state);
|
||||||
|
|
||||||
final List<PublicationFormat> formats = SciPublicationsExporters.
|
final List<PublicationFormat> formats = SciPublicationsExporters.getInstance().getSupportedFormats();
|
||||||
getInstance().getSupportedFormats();
|
|
||||||
|
|
||||||
|
|
||||||
for (PublicationFormat format : formats) {
|
for (PublicationFormat format : formats) {
|
||||||
|
|
@ -89,8 +87,7 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
|
||||||
final Element parent,
|
final Element parent,
|
||||||
final PageState state) {
|
final PageState state) {
|
||||||
final PublicationGenericOrganizationalsUnitCollection orgaunits =
|
final PublicationGenericOrganizationalsUnitCollection orgaunits =
|
||||||
publication.
|
publication.getOrganizationalUnits();
|
||||||
getOrganizationalUnits();
|
|
||||||
if ((orgaunits == null) || orgaunits.isEmpty()) {
|
if ((orgaunits == null) || orgaunits.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -98,8 +95,7 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
|
||||||
final Element orgaunitsElem = parent.newChildElement(
|
final Element orgaunitsElem = parent.newChildElement(
|
||||||
"organizationalunits");
|
"organizationalunits");
|
||||||
while (orgaunits.next()) {
|
while (orgaunits.next()) {
|
||||||
createOrgaUnitXml(orgaunits.getOrganizationalUnit(GlobalizationHelper.
|
createOrgaUnitXml(orgaunits.getOrganizationalUnit(GlobalizationHelper.getNegotiatedLocale().getLanguage()),
|
||||||
getNegotiatedLocale().getLanguage()),
|
|
||||||
orgaunitsElem,
|
orgaunitsElem,
|
||||||
state);
|
state);
|
||||||
}
|
}
|
||||||
|
|
@ -123,8 +119,7 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
|
||||||
|
|
||||||
final Element seriesElem = parent.newChildElement("series");
|
final Element seriesElem = parent.newChildElement("series");
|
||||||
while (series.next()) {
|
while (series.next()) {
|
||||||
createSeriesElemXml(series.getSeries(GlobalizationHelper.
|
createSeriesElemXml(series.getSeries(GlobalizationHelper.getNegotiatedLocale().getLanguage()),
|
||||||
getNegotiatedLocale().getLanguage()),
|
|
||||||
seriesElem,
|
seriesElem,
|
||||||
state);
|
state);
|
||||||
}
|
}
|
||||||
|
|
@ -177,5 +172,6 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
|
||||||
protected ContentItem getContentItem(final PageState state) {
|
protected ContentItem getContentItem(final PageState state) {
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -162,7 +162,7 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
|
||||||
final StringBuilder filterBuilder = new StringBuilder();
|
final StringBuilder filterBuilder = new StringBuilder();
|
||||||
while (personBundlesQuery.next()) {
|
while (personBundlesQuery.next()) {
|
||||||
if (filterBuilder.length() > 0) {
|
if (filterBuilder.length() > 0) {
|
||||||
filterBuilder.append(",");
|
filterBuilder.append(',');
|
||||||
}
|
}
|
||||||
filterBuilder.append(personBundlesQuery.get("memberId").toString());
|
filterBuilder.append(personBundlesQuery.get("memberId").toString());
|
||||||
}
|
}
|
||||||
|
|
@ -171,10 +171,10 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
|
||||||
if (filterBuilder.length() == 0) {
|
if (filterBuilder.length() == 0) {
|
||||||
//No member return null to indicate
|
//No member return null to indicate
|
||||||
return null;
|
return null;
|
||||||
} else {
|
|
||||||
membersQuery.addFilter(String.format("parent.id in (%s)", filterBuilder.toString()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
membersQuery.addFilter(String.format("parent.id in (%s)", filterBuilder.toString()));
|
||||||
|
|
||||||
membersQuery.addOrder(GenericPerson.SURNAME);
|
membersQuery.addOrder(GenericPerson.SURNAME);
|
||||||
membersQuery.addOrder(GenericPerson.GIVENNAME);
|
membersQuery.addOrder(GenericPerson.GIVENNAME);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -225,7 +225,7 @@ public class SciDepartmentProjectsTab implements GenericOrgaUnitTab {
|
||||||
final StringBuilder filterBuilder = new StringBuilder();
|
final StringBuilder filterBuilder = new StringBuilder();
|
||||||
while (projectBundlesQuery.next()) {
|
while (projectBundlesQuery.next()) {
|
||||||
if (filterBuilder.length() > 0) {
|
if (filterBuilder.length() > 0) {
|
||||||
filterBuilder.append(",");
|
filterBuilder.append(',');
|
||||||
}
|
}
|
||||||
filterBuilder.append(projectBundlesQuery.get("projectId").toString());
|
filterBuilder.append(projectBundlesQuery.get("projectId").toString());
|
||||||
}
|
}
|
||||||
|
|
@ -235,10 +235,10 @@ public class SciDepartmentProjectsTab implements GenericOrgaUnitTab {
|
||||||
if (filterBuilder.length() == 0) {
|
if (filterBuilder.length() == 0) {
|
||||||
//No Projects, return null to indicate
|
//No Projects, return null to indicate
|
||||||
return null;
|
return null;
|
||||||
} else {
|
|
||||||
projectsQuery.addFilter(String.format("parent.id in (%s)", filterBuilder.toString()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
projectsQuery.addFilter(String.format("parent.id in (%s)", filterBuilder.toString()));
|
||||||
|
|
||||||
if (Kernel.getConfig().languageIndependentItems()) {
|
if (Kernel.getConfig().languageIndependentItems()) {
|
||||||
final FilterFactory filterFactory = projectsQuery.getFilterFactory();
|
final FilterFactory filterFactory = projectsQuery.getFilterFactory();
|
||||||
final Filter filter = filterFactory.or().
|
final Filter filter = filterFactory.or().
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,12 @@ import com.arsdigita.cms.contenttypes.ui.panels.TextFilter;
|
||||||
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
|
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
|
||||||
import com.arsdigita.domain.DomainObjectFactory;
|
import com.arsdigita.domain.DomainObjectFactory;
|
||||||
import com.arsdigita.globalization.Globalization;
|
import com.arsdigita.globalization.Globalization;
|
||||||
|
import com.arsdigita.globalization.GlobalizationHelper;
|
||||||
|
import com.arsdigita.kernel.Kernel;
|
||||||
|
import com.arsdigita.persistence.DataCollection;
|
||||||
import com.arsdigita.persistence.DataQuery;
|
import com.arsdigita.persistence.DataQuery;
|
||||||
|
import com.arsdigita.persistence.Filter;
|
||||||
|
import com.arsdigita.persistence.FilterFactory;
|
||||||
import com.arsdigita.persistence.OID;
|
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;
|
||||||
|
|
@ -34,15 +39,10 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
SciDepartmentPublicationsTab.class);
|
SciDepartmentPublicationsTab.class);
|
||||||
private static final SciDepartmentPublicationsTabConfig config =
|
private static final SciDepartmentPublicationsTabConfig config =
|
||||||
new SciDepartmentPublicationsTabConfig();
|
new SciDepartmentPublicationsTabConfig();
|
||||||
private static final String YEAR_PARAM = "year";
|
private static final String YEAR_PARAM = "yearOfPublication";
|
||||||
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 final SelectFilter yearFilter = new SelectFilter("year",
|
||||||
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 final SelectFilter yearFilter = new SelectFilter(YEAR_PARAM,
|
|
||||||
YEAR_PARAM,
|
YEAR_PARAM,
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
|
|
@ -60,17 +60,14 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
public SciDepartmentPublicationsTab() {
|
public SciDepartmentPublicationsTab() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
if (config.getOneRowPerAuthor()) {
|
authorFilter = new TextFilter(AUTHOR_PARAM, "authorsStr");
|
||||||
authorFilter = new TextFilter(AUTHOR_PARAM, "authorSurname");
|
|
||||||
} else {
|
|
||||||
authorFilter = new TextFilter(AUTHOR_PARAM, "authors");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasData(final GenericOrganizationalUnit orgaunit,
|
public boolean hasData(final GenericOrganizationalUnit orgaunit,
|
||||||
final PageState state) {
|
final PageState state) {
|
||||||
final long start = System.currentTimeMillis();
|
final long start = System.currentTimeMillis();
|
||||||
|
|
||||||
|
//Check if ccm-sci-publications is installed
|
||||||
final ContentTypeCollection types = ContentType.getAllContentTypes();
|
final ContentTypeCollection types = ContentType.getAllContentTypes();
|
||||||
types.addFilter(
|
types.addFilter(
|
||||||
"associatedObjectType = 'com.arsdigita.cms.contenttypes.Publication'");
|
"associatedObjectType = 'com.arsdigita.cms.contenttypes.Publication'");
|
||||||
|
|
@ -80,7 +77,8 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
}
|
}
|
||||||
types.close();
|
types.close();
|
||||||
|
|
||||||
final boolean result = !getData(orgaunit).isEmpty();
|
final DataCollection data = getData(orgaunit);
|
||||||
|
final boolean result = (data != null) && !data.isEmpty();
|
||||||
|
|
||||||
logger.debug(String.format("Needed %d ms to determine if department "
|
logger.debug(String.format("Needed %d ms to determine if department "
|
||||||
+ "'%s' has publications.",
|
+ "'%s' has publications.",
|
||||||
|
|
@ -93,7 +91,7 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
final Element parent,
|
final Element parent,
|
||||||
final PageState state) {
|
final PageState state) {
|
||||||
final long start = System.currentTimeMillis();
|
final long start = System.currentTimeMillis();
|
||||||
final DataQuery publications = getData(orgaunit);
|
final DataCollection publications = getData(orgaunit);
|
||||||
final HttpServletRequest request = state.getRequest();
|
final HttpServletRequest request = state.getRequest();
|
||||||
|
|
||||||
final Element depPublicationsElem = parent.newChildElement(
|
final Element depPublicationsElem = parent.newChildElement(
|
||||||
|
|
@ -102,7 +100,6 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
final String yearValue = Globalization.decodeParameter(request, YEAR_PARAM);
|
final String yearValue = Globalization.decodeParameter(request, YEAR_PARAM);
|
||||||
final String titleValue = Globalization.decodeParameter(request, TITLE_PARAM);
|
final String titleValue = Globalization.decodeParameter(request, TITLE_PARAM);
|
||||||
final String authorValue = Globalization.decodeParameter(request, AUTHOR_PARAM);
|
final String authorValue = Globalization.decodeParameter(request, AUTHOR_PARAM);
|
||||||
//final String sortValue = Globalization.decodeParameter(request, SORT_PARAM);
|
|
||||||
|
|
||||||
final Element filtersElem = depPublicationsElem.newChildElement(
|
final Element filtersElem = depPublicationsElem.newChildElement(
|
||||||
"filters");
|
"filters");
|
||||||
|
|
@ -114,27 +111,17 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
|
|
||||||
depPublicationsElem.newChildElement("greeting");
|
depPublicationsElem.newChildElement("greeting");
|
||||||
|
|
||||||
publications.addOrder("year desc");
|
publications.addOrder("yearOfPublication desc");
|
||||||
if (config.getOneRowPerAuthor()) {
|
publications.addOrder("case when (authorsStr is null) "
|
||||||
publications.addOrder("case when (authorSurname is null) "
|
|
||||||
+ "then 'zzzz' "
|
+ "then 'zzzz' "
|
||||||
+ "else authorSurname "
|
+ "else authorsStr "
|
||||||
+ "end asc");
|
+ "end asc");
|
||||||
publications.addOrder("case when (authorGivenname is null) "
|
|
||||||
+ "then 'zzzz' "
|
|
||||||
+ "else authorGivenname "
|
|
||||||
+ "end asc");
|
|
||||||
} else {
|
|
||||||
publications.addOrder("case when (authors is null) "
|
|
||||||
+ "then 'zzzz' "
|
|
||||||
+ "else authors "
|
|
||||||
+ "end asc");
|
|
||||||
}
|
|
||||||
publications.addOrder("title asc");
|
publications.addOrder("title asc");
|
||||||
|
|
||||||
publications.setRange(1, config.getGreetingSize() + 1);
|
publications.setRange(1, config.getGreetingSize() + 1);
|
||||||
|
|
||||||
yearFilter.setDataQuery(publications, "year");
|
yearFilter.setDataQuery(publications, YEAR_PARAM);
|
||||||
|
|
||||||
yearFilter.generateXml(filtersElem);
|
yearFilter.generateXml(filtersElem);
|
||||||
titleFilter.generateXml(filtersElem);
|
titleFilter.generateXml(filtersElem);
|
||||||
|
|
@ -142,64 +129,11 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
/*if (SORT_BY_AUTHOR.equals(sortValue)) {
|
publications.addOrder("yearOfPublication desc");
|
||||||
if (config.getOneRowPerAuthor()) {
|
publications.addOrder("case when (authorsStr is null) "
|
||||||
publications.addOrder("surname");
|
|
||||||
} else {
|
|
||||||
publications.addOrder("authors");
|
|
||||||
}
|
|
||||||
publications.addOrder("title");
|
|
||||||
publications.addOrder("year asc");
|
|
||||||
} else if (SORT_BY_TITLE.equals(sortValue)) {
|
|
||||||
publications.addOrder("title");
|
|
||||||
if (config.getOneRowPerAuthor()) {
|
|
||||||
publications.addOrder("surname");
|
|
||||||
} else {
|
|
||||||
publications.addOrder("authors");
|
|
||||||
}
|
|
||||||
publications.addOrder("year asc");
|
|
||||||
} else if (SORT_BY_YEAR_ASC.equals(sortValue)) {
|
|
||||||
publications.addOrder("year asc");
|
|
||||||
if (config.getOneRowPerAuthor()) {
|
|
||||||
publications.addOrder("surname");
|
|
||||||
} else {
|
|
||||||
publications.addOrder("authors");
|
|
||||||
}
|
|
||||||
publications.addOrder("title");
|
|
||||||
} else if (SORT_BY_YEAR_DESC.equals(sortValue)) {
|
|
||||||
publications.addOrder("year desc");
|
|
||||||
if (config.getOneRowPerAuthor()) {
|
|
||||||
publications.addOrder("surname");
|
|
||||||
} else {
|
|
||||||
publications.addOrder("authors");
|
|
||||||
}
|
|
||||||
publications.addOrder("title");
|
|
||||||
} else {
|
|
||||||
if (config.getOneRowPerAuthor()) {
|
|
||||||
publications.addOrder("surname");
|
|
||||||
} else {
|
|
||||||
publications.addOrder("authors");
|
|
||||||
}
|
|
||||||
publications.addOrder("title");
|
|
||||||
publications.addOrder("year asc");
|
|
||||||
}*/
|
|
||||||
|
|
||||||
publications.addOrder("year desc");
|
|
||||||
if (config.getOneRowPerAuthor()) {
|
|
||||||
publications.addOrder("case when (authorSurname is null) "
|
|
||||||
+ "then 'zzzz' "
|
+ "then 'zzzz' "
|
||||||
+ "else authorSurname "
|
+ "else authorsStr "
|
||||||
+ "end asc");
|
+ "end asc");
|
||||||
publications.addOrder("case when (authorGivenname is null) "
|
|
||||||
+ "then 'zzzz' "
|
|
||||||
+ "else authorGivenname "
|
|
||||||
+ "end asc");
|
|
||||||
} else {
|
|
||||||
publications.addOrder("case when (authors is null) "
|
|
||||||
+ "then 'zzzz' "
|
|
||||||
+ "else authors "
|
|
||||||
+ "end asc");
|
|
||||||
}
|
|
||||||
publications.addOrder("title");
|
publications.addOrder("title");
|
||||||
|
|
||||||
final DataQuery yearQuery = getData(orgaunit);
|
final DataQuery yearQuery = getData(orgaunit);
|
||||||
|
|
@ -220,7 +154,6 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
depPublicationsElem.newChildElement("noPublications");
|
depPublicationsElem.newChildElement("noPublications");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final Paginator paginator = new Paginator(request,
|
final Paginator paginator = new Paginator(request,
|
||||||
|
|
@ -244,22 +177,9 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
paginator.generateXml(depPublicationsElem);
|
paginator.generateXml(depPublicationsElem);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*final Element sortFieldsElem = depPublicationsElem.newChildElement(
|
|
||||||
"sortFields");
|
|
||||||
sortFieldsElem.addAttribute("sortBy", sortValue);
|
|
||||||
|
|
||||||
sortFieldsElem.newChildElement("sortField").addAttribute("label",
|
|
||||||
SORT_BY_AUTHOR);
|
|
||||||
sortFieldsElem.newChildElement("sortField").addAttribute("label",
|
|
||||||
SORT_BY_TITLE);
|
|
||||||
sortFieldsElem.newChildElement("sortField").addAttribute("label",
|
|
||||||
SORT_BY_YEAR_ASC);
|
|
||||||
sortFieldsElem.newChildElement("sortField").addAttribute("label",
|
|
||||||
SORT_BY_YEAR_DESC);*/
|
|
||||||
|
|
||||||
while (publications.next()) {
|
while (publications.next()) {
|
||||||
generatePublicationXml(
|
generatePublicationXml(
|
||||||
(BigDecimal) publications.get("publicationId"),
|
(BigDecimal) publications.get("id"),
|
||||||
(String) publications.get("objectType"),
|
(String) publications.get("objectType"),
|
||||||
depPublicationsElem,
|
depPublicationsElem,
|
||||||
state);
|
state);
|
||||||
|
|
@ -271,7 +191,7 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
System.currentTimeMillis() - start));
|
System.currentTimeMillis() - start));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DataQuery getData(final GenericOrganizationalUnit orgaunit) {
|
protected DataCollection getData(final GenericOrganizationalUnit orgaunit) {
|
||||||
final long start = System.currentTimeMillis();
|
final long start = System.currentTimeMillis();
|
||||||
|
|
||||||
if (!(orgaunit instanceof SciDepartment)) {
|
if (!(orgaunit instanceof SciDepartment)) {
|
||||||
|
|
@ -282,20 +202,11 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
orgaunit.getClass().getName()));
|
orgaunit.getClass().getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final DataQuery publicationBundlesQuery;
|
||||||
|
|
||||||
final DataQuery publicationsQuery;
|
publicationBundlesQuery =
|
||||||
if (config.getOneRowPerAuthor()) {
|
SessionManager.getSession().retrieveQuery(
|
||||||
publicationsQuery =
|
|
||||||
SessionManager.getSession().
|
|
||||||
retrieveQuery(
|
|
||||||
"com.arsdigita.cms.contenttypes.getIdsOfPublicationsForOrgaUnitOneRowPerAuthor");
|
|
||||||
} else {
|
|
||||||
publicationsQuery =
|
|
||||||
SessionManager.getSession().
|
|
||||||
retrieveQuery(
|
|
||||||
"com.arsdigita.cms.contenttypes.getIdsOfPublicationsForOrgaUnit");
|
"com.arsdigita.cms.contenttypes.getIdsOfPublicationsForOrgaUnit");
|
||||||
}
|
|
||||||
//final StringBuffer publicationsFilter = new StringBuffer();
|
|
||||||
final List<String> orgaunitIds = new ArrayList<String>();
|
final List<String> orgaunitIds = new ArrayList<String>();
|
||||||
|
|
||||||
if (config.isMergingPublications()) {
|
if (config.isMergingPublications()) {
|
||||||
|
|
@ -303,26 +214,47 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
SessionManager.getSession().retrieveQuery(
|
SessionManager.getSession().retrieveQuery(
|
||||||
"com.arsdigita.cms.contenttypes.getIdsOfSubordinateOrgaUnitsRecursivlyWithAssocType");
|
"com.arsdigita.cms.contenttypes.getIdsOfSubordinateOrgaUnitsRecursivlyWithAssocType");
|
||||||
subDepartmentsQuery.setParameter("orgaunitId",
|
subDepartmentsQuery.setParameter("orgaunitId",
|
||||||
orgaunit.getID().toString());
|
orgaunit.getContentBundle().getID().toString());
|
||||||
subDepartmentsQuery.setParameter("assocType",
|
subDepartmentsQuery.setParameter("assocType",
|
||||||
SciDepartmentSubDepartmentsStep.ASSOC_TYPE);
|
SciDepartmentSubDepartmentsStep.ASSOC_TYPE);
|
||||||
while (subDepartmentsQuery.next()) {
|
while (subDepartmentsQuery.next()) {
|
||||||
/*if (publicationsFilter.length() > 0) {
|
|
||||||
publicationsFilter.append(" or ");
|
|
||||||
}
|
|
||||||
publicationsFilter.append(String.format("orgaunitId = %s",
|
|
||||||
subDepartmentsQuery.get(
|
|
||||||
"orgaunitId").toString()));*/
|
|
||||||
orgaunitIds.add(subDepartmentsQuery.get("orgaunitId").toString());
|
orgaunitIds.add(subDepartmentsQuery.get("orgaunitId").toString());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//publicationsFilter.append(String.format("orgaunitId = %s",
|
|
||||||
// orgaunit.getID().toString()));
|
|
||||||
orgaunitIds.add(orgaunit.getID().toString());
|
orgaunitIds.add(orgaunit.getID().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
//publicationsQuery.addFilter(publicationsFilter.toString());
|
publicationBundlesQuery.setParameter("orgaunitIds", orgaunitIds);
|
||||||
publicationsQuery.setParameter("orgaunitIds", orgaunitIds);
|
|
||||||
|
final StringBuilder filterBuilder = new StringBuilder();
|
||||||
|
while (publicationBundlesQuery.next()) {
|
||||||
|
if (filterBuilder.length() > 0) {
|
||||||
|
filterBuilder.append(',');
|
||||||
|
}
|
||||||
|
filterBuilder.append(publicationBundlesQuery.get("publicationId").toString());
|
||||||
|
}
|
||||||
|
final DataCollection publicationsQuery = SessionManager.getSession().retrieve(
|
||||||
|
"com.arsdigita.cms.contenttypes.Publication");
|
||||||
|
|
||||||
|
if (filterBuilder.length() == 0) {
|
||||||
|
//No publications return null to indicate
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
publicationsQuery.addFilter(String.format("parent.id in (%s)", filterBuilder.toString()));
|
||||||
|
|
||||||
|
if (Kernel.getConfig().languageIndependentItems()) {
|
||||||
|
final FilterFactory filterFactory = publicationsQuery.getFilterFactory();
|
||||||
|
final Filter filter = filterFactory.or().
|
||||||
|
addFilter(filterFactory.equals("language", GlobalizationHelper.getNegotiatedLocale().getLanguage())).
|
||||||
|
addFilter(filterFactory.and().
|
||||||
|
addFilter(filterFactory.equals("language", GlobalizationHelper.LANG_INDEPENDENT)).
|
||||||
|
addFilter(filterFactory.notIn("parent", "com.arsdigita.navigation.getParentIDsOfMatchedItems").set(
|
||||||
|
"language", GlobalizationHelper.getNegotiatedLocale().getLanguage())));
|
||||||
|
publicationsQuery.addFilter(filter);
|
||||||
|
} else {
|
||||||
|
publicationsQuery.addEqualsFilter("language", GlobalizationHelper.getNegotiatedLocale().getLanguage());
|
||||||
|
}
|
||||||
|
|
||||||
logger.debug(String.format(
|
logger.debug(String.format(
|
||||||
"Got publications of department '%s'"
|
"Got publications of department '%s'"
|
||||||
|
|
@ -377,8 +309,8 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
final Element parent,
|
final Element parent,
|
||||||
final PageState state) {
|
final PageState state) {
|
||||||
final long start = System.currentTimeMillis();
|
final long start = System.currentTimeMillis();
|
||||||
final ContentPage publication = (ContentPage) DomainObjectFactory.
|
final ContentPage publication =
|
||||||
newInstance(new OID(objectType, publicationId));
|
(ContentPage) DomainObjectFactory.newInstance(new OID(objectType, publicationId));
|
||||||
logger.debug(String.format("Got domain object for publication '%s' "
|
logger.debug(String.format("Got domain object for publication '%s' "
|
||||||
+ "in %d ms.",
|
+ "in %d ms.",
|
||||||
publication.getName(),
|
publication.getName(),
|
||||||
|
|
@ -391,7 +323,7 @@ public class SciDepartmentPublicationsTab 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.setListMode(true);
|
||||||
generator.setItemElemName("publications", "");
|
generator.setItemElemName("publications", "");
|
||||||
generator.generateXML(state, parent, "");
|
generator.generateXML(state, parent, "");
|
||||||
logger.debug(String.format(
|
logger.debug(String.format(
|
||||||
|
|
@ -413,5 +345,6 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
|
||||||
protected ContentItem getContentItem(final PageState state) {
|
protected ContentItem getContentItem(final PageState state) {
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ public class SciDepartmentPublicationsTabConfig extends AbstractConfig {
|
||||||
private final Parameter pageSize;
|
private final Parameter pageSize;
|
||||||
private final Parameter enableSearchLimit;
|
private final Parameter enableSearchLimit;
|
||||||
private final Parameter mergePublications;
|
private final Parameter mergePublications;
|
||||||
private final Parameter oneRowPerAuthor;
|
|
||||||
|
|
||||||
public SciDepartmentPublicationsTabConfig() {
|
public SciDepartmentPublicationsTabConfig() {
|
||||||
greetingSize =
|
greetingSize =
|
||||||
|
|
@ -43,17 +42,10 @@ public class SciDepartmentPublicationsTabConfig extends AbstractConfig {
|
||||||
Parameter.REQUIRED,
|
Parameter.REQUIRED,
|
||||||
Boolean.TRUE);
|
Boolean.TRUE);
|
||||||
|
|
||||||
oneRowPerAuthor =
|
|
||||||
new BooleanParameter(
|
|
||||||
"com.arsdigita.cms.contenttypes.scidepartment.tabs.publications.one_row_per_author",
|
|
||||||
Parameter.REQUIRED,
|
|
||||||
Boolean.FALSE);
|
|
||||||
|
|
||||||
register(greetingSize);
|
register(greetingSize);
|
||||||
register(pageSize);
|
register(pageSize);
|
||||||
register(enableSearchLimit);
|
register(enableSearchLimit);
|
||||||
register(mergePublications);
|
register(mergePublications);
|
||||||
register(oneRowPerAuthor);
|
|
||||||
|
|
||||||
loadInfo();
|
loadInfo();
|
||||||
}
|
}
|
||||||
|
|
@ -73,8 +65,4 @@ public class SciDepartmentPublicationsTabConfig extends AbstractConfig {
|
||||||
public final boolean isMergingPublications() {
|
public final boolean isMergingPublications() {
|
||||||
return (Boolean) get(mergePublications);
|
return (Boolean) get(mergePublications);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final boolean getOneRowPerAuthor() {
|
|
||||||
return (Boolean) get(oneRowPerAuthor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ query getIdsOfProjectsOfOrgaUnit {
|
||||||
cms_items.name,
|
cms_items.name,
|
||||||
cms_organizationalunits_hierarchy_map.superior_orgaunit_id
|
cms_organizationalunits_hierarchy_map.superior_orgaunit_id
|
||||||
from ct_sci_project_bundles
|
from ct_sci_project_bundles
|
||||||
join cms_items on ct_sci_project_bundles.bundle_id = ct_sci_project_bundles.bundle_id
|
join cms_items on ct_sci_project_bundles.bundle_id = cms_items.item_id
|
||||||
join cms_organizationalunits_hierarchy_map on ct_sci_project_bundles.bundle_id = cms_organizationalunits_hierarchy_map.subordinate_orgaunit_id
|
join cms_organizationalunits_hierarchy_map on ct_sci_project_bundles.bundle_id = cms_organizationalunits_hierarchy_map.subordinate_orgaunit_id
|
||||||
where cms_organizationalunits_hierarchy_map.assoc_type = 'ProjectOf'
|
where cms_organizationalunits_hierarchy_map.assoc_type = 'ProjectOf'
|
||||||
and cms_organizationalunits_hierarchy_map.superior_orgaunit_id in :orgaunitIds
|
and cms_organizationalunits_hierarchy_map.superior_orgaunit_id in :orgaunitIds
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue