ExtraXMLGenerator for ccm-cms-types-simpleorganization

git-svn-id: https://svn.libreccm.org/ccm/trunk@2104 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2013-03-23 20:59:36 +00:00
parent 3ff771bd1e
commit 019dc54b2b
2 changed files with 89 additions and 0 deletions

View File

@ -1,9 +1,12 @@
package com.arsdigita.cms.contenttypes; 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.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* *
@ -34,4 +37,17 @@ public class SimpleOrganization extends GenericOrganizationalUnit {
super(type); super(type);
} }
@Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators();
generators.add(new SimpleOrganizationExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators();
generators.add(new SimpleOrganizationExtraXmlGenerator());
return generators;
}
} }

View File

@ -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 <jens@jp-digital.de>
* @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;
}
}
}