From b68d483a9d2726ac23036c471901ffd53aa1772f Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 8 Feb 2012 08:09:44 +0000 Subject: [PATCH] =?UTF-8?q?ExtraXmlGenerator=20f=C3=BCr=20SciMember,=20not?= =?UTF-8?q?wendig=20wegen=20neuer=20Assoziationsstruktur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@1497 8810af33-2d31-482b-a856-94f89814c4df --- .../arsdigita/cms/contenttypes/SciMember.java | 9 +++ .../SciMemberExtraXmlGenerator.java | 62 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 ccm-sci-types-member/src/com/arsdigita/cms/contenttypes/SciMemberExtraXmlGenerator.java diff --git a/ccm-sci-types-member/src/com/arsdigita/cms/contenttypes/SciMember.java b/ccm-sci-types-member/src/com/arsdigita/cms/contenttypes/SciMember.java index 904602095..e4960fefd 100644 --- a/ccm-sci-types-member/src/com/arsdigita/cms/contenttypes/SciMember.java +++ b/ccm-sci-types-member/src/com/arsdigita/cms/contenttypes/SciMember.java @@ -18,10 +18,12 @@ */ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ExtraXMLGenerator; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; import java.math.BigDecimal; +import java.util.List; /** * @@ -53,4 +55,11 @@ public class SciMember extends GenericPerson { super(type); } + @Override + public List getExtraXMLGenerators() { + final List generators = super.getExtraListXMLGenerators(); + generators.add(new SciMemberExtraXmlGenerator()); + return generators; + } + } diff --git a/ccm-sci-types-member/src/com/arsdigita/cms/contenttypes/SciMemberExtraXmlGenerator.java b/ccm-sci-types-member/src/com/arsdigita/cms/contenttypes/SciMemberExtraXmlGenerator.java new file mode 100644 index 000000000..fe4aa35a5 --- /dev/null +++ b/ccm-sci-types-member/src/com/arsdigita/cms/contenttypes/SciMemberExtraXmlGenerator.java @@ -0,0 +1,62 @@ +package com.arsdigita.cms.contenttypes; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.cms.dispatcher.XMLGenerator; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class SciMemberExtraXmlGenerator implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof SciMember)) { + throw new IllegalArgumentException( + "The SciMemberExtraXmlGenerator can only process " + + "instances of SciMember"); + } + + final SciMember member = (SciMember) item; + final GenericPersonContactCollection contacts = member.getContacts(); + + final Element contactsElem = element.newChildElement("contacts"); + while (contacts.next()) { + generateContactXml(contactsElem, contacts.getContact(), state); + } + } + + public void addGlobalStateParams(final Page page) { + //Nothing for now + } + + private void generateContactXml(final Element contactsElem, + final GenericContact contact, + final PageState state) { + final XmlGenerator generator = new XmlGenerator(contact); + generator.setItemElemName("contact", ""); + generator.addItemAttribute("contactType", contact.getContactType()); + generator.generateXML(state, contactsElem, ""); + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private ContentItem item; + + public XmlGenerator(final ContentItem item) { + this.item = item; + } + + @Override + public ContentItem getContentItem(final PageState state) { + return item; + } + } +}