Erster Teil Feintuning XML-Ausgabe für Sci-Typen

git-svn-id: https://svn.libreccm.org/ccm/trunk@1606 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2012-04-18 17:52:45 +00:00
parent 41b3d7316c
commit 63892df1f4
27 changed files with 333 additions and 144 deletions

View File

@ -183,6 +183,11 @@ public class PublicPersonalProfileExtraXmlGenerator implements ExtraXMLGenerator
//Nothing yet //Nothing yet
} }
@Override
public void setListMode(final boolean listMode) {
//nothing
}
private String getProfileUrl(final PublicPersonalProfile profile) { private String getProfileUrl(final PublicPersonalProfile profile) {
final GenericPerson owner = profile.getOwner(); final GenericPerson owner = profile.getOwner();
final GenericPersonContactCollection contacts = owner.getContacts(); final GenericPersonContactCollection contacts = owner.getContacts();

View File

@ -44,6 +44,11 @@ public class ArticleSectionXMLGenerator implements ExtraXMLGenerator {
public void addGlobalStateParams(final Page page) { public void addGlobalStateParams(final Page page) {
} }
@Override
public void setListMode(final boolean listMode) {
//nothing
}
protected void generateSectionXML(final PageState state, protected void generateSectionXML(final PageState state,
final Element parent, final Element parent,
final ContentItem section, final ContentItem section,

View File

@ -84,6 +84,11 @@ public class ArticleSectionPanel extends SimpleComponent implements
p.addGlobalStateParam(m_page); p.addGlobalStateParam(m_page);
} }
@Override
public void setListMode(final boolean listMode) {
//nothing
}
/** /**
* Try to get the section from the context * Try to get the section from the context
* if there isn't (eg if we are looking at an index * if there isn't (eg if we are looking at an index

View File

@ -84,9 +84,15 @@ public class SiteProxyExtraXMLGenerator implements ExtraXMLGenerator {
} }
} }
@Override
public void addGlobalStateParams(final Page page) { public void addGlobalStateParams(final Page page) {
} }
@Override
public void setListMode(final boolean listMode) {
//nothing
}
private String passParameters(final HttpServletRequest request, private String passParameters(final HttpServletRequest request,
final String url) { final String url) {
StringBuilder sb = new StringBuilder(url); StringBuilder sb = new StringBuilder(url);

View File

@ -1977,6 +1977,7 @@ public class ContentItem extends VersionedACSObject implements CustomCopy {
DomainObject obj = DomainObjectFactory.newInstance(collection.getDataObject()); DomainObject obj = DomainObjectFactory.newInstance(collection.getDataObject());
if (obj instanceof ContentItem) { if (obj instanceof ContentItem) {
final ContentItem item = (ContentItem) obj; final ContentItem item = (ContentItem) obj;
collection.close();
return item.copyReverseProperty(source, return item.copyReverseProperty(source,
this, this,
property, property,

View File

@ -6,6 +6,7 @@ package com.arsdigita.cms;
import com.arsdigita.bebop.Page; import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
/** /**
@ -27,7 +28,18 @@ public interface ExtraXMLGenerator {
/** /**
* Add all required global parameters. * 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);
} }

View File

@ -299,6 +299,7 @@ public class GenericContact extends ContentPage implements
return null; return null;
} }
@Override
public void generateXML(ContentItem item, Element element, PageState state) { public void generateXML(ContentItem item, Element element, PageState state) {
StringTokenizer keys = s_config.getContactEntryKeys(); StringTokenizer keys = s_config.getContactEntryKeys();
@ -308,10 +309,16 @@ public class GenericContact extends ContentPage implements
} }
} }
@Override
public void addGlobalStateParams(Page p) { public void addGlobalStateParams(Page p) {
//Nothing //Nothing
} }
@Override
public void setListMode(final boolean listMode) {
//Nothing
}
@Override @Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() { public List<ExtraXMLGenerator> getExtraXMLGenerators() {
List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators(); List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators();

View File

@ -38,6 +38,7 @@ public abstract class GenericOrgaUnitExtraXmlGenerator
private final static Logger logger = private final static Logger logger =
Logger.getLogger( Logger.getLogger(
GenericOrgaUnitExtraXmlGenerator.class); GenericOrgaUnitExtraXmlGenerator.class);
private boolean listMode = false;
private final static String SELECTED_TAB_PARAM = "selectedTab"; private final static String SELECTED_TAB_PARAM = "selectedTab";
private String showOnly; private String showOnly;
@ -51,6 +52,10 @@ public abstract class GenericOrgaUnitExtraXmlGenerator
+ "only instances of GenericOrganizationalUnit only."); + "only instances of GenericOrganizationalUnit only.");
} }
if (listMode) {
return;
}
final Element orgaUnitTabsElem = element.newChildElement("orgaUnitTabs"); final Element orgaUnitTabsElem = element.newChildElement("orgaUnitTabs");
final Element availableTabsElem = orgaUnitTabsElem.newChildElement( final Element availableTabsElem = orgaUnitTabsElem.newChildElement(
@ -207,4 +212,9 @@ public abstract class GenericOrgaUnitExtraXmlGenerator
public void addGlobalStateParams(final Page page) { public void addGlobalStateParams(final Page page) {
//Nothing yet //Nothing yet
} }
@Override
public void setListMode(final boolean listMode) {
this.listMode = listMode;
}
} }

View File

@ -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;
}
}
}

View File

@ -69,6 +69,13 @@ public class SimpleXMLGenerator implements XMLGenerator {
* your generator. * your generator.
*/ */
private boolean useExtraXml = true; 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. * Extra attributes for the cms:item element.
*/ */
@ -103,6 +110,10 @@ public class SimpleXMLGenerator implements XMLGenerator {
this.useExtraXml = useExtraXml; this.useExtraXml = useExtraXml;
} }
public void setListMode(final boolean listMode) {
this.listMode = listMode;
}
public void addItemAttribute(final String name, public void addItemAttribute(final String name,
final String value) { final String value) {
itemAttributes.put(name, value); itemAttributes.put(name, value);
@ -207,6 +218,7 @@ public class SimpleXMLGenerator implements XMLGenerator {
*/ */
if (useExtraXml) { if (useExtraXml) {
for (ExtraXMLGenerator generator : item.getExtraXMLGenerators()) { for (ExtraXMLGenerator generator : item.getExtraXMLGenerators()) {
generator.setListMode(listMode);
generator.generateXML(item, content, state); generator.generateXML(item, content, state);
} }
} }
@ -273,8 +285,8 @@ public class SimpleXMLGenerator implements XMLGenerator {
private Element startElement(String useContext, Element parent) { private Element startElement(String useContext, Element parent) {
//Element element = new Element("cms:item", CMS.CMS_XML_NS); //Element element = new Element("cms:item", CMS.CMS_XML_NS);
//final Element element = new Element(itemElemName, itemElemNs); //final Element element = new Element(itemElemName, itemElemNs);
final Element element = parent.newChildElement("cms:item", final Element element = parent.newChildElement(itemElemName,
CMS.CMS_XML_NS); itemElemNs);
if (useContext != null) { if (useContext != null) {
element.addAttribute("useContext", useContext); element.addAttribute("useContext", useContext);
} }

View File

@ -80,6 +80,7 @@ public class CMSDataCollectionRenderer extends DataCollectionRenderer {
final ContentItem contentItem = (ContentItem) obj; final ContentItem contentItem = (ContentItem) obj;
for(ExtraXMLGenerator generator : contentItem.getExtraListXMLGenerators()) { for(ExtraXMLGenerator generator : contentItem.getExtraListXMLGenerators()) {
generator.setListMode(true);
generator.generateXML(contentItem, item, null); generator.generateXML(contentItem, item, null);
} }

View File

@ -22,6 +22,7 @@ package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ExtraXMLGenerator; import com.arsdigita.cms.ExtraXMLGenerator;
import com.arsdigita.cms.contenttypes.ui.ExpertiseExtraXmlGenerator; import com.arsdigita.cms.contenttypes.ui.ExpertiseExtraXmlGenerator;
import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.globalization.GlobalizationHelper;
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;
@ -75,44 +76,42 @@ public class Expertise extends Publication {
} }
public GenericOrganizationalUnit getOrganization() { public GenericOrganizationalUnit getOrganization() {
/*DataCollection collection; final GenericOrganizationalUnitBundle bundle = getExpertiseBundle().
getOrganization();
collection = (DataCollection) get(ORGANIZATION); if (bundle == null) {
return null;
if (0 == collection.size()) { } else {
return null; return (GenericOrganizationalUnit) bundle.getPrimaryInstance();
} else { }
DataObject dobj;
collection.next();
dobj = collection.getDataObject();
collection.close();
return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj);
} */
return (GenericOrganizationalUnit) getExpertiseBundle().getOrganization().
getPrimaryInstance();
} }
public GenericOrganizationalUnit getOrganization(final String language) { public GenericOrganizationalUnit getOrganization(final String language) {
return (GenericOrganizationalUnit) getExpertiseBundle().getOrganization(). final GenericOrganizationalUnitBundle bundle = getExpertiseBundle().
getInstance(language); getOrganization();
if (bundle == null) {
return null;
} else {
return (GenericOrganizationalUnit) bundle.getInstance(GlobalizationHelper.
getNegotiatedLocale().getLanguage());
}
} }
public void setOrganization(final GenericOrganizationalUnit orga) { public void setOrganization(final GenericOrganizationalUnit orga) {
/*GenericOrganizationalUnit oldOrga; /*GenericOrganizationalUnit oldOrga;
oldOrga = getOrganization(); oldOrga = getOrganization();
if (oldOrga != null) { if (oldOrga != null) {
remove(ORGANIZATION, oldOrga); remove(ORGANIZATION, oldOrga);
} }
if (null != orga) { if (null != orga) {
Assert.exists(orga, GenericOrganizationalUnit.class); Assert.exists(orga, GenericOrganizationalUnit.class);
DataObject link = add(ORGANIZATION, orga); DataObject link = add(ORGANIZATION, orga);
link.set("orgaOrder", 1); link.set("orgaOrder", 1);
link.save(); link.save();
}*/ }*/
getExpertiseBundle().setOrganization(orga); getExpertiseBundle().setOrganization(orga);
} }
@ -126,45 +125,29 @@ public class Expertise extends Publication {
} }
public GenericOrganizationalUnit getOrderer() { public GenericOrganizationalUnit getOrderer() {
/*DataCollection collection; final GenericOrganizationalUnitBundle bundle = getExpertiseBundle().
getOrderer();
collection = (DataCollection) get(ORDERER); if (bundle == null) {
if (0 == collection.size()) {
return null; return null;
} else { } else {
DataObject dobj; return (GenericOrganizationalUnit) bundle.getPrimaryInstance();
}
collection.next();
dobj = collection.getDataObject();
collection.close();
return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(
dobj);
}*/
return (GenericOrganizationalUnit) getExpertiseBundle().getOrderer().getPrimaryInstance();
} }
public GenericOrganizationalUnit getOrderer(final String language) { public GenericOrganizationalUnit getOrderer(final String language) {
return (GenericOrganizationalUnit) getExpertiseBundle().getOrderer().getInstance(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) { public void setOrderer(final GenericOrganizationalUnit orderer) {
/*GenericOrganizationalUnit oldOrga;
oldOrga = getOrganization();
if (oldOrga != null) {
remove(ORDERER, oldOrga);
}
if (null != orderer) {
Assert.exists(orderer, GenericOrganizationalUnit.class);
DataObject link = add(ORDERER, orderer);
link.set("ordererOrder", 1);
link.save();
}*/
getExpertiseBundle().setOrderer(orderer); getExpertiseBundle().setOrderer(orderer);
} }
@ -180,7 +163,9 @@ public class Expertise extends Publication {
public List<ExtraXMLGenerator> getExtraListXMLGenerators() { public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super. final List<ExtraXMLGenerator> generators = super.
getExtraListXMLGenerators(); getExtraListXMLGenerators();
generators.add(new ExpertiseExtraXmlGenerator()); final ExtraXMLGenerator generator = new ExpertiseExtraXmlGenerator();
generator.setListMode(true);
generators.add(generator);
return generators; return generators;
} }
} }

View File

@ -100,7 +100,7 @@ public class ExpertiseBundle extends PublicationBundle {
if (orgaunitLive != null) { if (orgaunitLive != null) {
final DataObject link = add(ORGANIZATION, orgaunitLive); final DataObject link = add(ORGANIZATION, orgaunitLive);
link.set("orgaOrder", link.get("link.orgaOrder")); link.set("orgaOrder", 1);
link.save(); link.save();
} }
@ -117,7 +117,7 @@ public class ExpertiseBundle extends PublicationBundle {
if (ordererLive != null) { if (ordererLive != null) {
final DataObject link = add(ORDERER, ordererLive); final DataObject link = add(ORDERER, ordererLive);
link.set("ordererOrder", link.get("link.ordererOrder")); link.set("ordererOrder", 1);
link.save(); link.save();
} }

View File

@ -31,6 +31,7 @@ import java.util.List;
/** /**
* *
* @author Jens Pelzetter * @author Jens Pelzetter
* @version $Id$
*/ */
public class InternetArticle extends Publication { public class InternetArticle extends Publication {
@ -81,44 +82,26 @@ public class InternetArticle extends Publication {
} }
public GenericOrganizationalUnit getOrganization() { public GenericOrganizationalUnit getOrganization() {
/*DataCollection collection; final GenericOrganizationalUnitBundle bundle = getInternetArticleBundle().getOrganization();
collection = (DataCollection) get(ORGANIZATION); if (bundle == null) {
if (collection.size() == 0) {
return null; return null;
} else { } else {
DataObject dobj; return (GenericOrganizationalUnit) bundle.getPrimaryInstance();
}
collection.next();
dobj = collection.getDataObject();
collection.close();
return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj);
}*/
return (GenericOrganizationalUnit) getInternetArticleBundle().getOrganization().getPrimaryInstance();
} }
public GenericOrganizationalUnit getOrganization(final String language) { 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) { 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();
}*/
getInternetArticleBundle().setOrganization(orga); getInternetArticleBundle().setOrganization(orga);
} }
@ -204,7 +187,9 @@ public class InternetArticle extends Publication {
@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 InternetArticleExtraXmlGenerator()); final ExtraXMLGenerator generator = new InternetArticleExtraXmlGenerator();
generator.setListMode(true);
generators.add(generator);
return generators; return generators;
} }
} }

View File

@ -91,7 +91,7 @@ public class InternetArticleBundle extends PublicationBundle {
if (orgaunitLive != null) { if (orgaunitLive != null) {
final DataObject link = add(ORGANIZATION, orgaunitLive); final DataObject link = add(ORGANIZATION, orgaunitLive);
link.set("orgaOrder", link.get("link.orgaOrder")); link.set("orgaOrder", 1);
link.save(); link.save();
} }
@ -142,7 +142,7 @@ public class InternetArticleBundle extends PublicationBundle {
final DataObject link = orgaBundle.add("internetArticle", final DataObject link = orgaBundle.add("internetArticle",
liveInternetArticle); liveInternetArticle);
link.set("orgaOrder", internetArticles.get("link.orderOrder")); link.set("orgaOrder", 1);
link.save(); link.save();
} }

View File

@ -40,6 +40,7 @@ public class ArticleInCollectedVolumeExtraXmlGenerator
if (collectedVolume != null) { if (collectedVolume != null) {
final XmlGenerator generator = new XmlGenerator(collectedVolume); final XmlGenerator generator = new XmlGenerator(collectedVolume);
generator.setItemElemName("collectedVolume", ""); generator.setItemElemName("collectedVolume", "");
generator.setListMode(true);
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
} }
} }
@ -48,6 +49,11 @@ public class ArticleInCollectedVolumeExtraXmlGenerator
//nothing //nothing
} }
@Override
public void setListMode(final boolean listMode) {
//Nothing
}
private class XmlGenerator extends SimpleXMLGenerator { private class XmlGenerator extends SimpleXMLGenerator {
private final ContentItem item; private final ContentItem item;

View File

@ -38,6 +38,7 @@ public class ArticleInJournalExtraXmlGenerator implements ExtraXMLGenerator {
getNegotiatedLocale().getLanguage()); getNegotiatedLocale().getLanguage());
if (journal != null) { if (journal != null) {
final XmlGenerator generator = new XmlGenerator(journal); final XmlGenerator generator = new XmlGenerator(journal);
generator.setListMode(true);
generator.setItemElemName("journal", ""); generator.setItemElemName("journal", "");
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
} }
@ -47,6 +48,11 @@ public class ArticleInJournalExtraXmlGenerator implements ExtraXMLGenerator {
//nothing //nothing
} }
@Override
public void setListMode(final boolean listMode) {
//nothing
}
private class XmlGenerator extends SimpleXMLGenerator { private class XmlGenerator extends SimpleXMLGenerator {
private final ContentItem item; private final ContentItem item;

View File

@ -6,7 +6,6 @@ import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ExtraXMLGenerator; import com.arsdigita.cms.ExtraXMLGenerator;
import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume; import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume;
import com.arsdigita.cms.contenttypes.ArticleInCollectedVolumeCollection; import com.arsdigita.cms.contenttypes.ArticleInCollectedVolumeCollection;
import com.arsdigita.cms.contenttypes.ArticleInJournal;
import com.arsdigita.cms.contenttypes.CollectedVolume; import com.arsdigita.cms.contenttypes.CollectedVolume;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.globalization.GlobalizationHelper; import com.arsdigita.globalization.GlobalizationHelper;
@ -19,6 +18,8 @@ import com.arsdigita.xml.Element;
*/ */
public class CollectedVolumeExtraXmlGenerator implements ExtraXMLGenerator { public class CollectedVolumeExtraXmlGenerator implements ExtraXMLGenerator {
private boolean listMode = false;
public void generateXML(final ContentItem item, public void generateXML(final ContentItem item,
final Element element, final Element element,
final PageState state) { final PageState state) {
@ -30,20 +31,24 @@ public class CollectedVolumeExtraXmlGenerator implements ExtraXMLGenerator {
} }
final CollectedVolume collectedVolume = (CollectedVolume) item; final CollectedVolume collectedVolume = (CollectedVolume) item;
createArticlesXml(collectedVolume, element, state); if (!listMode) {
createArticlesXml(collectedVolume, element, state);
}
} }
private void createArticlesXml(final CollectedVolume collectedVolume, private void createArticlesXml(final CollectedVolume collectedVolume,
final Element parent, final Element parent,
final PageState state) { final PageState state) {
final ArticleInCollectedVolumeCollection articles = collectedVolume.getArticles(); final ArticleInCollectedVolumeCollection articles = collectedVolume.
getArticles();
if ((articles == null) || articles.isEmpty()) { if ((articles == null) || articles.isEmpty()) {
return; return;
} }
final Element articlesElem = parent.newChildElement("articles"); final Element articlesElem = parent.newChildElement("articles");
while(articles.next()) { while (articles.next()) {
createArticleXml(articles.getArticle(GlobalizationHelper.getNegotiatedLocale().getLanguage()), createArticleXml(articles.getArticle(GlobalizationHelper.
getNegotiatedLocale().getLanguage()),
articles.getArticleOrder(), articles.getArticleOrder(),
articlesElem, articlesElem,
state); state);
@ -65,6 +70,11 @@ public class CollectedVolumeExtraXmlGenerator implements ExtraXMLGenerator {
//Nothing //Nothing
} }
@Override
public void setListMode(final boolean listMode) {
this.listMode = listMode;
}
private class XmlGenerator extends SimpleXMLGenerator { private class XmlGenerator extends SimpleXMLGenerator {
private final ContentItem item; private final ContentItem item;

View File

@ -40,6 +40,7 @@ public class ExpertiseExtraXmlGenerator implements ExtraXMLGenerator {
getNegotiatedLocale().getLanguage()); getNegotiatedLocale().getLanguage());
if (orga != null) { if (orga != null) {
final XmlGenerator generator = new XmlGenerator(orga); final XmlGenerator generator = new XmlGenerator(orga);
generator.setListMode(true);
generator.setItemElemName("organization", ""); generator.setItemElemName("organization", "");
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
} }
@ -53,6 +54,7 @@ public class ExpertiseExtraXmlGenerator implements ExtraXMLGenerator {
getNegotiatedLocale().getLanguage()); getNegotiatedLocale().getLanguage());
if (orderer != null) { if (orderer != null) {
final XmlGenerator generator = new XmlGenerator(orderer); final XmlGenerator generator = new XmlGenerator(orderer);
generator.setListMode(true);
generator.setItemElemName("orderer", ""); generator.setItemElemName("orderer", "");
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
} }
@ -62,6 +64,11 @@ public class ExpertiseExtraXmlGenerator implements ExtraXMLGenerator {
//nothing //nothing
} }
@Override
public void setListMode(final boolean listMode) {
//nothing
}
private class XmlGenerator extends SimpleXMLGenerator { private class XmlGenerator extends SimpleXMLGenerator {
private final ContentItem item; private final ContentItem item;

View File

@ -40,6 +40,7 @@ public class InProceedingsExtraXmlGenerator implements ExtraXMLGenerator {
if (proceedings != null) { if (proceedings != null) {
final XmlGenerator generator = new XmlGenerator(proceedings); final XmlGenerator generator = new XmlGenerator(proceedings);
generator.setItemElemName("proceedings", ""); generator.setItemElemName("proceedings", "");
generator.setListMode(true);
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
} }
} }
@ -48,6 +49,11 @@ public class InProceedingsExtraXmlGenerator implements ExtraXMLGenerator {
//nothing //nothing
} }
@Override
public void setListMode(final boolean listMode) {
//nothing
}
private class XmlGenerator extends SimpleXMLGenerator { private class XmlGenerator extends SimpleXMLGenerator {
private final ContentItem item; private final ContentItem item;

View File

@ -17,6 +17,8 @@ import com.arsdigita.xml.Element;
*/ */
public class InternetArticleExtraXmlGenerator implements ExtraXMLGenerator { public class InternetArticleExtraXmlGenerator implements ExtraXMLGenerator {
private boolean listMode = false;
public void generateXML(final ContentItem item, public void generateXML(final ContentItem item,
final Element element, final Element element,
final PageState state) { final PageState state) {
@ -35,6 +37,11 @@ public class InternetArticleExtraXmlGenerator implements ExtraXMLGenerator {
//nothing //nothing
} }
@Override
public void setListMode(final boolean listMode) {
this.listMode = true;
}
private void createOrganizationXml(final InternetArticle internetArticle, private void createOrganizationXml(final InternetArticle internetArticle,
final Element parent, final Element parent,
final PageState state) { final PageState state) {
@ -44,6 +51,7 @@ public class InternetArticleExtraXmlGenerator implements ExtraXMLGenerator {
if (orga != null) { if (orga != null) {
final Element orgaElem = parent.newChildElement("organization"); final Element orgaElem = parent.newChildElement("organization");
final XmlGenerator generator = new XmlGenerator(orga); final XmlGenerator generator = new XmlGenerator(orga);
generator.setListMode(listMode);
generator.generateXML(state, orgaElem, ""); generator.generateXML(state, orgaElem, "");
} }
} }

View File

@ -17,18 +17,22 @@ import com.arsdigita.xml.Element;
*/ */
public class JournalExtraXmlGenerator implements ExtraXMLGenerator { public class JournalExtraXmlGenerator implements ExtraXMLGenerator {
private boolean listMode = false;
public void generateXML(final ContentItem item, public void generateXML(final ContentItem item,
final Element element, final Element element,
final PageState state) { final PageState state) {
if (!(item instanceof Journal)) { if (!(item instanceof Journal)) {
throw new IllegalArgumentException(String.format( throw new IllegalArgumentException(String.format(
"ExtraXMLGenerator '%s' only supports items of type '%s'.", "ExtraXMLGenerator '%s' only supports items of type '%s'.",
getClass().getName(), getClass().getName(),
Journal.class.getName())); Journal.class.getName()));
} }
final Journal journal = (Journal) item; if (!listMode) {
createArticlesXml(journal, element, state); final Journal journal = (Journal) item;
createArticlesXml(journal, element, state);
}
} }
private void createArticlesXml(final Journal journal, private void createArticlesXml(final Journal journal,
@ -40,7 +44,7 @@ public class JournalExtraXmlGenerator implements ExtraXMLGenerator {
} }
final Element articlesElem = parent.newChildElement("articles"); final Element articlesElem = parent.newChildElement("articles");
while(articles.next()) { while (articles.next()) {
createArticleXml(articles.getArticle(), createArticleXml(articles.getArticle(),
articles.getArticleOrder(), articles.getArticleOrder(),
articlesElem, articlesElem,
@ -62,6 +66,11 @@ public class JournalExtraXmlGenerator implements ExtraXMLGenerator {
//nothing //nothing
} }
@Override
public void setListMode(final boolean listMode) {
this.listMode = listMode;
}
private class XmlGenerator extends SimpleXMLGenerator { private class XmlGenerator extends SimpleXMLGenerator {
private final ContentItem item; private final ContentItem item;

View File

@ -8,7 +8,6 @@ import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.InProceedings; import com.arsdigita.cms.contenttypes.InProceedings;
import com.arsdigita.cms.contenttypes.InProceedingsCollection; import com.arsdigita.cms.contenttypes.InProceedingsCollection;
import com.arsdigita.cms.contenttypes.Proceedings; import com.arsdigita.cms.contenttypes.Proceedings;
import com.arsdigita.cms.contenttypes.Publication;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.globalization.GlobalizationHelper; import com.arsdigita.globalization.GlobalizationHelper;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
@ -20,6 +19,8 @@ import com.arsdigita.xml.Element;
*/ */
public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator { public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator {
private boolean listMode = false;
public void generateXML(final ContentItem item, public void generateXML(final ContentItem item,
final Element element, final Element element,
final PageState state) { final PageState state) {
@ -32,7 +33,9 @@ public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator {
final Proceedings proceedings = (Proceedings) item; final Proceedings proceedings = (Proceedings) item;
createOrganizerXml(proceedings, element, state); createOrganizerXml(proceedings, element, state);
createPapersXml(proceedings, element, state); if (!listMode) {
createPapersXml(proceedings, element, state);
}
} }
private void createOrganizerXml(final Proceedings proceedings, private void createOrganizerXml(final Proceedings proceedings,
@ -57,8 +60,9 @@ public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator {
} }
final Element papersElem = parent.newChildElement("papers"); final Element papersElem = parent.newChildElement("papers");
while(papers.next()) { while (papers.next()) {
createPaperXml(papers.getPaper(GlobalizationHelper.getNegotiatedLocale().getLanguage()), createPaperXml(papers.getPaper(GlobalizationHelper.
getNegotiatedLocale().getLanguage()),
papers.getPaperOrder(), papers.getPaperOrder(),
papersElem, papersElem,
state); state);
@ -79,6 +83,11 @@ public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator {
//nothing //nothing
} }
@Override
public void setListMode(final boolean listMode) {
this.listMode = listMode;
}
private class XmlGenerator extends SimpleXMLGenerator { private class XmlGenerator extends SimpleXMLGenerator {
private final ContentItem item; private final ContentItem item;

View File

@ -212,21 +212,20 @@ public class PublicationAuthorAddForm
getSelectedAuthor(); getSelectedAuthor();
editing = true; editing = true;
} }
if (!(author.getContentBundle().hasInstance(publication.getLanguage(),
/*if (!(author.getContentBundle().hasInstance(publication.getLanguage(),
Kernel.getConfig(). Kernel.getConfig().
languageIndependentItems()))) { languageIndependentItems()))) {
data.addError( data.addError(
PublicationGlobalizationUtil.globalize( PublicationGlobalizationUtil.globalize(
"publications.ui.authors.selectAuthor.no_suitable_language_variant")); "publications.ui.authors.selectAuthor.no_suitable_language_variant"));
return; return;
} }*/
if (!editing) { if (!editing) {
author = (GenericPerson) author.getContentBundle().getInstance(publication.
getLanguage());
AuthorshipCollection authors = publication.getAuthors(); AuthorshipCollection authors = publication.getAuthors();
authors.addFilter( authors.addFilter(
String.format("id = %s", author.getID().toString())); String.format("id = %s", author.getContentBundle().getID().toString()));
if (authors.size() > 0) { if (authors.size() > 0) {
data.addError(PublicationGlobalizationUtil.globalize( data.addError(PublicationGlobalizationUtil.globalize(
"publications.ui.authors.selectAuthor.already_added")); "publications.ui.authors.selectAuthor.already_added"));

View File

@ -25,6 +25,8 @@ import java.util.List;
*/ */
public class PublicationExtraXmlGenerator implements ExtraXMLGenerator { public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
private boolean listMode;
public void generateXML(final ContentItem item, public void generateXML(final ContentItem item,
final Element element, final Element element,
final PageState state) { final PageState state) {
@ -43,8 +45,10 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
final List<PublicationFormat> formats = SciPublicationsExporters. final List<PublicationFormat> formats = SciPublicationsExporters.
getInstance().getSupportedFormats(); getInstance().getSupportedFormats();
for (PublicationFormat format : formats) { if (!listMode) {
createExportLink(format, element, (Publication) item, state); for (PublicationFormat format : formats) {
createExportLink(format, element, (Publication) item, state);
}
} }
} }
@ -75,6 +79,7 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
generator.setItemElemName("author", ""); generator.setItemElemName("author", "");
generator.addItemAttribute("isEditor", isAuthor.toString()); generator.addItemAttribute("isEditor", isAuthor.toString());
generator.addItemAttribute("order", order.toString()); generator.addItemAttribute("order", order.toString());
generator.setListMode(listMode);
generator.generateXML(state, authorsElem, ""); generator.generateXML(state, authorsElem, "");
} }
@ -152,6 +157,11 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
//Nothing for now //Nothing for now
} }
@Override
public void setListMode(final boolean listMode) {
this.listMode = listMode;
}
private class XmlGenerator extends SimpleXMLGenerator { private class XmlGenerator extends SimpleXMLGenerator {
private final ContentItem item; private final ContentItem item;

View File

@ -52,6 +52,11 @@ public class PublicationWithPublisherExtraXmlGenerator
//nothing //nothing
} }
@Override
public void setListMode(final boolean listMode) {
//nothing
}
private class XmlGenerator extends SimpleXMLGenerator { private class XmlGenerator extends SimpleXMLGenerator {
private final ContentItem item; private final ContentItem item;

View File

@ -44,10 +44,16 @@ public class UnPublishedExtraXmlGenerator implements ExtraXMLGenerator {
} }
} }
@Override
public void addGlobalStateParams(final Page page) { public void addGlobalStateParams(final Page page) {
//nothing //nothing
} }
@Override
public void setListMode(final boolean listMode) {
//nothing
}
private class XmlGenerator extends SimpleXMLGenerator { private class XmlGenerator extends SimpleXMLGenerator {
private final ContentItem item; private final ContentItem item;