diff --git a/ccm-sci-publications/META-INF/services/com.arsdigita.cms.scipublications.exporter.SciPublicationsExporter b/ccm-sci-publications/META-INF/services/com.arsdigita.cms.scipublications.exporter.SciPublicationsExporter new file mode 100644 index 000000000..eb234126a --- /dev/null +++ b/ccm-sci-publications/META-INF/services/com.arsdigita.cms.scipublications.exporter.SciPublicationsExporter @@ -0,0 +1 @@ + com.arsdigita.cms.scipublications.exporter.bibtex.BibTeXExporter \ No newline at end of file diff --git a/ccm-sci-publications/META-INF/services/com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder b/ccm-sci-publications/META-INF/services/com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder new file mode 100644 index 000000000..b2e8fbe37 --- /dev/null +++ b/ccm-sci-publications/META-INF/services/com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder @@ -0,0 +1,7 @@ +com.arsdigita.cms.scipublications.exporter.bibtex.builders.ArticleBuilder +com.arsdigita.cms.scipublications.exporter.bibtex.builders.BookBuilder +com.arsdigita.cms.scipublications.exporter.bibtex.builders.InCollectionBuilder +com.arsdigita.cms.scipublications.exporter.bibtex.builders.InProceedingsBuilder +com.arsdigita.cms.scipublications.exporter.bibtex.builders.MiscBuilder +com.arsdigita.cms.scipublications.exporter.bibtex.builders.ProceedingsBuilder +com.arsdigita.cms.scipublications.exporter.bibtex.builders.UnPublishedBuilder \ No newline at end of file diff --git a/ccm-sci-publications/META-INF/services/com.arsdigita.cms.scipublications.exporter.bibtex.converters.BibTeXConverter b/ccm-sci-publications/META-INF/services/com.arsdigita.cms.scipublications.exporter.bibtex.converters.BibTeXConverter new file mode 100644 index 000000000..08bff0e5c --- /dev/null +++ b/ccm-sci-publications/META-INF/services/com.arsdigita.cms.scipublications.exporter.bibtex.converters.BibTeXConverter @@ -0,0 +1,13 @@ +com.arsdigita.cms.scipublications.exporter.bibtex.converters.ArticleInCollectedVolumeConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.ArticleInJournalConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.CollectedVolumeConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.ExpertiseConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.GreyLiteratureConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.InProceedingsConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.InternetArticleConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.MonographConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.ProceedingsConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.PublicationConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.PublicationWithPublisherConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.ReviewConverter +com.arsdigita.cms.scipublications.exporter.bibtex.converters.WorkingPaperConverter \ No newline at end of file diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/builders/BibTeXBuilders.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/builders/BibTeXBuilders.java index 717e021f6..49ff4bf48 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/builders/BibTeXBuilders.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/builders/BibTeXBuilders.java @@ -3,6 +3,7 @@ package com.arsdigita.cms.scipublications.exporter.bibtex.builders; import java.util.HashMap; import java.util.Map; import java.util.ServiceLoader; +import org.apache.log4j.Logger; /** * @@ -10,6 +11,7 @@ import java.util.ServiceLoader; */ public class BibTeXBuilders { + private static final Logger logger = Logger.getLogger(BibTeXBuilders.class); private Map builders = new HashMap(); @@ -33,6 +35,22 @@ public class BibTeXBuilders { } public BibTeXBuilder getBibTeXBuilderForType(final String type) { - return builders.get(type); + if (builders.containsKey(type)) { + try { + return builders.get(type).getClass().newInstance(); + } catch (InstantiationException ex) { + logger.warn(String.format("Failed to create BibTeXBuilder " + + "for type '%s'.", type), + ex); + return null; + } catch (IllegalAccessException ex) { + logger.warn(String.format("Failed to create BibTeXBuilder " + + "for type '%s'.", type), + ex); + return null; + } + } else { + return null; + } } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/AbstractBibTeXConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/AbstractBibTeXConverter.java index d0578163e..90727178a 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/AbstractBibTeXConverter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/AbstractBibTeXConverter.java @@ -3,6 +3,7 @@ package com.arsdigita.cms.scipublications.exporter.bibtex.converters; import com.arsdigita.cms.contenttypes.AuthorshipCollection; import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.contenttypes.PublicationWithPublisher; +import com.arsdigita.cms.contenttypes.SeriesCollection; import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder; import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilders; import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXField; @@ -48,8 +49,20 @@ public abstract class AbstractBibTeXConverter implements BibTeXConverter { protected void convertPublisher(final PublicationWithPublisher publication) throws UnsupportedFieldException { if (publication.getPublisher() != null) { - getBibTeXBuilder().setField(BibTeXField.PUBLISHER, - publication.getPublisher().getTitle()); + if ((publication.getPublisher().getPlace() == null) + && publication.getPublisher().getPlace().isEmpty()) { + getBibTeXBuilder().setField(BibTeXField.PUBLISHER, + publication.getPublisher().getTitle()); + } else { + getBibTeXBuilder().setField(BibTeXField.PUBLISHER, + String.format("%s, %s", + publication. + getPublisher(). + getTitle(), + publication. + getPublisher(). + getPlace())); + } } } @@ -76,11 +89,26 @@ public abstract class AbstractBibTeXConverter implements BibTeXConverter { publication.getEdition()); } } - + + protected void convertSeries(final Publication publication) + throws UnsupportedFieldException { + SeriesCollection seriesColl = + publication.getSeries(); + if ((seriesColl != null) && (seriesColl.size() > 0)) { + + seriesColl.next(); + + getBibTeXBuilder().setField(BibTeXField.SERIES, + seriesColl.getSeries().getTitle()); + + seriesColl.close(); + } + } + protected BibTeXBuilder getBibTeXBuilder() { if (bibTeXBuilder == null) { - bibTeXBuilder = BibTeXBuilders.getInstance().getBibTeXBuilderForType( - getBibTeXType()); + bibTeXBuilder = BibTeXBuilders.getInstance(). + getBibTeXBuilderForType(getBibTeXType()); } return bibTeXBuilder; diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ArticleInCollectedVolumeConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ArticleInCollectedVolumeConverter.java index bb7b0066a..b5f5b5592 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ArticleInCollectedVolumeConverter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ArticleInCollectedVolumeConverter.java @@ -48,32 +48,36 @@ public class ArticleInCollectedVolumeConverter extends AbstractBibTeXConverter { convertTitle(publication); convertYear(publication); - builder.setField(BibTeXField.BOOKTITLE, - article.getCollectedVolume().getTitle()); - if (article.getCollectedVolume().getPublisher() == null) { - builder.setField(BibTeXField.PUBLISHER, ""); + if (article.getCollectedVolume() != null) { + builder.setField(BibTeXField.BOOKTITLE, + article.getCollectedVolume().getTitle()); + + if (article.getCollectedVolume().getPublisher() == null) { + builder.setField(BibTeXField.PUBLISHER, ""); + } + + if (article.getCollectedVolume().getVolume() != null) { + builder.setField(BibTeXField.VOLUME, + article.getCollectedVolume().getVolume(). + toString()); + } + SeriesCollection seriesColl = + article.getCollectedVolume().getSeries(); + if ((seriesColl != null) && (seriesColl.size() > 0)) { + + seriesColl.next(); + + builder.setField(BibTeXField.SERIES, + seriesColl.getSeries().getTitle()); + + seriesColl.close(); + } } else { builder.setField(BibTeXField.PUBLISHER, article.getCollectedVolume().getPublisher(). getTitle()); } - if (article.getCollectedVolume().getVolume() != null) { - builder.setField(BibTeXField.VOLUME, - article.getCollectedVolume().getVolume(). - toString()); - } - SeriesCollection seriesColl = - article.getCollectedVolume().getSeries(); - if ((seriesColl != null) && (seriesColl.size() > 0)) { - - seriesColl.next(); - - builder.setField(BibTeXField.SERIES, - seriesColl.getSeries().getTitle()); - - seriesColl.close(); - } if (article.getChapter() != null) { builder.setField(BibTeXField.CHAPTER, article.getChapter()); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ArticleInJournalConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ArticleInJournalConverter.java new file mode 100644 index 000000000..c6b092e43 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ArticleInJournalConverter.java @@ -0,0 +1,84 @@ +package com.arsdigita.cms.scipublications.exporter.bibtex.converters; + +import com.arsdigita.cms.contenttypes.ArticleInJournal; +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXField; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.UnsupportedFieldException; +import org.apache.log4j.Logger; + +/** + * + * @author jensp + */ +public class ArticleInJournalConverter extends AbstractBibTeXConverter { + + private static final Logger logger = Logger.getLogger( + ArticleInJournalConverter.class); + + @Override + protected String getBibTeXType() { + return "article"; + } + + public String convert(final Publication publication) { + ArticleInJournal article; + BibTeXBuilder builder; + + if (!(publication instanceof ArticleInJournal)) { + throw new UnsupportedCcmTypeException( + String.format("The ArticleInJournalConverter only " + + "supports publication types which are of the" + + "type ArticleInJournal or which are " + + "extending " + + "ArticleInJournal. The " + + "provided publication is of type '%s' which " + + "is not of type " + + "ArticleInJournal and does not " + + "extends ArticleInJournal.", + publication.getClass().getName())); + } + + article = (ArticleInJournal) publication; + + convertAuthors(publication); + builder = getBibTeXBuilder(); + try { + convertTitle(publication); + convertYear(publication); + + if (article.getJournal() == null) { + builder.setField(BibTeXField.JOURNAL, ""); + } else { + builder.setField(BibTeXField.JOURNAL, + article.getJournal().getTitle()); + } + + if (article.getVolume() != null) { + builder.setField(BibTeXField.VOLUME, + article.getVolume().toString()); + } + + if (article.getIssue() != null) { + builder.setField(BibTeXField.NUMBER, + article.getIssue()); + } + + if (article.getPagesFrom() != null) { + builder.setField(BibTeXField.PAGES, + String.format("%s - %s", + article.getPagesFrom(), + article.getPagesTo())); + } + } catch (UnsupportedFieldException ex) { + logger.warn("Tried to set unsupported BibTeX field while " + + "converting a publication"); + } + + return builder.toBibTeX(); + } + + public String getCcmType() { + return ArticleInJournal.class.getName(); + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/CollectedVolumeConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/CollectedVolumeConverter.java new file mode 100644 index 000000000..148642a8e --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/CollectedVolumeConverter.java @@ -0,0 +1,57 @@ +package com.arsdigita.cms.scipublications.exporter.bibtex.converters; + +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.contenttypes.CollectedVolume; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.UnsupportedFieldException; +import org.apache.log4j.Logger; + +/** + * + * @author jensp + */ +public class CollectedVolumeConverter extends AbstractBibTeXConverter { + + private static final Logger logger = Logger.getLogger( + CollectedVolumeConverter.class); + + @Override + protected String getBibTeXType() { + return "book"; + } + + public String convert(final Publication publication) { + CollectedVolume collectedVolume; + + if (!(publication instanceof CollectedVolume)) { + throw new UnsupportedCcmTypeException( + String.format("The PublicationWithPublicationConverter only " + + "supports publication types which are " + + "extending CollectedVolume. The " + + "provided publication is of type '%s' which " + + "does not extends " + + "CollectedVolume.", + publication.getClass().getName())); + } + + collectedVolume = (CollectedVolume) publication; + + convertAuthors(publication); + try { + convertTitle(publication); + convertYear(publication); + + convertPublisher(collectedVolume); + convertISBN(collectedVolume); + convertEdition(collectedVolume); + } catch (UnsupportedFieldException ex) { + logger.warn("Tried to set unsupported BibTeX field while " + + "converting a publication"); + } + + return getBibTeXBuilder().toBibTeX(); + } + + public String getCcmType() { + return CollectedVolume.class.getName(); + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ExpertiseConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ExpertiseConverter.java new file mode 100644 index 000000000..5773d96d7 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ExpertiseConverter.java @@ -0,0 +1,59 @@ +package com.arsdigita.cms.scipublications.exporter.bibtex.converters; + +import com.arsdigita.cms.contenttypes.Expertise; +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.UnsupportedFieldException; +import org.apache.log4j.Logger; + +/** + * + * @author jensp + */ +public class ExpertiseConverter extends AbstractBibTeXConverter { + + private static final Logger logger = Logger.getLogger(ExpertiseConverter.class); + + @Override + protected String getBibTeXType() { + return "misc"; + } + + public String convert(Publication publication) { + BibTeXBuilder builder; + Expertise expertise; + + if (!(publication instanceof Expertise)) { + throw new UnsupportedCcmTypeException( + String.format("The ExpertiseConverter only " + + "supports publication types which are of the" + + "type Expertise or which are " + + "extending " + + "Expertise. The " + + "provided publication is of type '%s' which " + + "is not of type " + + "Expertise and does not " + + "extends Expertise.", + publication.getClass().getName())); + } + + expertise = (Expertise) publication; + + convertAuthors(publication); + builder = getBibTeXBuilder(); + try { + convertTitle(publication); + convertYear(publication); + } catch (UnsupportedFieldException ex) { + logger.warn("Tried to set unsupported BibTeX field while " + + "converting a publication"); + } + + return builder.toBibTeX(); + } + + public String getCcmType() { + return Expertise.class.getName(); + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/GreyLiteratureConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/GreyLiteratureConverter.java new file mode 100644 index 000000000..76f63c95a --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/GreyLiteratureConverter.java @@ -0,0 +1,59 @@ +package com.arsdigita.cms.scipublications.exporter.bibtex.converters; + +import com.arsdigita.cms.contenttypes.GreyLiterature; +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.UnsupportedFieldException; +import org.apache.log4j.Logger; + +/** + * + * @author jensp + */ +public class GreyLiteratureConverter extends AbstractBibTeXConverter { + + private static final Logger logger = Logger.getLogger(GreyLiteratureConverter.class); + + @Override + protected String getBibTeXType() { + return "misc"; + } + + public String convert(Publication publication) { + BibTeXBuilder builder; + GreyLiterature greyLiterature; + + if (!(publication instanceof GreyLiterature)) { + throw new UnsupportedCcmTypeException( + String.format("The GreyLiteratureConverter only " + + "supports publication types which are of the" + + "type GreyLiterature or which are " + + "extending " + + "GreyLiterature. The " + + "provided publication is of type '%s' which " + + "is not of type " + + "GreyLiterature and does not " + + "extends GreyLiterature.", + publication.getClass().getName())); + } + + greyLiterature = (GreyLiterature) publication; + + convertAuthors(publication); + builder = getBibTeXBuilder(); + try { + convertTitle(publication); + convertYear(publication); + } catch (UnsupportedFieldException ex) { + logger.warn("Tried to set unsupported BibTeX field while " + + "converting a publication"); + } + + return builder.toBibTeX(); + } + + public String getCcmType() { + return GreyLiterature.class.getName(); + } + +} 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 new file mode 100644 index 000000000..1d807bba6 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/InProceedingsConverter.java @@ -0,0 +1,90 @@ +package com.arsdigita.cms.scipublications.exporter.bibtex.converters; + +import com.arsdigita.cms.contenttypes.InProceedings; +import com.arsdigita.cms.contenttypes.Proceedings; +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.contenttypes.SeriesCollection; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXField; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.UnsupportedFieldException; +import org.apache.log4j.Logger; + +/** + * + * @author jensp + */ +public class InProceedingsConverter extends AbstractBibTeXConverter { + + private static final Logger logger = Logger.getLogger( + InProceedingsConverter.class); + + @Override + protected String getBibTeXType() { + return "inproceedings"; + } + + public String convert(final Publication publication) { + BibTeXBuilder builder; + InProceedings inProceedings; + + if (!(publication instanceof InProceedings)) { + throw new UnsupportedCcmTypeException( + String.format("The InProceedingsConverter only " + + "supports publication types which are of the" + + "type InProceedings or which are " + + "extending " + + "InProceedings. The " + + "provided publication is of type '%s' which " + + "is not of type " + + "InProceedings and does not " + + "extends InProceedings.", + publication.getClass().getName())); + } + + inProceedings = (InProceedings) publication; + + convertAuthors(publication); + builder = getBibTeXBuilder(); + try { + convertTitle(publication); + convertYear(publication); + + if (inProceedings.getPagesFrom() != null) { + builder.setField(BibTeXField.PAGES, + String.format("%s - %s", + inProceedings.getPagesFrom(), + inProceedings.getPagesTo())); + } + + if (inProceedings.getProceedings() == null) { + builder.setField(BibTeXField.BOOKTITLE, ""); + } else { + Proceedings proceedings; + + proceedings = inProceedings.getProceedings(); + + builder.setField(BibTeXField.BOOKTITLE, + proceedings.getTitle()); + + convertVolume(proceedings); + convertSeries(publication); + + if (proceedings.getOrganizerOfConference() != null) { + builder.setField(BibTeXField.ORGANIZATION, + proceedings.getOrganizerOfConference().getTitle()); + } + + convertPublisher(proceedings); + } + } catch (UnsupportedFieldException ex) { + logger.warn("Tried to set unsupported BibTeX field while " + + "converting a publication"); + } + + return builder.toBibTeX(); + } + + public String getCcmType() { + return InProceedings.class.getName(); + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/InternetArticleConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/InternetArticleConverter.java new file mode 100644 index 000000000..5352fb796 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/InternetArticleConverter.java @@ -0,0 +1,60 @@ +package com.arsdigita.cms.scipublications.exporter.bibtex.converters; + +import com.arsdigita.cms.contenttypes.InternetArticle; +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXField; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.UnsupportedFieldException; +import org.apache.log4j.Logger; + +/** + * + * @author jensp + */ +public class InternetArticleConverter extends AbstractBibTeXConverter { + + private static final Logger logger = Logger.getLogger( + InternetArticleConverter.class); + + @Override + protected String getBibTeXType() { + return "misc"; + } + + public String convert(final Publication publication) { + BibTeXBuilder builder; + InternetArticle article; + + if (!(publication instanceof InternetArticle)) { + throw new UnsupportedCcmTypeException( + String.format("The InternetArticleConverter only " + + "supports publication types which are of the" + + "type InternetArticle or which are " + + "extending " + + "InternetArticle. The " + + "provided publication is of type '%s' which " + + "is not of type " + + "InternetArticle and does not " + + "extends InternetArticle.", + publication.getClass().getName())); + } + + article = (InternetArticle) publication; + + convertAuthors(publication); + builder = getBibTeXBuilder(); + try { + convertTitle(publication); + convertYear(publication); + } catch (UnsupportedFieldException ex) { + logger.warn("Tried to set unsupported BibTeX field while " + + "converting a publication"); + } + + return builder.toBibTeX(); + } + + public String getCcmType() { + return InternetArticle.class.getName(); + } +} 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 new file mode 100644 index 000000000..47383912d --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ProceedingsConverter.java @@ -0,0 +1,72 @@ +package com.arsdigita.cms.scipublications.exporter.bibtex.converters; + +import com.arsdigita.cms.contenttypes.Proceedings; +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXField; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.UnsupportedFieldException; +import org.apache.log4j.Logger; + +/** + * + * @author jensp + */ +public class ProceedingsConverter extends AbstractBibTeXConverter { + + private static final Logger logger = Logger.getLogger( + ProceedingsConverter.class); + + @Override + protected String getBibTeXType() { + return "proceedings"; + } + + public String convert(final Publication publication) { + BibTeXBuilder builder; + Proceedings proceedings; + + if (!(publication instanceof Proceedings)) { + throw new UnsupportedCcmTypeException( + String.format("The ProceedingsConverter only " + + "supports publication types which are of the" + + "type Proceedings or which are " + + "extending " + + "Proceedings. The " + + "provided publication is of type '%s' which " + + "is not of type " + + "Proceedings and does not " + + "extends Proceedings.", + publication.getClass().getName())); + } + + proceedings = (Proceedings) publication; + + convertAuthors(publication); + builder = getBibTeXBuilder(); + try { + convertTitle(publication); + convertYear(publication); + + convertVolume(proceedings); + convertSeries(publication); + + if (proceedings.getOrganizerOfConference() != null) { + builder.setField(BibTeXField.ORGANIZATION, + proceedings.getOrganizerOfConference(). + getTitle()); + } + + convertPublisher(proceedings); + + } catch (UnsupportedFieldException ex) { + logger.warn("Tried to set unsupported BibTeX field while " + + "converting a publication"); + } + + return builder.toBibTeX(); + } + + public String getCcmType() { + return Proceedings.class.getName(); + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ReviewConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ReviewConverter.java new file mode 100644 index 000000000..9ef00eaa5 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/ReviewConverter.java @@ -0,0 +1,16 @@ +package com.arsdigita.cms.scipublications.exporter.bibtex.converters; + +import com.arsdigita.cms.contenttypes.Review; + +/** + * + * @author jensp + */ +public class ReviewConverter extends ArticleInJournalConverter { + + @Override + public String getCcmType() { + return Review.class.getName(); + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/WorkingPaperConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/WorkingPaperConverter.java new file mode 100644 index 000000000..4f7d09ef0 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/exporter/bibtex/converters/WorkingPaperConverter.java @@ -0,0 +1,59 @@ +package com.arsdigita.cms.scipublications.exporter.bibtex.converters; + +import com.arsdigita.cms.contenttypes.WorkingPaper; +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.BibTeXBuilder; +import com.arsdigita.cms.scipublications.exporter.bibtex.builders.UnsupportedFieldException; +import org.apache.log4j.Logger; + +/** + * + * @author jensp + */ +public class WorkingPaperConverter extends AbstractBibTeXConverter { + + private static final Logger logger = Logger.getLogger( + WorkingPaperConverter.class); + + @Override + protected String getBibTeXType() { + return "misc"; + } + + public String convert(Publication publication) { + BibTeXBuilder builder; + WorkingPaper workingPaper; + + if (!(publication instanceof WorkingPaper)) { + throw new UnsupportedCcmTypeException( + String.format("The WorkingPaperConverter only " + + "supports publication types which are of the" + + "type WorkingPaper or which are " + + "extending " + + "WorkingPaper. The " + + "provided publication is of type '%s' which " + + "is not of type " + + "WorkingPaper and does not " + + "extends WorkingPaper.", + publication.getClass().getName())); + } + + workingPaper = (WorkingPaper) publication; + + convertAuthors(publication); + builder = getBibTeXBuilder(); + try { + convertTitle(publication); + convertYear(publication); + } catch (UnsupportedFieldException ex) { + logger.warn("Tried to set unsupported BibTeX field while " + + "converting a publication"); + } + + return builder.toBibTeX(); + } + + public String getCcmType() { + return WorkingPaper.class.getName(); + } +} diff --git a/tools-ng/common/xsl/build-template.xsl b/tools-ng/common/xsl/build-template.xsl index a6eef7b90..f2020bca5 100755 --- a/tools-ng/common/xsl/build-template.xsl +++ b/tools-ng/common/xsl/build-template.xsl @@ -1883,6 +1883,18 @@ + + + + + + + + + + + + diff --git a/tools-ng/devel/lib/UmlGraph.jar b/tools-ng/devel/lib/UmlGraph.jar new file mode 100644 index 000000000..19d27ae71 Binary files /dev/null and b/tools-ng/devel/lib/UmlGraph.jar differ