Verschiedene Fehlerkorrekturen, insbesondere für Ticket 452 Projekte der Abteilung: Einträge doppelt bzw. dreifach, an der Erzeugung der

Projektlisten.


git-svn-id: https://svn.libreccm.org/ccm/trunk@945 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-05-31 09:42:35 +00:00
parent cb104fde03
commit 37ada8557f
6 changed files with 55 additions and 32 deletions

View File

@ -21,6 +21,7 @@ public class CompareFilter implements Filter {
private final boolean allOption; private final boolean allOption;
private final boolean allOptionIsDefault; private final boolean allOptionIsDefault;
private final boolean propertyIsNumeric; private final boolean propertyIsNumeric;
private final boolean includeNull;
private Map<String, Option> options = new LinkedHashMap<String, Option>(); private Map<String, Option> options = new LinkedHashMap<String, Option>();
private String value; private String value;
@ -28,12 +29,14 @@ public class CompareFilter implements Filter {
final String label, final String label,
final boolean allOption, final boolean allOption,
final boolean allOptionIsDefault, final boolean allOptionIsDefault,
final boolean propertyIsNumeric) { final boolean propertyIsNumeric,
final boolean includeNull) {
this.property = property; this.property = property;
this.label = label; this.label = label;
this.allOption = allOption; this.allOption = allOption;
this.allOptionIsDefault = allOptionIsDefault; this.allOptionIsDefault = allOptionIsDefault;
this.propertyIsNumeric = propertyIsNumeric; this.propertyIsNumeric = propertyIsNumeric;
this.includeNull = includeNull;
} }
@Override @Override
@ -109,6 +112,10 @@ public class CompareFilter implements Filter {
filter.append(selectedOption.getValue()); filter.append(selectedOption.getValue());
filter.append('\''); filter.append('\'');
} }
if (includeNull) {
filter.append(String.format(" or %s is null", property));
}
return filter.toString(); return filter.toString();
} }

View File

