From f4c2d833321ca49339b61d83b8d5eb2aded76d42 Mon Sep 17 00:00:00 2001 From: jensp Date: Tue, 9 Jun 2015 10:30:29 +0000 Subject: [PATCH] Changes for XML output and converters of proceedings content type necessary because the change from one organizer to multiple organizers git-svn-id: https://svn.libreccm.org/ccm/trunk@3474 8810af33-2d31-482b-a856-94f89814c4df --- .../cms/contenttypes/Proceedings.java | 5 -- .../cms/contenttypes/ProceedingsBundle.java | 37 -------- .../ui/ProceedingsExtraXmlGenerator.java | 38 ++++---- .../contenttypes/ui/PublicationXmlHelper.java | 88 +++++++++++-------- .../converters/InProceedingsConverter.java | 31 ++++--- .../converters/ProceedingsConverter.java | 30 ++++--- 6 files changed, 113 insertions(+), 116 deletions(-) diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java index 070321c06..1cff285ad 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java @@ -111,11 +111,6 @@ public class Proceedings extends PublicationWithPublisher { public void setDateToOfConference(Date dateTo) { set(DATE_TO_OF_CONFERENCE, dateTo); } - - //added by tosmers because of compiling failure - public GenericOrganizationalUnit getOrganizerOfConference() { - return getProceedingsBundle().getOrganizationalUnits().getOrganizationalUnit(); - } public ProceedingsOrganizerCollection getOrganizers() { return getProceedingsBundle().getOrganizersOfConference(); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ProceedingsBundle.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ProceedingsBundle.java index 4a14cd6cc..a83d2cf16 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ProceedingsBundle.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ProceedingsBundle.java @@ -244,41 +244,4 @@ public class ProceedingsBundle extends PublicationWithPublisherBundle { remove(ORGANIZER_OF_CONFERENCE, organizer.getGenericOrganizationalUnitBundle()); } -// public GenericOrganizationalUnitBundle getOrganizerOfConference() { -// DataCollection collection; -// -// collection = (DataCollection) get(ORGANIZER_OF_CONFERENCE); -// -// if (0 == collection.size()) { -// return null; -// } else { -// DataObject dobj; -// -// collection.next(); -// dobj = collection.getDataObject(); -// collection.close(); -// -// return (GenericOrganizationalUnitBundle) DomainObjectFactory -// .newInstance( -// dobj); -// } -// } -// -// public void setOrganizerOfConference(GenericOrganizationalUnit organizer) { -// final GenericOrganizationalUnitBundle oldOrga -// = getOrganizerOfConference(); -// -// if (oldOrga != null) { -// remove(ORGANIZER_OF_CONFERENCE, oldOrga); -// } -// -// if (null != organizer) { -// Assert.exists(organizer, GenericOrganizationalUnit.class); -// DataObject link = add(ORGANIZER_OF_CONFERENCE, -// organizer.getGenericOrganizationalUnitBundle()); -// link.set("organizerOrder", 1); -// link.save(); -// } -// } - } 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 010ee2742..3d5013b23 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 @@ -26,14 +26,16 @@ 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.ProceedingsOrganizerCollection; import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.globalization.GlobalizationHelper; import com.arsdigita.xml.Element; /** * - * @author Jens Pelzetter - * @version $Id$ + * @author Jens Pelzetter + * @version $Id: ProceedingsExtraXmlGenerator.java 3468 2015-06-08 11:09:07Z + * jensp $ */ public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator { @@ -50,24 +52,30 @@ public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator { } final Proceedings proceedings = (Proceedings) item; - createOrganizerXml(proceedings, element, state); + createOrganizersXml(proceedings, element, state); if (!listMode) { createPapersXml(proceedings, element, state); } } - private void createOrganizerXml(final Proceedings proceedings, - final Element parent, - final PageState state) { -// final GenericOrganizationalUnit organizer = -// proceedings.getOrganizerOfConference(GlobalizationHelper. -// getNegotiatedLocale().getLanguage()); -// if (organizer != null) { -// final XmlGenerator generator = new XmlGenerator(organizer); -// generator.setItemElemName("organizer", ""); -// generator.setListMode(true); -// generator.generateXML(state, parent, ""); -// } + private void createOrganizersXml(final Proceedings proceedings, + final Element parent, + final PageState state) { + final Element organiziersElem = parent.newChildElement("organizers"); + + final ProceedingsOrganizerCollection organizers = proceedings. + getOrganizers(); + + while (organizers.next()) { + final GenericOrganizationalUnit organizer = organizers.getOrganizer( + GlobalizationHelper.getNegotiatedLocale().getLanguage()); + if (organizer != null) { + final XmlGenerator generator = new XmlGenerator(organizer); + generator.setItemElemName("organizer", ""); + generator.setListMode(true); + generator.generateXML(state, organiziersElem, ""); + } + } } private void createPapersXml(final Proceedings proceedings, diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java index 9a7112ae6..b9742a0fa 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java @@ -31,6 +31,7 @@ import com.arsdigita.cms.contenttypes.InternetArticle; import com.arsdigita.cms.contenttypes.Journal; import com.arsdigita.cms.contenttypes.Monograph; import com.arsdigita.cms.contenttypes.Proceedings; +import com.arsdigita.cms.contenttypes.ProceedingsOrganizerCollection; import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.contenttypes.PublicationWithPublisher; import com.arsdigita.cms.contenttypes.Publisher; @@ -43,7 +44,7 @@ import com.arsdigita.xml.Element; /** * - * @author Jens Pelzetter + * @author Jens Pelzetter */ public class PublicationXmlHelper { @@ -59,7 +60,7 @@ public class PublicationXmlHelper { public void generateXml() { generateXml(true); } - + public void generateXml(boolean wrap) { Element publicationElem; if (wrap) { @@ -105,9 +106,8 @@ public class PublicationXmlHelper { } /*if (publication instanceof Journal) { - generateJournalXml(publicationElem); - }*/ - + generateJournalXml(publicationElem); + }*/ if (publication instanceof Monograph) { generateMonographXml(publicationElem); } @@ -217,8 +217,8 @@ public class PublicationXmlHelper { private void generatePublicationWithPublisherXml( final Element publicationElem) { - PublicationWithPublisher pwp = - (PublicationWithPublisher) publication; + PublicationWithPublisher pwp + = (PublicationWithPublisher) publication; generatePublisherXml(publicationElem, pwp); generateXmlElement(publicationElem, "isbn", pwp.getISBN()); @@ -251,31 +251,31 @@ public class PublicationXmlHelper { } private void generateSeriesCollXml(final Element publicationElem) { - if ((publication.getSeries() == null) - || publication.getSeries().isEmpty()) { + if ((publication.getSeries() == null) + || publication.getSeries().isEmpty()) { return; } - + final SeriesCollection series = publication.getSeries(); - - while(series.next()) { + + while (series.next()) { generateSeriesXml(publicationElem, series.getSeries()); } } - + private void generateSeriesXml(final Element publicationElem, final Series series) { final Element seriesElem = publicationElem.newChildElement("series"); - + final Element title = seriesElem.newChildElement("title"); - + title.setText(series.getTitle()); } - + private void generateArticleInCollectedVolumeXml( final Element publicationElem) { - final ArticleInCollectedVolume article = - (ArticleInCollectedVolume) publication; + final ArticleInCollectedVolume article + = (ArticleInCollectedVolume) publication; generateXmlElement(publicationElem, "pagesFrom", article.getPagesFrom()); generateXmlElement(publicationElem, "pagesTo", article.getPagesTo()); @@ -292,9 +292,9 @@ public class PublicationXmlHelper { if (collectedVolume != null) { Element collectedVolumeElem = publicationElem.newChildElement( "collectedVolume"); - PublicationXmlHelper xmlHelper = - new PublicationXmlHelper(collectedVolumeElem, - collectedVolume); + PublicationXmlHelper xmlHelper + = new PublicationXmlHelper(collectedVolumeElem, + collectedVolume); xmlHelper.generateXml(false); } } @@ -316,7 +316,8 @@ public class PublicationXmlHelper { final Journal journal = article.getJournal(); if (journal != null) { - final Element journalElem = publicationElem.newChildElement("journal"); + final Element journalElem = publicationElem.newChildElement( + "journal"); //PublicationXmlHelper xmlHelper = new PublicationXmlHelper( // journalElem, // journal); @@ -392,12 +393,11 @@ public class PublicationXmlHelper { } /*private void generateJournalXml(final Element publicationElem) { - final Journal journal = (Journal) publication; - - generateXmlElement(publicationElem, "lastYear", journal.getLastYear()); - generateXmlElement(publicationElem, "issn", journal.getISSN()); - }*/ + final Journal journal = (Journal) publication; + generateXmlElement(publicationElem, "lastYear", journal.getLastYear()); + generateXmlElement(publicationElem, "issn", journal.getISSN()); + }*/ private void generateMonographXml(final Element publicationElem) { final Monograph monograph = (Monograph) publication; @@ -408,16 +408,16 @@ public class PublicationXmlHelper { Proceedings proceedings = (Proceedings) publication; generateXmlElement(publicationElem, - "nameOfConference", - proceedings.getNameOfConference()); + "nameOfConference", + proceedings.getNameOfConference()); generateXmlElement(publicationElem, - "placeOfConference", - proceedings.getPlaceOfConference()); + "placeOfConference", + proceedings.getPlaceOfConference()); + + generateOrganizersXml(publicationElem, + "organizers", + proceedings.getOrganizers()); - generateOrganizationXml(publicationElem, - "organizer", - proceedings.getOrganizerOfConference()); - } private void generateReviewXml(final Element publicationElem) { @@ -446,6 +446,20 @@ public class PublicationXmlHelper { workingPaper.getReviewed()); } + private void generateOrganizersXml( + final Element publicationElem, + final String elementName, + final ProceedingsOrganizerCollection organizers) { + + final Element elem = publicationElem.newChildElement(elementName); + + while(organizers.next()) { + final GenericOrganizationalUnit orgaUnit = organizers.getOrganizer(); + + generateOrganizationXml(elem, "organizer", orgaUnit); + } + } + private void generateOrganizationXml(final Element publicationElem, final String elementName, final GenericOrganizationalUnit orga) { @@ -453,8 +467,8 @@ public class PublicationXmlHelper { return; } - Element organizationElem = - publicationElem.newChildElement(elementName); + Element organizationElem + = publicationElem.newChildElement(elementName); Element orgaTitleElem = organizationElem.newChildElement("title"); orgaTitleElem.setText(orga.getTitle()); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/InProceedingsConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/InProceedingsConverter.java index 16b92bf77..14dd7857e 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/InProceedingsConverter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/InProceedingsConverter.java @@ -17,8 +17,10 @@ * */package com.arsdigita.cms.scipublications.exporter.bibtex.converters; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; import com.arsdigita.cms.contenttypes.InProceedings; import com.arsdigita.cms.contenttypes.Proceedings; +import com.arsdigita.cms.contenttypes.ProceedingsOrganizerCollection; import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder; import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXField; @@ -26,7 +28,7 @@ import com.arsdigita.cms.scipublications.exporter.bibtex.builders.UnsupportedFie import org.apache.log4j.Logger; /** - * Converts an {@link InProceedings} item to an BibTeX + * Converts an {@link InProceedings} item to an BibTeX * inproceedings reference. * * @author Jens Pelzetter @@ -48,14 +50,14 @@ public class InProceedingsConverter extends AbstractBibTeXConverter { if (!(publication instanceof InProceedings)) { throw new UnsupportedCcmTypeException( String.format("The InProceedingsConverter only " - + "supports publication types which are of the" + + "supports publication types which are of the" + "type InProceedings or which are " - + "extending " - + "InProceedings. The " - + "provided publication is of type '%s' which " + + "extending " + + "InProceedings. The " + + "provided publication is of type '%s' which " + "is not of type " - + "InProceedings and does not " - + "extends InProceedings.", + + "InProceedings and does not " + + "extends InProceedings.", publication.getClass().getName())); } @@ -87,16 +89,23 @@ public class InProceedingsConverter extends AbstractBibTeXConverter { convertVolume(proceedings); convertSeries(proceedings); - if (proceedings.getOrganizerOfConference() != null) { + if (proceedings.getOrganizers() != null + && !proceedings.getOrganizers().isEmpty()) { + final ProceedingsOrganizerCollection organizers = proceedings. + getOrganizers(); + organizers.next(); + final GenericOrganizationalUnit organizer = organizers. + getOrganizer(); + organizers.close(); builder.setField(BibTeXField.ORGANIZATION, - proceedings.getOrganizerOfConference().getTitle()); + organizer.getTitle()); } convertPublisher(proceedings); - } + } } catch (UnsupportedFieldException ex) { logger.warn("Tried to set unsupported BibTeX field while " - + "converting a publication"); + + "converting a publication"); } return builder.toBibTeX(); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ProceedingsConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ProceedingsConverter.java index 91cb0d454..c8696f09d 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ProceedingsConverter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ProceedingsConverter.java @@ -18,7 +18,9 @@ */ package com.arsdigita.cms.scipublications.exporter.bibtex.converters; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; import com.arsdigita.cms.contenttypes.Proceedings; +import com.arsdigita.cms.contenttypes.ProceedingsOrganizerCollection; import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder; import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXField; @@ -26,7 +28,7 @@ import com.arsdigita.cms.scipublications.exporter.bibtex.builders.UnsupportedFie import org.apache.log4j.Logger; /** - * Converts a {@link Proceedings} publication to a BibTeX + * Converts a {@link Proceedings} publication to a BibTeX * proceedings reference. * * @author Jens Pelzetter @@ -49,14 +51,14 @@ public class ProceedingsConverter extends AbstractBibTeXConverter { if (!(publication instanceof Proceedings)) { throw new UnsupportedCcmTypeException( String.format("The ProceedingsConverter only " - + "supports publication types which are of the" + + "supports publication types which are of the" + "type Proceedings or which are " - + "extending " - + "Proceedings. The " - + "provided publication is of type '%s' which " + + "extending " + + "Proceedings. The " + + "provided publication is of type '%s' which " + "is not of type " - + "Proceedings and does not " - + "extends Proceedings.", + + "Proceedings and does not " + + "extends Proceedings.", publication.getClass().getName())); } @@ -71,17 +73,23 @@ public class ProceedingsConverter extends AbstractBibTeXConverter { convertVolume(proceedings); convertSeries(publication); - if (proceedings.getOrganizerOfConference() != null) { + if (proceedings.getOrganizers() != null + && !proceedings.getOrganizers().isEmpty()) { + final ProceedingsOrganizerCollection organizers = proceedings. + getOrganizers(); + organizers.next(); + final GenericOrganizationalUnit organizer = organizers. + getOrganizer(); + organizers.close(); builder.setField(BibTeXField.ORGANIZATION, - proceedings.getOrganizerOfConference(). - getTitle()); + organizer.getTitle()); } convertPublisher(proceedings); } catch (UnsupportedFieldException ex) { logger.warn("Tried to set unsupported BibTeX field while " - + "converting a publication"); + + "converting a publication"); } return builder.toBibTeX();