From 0bead44e82eccf1d2f5f7b7c3f1baf61fbf3631e Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 8 Jun 2011 12:14:27 +0000 Subject: [PATCH] =?UTF-8?q?-=20ccm-sci-types-organizationwithpublications?= =?UTF-8?q?=20fertiggestellt.=20-=20SciOrganizationPanel,=20SciDepartmentP?= =?UTF-8?q?anel=20um=20Filterformular=20f=C3=BCr=20Projekte=20erweitert=20?= =?UTF-8?q?-=20Allgemeine=20Hilfsklassen=20f=C3=BCr=20Integration=20von=20?= =?UTF-8?q?Filterformularen=20in=20von=20CompoundContentItemPanel=20abgele?= =?UTF-8?q?iteteten=20Klassen.=20-=20Default-Wert=20f=C3=BCr=20show-Parame?= =?UTF-8?q?ter=20kann=20bei=20CompoundContentItemPanel=20jetzt=20aus=20ein?= =?UTF-8?q?er=20JSP=20heraus=20=C3=BCberschrieben=20werden.=20Ebenso=20kan?= =?UTF-8?q?n=20die=20Anzeigen=20der=20verf=C3=BCgbaren=20Daten=20(die=20Re?= =?UTF-8?q?iter)=20aus=20einer=20JSP=20heraus=20deaktiviert=20werden.=20Da?= =?UTF-8?q?durch=20=20=20k=C3=B6nnen=20bestimmte=20Informationen=20z.B.=20?= =?UTF-8?q?aus=20einem=20SciOrganizationItem,=20z.B.=20die=20Publikationen?= =?UTF-8?q?,=20auch=20=C3=BCber=20einen=20Navigationspunkt=20(unter=20Verw?= =?UTF-8?q?endung=20einer=20speziellen=20JSP)=20angezeigt=20werden.=20-=20?= =?UTF-8?q?Die=20=C3=BCblichen=20Kleinigkeiten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@958 8810af33-2d31-482b-a856-94f89814c4df --- .../ui/CompoundContentItemPanel.java | 38 ++- .../ui/GenericOrganizationalUnitPanel.java | 94 ++++-- .../contenttypes/ui/panels/CompareFilter.java | 207 +++++++++++++ .../cms/contenttypes/ui/panels/Filter.java | 43 +++ .../contenttypes/ui/panels/SelectFilter.java | 153 ++++++++++ .../cms/contenttypes/ui/panels/SortField.java | 34 +++ .../contenttypes/ui/panels/TextFilter.java | 70 +++++ .../ui/object/CustomizableObjectList.java | 3 +- .../arsdigita/content-types/SciDepartment.pdl | 2 +- .../cms/contenttypes/SciOrganization.java | 5 +- .../contenttypes/ui/SciDepartmentPanel.java | 96 ++++-- .../contenttypes/ui/SciOrganizationPanel.java | 118 ++++++-- .../cms/contenttypes/ui/SciProjectPanel.java | 17 +- .../SciDepartmentWithPublications.pdl | 14 + .../SciOrganizationWithPublications.pdl | 34 ++- .../SciProjectWithPublications.pdl | 14 + .../SciDepartmentWithPublications.java | 106 ++++++- .../SciOrganizationWithPublications.java | 101 +++++++ ...SciOrganizationWithPublicationsConfig.java | 46 ++- ...ithPublicationsConfig_parameter.properties | 14 + .../SciProjectWithPublications.java | 93 +++++- .../SciPublicationAuthorComparator.java | 58 ++++ .../SciPublicationTitleComparator.java | 2 +- .../SciPublicationYearAscComparator.java | 30 ++ .../SciPublicationYearDescComparator.java | 28 ++ .../contenttypes/ui/PublicationXmlHelper.java | 10 +- .../SciDepartmentWithPublicationsPanel.java | 278 +++++++++++++++--- .../SciOrganizationWithPublicationsPanel.java | 267 ++++++++++++++--- .../ui/SciProjectWithPublicationsPanel.java | 129 +++++--- .../www/projects4homepages.jsp | 1 + .../www/publications4homepages.jsp | 3 +- 31 files changed, 1874 insertions(+), 234 deletions(-) create mode 100644 ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/CompareFilter.java create mode 100644 ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/Filter.java create mode 100644 ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/SelectFilter.java create mode 100644 ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/SortField.java create mode 100644 ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/TextFilter.java create mode 100644 ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciPublicationAuthorComparator.java create mode 100644 ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciPublicationYearAscComparator.java create mode 100644 ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciPublicationYearDescComparator.java 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 efc28df2b..f7078ed1f 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/CompoundContentItemPanel.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/CompoundContentItemPanel.java @@ -37,6 +37,7 @@ import com.arsdigita.web.URL; import com.arsdigita.web.Web; import com.arsdigita.xml.Element; import java.util.Iterator; +import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; /** @@ -61,6 +62,8 @@ public abstract class CompoundContentItemPanel * Parameter which indicates which page to show */ protected StringParameter m_show; + private String showDefault; + private boolean showOnlyDefault = false; private static final String PAGE_NUMBER = "pageNumber"; /** * Parameter for a paginator @@ -125,7 +128,7 @@ public abstract class CompoundContentItemPanel if (!context.hasContentItem()) { return null; } - return context.getContentItem(); + return context.getContentItem().getLiveVersion(); } else { return m_item; } @@ -151,7 +154,7 @@ public abstract class CompoundContentItemPanel resolved = bundle.getPrimaryInstance(); } - m_item = resolved; + m_item = resolved.getLiveVersion(); } else { m_item = item; } @@ -245,8 +248,28 @@ public abstract class CompoundContentItemPanel * * @return Default value for the show parameter. */ - protected abstract String getDefaultForShowParam(); + protected final String getDefaultForShowParam() { + if ((showDefault == null) || showDefault.isEmpty()) { + return getDefaultShowParam(); + } else { + return showDefault; + } + } + + public void setDefaultForShowParam(final String showDefault) { + this.showDefault = showDefault; + } + + protected abstract String getDefaultShowParam(); + public boolean isShowOnlyDefault() { + return showOnlyDefault; + } + + public void setShowOnlyDefault(final boolean showOnlyDefault) { + this.showOnlyDefault = showOnlyDefault; + } + protected String getShowParam(final PageState state) { String show; try { @@ -267,6 +290,15 @@ public abstract class CompoundContentItemPanel return show; } + + protected String getHttpParam(final String param, final PageState state) { + final HttpServletRequest request = state.getRequest(); + String value; + + value = request.getParameter(param); + + return value; + } protected long getPageNumber(final PageState state) { int pageNumber = 1; diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPanel.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPanel.java index db5d00c67..40746b9b4 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPanel.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPanel.java @@ -40,15 +40,15 @@ import org.apache.log4j.Logger; */ public class GenericOrganizationalUnitPanel extends CompoundContentItemPanel { - private final static Logger logger = Logger.getLogger(GenericOrganizationalUnit.class); - + private final static Logger logger = + Logger.getLogger(GenericOrganizationalUnit.class); public static final String SHOW_CONTACTS = "contacts"; public static final String SHOW_MEMBERS = "members"; private boolean displayContacts = true; private boolean displayMembers = true; @Override - protected String getDefaultForShowParam() { + protected String getDefaultShowParam() { return SHOW_CONTACTS; } @@ -75,7 +75,7 @@ public class GenericOrganizationalUnitPanel extends CompoundContentItemPanel { protected void generateContactsXML(GenericOrganizationalUnit orga, Element parent, PageState state) { - long start = System.currentTimeMillis(); + long start = System.currentTimeMillis(); GenericOrganizationalUnitContactCollection contacts; contacts = orga.getContacts(); @@ -97,12 +97,14 @@ public class GenericOrganizationalUnitPanel extends CompoundContentItemPanel { contact = contacts.getContact(); generateGenericContactXML(contact, - contactsElem, - state, - Integer.toString(contacts.getContactOrder()), - true); + contactsElem, + state, + Integer.toString( + contacts.getContactOrder()), + true); } - System.out.printf("Generated Contacts XML in %d ms.\n", System.currentTimeMillis() - start); + System.out.printf("Generated Contacts XML in %d ms.\n", System. + currentTimeMillis() - start); } protected void generateMembersXML(GenericOrganizationalUnit orga, @@ -162,12 +164,12 @@ public class GenericOrganizationalUnitPanel extends CompoundContentItemPanel { } } } - + protected void generateContactXML(final GenericContact contact, final Element parent, final PageState state, final String order, - final boolean withPerson) { + final boolean withPerson) { Element contactElem = parent.newChildElement("contact"); contactElem.addAttribute("order", order); @@ -249,43 +251,75 @@ public class GenericOrganizationalUnitPanel extends CompoundContentItemPanel { } protected void generateGenericContactXML(final GenericContact contact, - final Element parent, - final PageState state, - final String order, - final boolean withPerson) { + final Element parent, + final PageState state, + final String order, + final boolean withPerson) { ContactXmlLGenerator generator = new ContactXmlLGenerator(contact); - - generator.generateXML(state, parent, order); + + generator.generateXML(state, parent, order); } - @Override - public void generateXML(ContentItem item, Element element, - PageState state) { - Element content = generateBaseXML(item, element, state); - - Element availableData = content.newChildElement("availableData"); - - GenericOrganizationalUnit orga = (GenericOrganizationalUnit) item; - + protected void generateAvailableDataXml(final GenericOrganizationalUnit orga, + final Element element, + final PageState state) { if ((orga.getContacts() != null) && (orga.getContacts().size() > 0) && displayMembers) { - availableData.newChildElement("contacts"); + element.newChildElement("contacts"); } if ((orga.getPersons() != null) && (orga.getPersons().size() > 0) && displayMembers) { - availableData.newChildElement("members"); + element.newChildElement("members"); } + } + protected void generateDataXml(final GenericOrganizationalUnit orga, + final Element element, + final PageState state) { String show = getShowParam(state); if (SHOW_CONTACTS.equals(show)) { - generateContactsXML(orga, content, state); + generateContactsXML(orga, element, state); } else if (SHOW_MEMBERS.equals(show)) { - generateMembersXML(orga, content, state); + generateMembersXML(orga, element, state); } } + @Override + public void generateXML(ContentItem item, + Element element, + PageState state) { + Element content = generateBaseXML(item, element, state); + + GenericOrganizationalUnit orga = (GenericOrganizationalUnit) item; + Element availableData = content.newChildElement("availableData"); + + if (!isShowOnlyDefault()) { + generateAvailableDataXml(orga, availableData, state); + } + + generateDataXml(orga, content, state); + + /*if ((orga.getContacts() != null) + && (orga.getContacts().size() > 0) + && displayMembers) { + availableData.newChildElement("contacts"); + } + if ((orga.getPersons() != null) + && (orga.getPersons().size() > 0) + && displayMembers) { + availableData.newChildElement("members"); + } + + String show = getShowParam(state); + if (SHOW_CONTACTS.equals(show)) { + generateContactsXML(orga, content, state); + } else if (SHOW_MEMBERS.equals(show)) { + generateMembersXML(orga, content, state); + }*/ + } + private class ContactXmlLGenerator extends SimpleXMLGenerator { private GenericContact contact; diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/CompareFilter.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/CompareFilter.java new file mode 100644 index 000000000..70b4cb3e5 --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/CompareFilter.java @@ -0,0 +1,207 @@ +package com.arsdigita.cms.contenttypes.ui.panels; + +import com.arsdigita.xml.Element; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * The {@code CompareFilter} + * filters the object list using a provided value and a operator. Valid + * operators defined in the {@link Operators} enumeration. + * + * @author Jens Pelzetter + */ +public class CompareFilter implements Filter { + + private static final String ALL = "--ALL--"; + private final String property; + private final String label; + private final boolean allOption; + private final boolean allOptionIsDefault; + private final boolean propertyIsNumeric; + private Map options = new LinkedHashMap(); + private String value; + + public CompareFilter(final String label, + final String property, + final boolean allOption, + final boolean allOptionIsDefault, + final boolean propertyIsNumeric) { + this.property = property; + this.label = label; + this.allOption = allOption; + this.allOptionIsDefault = allOptionIsDefault; + this.propertyIsNumeric = propertyIsNumeric; + } + + @Override + public String getProperty() { + return property; + } + + @Override + public String getLabel() { + return label; + } + + public CompareFilter addOption(final String label, final String value) { + return addOption(label, Operators.EQ, value, false); + } + + public CompareFilter addOption(final String label, + final Operators operator, + final String value, + final boolean includeNull) { + Option option; + option = new Option(label, operator, value, includeNull); + options.put(label, option); + return this; + } + + public String getFilter() { + Option selectedOption; + StringBuffer filter; + + if ((value == null) || value.isEmpty()) { + if (allOptionIsDefault) { + value = ALL; + } else { + value = + new ArrayList