From 019dc54b2b262b723ef53429d92444436596d6ca Mon Sep 17 00:00:00 2001 From: jensp Date: Sat, 23 Mar 2013 20:59:36 +0000 Subject: [PATCH] ExtraXMLGenerator for ccm-cms-types-simpleorganization git-svn-id: https://svn.libreccm.org/ccm/trunk@2104 8810af33-2d31-482b-a856-94f89814c4df --- .../cms/contenttypes/SimpleOrganization.java | 16 ++++ .../SimpleOrganizationExtraXmlGenerator.java | 73 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 ccm-cms-types-simpleorganization/src/com/arsdigita/cms/contenttypes/ui/SimpleOrganizationExtraXmlGenerator.java diff --git a/ccm-cms-types-simpleorganization/src/com/arsdigita/cms/contenttypes/SimpleOrganization.java b/ccm-cms-types-simpleorganization/src/com/arsdigita/cms/contenttypes/SimpleOrganization.java index 22f0513a5..3cfef1817 100644 --- a/ccm-cms-types-simpleorganization/src/com/arsdigita/cms/contenttypes/SimpleOrganization.java +++ b/ccm-cms-types-simpleorganization/src/com/arsdigita/cms/contenttypes/SimpleOrganization.java @@ -1,9 +1,12 @@ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ui.SimpleOrganizationExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; import java.math.BigDecimal; +import java.util.List; /** * @@ -34,4 +37,17 @@ public class SimpleOrganization extends GenericOrganizationalUnit { super(type); } + @Override + public List getExtraXMLGenerators() { + final List generators = super.getExtraListXMLGenerators(); + generators.add(new SimpleOrganizationExtraXmlGenerator()); + return generators; + } + + @Override + public List getExtraListXMLGenerators() { + final List generators = super.getExtraListXMLGenerators(); + generators.add(new SimpleOrganizationExtraXmlGenerator()); + return generators; + } } diff --git a/ccm-cms-types-simpleorganization/src/com/arsdigita/cms/contenttypes/ui/SimpleOrganizationExtraXmlGenerator.java b/ccm-cms-types-simpleorganization/src/com/arsdigita/cms/contenttypes/ui/SimpleOrganizationExtraXmlGenerator.java new file mode 100644 index 000000000..e2c449b16 --- /dev/null +++ b/ccm-cms-types-simpleorganization/src/com/arsdigita/cms/contenttypes/ui/SimpleOrganizationExtraXmlGenerator.java @@ -0,0 +1,73 @@ +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.GenericContact; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection; +import com.arsdigita.cms.contenttypes.SimpleOrganization; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class SimpleOrganizationExtraXmlGenerator implements ExtraXMLGenerator { + + private boolean listMode; + + public void generateXML(final ContentItem item, final Element element, final PageState state) { + if (!(item instanceof SimpleOrganization)) { + throw new IllegalArgumentException("The SimpleOrganizationExtraXMLGenerator can only process instances" + + "of SimpleOrganization."); + } + + final SimpleOrganization organization = (SimpleOrganization) item; + final GenericOrganizationalUnitContactCollection contacts = organization.getContacts(); + + final Element contactsElem = element.newChildElement("contacts"); + while (contacts.next()) { + final GenericContact contact = contacts.getContact(GlobalizationHelper.getNegotiatedLocale().getLanguage()); + generateContactXml(contactsElem, contact, contacts.getContactType(), state); + } + } + + private void generateContactXml(final Element contactsElem, + final GenericContact contact, + final String contactType, + final PageState state) { + //final long start = System.nanoTime(); + final XmlGenerator generator = new XmlGenerator(contact); + generator.setItemElemName("contact", ""); + generator.addItemAttribute("contactType", contactType); + generator.generateXML(state, contactsElem, ""); + //System.err.printf("Generated XML for a contact in %d ms\n", (System.nanoTime() - start) / 1000000); + } + + public void addGlobalStateParams(final Page page) { + //Nothing for now + } + + public void setListMode(final boolean listMode) { + this.listMode = listMode; + } + + 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; + } + + } +}