diff --git a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CompareFilter.java b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CompareFilter.java index f8d2e9e3f..ebd7ffc8b 100644 --- a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CompareFilter.java +++ b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CompareFilter.java @@ -21,6 +21,7 @@ public class CompareFilter implements Filter { private final boolean allOption; private final boolean allOptionIsDefault; private final boolean propertyIsNumeric; + private final boolean includeNull; private Map options = new LinkedHashMap(); private String value; @@ -28,12 +29,14 @@ public class CompareFilter implements Filter { final String label, final boolean allOption, final boolean allOptionIsDefault, - final boolean propertyIsNumeric) { + final boolean propertyIsNumeric, + final boolean includeNull) { this.property = property; this.label = label; this.allOption = allOption; this.allOptionIsDefault = allOptionIsDefault; this.propertyIsNumeric = propertyIsNumeric; + this.includeNull = includeNull; } @Override @@ -109,6 +112,10 @@ public class CompareFilter implements Filter { filter.append(selectedOption.getValue()); filter.append('\''); } + + if (includeNull) { + filter.append(String.format(" or %s is null", property)); + } return filter.toString(); } diff --git a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CustomizableObjectList.java b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CustomizableObjectList.java index cd87dcdfa..5ab5b2644 100644 --- a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CustomizableObjectList.java +++ b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CustomizableObjectList.java @@ -142,14 +142,16 @@ public class CustomizableObjectList extends ComplexObjectList { final String label, final boolean allOption, final boolean allOptionIsDefault, - final boolean propertyIsNumeric) { + final boolean propertyIsNumeric, + final boolean includeNull) { CompareFilter filter; filter = new CompareFilter(property, label, allOption, allOptionIsDefault, - propertyIsNumeric); + propertyIsNumeric, + includeNull); filters.put(label, filter); return filter; diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPanel.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPanel.java index eea4591bd..426341a98 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPanel.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPanel.java @@ -32,8 +32,10 @@ import com.arsdigita.cms.contenttypes.SciOrganizationConfig; import com.arsdigita.cms.contenttypes.SciProject; import com.arsdigita.xml.Element; import java.util.Collections; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; +import java.util.Set; import org.apache.log4j.Logger; /** @@ -101,23 +103,27 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel { } protected boolean hasMembers(final SciDepartment department) { - return department.hasMembers(SciDepartment.getConfig().getOrganizationMembersMerge(), - SciDepartment.MemberStatus.ALL); + return department.hasMembers(SciDepartment.getConfig(). + getOrganizationMembersMerge(), + SciDepartment.MemberStatus.ALL); } - - protected boolean hasActiveMembers(final SciDepartment department) { - return department.hasMembers(SciDepartment.getConfig().getOrganizationMembersMerge(), - SciDepartment.MemberStatus.ACTIVE); + + protected boolean hasActiveMembers(final SciDepartment department) { + return department.hasMembers(SciDepartment.getConfig(). + getOrganizationMembersMerge(), + SciDepartment.MemberStatus.ACTIVE); } - - protected boolean hasAssociatedMembers(final SciDepartment department) { - return department.hasMembers(SciDepartment.getConfig().getOrganizationMembersMerge(), - SciDepartment.MemberStatus.ASSOCIATED); + + protected boolean hasAssociatedMembers(final SciDepartment department) { + return department.hasMembers(SciDepartment.getConfig(). + getOrganizationMembersMerge(), + SciDepartment.MemberStatus.ASSOCIATED); } - - protected boolean hasFormerMembers(final SciDepartment department) { - return department.hasMembers(SciDepartment.getConfig().getOrganizationMembersMerge(), - SciDepartment.MemberStatus.FORMER); + + protected boolean hasFormerMembers(final SciDepartment department) { + return department.hasMembers(SciDepartment.getConfig(). + getOrganizationMembersMerge(), + SciDepartment.MemberStatus.FORMER); } protected boolean hasProjects(final SciDepartment department) { @@ -133,7 +139,7 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel { } protected boolean hasFinishedProjects(final SciDepartment department) { - return department.hasProjects(SciDepartment.getConfig(). + return department.hasProjects(SciDepartment.getConfig(). getOrganizationProjectsMerge(), SciDepartment.ProjectStatus.FINISHED); } @@ -347,23 +353,30 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel { mergeProjects(subDepartments, projects, filters); - Collections.sort(projects, new SciProjectComparator()); + Set projectsSet; + List projectsWithoutDoubles; + projectsSet = new HashSet(projects); + projectsWithoutDoubles = new LinkedList(projectsSet); + + Collections.sort(projectsWithoutDoubles, new SciProjectComparator()); long pageNumber = getPageNumber(state); - long pageCount = getPageCount(projects.size()); + long pageCount = getPageCount(projectsWithoutDoubles.size()); long begin = getPaginatorBegin(pageNumber); - long count = getPaginatorCount(begin, projects.size()); + long count = getPaginatorCount(begin, projectsWithoutDoubles.size()); long end = getPaginatorEnd(begin, count); pageNumber = normalizePageNumber(pageCount, pageNumber); - createPaginatorElement( - parent, pageNumber, pageCount, begin, end, count, projects. - size()); - List projectsToShow = projects.subList((int) begin, + createPaginatorElement(parent, + pageNumber, + pageCount, + begin, + end, + count, + projectsWithoutDoubles.size()); + List projectsToShow = projectsWithoutDoubles.subList((int) begin, (int) end); - - Element projectsElem = parent.newChildElement("projects"); for (SciProject project : projectsToShow) { generateProjectXML(project, projectsElem, state); @@ -456,20 +469,20 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel { && displayProjects) { availableData.newChildElement("projects"); } - } else { + } else { if (hasOngoingProjects(department) && displayProjects) { availableData.newChildElement("projectsOngoing"); - } + } if (hasFinishedProjects(department) && displayProjects) { availableData.newChildElement("projectsFinished"); } } if (department.hasPublications() - && displayPublications) { + && displayPublications) { availableData.newChildElement("publications"); - } + } String show = getShowParam(state); diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPanel.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPanel.java index 5ccb95012..0d41d8987 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPanel.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPanel.java @@ -33,7 +33,6 @@ import com.arsdigita.cms.contenttypes.SciOrganizationConfig; import com.arsdigita.cms.contenttypes.SciOrganizationDepartmentsCollection; import com.arsdigita.cms.contenttypes.SciOrganizationProjectsCollection; import com.arsdigita.cms.contenttypes.SciProject; -import com.arsdigita.persistence.DataCollection; import com.arsdigita.xml.Element; import java.util.Collections; import java.util.HashSet; diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources.properties b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources.properties index a1f79a6d2..3f0c4e791 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources.properties +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources.properties @@ -177,3 +177,4 @@ scimember.ui.department.confirm_remove=Do you really want to remove this associa scimember.ui.project.confirm_remove=Do you really want to remove this association? scimember.ui.project.select_project=Project scimember.ui.projects.edit_assoc=Edit association +sciorganization.ui.project.description=Description of project diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources_de.properties b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources_de.properties index 25dabe5f2..5376c4f47 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources_de.properties +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources_de.properties @@ -177,3 +177,4 @@ scimember.ui.department.confirm_remove=Wollen Sie diese Verkn\u00fcpfung wirklic scimember.ui.project.confirm_remove=Wollen Sie diese Verkn\u00fcpfung wirklich entfernen? scimember.ui.project.select_project=Projekt scimember.ui.projects.edit_assoc=Verkn\u00fcpfung bearbeiten +sciorganization.ui.project.description=Projektbeschreibung