Fehler aufgrund der verschiedenen Restruktuierungen bei der XML-Erzeugung von SciProject behoben: Beim List-View wurden die Mitglieder des Projektes nicht ausgegeben.

git-svn-id: https://svn.libreccm.org/ccm/trunk@1666 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2012-05-19 12:07:50 +00:00
parent 9968caab6b
commit 30790c9e37
3 changed files with 57 additions and 72 deletions

View File

@ -2,7 +2,6 @@ package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ExtraXMLGenerator; import com.arsdigita.cms.ExtraXMLGenerator;
import com.arsdigita.cms.contenttypes.ui.SciProjectExtraXmlGenerator; import com.arsdigita.cms.contenttypes.ui.SciProjectExtraXmlGenerator;
import com.arsdigita.cms.contenttypes.ui.SciProjectListExtraXmlGenerator;
import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
@ -371,7 +370,7 @@ public class SciProject extends GenericOrganizationalUnit {
@Override @Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() { public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators(); final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators();
generators.add(new SciProjectListExtraXmlGenerator()); generators.add(new SciProjectExtraXmlGenerator());
return generators; return generators;
} }

View File

@ -1,7 +1,12 @@
package com.arsdigita.cms.contenttypes.ui; package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciProject; import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.contenttypes.SciProjectConfig; import com.arsdigita.cms.contenttypes.SciProjectConfig;
import com.arsdigita.xml.Element;
/** /**
* *
@ -11,9 +16,59 @@ import com.arsdigita.cms.contenttypes.SciProjectConfig;
public class SciProjectExtraXmlGenerator public class SciProjectExtraXmlGenerator
extends GenericOrgaUnitExtraXmlGenerator { extends GenericOrgaUnitExtraXmlGenerator {
private boolean listMode = false;
@Override
public void generateXML(final ContentItem item,
final Element element,
final PageState state) {
super.generateXML(item, element, state);
if (listMode) {
if (!(item instanceof SciProject)) {
throw new IllegalArgumentException(
"This ExtraXMLGenerator supports items of type "
+ "'com.arsdigita.cms.contenttypes.SciProject' only.");
}
final SciProject project = (SciProject) item;
final GenericOrganizationalUnitPersonCollection members = project.getPersons();
final Element membersElem = element.newChildElement("members");
while (members.next()) {
generateMemberXml(membersElem,
members.getPerson(),
members.getRoleName());
}
}
}
@Override @Override
public String getTabConfig() { public String getTabConfig() {
final SciProjectConfig config = SciProject.getConfig(); final SciProjectConfig config = SciProject.getConfig();
return config.getTabs(); return config.getTabs();
} }
@Override
public void setListMode(final boolean listMode) {
super.setListMode(listMode);
this.listMode = listMode;
}
private void generateMemberXml(final Element membersElem,
final GenericPerson member,
final String roleName) {
final Element memberElem = membersElem.newChildElement("member");
memberElem.addAttribute("role", roleName);
final Element surnameElem = memberElem.newChildElement("surname");
surnameElem.setText(member.getSurname());
final Element givenNameElem = memberElem.newChildElement("givenName");
givenNameElem.setText(member.getGivenName());
final Element titlePreElem = memberElem.newChildElement("titlePre");
titlePreElem.setText(member.getTitlePre());
final Element titlePostElem = memberElem.newChildElement("titlePost");
titlePostElem.setText(member.getTitlePost());
}
} }

View File

@ -1,69 +0,0 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ExtraXMLGenerator;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.xml.Element;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciProjectListExtraXmlGenerator implements ExtraXMLGenerator {
@Override
public void generateXML(final ContentItem item,
final Element element,
final PageState state) {
if (!(item instanceof SciProject)) {
throw new IllegalArgumentException(
"This ExtraXMLGenerator supports items of type "
+ "'com.arsdigita.cms.contenttypes.SciProject' only.");
}
final SciProject project = (SciProject) item;
final GenericOrganizationalUnitPersonCollection members = project.
getPersons();
final Element membersElem = element.newChildElement("members");
while (members.next()) {
generateMemberXml(membersElem,
members.getPerson(),
members.getRoleName());
}
}
@Override
public void addGlobalStateParams(final Page page) {
//Nothing for now
}
@Override
public void setListMode(final boolean listMode) {
//nothing
}
private void generateMemberXml(final Element membersElem,
final GenericPerson member,
final String roleName) {
final Element memberElem = membersElem.newChildElement("member");
memberElem.addAttribute("role", roleName);
final Element surnameElem = memberElem.newChildElement("surname");
surnameElem.setText(member.getSurname());
final Element givenNameElem = memberElem.newChildElement("givenName");
givenNameElem.setText(member.getGivenName());
final Element titlePreElem = memberElem.newChildElement("titlePre");
titlePreElem.setText(member.getTitlePre());
final Element titlePostElem = memberElem.newChildElement("titlePost");
titlePostElem.setText(member.getTitlePost());
}
}