From 63892df1f49bac5d5f3ecc3477fd82293f9dd6e3 Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 18 Apr 2012 17:52:45 +0000 Subject: [PATCH] =?UTF-8?q?Erster=20Teil=20Feintuning=20XML-Ausgabe=20f?= =?UTF-8?q?=C3=BCr=20Sci-Typen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@1606 8810af33-2d31-482b-a856-94f89814c4df --- ...ublicPersonalProfileExtraXmlGenerator.java | 5 + .../ArticleSectionXMLGenerator.java | 5 + .../ui/mparticle/ArticleSectionPanel.java | 5 + .../SiteProxyExtraXMLGenerator.java | 6 + .../src/com/arsdigita/cms/ContentItem.java | 3 +- .../com/arsdigita/cms/ExtraXMLGenerator.java | 16 ++- .../cms/contenttypes/GenericContact.java | 7 ++ .../ui/GenericOrgaUnitExtraXmlGenerator.java | 10 ++ .../ui/GenericPersonExtraXmlGenerator.java | 74 +++++++++++ .../cms/dispatcher/SimpleXMLGenerator.java | 16 ++- .../cms/CMSDataCollectionRenderer.java | 1 + .../arsdigita/cms/contenttypes/Expertise.java | 115 ++++++++---------- .../cms/contenttypes/ExpertiseBundle.java | 4 +- .../cms/contenttypes/InternetArticle.java | 49 +++----- .../contenttypes/InternetArticleBundle.java | 4 +- ...cleInCollectedVolumeExtraXmlGenerator.java | 8 +- .../ui/ArticleInJournalExtraXmlGenerator.java | 6 + .../ui/CollectedVolumeExtraXmlGenerator.java | 30 +++-- .../ui/ExpertiseExtraXmlGenerator.java | 7 ++ .../ui/InProceedingsExtraXmlGenerator.java | 6 + .../ui/InternetArticleExtraXmlGenerator.java | 8 ++ .../ui/JournalExtraXmlGenerator.java | 29 +++-- .../ui/ProceedingsExtraXmlGenerator.java | 25 ++-- .../ui/PublicationAuthorAddForm.java | 13 +- .../ui/PublicationExtraXmlGenerator.java | 14 ++- ...icationWithPublisherExtraXmlGenerator.java | 5 + .../ui/UnPublishedExtraXmlGenerator.java | 6 + 27 files changed, 333 insertions(+), 144 deletions(-) create mode 100644 ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonExtraXmlGenerator.java diff --git a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfileExtraXmlGenerator.java b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfileExtraXmlGenerator.java index ba8929720..3726abfc8 100644 --- a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfileExtraXmlGenerator.java +++ b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfileExtraXmlGenerator.java @@ -183,6 +183,11 @@ public class PublicPersonalProfileExtraXmlGenerator implements ExtraXMLGenerator //Nothing yet } + @Override + public void setListMode(final boolean listMode) { + //nothing + } + private String getProfileUrl(final PublicPersonalProfile profile) { final GenericPerson owner = profile.getOwner(); final GenericPersonContactCollection contacts = owner.getContacts(); diff --git a/ccm-cms-types-mparticle/src/com/arsdigita/cms/contenttypes/ArticleSectionXMLGenerator.java b/ccm-cms-types-mparticle/src/com/arsdigita/cms/contenttypes/ArticleSectionXMLGenerator.java index 35b537ef1..46df7ae22 100644 --- a/ccm-cms-types-mparticle/src/com/arsdigita/cms/contenttypes/ArticleSectionXMLGenerator.java +++ b/ccm-cms-types-mparticle/src/com/arsdigita/cms/contenttypes/ArticleSectionXMLGenerator.java @@ -43,6 +43,11 @@ public class ArticleSectionXMLGenerator implements ExtraXMLGenerator { public void addGlobalStateParams(final Page page) { } + + @Override + public void setListMode(final boolean listMode) { + //nothing + } protected void generateSectionXML(final PageState state, final Element parent, diff --git a/ccm-cms-types-mparticle/src/com/arsdigita/cms/contenttypes/ui/mparticle/ArticleSectionPanel.java b/ccm-cms-types-mparticle/src/com/arsdigita/cms/contenttypes/ui/mparticle/ArticleSectionPanel.java index 14225aee9..e1e2a2074 100755 --- a/ccm-cms-types-mparticle/src/com/arsdigita/cms/contenttypes/ui/mparticle/ArticleSectionPanel.java +++ b/ccm-cms-types-mparticle/src/com/arsdigita/cms/contenttypes/ui/mparticle/ArticleSectionPanel.java @@ -84,6 +84,11 @@ public class ArticleSectionPanel extends SimpleComponent implements p.addGlobalStateParam(m_page); } + @Override + public void setListMode(final boolean listMode) { + //nothing + } + /** * Try to get the section from the context * if there isn't (eg if we are looking at an index diff --git a/ccm-cms-types-siteproxy/src/com/arsdigita/cms/contenttypes/SiteProxyExtraXMLGenerator.java b/ccm-cms-types-siteproxy/src/com/arsdigita/cms/contenttypes/SiteProxyExtraXMLGenerator.java index df674724b..63f90ac1c 100644 --- a/ccm-cms-types-siteproxy/src/com/arsdigita/cms/contenttypes/SiteProxyExtraXMLGenerator.java +++ b/ccm-cms-types-siteproxy/src/com/arsdigita/cms/contenttypes/SiteProxyExtraXMLGenerator.java @@ -84,9 +84,15 @@ public class SiteProxyExtraXMLGenerator implements ExtraXMLGenerator { } } + @Override public void addGlobalStateParams(final Page page) { } + @Override + public void setListMode(final boolean listMode) { + //nothing + } + private String passParameters(final HttpServletRequest request, final String url) { StringBuilder sb = new StringBuilder(url); diff --git a/ccm-cms/src/com/arsdigita/cms/ContentItem.java b/ccm-cms/src/com/arsdigita/cms/ContentItem.java index 80f8c7423..0668b18e9 100755 --- a/ccm-cms/src/com/arsdigita/cms/ContentItem.java +++ b/ccm-cms/src/com/arsdigita/cms/ContentItem.java @@ -1977,12 +1977,13 @@ public class ContentItem extends VersionedACSObject implements CustomCopy { DomainObject obj = DomainObjectFactory.newInstance(collection.getDataObject()); if (obj instanceof ContentItem) { final ContentItem item = (ContentItem) obj; + collection.close(); return item.copyReverseProperty(source, this, property, copier); } - } + } } } diff --git a/ccm-cms/src/com/arsdigita/cms/ExtraXMLGenerator.java b/ccm-cms/src/com/arsdigita/cms/ExtraXMLGenerator.java index 234a1032a..2a396c149 100755 --- a/ccm-cms/src/com/arsdigita/cms/ExtraXMLGenerator.java +++ b/ccm-cms/src/com/arsdigita/cms/ExtraXMLGenerator.java @@ -6,6 +6,7 @@ package com.arsdigita.cms; import com.arsdigita.bebop.Page; import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.xml.Element; /** @@ -27,7 +28,18 @@ public interface ExtraXMLGenerator { /** * Add all required global parameters. - * @param p The page which contains to item to render + * @param page The page which contains to item to render */ - public void addGlobalStateParams(Page p); + public void addGlobalStateParams(Page page); + + /** + * This method is called by the {@link SimpleXMLGenerator} to forward the + * value of the listMode property. This method may does nothing. In other + * cases it allows it to disable the output of some properties, for example + * to avoid endless loops (item a includes item b in its XML output and + * item b includes the XML output of item a). + * + * @param listMode + */ + public void setListMode(boolean listMode); } diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContact.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContact.java index e39368270..ecd04814b 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContact.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContact.java @@ -299,6 +299,7 @@ public class GenericContact extends ContentPage implements return null; } + @Override public void generateXML(ContentItem item, Element element, PageState state) { StringTokenizer keys = s_config.getContactEntryKeys(); @@ -308,10 +309,16 @@ public class GenericContact extends ContentPage implements } } + @Override public void addGlobalStateParams(Page p) { //Nothing } + @Override + public void setListMode(final boolean listMode) { + //Nothing + } + @Override public List getExtraXMLGenerators() { List generators = super.getExtraXMLGenerators(); diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrgaUnitExtraXmlGenerator.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrgaUnitExtraXmlGenerator.java index d7fbab3bf..a52b24a23 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrgaUnitExtraXmlGenerator.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrgaUnitExtraXmlGenerator.java @@ -38,6 +38,7 @@ public abstract class GenericOrgaUnitExtraXmlGenerator private final static Logger logger = Logger.getLogger( GenericOrgaUnitExtraXmlGenerator.class); + private boolean listMode = false; private final static String SELECTED_TAB_PARAM = "selectedTab"; private String showOnly; @@ -51,6 +52,10 @@ public abstract class GenericOrgaUnitExtraXmlGenerator + "only instances of GenericOrganizationalUnit only."); } + if (listMode) { + return; + } + final Element orgaUnitTabsElem = element.newChildElement("orgaUnitTabs"); final Element availableTabsElem = orgaUnitTabsElem.newChildElement( @@ -207,4 +212,9 @@ public abstract class GenericOrgaUnitExtraXmlGenerator public void addGlobalStateParams(final Page page) { //Nothing yet } + + @Override + public void setListMode(final boolean listMode) { + this.listMode = listMode; + } } diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonExtraXmlGenerator.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonExtraXmlGenerator.java new file mode 100644 index 000000000..ea23a07ec --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonExtraXmlGenerator.java @@ -0,0 +1,74 @@ +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.GenericPerson; +import com.arsdigita.cms.contenttypes.GenericPersonContactCollection; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class GenericPersonExtraXmlGenerator implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof GenericPerson)) { + throw new IllegalArgumentException( + "The GenericPersonExtraXmlGenerator can only process " + + "instances of GenericPerson"); + } + + final GenericPerson person = (GenericPerson) item; + final GenericPersonContactCollection contacts = person.getContacts(); + + final Element contactsElem = element.newChildElement("contacts"); + while (contacts.next()) { + generateContactXml( + contactsElem, + contacts.getContact(GlobalizationHelper.getNegotiatedLocale(). + getLanguage()), + state); + } + } + + 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, ""); + } + + public void addGlobalStateParams(final Page page) { + //Nothing + } + + @Override + public void setListMode(final boolean listMode) { + //nothing + } + + 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; + } + } +} diff --git a/ccm-cms/src/com/arsdigita/cms/dispatcher/SimpleXMLGenerator.java b/ccm-cms/src/com/arsdigita/cms/dispatcher/SimpleXMLGenerator.java index fdbea6e8c..0b43fec6d 100755 --- a/ccm-cms/src/com/arsdigita/cms/dispatcher/SimpleXMLGenerator.java +++ b/ccm-cms/src/com/arsdigita/cms/dispatcher/SimpleXMLGenerator.java @@ -69,6 +69,13 @@ public class SimpleXMLGenerator implements XMLGenerator { * your generator. */ private boolean useExtraXml = true; + /** + * jensp 2012-04-18: This value is forwarded to this ExtraXMLGenerators + * by calling {@link ExtraXMLGenerator#setListMode(boolean)}. The behavior + * triggered by this value depends on the specific implementation of + * the {@code ExtraXMLGenerator} + */ + private boolean listMode = false; /** * Extra attributes for the cms:item element. */ @@ -103,6 +110,10 @@ public class SimpleXMLGenerator implements XMLGenerator { this.useExtraXml = useExtraXml; } + public void setListMode(final boolean listMode) { + this.listMode = listMode; + } + public void addItemAttribute(final String name, final String value) { itemAttributes.put(name, value); @@ -207,6 +218,7 @@ public class SimpleXMLGenerator implements XMLGenerator { */ if (useExtraXml) { for (ExtraXMLGenerator generator : item.getExtraXMLGenerators()) { + generator.setListMode(listMode); generator.generateXML(item, content, state); } } @@ -273,8 +285,8 @@ public class SimpleXMLGenerator implements XMLGenerator { private Element startElement(String useContext, Element parent) { //Element element = new Element("cms:item", CMS.CMS_XML_NS); //final Element element = new Element(itemElemName, itemElemNs); - final Element element = parent.newChildElement("cms:item", - CMS.CMS_XML_NS); + final Element element = parent.newChildElement(itemElemName, + itemElemNs); if (useContext != null) { element.addAttribute("useContext", useContext); } diff --git a/ccm-navigation/src/com/arsdigita/navigation/cms/CMSDataCollectionRenderer.java b/ccm-navigation/src/com/arsdigita/navigation/cms/CMSDataCollectionRenderer.java index 7b000afb7..d63636740 100755 --- a/ccm-navigation/src/com/arsdigita/navigation/cms/CMSDataCollectionRenderer.java +++ b/ccm-navigation/src/com/arsdigita/navigation/cms/CMSDataCollectionRenderer.java @@ -80,6 +80,7 @@ public class CMSDataCollectionRenderer extends DataCollectionRenderer { final ContentItem contentItem = (ContentItem) obj; for(ExtraXMLGenerator generator : contentItem.getExtraListXMLGenerators()) { + generator.setListMode(true); generator.generateXML(contentItem, item, null); } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java index 1495d798c..f0e30b490 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java @@ -22,6 +22,7 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.cms.ExtraXMLGenerator; import com.arsdigita.cms.contenttypes.ui.ExpertiseExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.globalization.GlobalizationHelper; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; import java.math.BigDecimal; @@ -75,45 +76,43 @@ public class Expertise extends Publication { } public GenericOrganizationalUnit getOrganization() { - /*DataCollection collection; + final GenericOrganizationalUnitBundle bundle = getExpertiseBundle(). + getOrganization(); - collection = (DataCollection) get(ORGANIZATION); - - if (0 == collection.size()) { - return null; - } else { - DataObject dobj; - - collection.next(); - dobj = collection.getDataObject(); - collection.close(); - - return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj); - } */ - return (GenericOrganizationalUnit) getExpertiseBundle().getOrganization(). - getPrimaryInstance(); + if (bundle == null) { + return null; + } else { + return (GenericOrganizationalUnit) bundle.getPrimaryInstance(); + } } public GenericOrganizationalUnit getOrganization(final String language) { - return (GenericOrganizationalUnit) getExpertiseBundle().getOrganization(). - getInstance(language); + final GenericOrganizationalUnitBundle bundle = getExpertiseBundle(). + getOrganization(); + + if (bundle == null) { + return null; + } else { + return (GenericOrganizationalUnit) bundle.getInstance(GlobalizationHelper. + getNegotiatedLocale().getLanguage()); + } } public void setOrganization(final GenericOrganizationalUnit orga) { /*GenericOrganizationalUnit oldOrga; - oldOrga = getOrganization(); - if (oldOrga != null) { - remove(ORGANIZATION, oldOrga); - } + oldOrga = getOrganization(); + if (oldOrga != null) { + remove(ORGANIZATION, oldOrga); + } + + if (null != orga) { + Assert.exists(orga, GenericOrganizationalUnit.class); + DataObject link = add(ORGANIZATION, orga); + link.set("orgaOrder", 1); + link.save(); + }*/ - if (null != orga) { - Assert.exists(orga, GenericOrganizationalUnit.class); - DataObject link = add(ORGANIZATION, orga); - link.set("orgaOrder", 1); - link.save(); - }*/ - getExpertiseBundle().setOrganization(orga); } @@ -126,48 +125,32 @@ public class Expertise extends Publication { } public GenericOrganizationalUnit getOrderer() { - /*DataCollection collection; + final GenericOrganizationalUnitBundle bundle = getExpertiseBundle(). + getOrderer(); - collection = (DataCollection) get(ORDERER); - - if (0 == collection.size()) { + if (bundle == null) { return null; } else { - DataObject dobj; - - collection.next(); - dobj = collection.getDataObject(); - collection.close(); - - return (GenericOrganizationalUnit) DomainObjectFactory.newInstance( - dobj); - }*/ - - return (GenericOrganizationalUnit) getExpertiseBundle().getOrderer().getPrimaryInstance(); - } - - public GenericOrganizationalUnit getOrderer(final String language) { - return (GenericOrganizationalUnit) getExpertiseBundle().getOrderer().getInstance(language); - } - - public void setOrderer(final GenericOrganizationalUnit orderer) { - /*GenericOrganizationalUnit oldOrga; - - oldOrga = getOrganization(); - if (oldOrga != null) { - remove(ORDERER, oldOrga); + return (GenericOrganizationalUnit) bundle.getPrimaryInstance(); } + } - if (null != orderer) { - Assert.exists(orderer, GenericOrganizationalUnit.class); - DataObject link = add(ORDERER, orderer); - link.set("ordererOrder", 1); - link.save(); - }*/ - + public GenericOrganizationalUnit getOrderer(final String language) { + final GenericOrganizationalUnitBundle bundle = getExpertiseBundle(). + getOrderer(); + + if (bundle == null) { + return null; + } else { + return (GenericOrganizationalUnit) bundle.getInstance(GlobalizationHelper. + getNegotiatedLocale().getLanguage()); + } + } + + public void setOrderer(final GenericOrganizationalUnit orderer) { getExpertiseBundle().setOrderer(orderer); } - + @Override public List getExtraXMLGenerators() { final List generators = super. @@ -180,7 +163,9 @@ public class Expertise extends Publication { public List getExtraListXMLGenerators() { final List generators = super. getExtraListXMLGenerators(); - generators.add(new ExpertiseExtraXmlGenerator()); + final ExtraXMLGenerator generator = new ExpertiseExtraXmlGenerator(); + generator.setListMode(true); + generators.add(generator); return generators; } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseBundle.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseBundle.java index 13e8dc454..d78e1c0c6 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseBundle.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseBundle.java @@ -100,7 +100,7 @@ public class ExpertiseBundle extends PublicationBundle { if (orgaunitLive != null) { final DataObject link = add(ORGANIZATION, orgaunitLive); - link.set("orgaOrder", link.get("link.orgaOrder")); + link.set("orgaOrder", 1); link.save(); } @@ -117,7 +117,7 @@ public class ExpertiseBundle extends PublicationBundle { if (ordererLive != null) { final DataObject link = add(ORDERER, ordererLive); - link.set("ordererOrder", link.get("link.ordererOrder")); + link.set("ordererOrder", 1); link.save(); } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java index 86df65f55..bea017343 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java @@ -31,6 +31,7 @@ import java.util.List; /** * * @author Jens Pelzetter + * @version $Id$ */ public class InternetArticle extends Publication { @@ -81,44 +82,26 @@ public class InternetArticle extends Publication { } public GenericOrganizationalUnit getOrganization() { - /*DataCollection collection; - - collection = (DataCollection) get(ORGANIZATION); - - if (collection.size() == 0) { + final GenericOrganizationalUnitBundle bundle = getInternetArticleBundle().getOrganization(); + + if (bundle == null) { return null; } else { - DataObject dobj; - - collection.next(); - dobj = collection.getDataObject(); - collection.close(); - - return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj); - }*/ - - return (GenericOrganizationalUnit) getInternetArticleBundle().getOrganization().getPrimaryInstance(); + return (GenericOrganizationalUnit) bundle.getPrimaryInstance(); + } } public GenericOrganizationalUnit getOrganization(final String language) { - return (GenericOrganizationalUnit) getInternetArticleBundle().getOrganization().getInstance(language); + final GenericOrganizationalUnitBundle bundle = getInternetArticleBundle().getOrganization(); + + if (bundle == null) { + return null; + } else { + return (GenericOrganizationalUnit) bundle.getInstance(language); + } } - public void setOrganization(final GenericOrganizationalUnit orga) { - /*GenericOrganizationalUnit oldOrga; - - oldOrga = getOrganization(); - if(oldOrga != null) { - remove(ORGANIZATION, oldOrga); - } - - if (orga != null) { - Assert.exists(orga, GenericOrganizationalUnit.class); - DataObject link = add(ORGANIZATION, orga); - link.set("orgaOrder", 1); - link.save(); - }*/ - + public void setOrganization(final GenericOrganizationalUnit orga) { getInternetArticleBundle().setOrganization(orga); } @@ -204,7 +187,9 @@ public class InternetArticle extends Publication { @Override public List getExtraListXMLGenerators() { final List generators = super.getExtraListXMLGenerators(); - generators.add(new InternetArticleExtraXmlGenerator()); + final ExtraXMLGenerator generator = new InternetArticleExtraXmlGenerator(); + generator.setListMode(true); + generators.add(generator); return generators; } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticleBundle.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticleBundle.java index 142f7f3d8..d69603fc2 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticleBundle.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticleBundle.java @@ -91,7 +91,7 @@ public class InternetArticleBundle extends PublicationBundle { if (orgaunitLive != null) { final DataObject link = add(ORGANIZATION, orgaunitLive); - link.set("orgaOrder", link.get("link.orgaOrder")); + link.set("orgaOrder", 1); link.save(); } @@ -142,7 +142,7 @@ public class InternetArticleBundle extends PublicationBundle { final DataObject link = orgaBundle.add("internetArticle", liveInternetArticle); - link.set("orgaOrder", internetArticles.get("link.orderOrder")); + link.set("orgaOrder", 1); link.save(); } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInCollectedVolumeExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInCollectedVolumeExtraXmlGenerator.java index 2114c8f4a..6c5871b72 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInCollectedVolumeExtraXmlGenerator.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInCollectedVolumeExtraXmlGenerator.java @@ -39,7 +39,8 @@ public class ArticleInCollectedVolumeExtraXmlGenerator final CollectedVolume collectedVolume = article.getCollectedVolume(GlobalizationHelper.getNegotiatedLocale().getLanguage()); if (collectedVolume != null) { final XmlGenerator generator = new XmlGenerator(collectedVolume); - generator.setItemElemName("collectedVolume", ""); + generator.setItemElemName("collectedVolume", ""); + generator.setListMode(true); generator.generateXML(state, parent, ""); } } @@ -47,6 +48,11 @@ public class ArticleInCollectedVolumeExtraXmlGenerator public void addGlobalStateParams(final Page p) { //nothing } + + @Override + public void setListMode(final boolean listMode) { + //Nothing + } private class XmlGenerator extends SimpleXMLGenerator { diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalExtraXmlGenerator.java index dd40f3d5e..6f6feac24 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalExtraXmlGenerator.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalExtraXmlGenerator.java @@ -38,6 +38,7 @@ public class ArticleInJournalExtraXmlGenerator implements ExtraXMLGenerator { getNegotiatedLocale().getLanguage()); if (journal != null) { final XmlGenerator generator = new XmlGenerator(journal); + generator.setListMode(true); generator.setItemElemName("journal", ""); generator.generateXML(state, parent, ""); } @@ -46,6 +47,11 @@ public class ArticleInJournalExtraXmlGenerator implements ExtraXMLGenerator { public void addGlobalStateParams(final Page p) { //nothing } + + @Override + public void setListMode(final boolean listMode) { + //nothing + } private class XmlGenerator extends SimpleXMLGenerator { diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/CollectedVolumeExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/CollectedVolumeExtraXmlGenerator.java index 3600ca610..6e4ffca7b 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/CollectedVolumeExtraXmlGenerator.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/CollectedVolumeExtraXmlGenerator.java @@ -6,7 +6,6 @@ import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ExtraXMLGenerator; import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume; import com.arsdigita.cms.contenttypes.ArticleInCollectedVolumeCollection; -import com.arsdigita.cms.contenttypes.ArticleInJournal; import com.arsdigita.cms.contenttypes.CollectedVolume; import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.globalization.GlobalizationHelper; @@ -19,6 +18,8 @@ import com.arsdigita.xml.Element; */ public class CollectedVolumeExtraXmlGenerator implements ExtraXMLGenerator { + private boolean listMode = false; + public void generateXML(final ContentItem item, final Element element, final PageState state) { @@ -28,29 +29,33 @@ public class CollectedVolumeExtraXmlGenerator implements ExtraXMLGenerator { getClass().getName(), CollectedVolume.class.getName())); } - + final CollectedVolume collectedVolume = (CollectedVolume) item; - createArticlesXml(collectedVolume, element, state); + if (!listMode) { + createArticlesXml(collectedVolume, element, state); + } } - + private void createArticlesXml(final CollectedVolume collectedVolume, final Element parent, final PageState state) { - final ArticleInCollectedVolumeCollection articles = collectedVolume.getArticles(); + final ArticleInCollectedVolumeCollection articles = collectedVolume. + getArticles(); if ((articles == null) || articles.isEmpty()) { return; } - + final Element articlesElem = parent.newChildElement("articles"); - while(articles.next()) { - createArticleXml(articles.getArticle(GlobalizationHelper.getNegotiatedLocale().getLanguage()), + while (articles.next()) { + createArticleXml(articles.getArticle(GlobalizationHelper. + getNegotiatedLocale().getLanguage()), articles.getArticleOrder(), articlesElem, state); - + } } - + private void createArticleXml(final ArticleInCollectedVolume article, final Integer order, final Element articlesElem, @@ -65,6 +70,11 @@ public class CollectedVolumeExtraXmlGenerator implements ExtraXMLGenerator { //Nothing } + @Override + public void setListMode(final boolean listMode) { + this.listMode = listMode; + } + private class XmlGenerator extends SimpleXMLGenerator { private final ContentItem item; diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseExtraXmlGenerator.java index 55af93fc6..a1a300525 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseExtraXmlGenerator.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseExtraXmlGenerator.java @@ -40,6 +40,7 @@ public class ExpertiseExtraXmlGenerator implements ExtraXMLGenerator { getNegotiatedLocale().getLanguage()); if (orga != null) { final XmlGenerator generator = new XmlGenerator(orga); + generator.setListMode(true); generator.setItemElemName("organization", ""); generator.generateXML(state, parent, ""); } @@ -53,6 +54,7 @@ public class ExpertiseExtraXmlGenerator implements ExtraXMLGenerator { getNegotiatedLocale().getLanguage()); if (orderer != null) { final XmlGenerator generator = new XmlGenerator(orderer); + generator.setListMode(true); generator.setItemElemName("orderer", ""); generator.generateXML(state, parent, ""); } @@ -61,6 +63,11 @@ public class ExpertiseExtraXmlGenerator implements ExtraXMLGenerator { public void addGlobalStateParams(Page p) { //nothing } + + @Override + public void setListMode(final boolean listMode) { + //nothing + } private class XmlGenerator extends SimpleXMLGenerator { diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InProceedingsExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InProceedingsExtraXmlGenerator.java index 33c2eebdc..e37703a6f 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InProceedingsExtraXmlGenerator.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InProceedingsExtraXmlGenerator.java @@ -40,6 +40,7 @@ public class InProceedingsExtraXmlGenerator implements ExtraXMLGenerator { if (proceedings != null) { final XmlGenerator generator = new XmlGenerator(proceedings); generator.setItemElemName("proceedings", ""); + generator.setListMode(true); generator.generateXML(state, parent, ""); } } @@ -48,6 +49,11 @@ public class InProceedingsExtraXmlGenerator implements ExtraXMLGenerator { //nothing } + @Override + public void setListMode(final boolean listMode) { + //nothing + } + private class XmlGenerator extends SimpleXMLGenerator { private final ContentItem item; diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleExtraXmlGenerator.java index 62926e937..a3b17a003 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleExtraXmlGenerator.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleExtraXmlGenerator.java @@ -17,6 +17,8 @@ import com.arsdigita.xml.Element; */ public class InternetArticleExtraXmlGenerator implements ExtraXMLGenerator { + private boolean listMode = false; + public void generateXML(final ContentItem item, final Element element, final PageState state) { @@ -35,6 +37,11 @@ public class InternetArticleExtraXmlGenerator implements ExtraXMLGenerator { //nothing } + @Override + public void setListMode(final boolean listMode) { + this.listMode = true; + } + private void createOrganizationXml(final InternetArticle internetArticle, final Element parent, final PageState state) { @@ -44,6 +51,7 @@ public class InternetArticleExtraXmlGenerator implements ExtraXMLGenerator { if (orga != null) { final Element orgaElem = parent.newChildElement("organization"); final XmlGenerator generator = new XmlGenerator(orga); + generator.setListMode(listMode); generator.generateXML(state, orgaElem, ""); } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalExtraXmlGenerator.java index ca7a4abd8..97c156e48 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalExtraXmlGenerator.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalExtraXmlGenerator.java @@ -17,20 +17,24 @@ import com.arsdigita.xml.Element; */ public class JournalExtraXmlGenerator implements ExtraXMLGenerator { - public void generateXML(final ContentItem item, - final Element element, + private boolean listMode = false; + + public void generateXML(final ContentItem item, + final Element element, final PageState state) { if (!(item instanceof Journal)) { - throw new IllegalArgumentException(String.format( + throw new IllegalArgumentException(String.format( "ExtraXMLGenerator '%s' only supports items of type '%s'.", getClass().getName(), Journal.class.getName())); } - - final Journal journal = (Journal) item; - createArticlesXml(journal, element, state); + + if (!listMode) { + final Journal journal = (Journal) item; + createArticlesXml(journal, element, state); + } } - + private void createArticlesXml(final Journal journal, final Element parent, final PageState state) { @@ -38,16 +42,16 @@ public class JournalExtraXmlGenerator implements ExtraXMLGenerator { if ((articles == null) || articles.isEmpty()) { return; } - + final Element articlesElem = parent.newChildElement("articles"); - while(articles.next()) { + while (articles.next()) { createArticleXml(articles.getArticle(), articles.getArticleOrder(), articlesElem, state); } } - + private void createArticleXml(final ArticleInJournal article, final Integer order, final Element articlesElem, @@ -62,6 +66,11 @@ public class JournalExtraXmlGenerator implements ExtraXMLGenerator { //nothing } + @Override + public void setListMode(final boolean listMode) { + this.listMode = listMode; + } + private class XmlGenerator extends SimpleXMLGenerator { private final ContentItem item; diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsExtraXmlGenerator.java index 1cc0ebab9..c0b05b8c6 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsExtraXmlGenerator.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsExtraXmlGenerator.java @@ -8,7 +8,6 @@ import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; import com.arsdigita.cms.contenttypes.InProceedings; import com.arsdigita.cms.contenttypes.InProceedingsCollection; import com.arsdigita.cms.contenttypes.Proceedings; -import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.globalization.GlobalizationHelper; import com.arsdigita.xml.Element; @@ -20,6 +19,8 @@ import com.arsdigita.xml.Element; */ public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator { + private boolean listMode = false; + public void generateXML(final ContentItem item, final Element element, final PageState state) { @@ -32,7 +33,9 @@ public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator { final Proceedings proceedings = (Proceedings) item; createOrganizerXml(proceedings, element, state); - createPapersXml(proceedings, element, state); + if (!listMode) { + createPapersXml(proceedings, element, state); + } } private void createOrganizerXml(final Proceedings proceedings, @@ -41,7 +44,7 @@ public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator { final GenericOrganizationalUnit organizer = proceedings.getOrganizerOfConference(GlobalizationHelper. getNegotiatedLocale().getLanguage()); - if (organizer != null) { + if (organizer != null) { final XmlGenerator generator = new XmlGenerator(organizer); generator.setItemElemName("organizer", ""); generator.generateXML(state, parent, ""); @@ -55,16 +58,17 @@ public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator { if ((papers == null) || papers.isEmpty()) { return; } - + final Element papersElem = parent.newChildElement("papers"); - while(papers.next()) { - createPaperXml(papers.getPaper(GlobalizationHelper.getNegotiatedLocale().getLanguage()), + while (papers.next()) { + createPaperXml(papers.getPaper(GlobalizationHelper. + getNegotiatedLocale().getLanguage()), papers.getPaperOrder(), papersElem, state); } } - + private void createPaperXml(final InProceedings paper, final Integer order, final Element papersElem, @@ -74,11 +78,16 @@ public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator { generator.addItemAttribute("order", order.toString()); generator.generateXML(state, papersElem, ""); } - + public void addGlobalStateParams(final Page page) { //nothing } + @Override + public void setListMode(final boolean listMode) { + this.listMode = listMode; + } + private class XmlGenerator extends SimpleXMLGenerator { private final ContentItem item; diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorAddForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorAddForm.java index e1c597ee5..d836af6dd 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorAddForm.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorAddForm.java @@ -212,21 +212,20 @@ public class PublicationAuthorAddForm getSelectedAuthor(); editing = true; } - if (!(author.getContentBundle().hasInstance(publication.getLanguage(), + + /*if (!(author.getContentBundle().hasInstance(publication.getLanguage(), Kernel.getConfig(). languageIndependentItems()))) { data.addError( PublicationGlobalizationUtil.globalize( "publications.ui.authors.selectAuthor.no_suitable_language_variant")); return; - } + }*/ - if (!editing) { - author = (GenericPerson) author.getContentBundle().getInstance(publication. - getLanguage()); - AuthorshipCollection authors = publication.getAuthors(); + if (!editing) { + AuthorshipCollection authors = publication.getAuthors(); authors.addFilter( - String.format("id = %s", author.getID().toString())); + String.format("id = %s", author.getContentBundle().getID().toString())); if (authors.size() > 0) { data.addError(PublicationGlobalizationUtil.globalize( "publications.ui.authors.selectAuthor.already_added")); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationExtraXmlGenerator.java index 28c0da727..d6184d10c 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationExtraXmlGenerator.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationExtraXmlGenerator.java @@ -25,6 +25,8 @@ import java.util.List; */ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator { + private boolean listMode; + public void generateXML(final ContentItem item, final Element element, final PageState state) { @@ -43,8 +45,10 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator { final List formats = SciPublicationsExporters. getInstance().getSupportedFormats(); - for (PublicationFormat format : formats) { - createExportLink(format, element, (Publication) item, state); + if (!listMode) { + for (PublicationFormat format : formats) { + createExportLink(format, element, (Publication) item, state); + } } } @@ -75,6 +79,7 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator { generator.setItemElemName("author", ""); generator.addItemAttribute("isEditor", isAuthor.toString()); generator.addItemAttribute("order", order.toString()); + generator.setListMode(listMode); generator.generateXML(state, authorsElem, ""); } @@ -152,6 +157,11 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator { //Nothing for now } + @Override + public void setListMode(final boolean listMode) { + this.listMode = listMode; + } + private class XmlGenerator extends SimpleXMLGenerator { private final ContentItem item; diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherExtraXmlGenerator.java index b58fd21d2..7a02c4d05 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherExtraXmlGenerator.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherExtraXmlGenerator.java @@ -51,6 +51,11 @@ public class PublicationWithPublisherExtraXmlGenerator public void addGlobalStateParams(final Page p) { //nothing } + + @Override + public void setListMode(final boolean listMode) { + //nothing + } private class XmlGenerator extends SimpleXMLGenerator { diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedExtraXmlGenerator.java index 89a5e52df..04fbb2e55 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedExtraXmlGenerator.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedExtraXmlGenerator.java @@ -44,9 +44,15 @@ public class UnPublishedExtraXmlGenerator implements ExtraXMLGenerator { } } + @Override public void addGlobalStateParams(final Page page) { //nothing } + + @Override + public void setListMode(final boolean listMode) { + //nothing + } private class XmlGenerator extends SimpleXMLGenerator {