@ -142,14 +142,16 @@ public class CustomizableObjectList extends ComplexObjectList {
final String label, final String label,
final boolean allOption, final boolean allOption,
final boolean allOptionIsDefault, final boolean allOptionIsDefault,
final boolean propertyIsNumeric) { final boolean propertyIsNumeric,
final boolean includeNull) {
CompareFilter filter; CompareFilter filter;
filter = new CompareFilter(property, filter = new CompareFilter(property,
label, label,
allOption, allOption,
allOptionIsDefault, allOptionIsDefault,
propertyIsNumeric); propertyIsNumeric,
includeNull);
filters.put(label, filter); filters.put(label, filter);
return filter; return filter;

View File

@ -32,8 +32,10 @@ import com.arsdigita.cms.contenttypes.SciOrganizationConfig;
import com.arsdigita.cms.contenttypes.SciProject; import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Set;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
/** /**
@ -101,23 +103,27 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel {
} }
protected boolean hasMembers(final SciDepartment department) { protected boolean hasMembers(final SciDepartment department) {
return department.hasMembers(SciDepartment.getConfig().getOrganizationMembersMerge(), return department.hasMembers(SciDepartment.getConfig().
SciDepartment.MemberStatus.ALL); getOrganizationMembersMerge(),
SciDepartment.MemberStatus.ALL);
} }
protected boolean hasActiveMembers(final SciDepartment department) { protected boolean hasActiveMembers(final SciDepartment department) {
return department.hasMembers(SciDepartment.getConfig().getOrganizationMembersMerge(), return department.hasMembers(SciDepartment.getConfig().
SciDepartment.MemberStatus.ACTIVE); getOrganizationMembersMerge(),
SciDepartment.MemberStatus.ACTIVE);
} }
protected boolean hasAssociatedMembers(final SciDepartment department) { protected boolean hasAssociatedMembers(final SciDepartment department) {
return department.hasMembers(SciDepartment.getConfig().getOrganizationMembersMerge(), return department.hasMembers(SciDepartment.getConfig().
SciDepartment.MemberStatus.ASSOCIATED); getOrganizationMembersMerge(),
SciDepartment.MemberStatus.ASSOCIATED);
} }
protected boolean hasFormerMembers(final SciDepartment department) { protected boolean hasFormerMembers(final SciDepartment department) {
return department.hasMembers(SciDepartment.getConfig().getOrganizationMembersMerge(), return department.hasMembers(SciDepartment.getConfig().
SciDepartment.MemberStatus.FORMER); getOrganizationMembersMerge(),
SciDepartment.MemberStatus.FORMER);
} }
protected boolean hasProjects(final SciDepartment department) { protected boolean hasProjects(final SciDepartment department) {
@ -133,7 +139,7 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel {
} }
protected boolean hasFinishedProjects(final SciDepartment department) { protected boolean hasFinishedProjects(final SciDepartment department) {
return department.hasProjects(SciDepartment.getConfig(). return department.hasProjects(SciDepartment.getConfig().
getOrganizationProjectsMerge(), getOrganizationProjectsMerge(),
SciDepartment.ProjectStatus.FINISHED); SciDepartment.ProjectStatus.FINISHED);
} }
@ -347,23 +353,30 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel {
mergeProjects(subDepartments, projects, filters); mergeProjects(subDepartments, projects, filters);
Collections.sort(projects, new SciProjectComparator()); Set<SciProject> projectsSet;
List<SciProject> projectsWithoutDoubles;
projectsSet = new HashSet<SciProject>(projects);
projectsWithoutDoubles = new LinkedList<SciProject>(projectsSet);
Collections.sort(projectsWithoutDoubles, new SciProjectComparator());
long pageNumber = getPageNumber(state); long pageNumber = getPageNumber(state);
long pageCount = getPageCount(projects.size()); long pageCount = getPageCount(projectsWithoutDoubles.size());
long begin = getPaginatorBegin(pageNumber); long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, projects.size()); long count = getPaginatorCount(begin, projectsWithoutDoubles.size());
long end = getPaginatorEnd(begin, count); long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber); pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement( createPaginatorElement(parent,
parent, pageNumber, pageCount, begin, end, count, projects. pageNumber,
size()); pageCount,
List<SciProject> projectsToShow = projects.subList((int) begin, begin,
end,
count,
projectsWithoutDoubles.size());
List<SciProject> projectsToShow = projectsWithoutDoubles.subList((int) begin,
(int) end); (int) end);
Element projectsElem = parent.newChildElement("projects"); Element projectsElem = parent.newChildElement("projects");
for (SciProject project : projectsToShow) { for (SciProject project : projectsToShow) {
generateProjectXML(project, projectsElem, state); generateProjectXML(project, projectsElem, state);
@ -456,20 +469,20 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel {
&& displayProjects) { && displayProjects) {
availableData.newChildElement("projects"); availableData.newChildElement("projects");
} }
} else { } else {
if (hasOngoingProjects(department) if (hasOngoingProjects(department)
&& displayProjects) { && displayProjects) {
availableData.newChildElement("projectsOngoing"); availableData.newChildElement("projectsOngoing");
} }
if (hasFinishedProjects(department) if (hasFinishedProjects(department)
&& displayProjects) { && displayProjects) {
availableData.newChildElement("projectsFinished"); availableData.newChildElement("projectsFinished");
} }
} }
if (department.hasPublications() if (department.hasPublications()
&& displayPublications) { && displayPublications) {
availableData.newChildElement("publications"); availableData.newChildElement("publications");
} }
String show = getShowParam(state); String show = getShowParam(state);

View File

@ -33,7 +33,6 @@ import com.arsdigita.cms.contenttypes.SciOrganizationConfig;
import com.arsdigita.cms.contenttypes.SciOrganizationDepartmentsCollection; import com.arsdigita.cms.contenttypes.SciOrganizationDepartmentsCollection;
import com.arsdigita.cms.contenttypes.SciOrganizationProjectsCollection; import com.arsdigita.cms.contenttypes.SciOrganizationProjectsCollection;
import com.arsdigita.cms.contenttypes.SciProject; import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;

View File

@ -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.confirm_remove=Do you really want to remove this association?
scimember.ui.project.select_project=Project scimember.ui.project.select_project=Project
scimember.ui.projects.edit_assoc=Edit association scimember.ui.projects.edit_assoc=Edit association
sciorganization.ui.project.description=Description of project

View File

@ -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.confirm_remove=Wollen Sie diese Verkn\u00fcpfung wirklich entfernen?
scimember.ui.project.select_project=Projekt scimember.ui.project.select_project=Projekt
scimember.ui.projects.edit_assoc=Verkn\u00fcpfung bearbeiten scimember.ui.projects.edit_assoc=Verkn\u00fcpfung bearbeiten
sciorganization.ui.project.description=Projektbeschreibung