diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/imexporter/ris/RisField.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/imexporter/ris/RisField.java index 4f70826a1..3ba5431d7 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/imexporter/ris/RisField.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/imexporter/ris/RisField.java @@ -353,6 +353,10 @@ public enum RisField { * Number of volumes */ NV, + /** + * DOI + */ + DO, /** * Begin of a new reference. Value is the type of the reference. */ diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/AbstractRisConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/AbstractRisConverter.java index 1beed1555..c2952281b 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/AbstractRisConverter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/AbstractRisConverter.java @@ -1,5 +1,6 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; +import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume; import com.arsdigita.cms.contenttypes.ArticleInJournal; import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.contenttypes.PublicationWithPublisher; @@ -11,6 +12,7 @@ import com.arsdigita.cms.scipublications.importer.ris.RisConverter; import com.arsdigita.cms.scipublications.importer.ris.RisDataset; import com.arsdigita.cms.scipublications.importer.util.AuthorData; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; +import java.util.ArrayList; import java.util.List; /** @@ -251,6 +253,62 @@ public abstract class AbstractRisConverter implements RisConverter { } } + private AuthorData createAuthorData(final String[] tokens) { + final AuthorData authorData = new AuthorData(); + + if (tokens.length == 0) { + throw new IllegalArgumentException("No author data tokens!"); + } + + if(tokens.length >= 1) { + authorData.setSurname(tokens[0]); + } + + if (tokens.length >= 2) { + authorData.setGivenName(tokens[1]); + } + + return authorData; + } + + protected void processCollectedVolume(final RisDataset dataset, + final RisField cvTitleField, + final RisField cvYearField, + final RisField cvEditorsField, + final RisField cvPlaceField, + final RisField cvPublisherField, + final RisField cvEditionField, + final ArticleInCollectedVolume article, + final ImporterUtil importerUtil, + final boolean pretend, + final PublicationImportReport report) { + final List colVolTitle = dataset.getValues().get(cvTitleField); + final List colVolYear = dataset.getValues().get(cvYearField); + final List colVolPlace = dataset.getValues().get(cvPlaceField); + final List colVolPublisher = dataset.getValues().get(cvPublisherField); + final List colVolEdition = dataset.getValues().get(cvEditionField); + + final List colVolEditors = dataset.getValues().get(cvEditorsField); + final List colVolEditorData = new ArrayList(); + + for(String collVolEditor : colVolEditors) { + final String[] tokens = collVolEditor.split(","); + + colVolEditorData.add(createAuthorData(tokens)); + } + + if ((colVolTitle != null) && !colVolTitle.isEmpty()) { + report.setCollectedVolume(importerUtil.processCollectedVolume(article, + colVolTitle.get(0), + colVolYear.get(0), + colVolEditorData, + colVolPublisher.get(0), + colVolPlace.get(0), + colVolEdition.get(0), + pretend)); + } + } + protected void processPages(final RisDataset dataset, final RisField field, final Publication publication, @@ -293,5 +351,4 @@ public abstract class AbstractRisConverter implements RisConverter { dataset.getFirstLine())); } } - } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/BookConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/BookConverter.java index f66653e2d..ca6f9e978 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/BookConverter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/BookConverter.java @@ -3,11 +3,9 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; import com.arsdigita.cms.contenttypes.Monograph; import com.arsdigita.cms.scipublications.imexporter.ris.RisField; import com.arsdigita.cms.scipublications.imexporter.ris.RisType; -import com.arsdigita.cms.scipublications.importer.report.FieldImportReport; import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; import com.arsdigita.cms.scipublications.importer.ris.RisDataset; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; -import java.util.List; /** * Converter for the RIS type {@code BOOK} to the SciPublications type {@link Monograph}. diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ChapConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ChapConverter.java new file mode 100644 index 000000000..87054ca77 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ChapConverter.java @@ -0,0 +1,54 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters; + +import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume; +import com.arsdigita.cms.scipublications.imexporter.ris.RisField; +import com.arsdigita.cms.scipublications.imexporter.ris.RisType; +import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; +import com.arsdigita.cms.scipublications.importer.ris.RisDataset; +import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; + +/** + * Converter for the RIS type {@code CHAP} to the SciPublications type {@link ArticleInCollectedVolume}. + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class ChapConverter extends AbstractRisConverter { + + public PublicationImportReport convert(final RisDataset dataset, + final ImporterUtil importerUtil, + final boolean pretend, + final boolean publishNewItems) { + final PublicationImportReport report = new PublicationImportReport(); + report.setType(ArticleInCollectedVolume.BASE_DATA_OBJECT_TYPE); + + final ArticleInCollectedVolume article = new ArticleInCollectedVolume(); + + processTitle(dataset, article, report, pretend); + + processYear(dataset, pretend, article, report); + + processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend); + + processCollectedVolume(dataset, + RisField.T2, + RisField.PY, + RisField.A2, + RisField.CY, + RisField.PB, + RisField.ET, + article, + importerUtil, + pretend, + report); + + processField(dataset, RisField.AB, article, "abstract", report, pretend); + processPages(dataset, RisField.ID, article, pretend, report); + + return report; + } + + public RisType getRisType() { + return RisType.CHAP; + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EchapConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EchapConverter.java new file mode 100644 index 000000000..6bc5595a7 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EchapConverter.java @@ -0,0 +1,17 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters; + +import com.arsdigita.cms.scipublications.imexporter.ris.RisType; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class EchapConverter extends ChapConverter { + + @Override + public RisType getRisType() { + return RisType.ECHAP; + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ElecConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ElecConverter.java new file mode 100644 index 000000000..b67e90bf4 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ElecConverter.java @@ -0,0 +1,53 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters; + +import com.arsdigita.cms.contenttypes.InternetArticle; +import com.arsdigita.cms.scipublications.imexporter.ris.RisField; +import com.arsdigita.cms.scipublications.imexporter.ris.RisType; +import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; +import com.arsdigita.cms.scipublications.importer.ris.RisDataset; +import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class ElecConverter extends AbstractRisConverter { + + public PublicationImportReport convert(final RisDataset dataset, + final ImporterUtil importerUtil, + final boolean pretend, + final boolean publishNewItems) { + final PublicationImportReport report = new PublicationImportReport(); + report.setType(InternetArticle.BASE_DATA_OBJECT_TYPE); + + final InternetArticle article = new InternetArticle(); + + processTitle(dataset, article, report, pretend); + + processYear(dataset, pretend, article, report); + + processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend); + + processField(dataset, RisField.AB, article, "abstract", report, pretend); + + processSeries(dataset, RisField.T2, article, importerUtil, pretend, report); + + processField(dataset, RisField.CY, article, "place", report, pretend); + + processField(dataset, RisField.DO, article, "doi", report, pretend); + + processField(dataset, RisField.ET, article, "edition", report, pretend); + + processField(dataset, RisField.UR, article, "url", report, pretend); + + return report; + } + + public RisType getRisType() { + return RisType.ELEC; + } + + + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/util/ImporterUtil.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/util/ImporterUtil.java index 1420c3f48..1ff2cab14 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/util/ImporterUtil.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/util/ImporterUtil.java @@ -207,6 +207,7 @@ public class ImporterUtil { final List authors, final String publisherName, final String place, + final String edition, final boolean pretend) { final CollectedVolumeImportReport report = new CollectedVolumeImportReport(); @@ -257,6 +258,10 @@ public class ImporterUtil { if ((publisherName != null) && !publisherName.isEmpty()) { report.setPublisher(processPublisher(collectedVolume, place, publisherName, pretend)); } + + if ((edition != null) && !edition.isEmpty()) { + collectedVolume.setEdition(edition); + } collectedVolume.save(); article.setCollectedVolume(collectedVolume);