diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/CompoundContentItemPanel.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/CompoundContentItemPanel.java index f7078ed1f..1c0c09df8 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/CompoundContentItemPanel.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/CompoundContentItemPanel.java @@ -200,7 +200,11 @@ public abstract class CompoundContentItemPanel } protected long getPaginatorEnd(final long begin, final long count) { - return begin + count; + long paginatorEnd = begin + count; + if (paginatorEnd < 0) { + paginatorEnd = 0; + } + return paginatorEnd; } protected void createPaginatorElement(final Element parent, @@ -373,7 +377,7 @@ public abstract class CompoundContentItemPanel if (!isVisible(state) || (item == null) || !(item.getClass().equals(getAllowedClass()))) { - s_log.debug("Skipping generate XML isVisible: " + isVisible( + s_log.warn("Skipping generate XML isVisible: " + isVisible( state) + " item " + (item == null ? null : item.getOID())); return; diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/SelectFilter.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/SelectFilter.java index d579eb31f..af4be49aa 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/SelectFilter.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/SelectFilter.java @@ -116,6 +116,11 @@ public class SelectFilter implements Filter { for (String optionStr : options) { optionElem = filter.newChildElement("option"); optionElem.addAttribute("label", optionStr); + if (propertyIsNumeric) { + optionElem.addAttribute("valueType", "number"); + } else { + optionElem.addAttribute("valueType", "text"); + } } } diff --git a/ccm-core/src/com/arsdigita/persistence/Initializer.java b/ccm-core/src/com/arsdigita/persistence/Initializer.java index 6ecdaa702..4a9ef2a47 100755 --- a/ccm-core/src/com/arsdigita/persistence/Initializer.java +++ b/ccm-core/src/com/arsdigita/persistence/Initializer.java @@ -51,7 +51,7 @@ public class Initializer extends com.arsdigita.runtime.GenericInitializer { // Finally the files out of the database TransactionContext txn = null; - try { + try { Session session = SessionManager.getSession(); txn = session.getTransactionContext(); txn.beginTxn(); @@ -116,6 +116,11 @@ public class Initializer extends com.arsdigita.runtime.GenericInitializer { //} txn.commitTxn(); + } catch(Exception ex) { + //jensp 2011-06-24: There was no catch Block for this try. This is + //an extremly BAD practicse!!! At least there should be a log output + //of the execption of debugging. + s_log.error("An exception occured in the init(DomainInitEvent) method: ", ex); } finally { if (txn != null && txn.inTxn()) { txn.abortTxn(); diff --git a/ccm-core/src/com/arsdigita/persistence/PooledConnectionSource.java b/ccm-core/src/com/arsdigita/persistence/PooledConnectionSource.java index 0fcd29c5b..52ee478eb 100755 --- a/ccm-core/src/com/arsdigita/persistence/PooledConnectionSource.java +++ b/ccm-core/src/com/arsdigita/persistence/PooledConnectionSource.java @@ -121,12 +121,13 @@ public class PooledConnectionSource implements ConnectionSource { s_connectionTags.put(result.toString(), tag(result)); m_connections.add(result); renameThread(result); + /** + * jensp 2011-06-18: Change to prevent connections from being + * in "idle in transaction" state. Such connections seam to + * cause problems (memory etc.) with PostgreSQL. + */ try { - /** - * jensp 2011-06-18: Change to prevent connections from being - * in "idle in transaction" state. Such connections seam to - * cause problems (memory etc.) with PostgreSQL. - */ + result.setAutoCommit(false); } catch (SQLException ex) { s_log.warn("Failed to set autocommit to false"); diff --git a/ccm-core/src/com/arsdigita/persistence/TransactionContext.java b/ccm-core/src/com/arsdigita/persistence/TransactionContext.java index a0e1a5187..dec1c9486 100755 --- a/ccm-core/src/com/arsdigita/persistence/TransactionContext.java +++ b/ccm-core/src/com/arsdigita/persistence/TransactionContext.java @@ -35,11 +35,10 @@ import org.apache.log4j.Logger; * @author rhs@mit.edu * @version $Id: TransactionContext.java 287 2005-02-22 00:29:02Z sskracic $ */ - public class TransactionContext { - private static final Logger s_cat = - Logger.getLogger(TransactionContext.class); + private static final Logger s_cat = + Logger.getLogger(TransactionContext.class); private Session m_ossn; // used in test infrastructure com.redhat.persistence.Session m_ssn; @@ -64,9 +63,8 @@ public class TransactionContext { * This should be a transparent behavior change introduced as a * performance optimization, SDM #159142. **/ - public void beginTxn() { - s_cat.debug("Beginning transaction..."); + s_cat.debug("Beginning transaction..."); // Do nothing. This is implicit now. if (m_inTxn) { throw new IllegalStateException("double begin"); @@ -81,8 +79,7 @@ public class TransactionContext { * * @post !inTxn() **/ - - public void commitTxn() { + public void commitTxn() { s_cat.debug("Commiting transaction..."); boolean success = false; try { @@ -93,13 +90,18 @@ public class TransactionContext { success = true; m_inTxn = false; fireCommitEvent(); - s_cat.debug("Done."); + s_cat.debug("Done."); + } catch (Exception ex) { + s_cat.error("Exception occured: ", ex); } finally { - s_cat.debug("Cleaning up..."); + s_cat.debug("Cleaning up..."); clearAttributes(); - if (!success) { m_ossn.invalidateDataObjects(false, true); } - if (m_inTxn) { - s_cat.warn("Warning: Cleanup after commit was reached, but m_inTxn is true."); + if (!success) { + m_ossn.invalidateDataObjects(false, true); + } + if (m_inTxn) { + s_cat.warn( + "Warning: Cleanup after commit was reached, but m_inTxn is true."); } } } @@ -120,7 +122,9 @@ public class TransactionContext { fireCommitEvent(); } finally { clearAttributes(); - if (!success) { m_ossn.invalidateDataObjects(false, true); } + if (!success) { + m_ossn.invalidateDataObjects(false, true); + } } } @@ -131,7 +135,6 @@ public class TransactionContext { * * @post !inTxn() **/ - public void abortTxn() { s_cat.warn("Aborting transaction..."); boolean success = false; @@ -145,7 +148,9 @@ public class TransactionContext { } success = true; } finally { - if (!success) { m_ossn.invalidateDataObjects(false, true); } + if (!success) { + m_ossn.invalidateDataObjects(false, true); + } fireAbortEvent(); clearAttributes(); } @@ -175,17 +180,16 @@ public class TransactionContext { * before the transaction */ private void fireBeforeCommitEvent() { - Assert.isTrue - (inTxn(), "The beforeCommit event was fired outside of " + - "the transaction"); + Assert.isTrue(inTxn(), "The beforeCommit event was fired outside of " + + "the transaction"); Object listeners[] = m_listeners.toArray(); - for (int i = 0 ; i < listeners.length ; i++) { - if (s_cat.isDebugEnabled()) { - s_cat.debug("Firing transaction beforeCommit event"); - } - TransactionListener listener = (TransactionListener)listeners[i]; + for (int i = 0; i < listeners.length; i++) { + if (s_cat.isDebugEnabled()) { + s_cat.debug("Firing transaction beforeCommit event"); + } + TransactionListener listener = (TransactionListener) listeners[i]; listener.beforeCommit(this); } } @@ -196,22 +200,22 @@ public class TransactionContext { * after the transaction */ private void fireCommitEvent() { - Assert.isTrue - (!inTxn(), "transaction commit event fired during transaction"); + Assert.isTrue(!inTxn(), + "transaction commit event fired during transaction"); Object listeners[] = m_listeners.toArray(); m_listeners.clear(); - for (int i = 0 ; i < listeners.length ; i++) { - if (s_cat.isDebugEnabled()) { - s_cat.debug("Firing transaction commit event"); - } - TransactionListener listener = (TransactionListener)listeners[i]; + for (int i = 0; i < listeners.length; i++) { + if (s_cat.isDebugEnabled()) { + s_cat.debug("Firing transaction commit event"); + } + TransactionListener listener = (TransactionListener) listeners[i]; listener.afterCommit(this); } - Assert.isTrue - (!inTxn(), "transaction commit listener didn't close transaction"); + Assert.isTrue(!inTxn(), + "transaction commit listener didn't close transaction"); } /* @@ -220,16 +224,15 @@ public class TransactionContext { * before the transaction */ private void fireBeforeAbortEvent() { - Assert.isTrue - (inTxn(), "The beforeAbort event was fired outside of " + - "the transaction"); + Assert.isTrue(inTxn(), "The beforeAbort event was fired outside of " + + "the transaction"); Object listeners[] = m_listeners.toArray(); - for (int i = 0 ; i < listeners.length ; i++) { - if (s_cat.isDebugEnabled()) { - s_cat.debug("Firing transaction beforeAbort event"); - } - TransactionListener listener = (TransactionListener)listeners[i]; + for (int i = 0; i < listeners.length; i++) { + if (s_cat.isDebugEnabled()) { + s_cat.debug("Firing transaction beforeAbort event"); + } + TransactionListener listener = (TransactionListener) listeners[i]; listener.beforeAbort(this); } } @@ -240,22 +243,22 @@ public class TransactionContext { * after the transaction */ private void fireAbortEvent() { - Assert.isTrue - (!inTxn(), "transaction abort event fired during transaction"); + Assert.isTrue(!inTxn(), + "transaction abort event fired during transaction"); Object listeners[] = m_listeners.toArray(); m_listeners.clear(); - for (int i = 0 ; i < listeners.length ; i++) { - if (s_cat.isDebugEnabled()) { - s_cat.debug("Firing transaction abort event"); - } - TransactionListener listener = (TransactionListener)listeners[i]; + for (int i = 0; i < listeners.length; i++) { + if (s_cat.isDebugEnabled()) { + s_cat.debug("Firing transaction abort event"); + } + TransactionListener listener = (TransactionListener) listeners[i]; listener.afterAbort(this); } - Assert.isTrue - (!inTxn(), "transaction abort listener didn't close transaction"); + Assert.isTrue(!inTxn(), + "transaction abort listener didn't close transaction"); } /** @@ -263,7 +266,6 @@ public class TransactionContext { * * @return True if a transaction is in progress, false otherwise. **/ - public boolean inTxn() { return m_inTxn; } @@ -275,11 +277,10 @@ public class TransactionContext { * * @return The isolation level of the current transaction. **/ - public int getTransactionIsolation() { try { Connection conn = m_ossn.getConnection(); - return conn.getTransactionIsolation(); + return conn.getTransactionIsolation(); } catch (SQLException e) { throw PersistenceException.newInstance(e); } @@ -296,7 +297,7 @@ public class TransactionContext { public void setTransactionIsolation(int level) { try { Connection conn = m_ossn.getConnection(); - conn.setTransactionIsolation(level); + conn.setTransactionIsolation(level); } catch (SQLException e) { throw PersistenceException.newInstance(e); } @@ -347,5 +348,4 @@ public class TransactionContext { void clearAttributes() { m_attrs.clear(); } - } diff --git a/ccm-sci-personalinformationpage/pdl/com/arsdigita/content-types/PersonalInformationPage.pdl b/ccm-sci-personalinformationpage/pdl/com/arsdigita/content-types/PersonalInformationPage.pdl index e95f4fcf1..244b0fc1a 100644 --- a/ccm-sci-personalinformationpage/pdl/com/arsdigita/content-types/PersonalInformationPage.pdl +++ b/ccm-sci-personalinformationpage/pdl/com/arsdigita/content-types/PersonalInformationPage.pdl @@ -5,7 +5,8 @@ import com.arsdigita.cms.*; object type PersonalInformationPage extends ContentPage { - + String homepageUrl = homepage_url VARCHAR(256); + reference key (ct_personal_information_pages.personal_information_page_id); } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/AuthorshipCollection.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/AuthorshipCollection.java index 3c10e8212..100fc94c3 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/AuthorshipCollection.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/AuthorshipCollection.java @@ -53,6 +53,7 @@ public class AuthorshipCollection extends DomainCollection { } public Boolean isEditor() { + System.out.printf("isEditor?\n"); return (Boolean) m_dataCollection.get(LINKEDITOR); } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalPropertyForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalPropertyForm.java index 9d880e56b..f4b724698 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalPropertyForm.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalPropertyForm.java @@ -76,8 +76,8 @@ public class ArticleInJournalPropertyForm ParameterModel volumeParam = new IntegerParameter(ArticleInJournal.VOLUME); TextField volume = new TextField(volumeParam); - volume.addValidationListener(new NotNullValidationListener()); - volume.addValidationListener(new NotEmptyValidationListener()); + //volume.addValidationListener(new NotNullValidationListener()); + //volume.addValidationListener(new NotEmptyValidationListener()); add(volume); add(new Label((String) PublicationGlobalizationUtil.globalize( diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationBasePanel.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationBasePanel.java index 19c995585..76de6c46d 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationBasePanel.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationBasePanel.java @@ -384,7 +384,9 @@ public abstract class SciOrganizationBasePanel Element title = projectElem.newChildElement("title"); title.setText(project.getTitle()); - + + Element beginElem = projectElem.newChildElement("projectbegin"); + if ((project.getAddendum() != null) && !(project.getAddendum().isEmpty())) { Element addendum = projectElem.newChildElement("addendum"); diff --git a/ccm-sci-types-organizationwithpublications/pdl/com/arsdigita/content-types/SciOrganizationWithPublications.pdl b/ccm-sci-types-organizationwithpublications/pdl/com/arsdigita/content-types/SciOrganizationWithPublications.pdl index 0332fad7b..5d3642ab1 100644 --- a/ccm-sci-types-organizationwithpublications/pdl/com/arsdigita/content-types/SciOrganizationWithPublications.pdl +++ b/ccm-sci-types-organizationwithpublications/pdl/com/arsdigita/content-types/SciOrganizationWithPublications.pdl @@ -60,3 +60,64 @@ query getAllYearsOfPublication { } } +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 getAllPublicationTypes { + + String objectType; + + do { + select distinct acs_objects.object_type + from ct_publications join acs_objects on ct_publications.publication_id = acs_objects.object_id + } map { + objectType = acs_objects.object_type; + } +} + +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; + } +} + +query getIdsOfProjectsOfSciMember { + BigDecimal projectId; + + do { + select ct_sciorga_projects.project_id + from ct_sciorga_projects join cms_organizationalunits_person_map on ct_sciorga_projects.project_id = cms_organizationalunits_person_map.organizationalunit_id + where cms_organizationalunits_person_map.person_id = :member + } map { + projectId = ct_sciorga_projects.project_id; + } +} diff --git a/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java index 353ef677c..d4f00f25c 100644 --- a/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java @@ -142,6 +142,8 @@ public class PublicationXmlHelper { publicationElem.addAttribute("oid", publication.getOID().toString()); publicationElem.addAttribute("version", publication.getVersion()); generateXmlElement(publicationElem, "title", publication.getTitle()); + System.out.printf("\n\npublication.oid = '%s'", publication.getOID()); + System.out.printf("publication.title = '%s'\n\n", publication.getTitle()); if (publication.getYearOfPublication() != null) { Element yearElem = publicationElem.newChildElement( "yearOfPublication"); @@ -159,7 +161,7 @@ public class PublicationXmlHelper { return; } - while (authors.next()) { + while (authors.next()) { Element authorsElem = publicationElem.newChildElement( "authors"); Element linkElem = authorsElem.newChildElement("link"); @@ -189,7 +191,7 @@ public class PublicationXmlHelper { (PublicationWithPublisher) publication; generatePublisherXml(publicationElem, pwp); - generateXmlElement(publicationElem, "misc", pwp.getISBN()); + generateXmlElement(publicationElem, "isbn", pwp.getISBN()); generateXmlElement(publicationElem, "volume", pwp.getVolume()); generateXmlElement(publicationElem, "numberOfVolumes", diff --git a/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciMemberDemoPanel.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciMemberDemoPanel.java new file mode 100644 index 000000000..bec7137d0 --- /dev/null +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciMemberDemoPanel.java @@ -0,0 +1,270 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.xml.Element; +import com.arsdigita.cms.contenttypes.SciMember; +import com.arsdigita.persistence.DataCollection; +import com.arsdigita.persistence.DataQuery; +import com.arsdigita.persistence.SessionManager; +import com.arsdigita.persistence.Session; +import com.arsdigita.domain.DomainCollection; +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.contenttypes.ui.panels.Filter; +import com.arsdigita.cms.contenttypes.ui.panels.TextFilter; +import com.arsdigita.cms.contenttypes.ui.panels.SelectFilter; +import com.arsdigita.cms.contenttypes.ui.panels.CollectionSortField; +import java.util.ArrayList; +import java.util.Map; +import java.util.LinkedHashMap; +import javax.servlet.http.HttpServletRequest; +import org.apache.log4j.Logger; + +/** + * + * @author Jens Pelzetter + */ +public class SciMemberDemoPanel extends CompoundContentItemPanel { + + private static final Logger logger = Logger.getLogger( + SciMemberDemoPanel.class); + private static final String SHOW_PUBLICATIONS = "publications"; + private static final String SHOW_PROJECTS = "projects"; + private static final String TITLE = "title"; + private static final String AUTHORS = "authors"; + private static final String YEAR_OF_PUBLICATION = "yearOfPublication"; + private static final String YEAR_ASC = "yearAsc"; + private static final String YEAR_DESC = "yearDesc"; + private static final String TYPE = "type"; + private String show; + private final Map filters = + new LinkedHashMap(); + private final Map sortFields = + new LinkedHashMap(); + private String sortByKey; + + public SciMemberDemoPanel() { + filters.put(TITLE, new TextFilter(TITLE, TITLE)); + filters.put(AUTHORS, new TextFilter(AUTHORS, "authors.surname")); + SelectFilter yearFilter = new SelectFilter(YEAR_OF_PUBLICATION, + YEAR_OF_PUBLICATION, + true, + true, + true, + true); + filters.put(YEAR_OF_PUBLICATION, yearFilter); + SelectFilter typeFilter = new SelectFilter(TYPE, + "objectType", + false, + true, + true, + false); + filters.put(TYPE, typeFilter); + sortFields.put(TITLE, + new CollectionSortField(TITLE, "title")); + sortFields.put(YEAR_ASC, + new CollectionSortField(YEAR_ASC, "year asc")); + sortFields.put(YEAR_DESC, + new CollectionSortField(YEAR_DESC, "year desc")); + } + + @Override + protected String getDefaultShowParam() { + return "publications"; + } + + @Override + protected Class getAllowedClass() { + return SciMember.class; + } + + protected void generatePublicationsXml(final SciMember member, + final Element parent, + final PageState state) { + + Element controls = parent.newChildElement("filterControls"); + controls.addAttribute("customName", "sciOrganizationPublications"); + controls.addAttribute("show", show); + + DataQuery yearQuery = + SessionManager.getSession().retrieveQuery( + "com.arsdigita.cms.contenttypes.getAllYearsOfPublicationForAuthor"); + yearQuery.setParameter("author", member.getID()); + ((SelectFilter) filters.get(YEAR_OF_PUBLICATION)).setDataQuery(yearQuery, + "yearOfPublication"); + DataQuery typeQuery = + SessionManager.getSession().retrieveQuery( + "com.arsdigita.cms.contenttypes.getAllPublicationTypesForAuthor"); + typeQuery.setParameter("author", member.getID()); + ((SelectFilter) filters.get(TYPE)).setDataQuery(typeQuery, "objectType"); + + DataCollection publicationsData = (DataCollection) member.get( + "publication"); + DomainCollection publications = new DomainCollection(publicationsData); +// publications.addOrder("yearOfPublication desc"); + + applyPublicationsFilter(publications, state.getRequest()); + applyPublicationSortFields(publications, state.getRequest()); + + long pageNumber = getPageNumber(state); + long pageCount = getPageCount(publications.size()); + long begin = getPaginatorBegin(pageNumber); + long count = getPaginatorCount(begin, publications.size()); + long end = getPaginatorEnd(begin, count); + pageNumber = normalizePageNumber(pageCount, pageNumber); + + generatePublicationFiltersXml(controls); + generatePublicationSortFieldsXml(controls); + createPaginatorElement(parent, pageNumber, pageCount, begin, end, count, + publications.size()); + System.out.printf("\n\n\npublications.size = %d\n", publications.size()); + if ((publications.size() <= 1) || publications.isEmpty()) { + return; + } + + if (publications.size() == 1) { + publications.setRange((int) begin, (int) end); + } else { + publications.setRange((int) begin + 1, (int) end); + } + + while (publications.next()) { + /*Publication publication = (Publication) DomainObjectFactory. + newInstance(publications.getDomainObject().getOID());*/ + PublicationXmlHelper xmlHelper = + new PublicationXmlHelper(parent, + (Publication) publications. + getDomainObject()); + xmlHelper.generateXml(); + } + } + + protected void generateProjectsXml(final SciMember member, + final Element parent, + final PageState state) { + /*DataCollection projectsData = (DataCollection) member.get("project"); + DomainCollection projects = new DomainCollection(projectsData); + projects.addOrder("title"); + + long pageNumber = getPageNumber(state); + long pageCount = getPageCount(projects.size()); + long begin = getPaginatorBegin(pageNumber); + long count = getPaginatorCount(begin, projects.size()); + long end = getPaginatorEnd(begin, count); + pageNumber = normalizePageNumber(pageCount, pageNumber); + + createPaginatorElement(parent, pageNumber, pageCount, begin, end, count, + projects.size());*/ + } + + protected void generatePublicationFiltersXml(final Element element) { + final Element filterElement = element.newChildElement("filters"); + + for (Map.Entry filterEntry : filters.entrySet()) { + filterEntry.getValue().generateXml(filterElement); + } + } + + protected void generatePublicationSortFieldsXml(final Element element) { + final Element sortFieldsElement = element.newChildElement("sortFields"); + sortFieldsElement.addAttribute("sortBy", sortByKey); + for (Map.Entry sortField : sortFields. + entrySet()) { + sortField.getValue().generateXml(sortFieldsElement); + } + } + + protected void applyPublicationsFilter(final DomainCollection publications, + final HttpServletRequest request) { + for (Map.Entry filterEntry : filters.entrySet()) { + String value = request.getParameter( + filterEntry.getValue().getLabel()); + + if ((value != null) && !(value.trim().isEmpty())) { + filterEntry.getValue().setValue(value); + } + } + + final StringBuilder filterBuilder = new StringBuilder(); + for (Map.Entry filterEntry : filters.entrySet()) { + if ((filterEntry.getValue().getFilter() == null) + || (filterEntry.getValue().getFilter().isEmpty())) { + continue; + } + + if (filterBuilder.length() > 0) { + filterBuilder.append(" AND "); + } + filterBuilder.append(filterEntry.getValue().getFilter()); + logger.debug(String.format("filters: %s", filterBuilder)); + if (filterBuilder.length() > 0) { + publications.addFilter(filterBuilder.toString()); + } + } + } + + protected void applyPublicationSortFields( + final DomainCollection publications, + final HttpServletRequest request) { + sortByKey = request.getParameter("sort"); + if (!sortFields.containsKey(sortByKey)) { + sortByKey = new ArrayList(sortFields.keySet()).get(0); + } + + publications.addOrder(sortFields.get(sortByKey).getField()); + } + + protected void generateAvailableDataXml(final SciMember member, + final Element element, + final PageState state) { + Session session = SessionManager.getSession(); + DataQuery hasPublicationsQuery = + session.retrieveQuery( + "com.arsdigita.cms.contenttypes.getIdsOfPublicationsOfSciMember"); + hasPublicationsQuery.setParameter("author", member.getID().toString()); + + if (hasPublicationsQuery.size() > 0) { + element.newChildElement("publications"); + } + hasPublicationsQuery.close(); + + DataQuery hasProjectsQuery = session.retrieveQuery( + "com.arsdigita.cms.contenttypes.getIdsOfProjectsOfSciMember"); + hasProjectsQuery.setParameter("member", member.getID().toString()); + + if (hasProjectsQuery.size() > 0) { + element.newChildElement("projects"); + } + hasProjectsQuery.close(); + + } + + public void generateDataXml(final SciMember member, + final Element element, + final PageState state) { + show = getShowParam(state); + + if (SHOW_PUBLICATIONS.equals(show)) { + generatePublicationsXml(member, element, state); + } else if (SHOW_PROJECTS.equals(show)) { + generateProjectsXml(member, element, state); + } + + } + + @Override + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + Element content = generateBaseXML(item, element, state); + + SciMember member = (SciMember) item; + Element availableData = content.newChildElement("availableData"); + + if (!(isShowOnlyDefault())) { + generateAvailableDataXml(member, availableData, state); + } + + generateDataXml(member, content, state); + } +} diff --git a/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsPanel.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsPanel.java index f16c28638..d12918f87 100644 --- a/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsPanel.java +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsPanel.java @@ -131,7 +131,7 @@ public class SciOrganizationWithPublicationsPanel extends SciOrganizationPanel { } public void setDisplayWorkingPapers(final boolean displayWorkingPapers) { - this.displayWorkingPapers = displayWorkingPapers; + this.displayWorkingPapers = displayWorkingPapers; } @Override diff --git a/ccm-zes-aplaws/bundles/devel/cfg/integration.properties b/ccm-zes-aplaws/bundles/devel/cfg/integration.properties index 2ccd3b08f..79cd57b7e 100644 --- a/ccm-zes-aplaws/bundles/devel/cfg/integration.properties +++ b/ccm-zes-aplaws/bundles/devel/cfg/integration.properties @@ -14,7 +14,7 @@ waf.dispatcher.default_expiry=3600 ; waf.kernel.data_permission_check_enabled=false waf.kernel.primary_user_identifier=email -; if you activate screen_name, forum loader doesn't work. +; if you activate screen_name, forum loader does not work. ; waf.kernel.primary_user_identifier=screen_name waf.kernel.supported_languages=de,en @@ -137,7 +137,7 @@ waf.admin.password=nge2015 waf.admin.password.question=12345 waf.admin.password.answer=6 -waf.runtime.jdbc_url=jdbc\:postgresql\://localhost/zes-test?user\=zes&password\=zes47web +waf.runtime.jdbc_url=jdbc\:postgresql\://localhost/zes?user\=zes&password\=zes47web&stringtype\=unspecified ; waf.runtime.jdbc_url=jdbc\:postgresql\://localhost/zes-testupd?user\=zes&password\=zes47web waf.runtime.jdbc_pool_size=30