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
master
jensp 2015-06-09 10:30:29 +00:00
parent a0e4ecab3e
commit f4c2d83332
6 changed files with 113 additions and 116 deletions

View File

@ -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();

View File

@ -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();
// }
// }
}

View File

@ -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,

View File

@ -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());

View File

@ -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
* <code>inproceedings</code> 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();

View File

@ -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
* <code>proceedings</code> 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();