From 056c0dbbf6ba9c4ac8e6da600d596d6b0d23aff3 Mon Sep 17 00:00:00 2001 From: jensp Date: Thu, 10 Jan 2013 04:53:46 +0000 Subject: [PATCH] RIS Importer for publications: First alpha version git-svn-id: https://svn.libreccm.org/ccm/trunk@2033 8810af33-2d31-482b-a856-94f89814c4df --- ....scipublications.importer.ris.RisConverter | 22 +- .../imexporter/ris/RisField.java | 4 + .../imexporter/ris/RisType.java | 8 + .../importer/ris/RisConverter.java | 3 + .../importer/ris/RisDataset.java | 3 + .../importer/ris/RisImporter.java | 6 +- .../importer/ris/RisParser.java | 13 +- .../ris/converters/AbstractRisConverter.java | 215 ++++++++++++++++-- .../ris/converters/BlogConverter.java | 57 +++++ .../ris/converters/BookConverter.java | 4 + .../ris/converters/ChapConverter.java | 7 +- .../ris/converters/ConfConverter.java | 59 +++++ .../ris/converters/CpaperConverter.java | 50 ++++ .../ris/converters/EbookConverter.java | 4 + .../ris/converters/EdbookConverter.java | 53 +++++ .../ris/converters/EjourConverter.java | 4 + .../ris/converters/ElecConverter.java | 4 + .../ris/converters/EncycConverter.java | 52 +++++ .../importer/ris/converters/GenConverter.java | 4 + .../ris/converters/JourConverter.java | 4 + .../ris/converters/MgznConverter.java | 17 ++ .../ris/converters/RprtConverter.java | 54 +++++ .../ris/converters/ThesConverter.java | 51 +++++ .../ris/converters/UnpbConverter.java | 55 +++++ .../importer/util/ImporterUtil.java | 69 +++++- 25 files changed, 789 insertions(+), 33 deletions(-) create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/BlogConverter.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ConfConverter.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/CpaperConverter.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EdbookConverter.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EncycConverter.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/MgznConverter.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/RprtConverter.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ThesConverter.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/UnpbConverter.java diff --git a/ccm-sci-publications/src/META-INF/services/com.arsdigita.cms.scipublications.importer.ris.RisConverter b/ccm-sci-publications/src/META-INF/services/com.arsdigita.cms.scipublications.importer.ris.RisConverter index 7f3774b91..8d833bac9 100644 --- a/ccm-sci-publications/src/META-INF/services/com.arsdigita.cms.scipublications.importer.ris.RisConverter +++ b/ccm-sci-publications/src/META-INF/services/com.arsdigita.cms.scipublications.importer.ris.RisConverter @@ -1,2 +1,20 @@ -package com.arsdigita.cms.scipublications.importer.ris.converters.BookConverter -package com.arsdigita.cms.scipublications.importer.ris.converters.EbookConverter \ No newline at end of file +com.arsdigita.cms.scipublications.importer.ris.converters.AbstConverter +com.arsdigita.cms.scipublications.importer.ris.converters.BlogConverter +com.arsdigita.cms.scipublications.importer.ris.converters.BookConverter +com.arsdigita.cms.scipublications.importer.ris.converters.ChapConverter +com.arsdigita.cms.scipublications.importer.ris.converters.ConfConverter +com.arsdigita.cms.scipublications.importer.ris.converters.CpaperConverter +com.arsdigita.cms.scipublications.importer.ris.converters.EbookConverter +com.arsdigita.cms.scipublications.importer.ris.converters.EchapConverter +com.arsdigita.cms.scipublications.importer.ris.converters.EdbookConverter +com.arsdigita.cms.scipublications.importer.ris.converters.EjourConverter +com.arsdigita.cms.scipublications.importer.ris.converters.ElecConverter +com.arsdigita.cms.scipublications.importer.ris.converters.EncycConverter +com.arsdigita.cms.scipublications.importer.ris.converters.GenConverter +com.arsdigita.cms.scipublications.importer.ris.converters.InprConverter +com.arsdigita.cms.scipublications.importer.ris.converters.JfullConverter +com.arsdigita.cms.scipublications.importer.ris.converters.JourConverter +com.arsdigita.cms.scipublications.importer.ris.converters.MgznConverter +com.arsdigita.cms.scipublications.importer.ris.converters.RprtConverter +com.arsdigita.cms.scipublications.importer.ris.converters.ThesConverter +com.arsdigita.cms.scipublications.importer.ris.converters.UnpbConverter \ No newline at end of file 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 3ba5431d7..b255dc316 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 @@ -349,6 +349,10 @@ public enum RisField { C3, C4, C5, + /** + * Chapter + */ + SE, /** * Number of volumes */ diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/imexporter/ris/RisType.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/imexporter/ris/RisType.java index 7fbe1b9cb..531aa8593 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/imexporter/ris/RisType.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/imexporter/ris/RisType.java @@ -42,6 +42,10 @@ public enum RisType { * Bill/Resolution */ BILL, + /** + * BLOG + */ + BLOG, /** * Book, Whole */ @@ -94,6 +98,10 @@ public enum RisType { * Eletronic Article */ EJOUR, + /** + * Encylopdia + */ + ENCYC, /** * Generic */ diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisConverter.java index 0b29d5966..92c079b21 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisConverter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisConverter.java @@ -3,6 +3,7 @@ package com.arsdigita.cms.scipublications.importer.ris; import com.arsdigita.cms.scipublications.imexporter.ris.RisType; import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; +import java.math.BigDecimal; /** * Interface for importing RisConverter. @@ -35,4 +36,6 @@ public interface RisConverter { */ RisType getRisType(); +// BigDecimal getFolderId(); + } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisDataset.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisDataset.java index 6dcb16fb0..79dcd8794 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisDataset.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisDataset.java @@ -35,4 +35,7 @@ public class RisDataset { return Collections.unmodifiableMap(values); } + public void addField(final RisField field, final List value) { + values.put(field, value); + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisImporter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisImporter.java index d3ada145d..931bdd7ef 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisImporter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisImporter.java @@ -35,7 +35,7 @@ public class RisImporter implements SciPublicationsImporter { public ImportReport importPublications(final String publications, final boolean pretend, - final boolean publishNewItems) throws SciPublicationsImportException { + final boolean publishNewItems) throws SciPublicationsImportException { final String[] lines = publications.split("\r\n"); final RisParser parser = new RisParser(); @@ -47,9 +47,13 @@ public class RisImporter implements SciPublicationsImporter { final ImporterUtil importerUtil = new ImporterUtil(publishNewItems); + try { for (RisDataset dataset : datasets) { processPublication(dataset, report, importerUtil, pretend, publishNewItems); } + } catch(Exception ex) { + ex.printStackTrace(System.out); + } return report; } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisParser.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisParser.java index 4be3dbbbc..42c283c39 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisParser.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisParser.java @@ -22,6 +22,7 @@ public class RisParser { public List parse(final String[] lines) throws SciPublicationsImportException { final List entries = new ArrayList(); boolean openDataset = false; + RisField lastField = null; RisFieldValue field; for (int i = 0; i < lines.length; i++) { @@ -42,16 +43,21 @@ public class RisParser { } } else if (RisField.ER.equals(field.getName())) { openDataset = false; + } else if(field.getName() == null) { + final RisDataset currentDataset = entries.get(entries.size() - 1); + final List data = currentDataset.getValues().get(lastField); + data.set(data.size() - 1, data.get(data.size() - 1) + field.getValue()); } else { final RisDataset currentDataset = entries.get(entries.size() - 1); if (currentDataset.getValues().get(field.getName()) == null) { final List data = new ArrayList(); data.add(field.getValue()); - currentDataset.getValues().put(field.getName(), data); + currentDataset.addField(field.getName(), data); } else { final List data = currentDataset.getValues().get(field.getName()); data.add(field.getValue()); } + lastField = field.getName(); } } @@ -75,12 +81,11 @@ public class RisParser { tokens[0], index + 1), ex); } - return new RisFieldValue(fieldName, line); + return new RisFieldValue(fieldName, tokens[1]); } else if ((tokens.length == 1) && RisField.ER.toString().equals(tokens[0])) { return new RisFieldValue(RisField.ER, ""); } else { - throw new SciPublicationsImportException(String.format("Invalid RIS data in line %d. Aborting import.", - index + 1)); + return new RisFieldValue(null, line); } } 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 c2952281b..45062920d 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,9 +1,14 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; +import com.arsdigita.cms.Folder; import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume; import com.arsdigita.cms.contenttypes.ArticleInJournal; +import com.arsdigita.cms.contenttypes.InProceedings; +import com.arsdigita.cms.contenttypes.InternetArticle; import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.contenttypes.PublicationBundle; import com.arsdigita.cms.contenttypes.PublicationWithPublisher; +import com.arsdigita.cms.contenttypes.UnPublished; import com.arsdigita.cms.scipublications.imexporter.ris.RisField; import com.arsdigita.cms.scipublications.importer.report.AuthorImportReport; import com.arsdigita.cms.scipublications.importer.report.FieldImportReport; @@ -13,6 +18,7 @@ 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.Calendar; import java.util.List; /** @@ -22,6 +28,17 @@ import java.util.List; */ public abstract class AbstractRisConverter implements RisConverter { +// protected void setFolder(final Publication publication, final PublicationBundle bundle) { +// final Folder folder = new Folder(getFolderId()); +// bundle.setParent(folder); +// bundle.setContentSection(folder.getContentSection()); +// publication.setContentSection(folder.getContentSection()); +// } + + protected void assignCategories(final PublicationBundle bundle) { + //ToDo + } + protected void processField(final RisDataset dataset, final RisField field, final Publication publication, @@ -57,12 +74,65 @@ public abstract class AbstractRisConverter implements RisConverter { } } + protected void processDateField(final RisDataset dataset, + final RisField field, + final Publication publication, + final String targetField, + final PublicationImportReport report, + final boolean pretend) { + final List values = dataset.getValues().get(field); + if ((values != null) && !values.isEmpty()) { + final String valueStr = values.get(0); + final String[] tokens = valueStr.split("/"); + final Calendar calendar = Calendar.getInstance(); + int year = 0; + int month = 1; + int day = 1; + try { + if (tokens.length >= 1) { + year = Integer.parseInt(tokens[0]); + } + + if (tokens.length >= 2) { + month = Integer.parseInt(tokens[1]); + } + + if (tokens.length >= 3) { + day = Integer.parseInt(tokens[2]); + } + + calendar.clear(); + calendar.set(year, month - 1, day); // month - 1 because month values of the Calendar are starting with 0 + + publication.set(targetField, calendar.getTime()); + + } catch (NumberFormatException ex) { + report.addMessage(String.format("Failed to parse value of field '%s' into an date for dataset " + + "starting on line %d.", + field, + dataset.getFirstLine())); + } + + + } + } + protected void processTitle(final RisDataset dataset, final Publication publication, final PublicationImportReport report, final boolean pretend) { - publication.setTitle(dataset.getValues().get(RisField.TI).get(0)); - publication.setTitle(dataset.getValues().get(RisField.TI).get(0)); + final String title; + if ((dataset.getValues().get(RisField.TI) != null) && !dataset.getValues().get(RisField.TI).isEmpty()) { + title = dataset.getValues().get(RisField.TI).get(0); + } else if ((dataset.getValues().get(RisField.BT) != null) && !dataset.getValues().get(RisField.BT).isEmpty()) { + title = dataset.getValues().get(RisField.BT).get(0); + } else { + title = "Unknown"; + } + + + publication.setTitle(title); + report.setTitle(title); } protected void processAuthors(final RisDataset dataset, @@ -139,8 +209,18 @@ public abstract class AbstractRisConverter implements RisConverter { final PublicationWithPublisher publication, final ImporterUtil importerUtil, final PublicationImportReport report) { - final List publisherList = dataset.getValues().get(RisField.PB); - final List placeList = dataset.getValues().get(RisField.CY); + processPublisher(dataset, RisField.PB, RisField.CY, pretend, publication, importerUtil, report); + } + + protected void processPublisher(final RisDataset dataset, + final RisField publisherField, + final RisField placeField, + final boolean pretend, + final PublicationWithPublisher publication, + final ImporterUtil importerUtil, + final PublicationImportReport report) { + final List publisherList = dataset.getValues().get(publisherField); + final List placeList = dataset.getValues().get(placeField); final String publisherName; if ((publisherList == null) || publisherList.isEmpty()) { publisherName = null; @@ -160,6 +240,46 @@ public abstract class AbstractRisConverter implements RisConverter { } } + protected void processOrganization(final RisDataset dataset, + final RisField field, + final boolean pretend, + final UnPublished publication, + final ImporterUtil importerUtil, + final PublicationImportReport report) { + final List orgaList = dataset.getValues().get(field); + + final String orgaName; + if ((orgaList == null) || orgaList.isEmpty()) { + orgaName = null; + } else { + orgaName = orgaList.get(0); + } + + if (orgaName != null) { + report.addOrgaUnit(importerUtil.processOrganization(publication, orgaName, pretend)); + } + } + + protected void processOrganization(final RisDataset dataset, + final RisField field, + final boolean pretend, + final InternetArticle publication, + final ImporterUtil importerUtil, + final PublicationImportReport report) { + final List orgaList = dataset.getValues().get(field); + + final String orgaName; + if ((orgaList == null) || orgaList.isEmpty()) { + orgaName = null; + } else { + orgaName = orgaList.get(0); + } + + if (orgaName != null) { + report.addOrgaUnit(importerUtil.processOrganization(publication, orgaName, pretend)); + } + } + protected void processNumberOfPages(final RisDataset dataset, final boolean pretend, final PublicationWithPublisher publication, @@ -216,7 +336,15 @@ public abstract class AbstractRisConverter implements RisConverter { final boolean pretend, final Publication publication, final PublicationImportReport report) { - final String yearStr = dataset.getValues().get(RisField.PY).get(0); + processYear(dataset, RisField.PY, pretend, publication, report); + } + + protected void processYear(final RisDataset dataset, + final RisField field, + final boolean pretend, + final Publication publication, + final PublicationImportReport report) { + final String yearStr = dataset.getValues().get(field).get(0); try { final int year = Integer.parseInt(yearStr); publication.setYearOfPublication(year); @@ -255,22 +383,22 @@ 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) { + } + + 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, @@ -287,28 +415,66 @@ public abstract class AbstractRisConverter implements RisConverter { 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(","); - + + for (String colVolEditor : colVolEditors) { + final String[] tokens = colVolEditor.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), + report.setCollectedVolume(importerUtil.processCollectedVolume(article, + colVolTitle.get(0), + colVolYear.get(0), + colVolEditorData, + colVolPublisher.get(0), + colVolPlace.get(0), colVolEdition.get(0), pretend)); } } + protected void processProceedings(final RisDataset dataset, + final RisField procTitleField, + final RisField procYearField, + final RisField procConfNameField, + final RisField procEditorsField, + final RisField procPublisherField, + final RisField procPlaceField, + final InProceedings inProceedings, + final ImporterUtil importerUtil, + final boolean pretend, + final PublicationImportReport report) { + final List procTitle = dataset.getValues().get(procTitleField); + final List procYear = dataset.getValues().get(procYearField); + final List procConfName = dataset.getValues().get(procConfNameField); + final List procPublisher = dataset.getValues().get(procPublisherField); + final List procPlace = dataset.getValues().get(procPlaceField); + + final List procEditors = dataset.getValues().get(procEditorsField); + final List procEditorData = new ArrayList(); + + for (String procEditor : procEditors) { + final String[] tokens = procEditor.split(", "); + + procEditorData.add(createAuthorData(tokens)); + } + + if ((procTitle != null) && !procTitle.isEmpty()) { + report.setProceedings(importerUtil.processProceedings(inProceedings, + procTitle.get(0), + procYear.get(0), + procConfName.get(0), + procEditorData, + procPublisher.get(0), + procPlace.get(0), + pretend)); + } + } + protected void processPages(final RisDataset dataset, final RisField field, final Publication publication, @@ -351,4 +517,5 @@ public abstract class AbstractRisConverter implements RisConverter { dataset.getFirstLine())); } } + } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/BlogConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/BlogConverter.java new file mode 100644 index 000000000..fbb2a8008 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/BlogConverter.java @@ -0,0 +1,57 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters; + +import com.arsdigita.cms.contenttypes.InternetArticle; +import com.arsdigita.cms.contenttypes.InternetArticleBundle; +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; +import com.arsdigita.kernel.Kernel; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class BlogConverter 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(); + article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final InternetArticleBundle bundle = new InternetArticleBundle(article); + + processTitle(dataset, article, report, pretend); + + processYear(dataset, pretend, article, report); + + processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend); + + processEditors(dataset, RisField.A2, importerUtil, article, report, pretend); + + processField(dataset, RisField.AB, article, "abstract", report, pretend); + processField(dataset, RisField.CY, article, "place", report, pretend); + processField(dataset, RisField.ET, article, "edition", report, pretend); + + processOrganization(dataset, RisField.PB, pretend, article, importerUtil, report); + processOrganization(dataset, RisField.T3, pretend, article, importerUtil, report); + + processField(dataset, RisField.UR, article, "url", report, pretend); + processDateField(dataset, RisField.Y2, article, "lastAccessed", report, pretend); + + return report; + } + + public RisType getRisType() { + return RisType.BLOG; + } + + + +} 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 ca6f9e978..8d2e0fe68 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 @@ -1,11 +1,13 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; import com.arsdigita.cms.contenttypes.Monograph; +import com.arsdigita.cms.contenttypes.PublicationWithPublisherBundle; 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; +import com.arsdigita.kernel.Kernel; /** * Converter for the RIS type {@code BOOK} to the SciPublications type {@link Monograph}. @@ -23,6 +25,8 @@ public class BookConverter extends AbstractRisConverter { report.setType(Monograph.BASE_DATA_OBJECT_TYPE); final Monograph monograph = new Monograph(); + monograph.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final PublicationWithPublisherBundle bundle = new PublicationWithPublisherBundle(monograph); processTitle(dataset, monograph, report, pretend); 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 index 87054ca77..79d467f28 100644 --- 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 @@ -1,11 +1,13 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume; +import com.arsdigita.cms.contenttypes.ArticleInCollectedVolumeBundle; 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; +import com.arsdigita.kernel.Kernel; /** * Converter for the RIS type {@code CHAP} to the SciPublications type {@link ArticleInCollectedVolume}. @@ -23,6 +25,8 @@ public class ChapConverter extends AbstractRisConverter { report.setType(ArticleInCollectedVolume.BASE_DATA_OBJECT_TYPE); final ArticleInCollectedVolume article = new ArticleInCollectedVolume(); + article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final ArticleInCollectedVolumeBundle bundle = new ArticleInCollectedVolumeBundle(article); processTitle(dataset, article, report, pretend); @@ -42,8 +46,9 @@ public class ChapConverter extends AbstractRisConverter { pretend, report); + processField(dataset, RisField.SE, article, "chapter", report, pretend); processField(dataset, RisField.AB, article, "abstract", report, pretend); - processPages(dataset, RisField.ID, article, pretend, report); + processPages(dataset, RisField.SP, article, pretend, report); return report; } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ConfConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ConfConverter.java new file mode 100644 index 000000000..1e596f517 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ConfConverter.java @@ -0,0 +1,59 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters; + +import com.arsdigita.cms.contenttypes.Proceedings; +import com.arsdigita.cms.contenttypes.ProceedingsBundle; +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; +import com.arsdigita.kernel.Kernel; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class ConfConverter extends AbstractRisConverter { + + public PublicationImportReport convert(final RisDataset dataset, + final ImporterUtil importerUtil, + final boolean pretend, + final boolean publishNewItems) { + final PublicationImportReport report = new PublicationImportReport(); + report.setType(Proceedings.BASE_DATA_OBJECT_TYPE); + + final Proceedings proceedings = new Proceedings(); + proceedings.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final ProceedingsBundle bundle = new ProceedingsBundle(proceedings); + + processTitle(dataset, proceedings, report, pretend); + + processYear(dataset, RisField.C2, pretend, proceedings, report); + + processAuthors(dataset, RisField.AU, importerUtil, proceedings, report, pretend); + + processEditors(dataset, RisField.A2, importerUtil, proceedings, report, pretend); + + processSeries(dataset, RisField.T3, proceedings, importerUtil, pretend, report); + + processPublisher(dataset, RisField.PB, RisField.C1, pretend, proceedings, importerUtil, report); + + processField(dataset, RisField.AB, proceedings, "abstract", report, pretend); + processField(dataset, RisField.CY, proceedings, "placeOfConference", report, pretend); + processDateField(dataset, RisField.DA, proceedings, "dateFromOfConference", report, pretend); + processField(dataset, RisField.ET, proceedings, "edition", report, pretend); + processNumberOfVolumes(dataset, pretend, proceedings, report); + processField(dataset, RisField.SN, proceedings, "isbn", report, pretend); + processNumberOfPages(dataset, pretend, proceedings, report); + processField(dataset, RisField.T2, proceedings, "nameOfConference", report, pretend); + processVolume(dataset, pretend, proceedings, report); + + return report; + } + + public RisType getRisType() { + return RisType.CONF; + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/CpaperConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/CpaperConverter.java new file mode 100644 index 000000000..63d4a6e17 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/CpaperConverter.java @@ -0,0 +1,50 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters; + +import com.arsdigita.cms.contenttypes.InProceedings; +import com.arsdigita.cms.contenttypes.InProceedingsBundle; +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; +import com.arsdigita.kernel.Kernel; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class CpaperConverter extends AbstractRisConverter { + + public PublicationImportReport convert(final RisDataset dataset, + final ImporterUtil importerUtil, + final boolean pretend, + final boolean publishNewItems) { + final PublicationImportReport report = new PublicationImportReport(); + report.setType(InProceedings.BASE_DATA_OBJECT_TYPE); + + final InProceedings inProceedings = new InProceedings(); + inProceedings.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final InProceedingsBundle bundle = new InProceedingsBundle(inProceedings); + + processTitle(dataset, inProceedings, report, pretend); + + processYear(dataset, pretend, inProceedings, report); + + processAuthors(dataset, RisField.AU, importerUtil, inProceedings, report, pretend); + + processProceedings(dataset, RisField.T2, RisField.PY, RisField.T2, RisField.A2, RisField.PB, RisField.C1, + inProceedings, importerUtil, pretend, report); + + processField(dataset, RisField.AB, inProceedings, "abstract", report, pretend); + + processPages(dataset, RisField.SP, inProceedings, pretend, report); + + return report; + } + + public RisType getRisType() { + return RisType.CPAPER; + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EbookConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EbookConverter.java index d34bda58c..2a4bb4cf6 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EbookConverter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EbookConverter.java @@ -1,11 +1,13 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; import com.arsdigita.cms.contenttypes.Monograph; +import com.arsdigita.cms.contenttypes.PublicationWithPublisherBundle; 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; +import com.arsdigita.kernel.Kernel; /** * Converter for the RIS type {@code EBOOK} to the SciPublications type {@link Monograph}. @@ -23,6 +25,8 @@ public class EbookConverter extends AbstractRisConverter { report.setType(Monograph.BASE_DATA_OBJECT_TYPE); final Monograph monograph = new Monograph(); + monograph.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final PublicationWithPublisherBundle bundle = new PublicationWithPublisherBundle(monograph); processTitle(dataset, monograph, report, pretend); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EdbookConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EdbookConverter.java new file mode 100644 index 000000000..3a4887ba6 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EdbookConverter.java @@ -0,0 +1,53 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters; + +import com.arsdigita.cms.contenttypes.CollectedVolume; +import com.arsdigita.cms.contenttypes.CollectedVolumeBundle; +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; +import com.arsdigita.kernel.Kernel; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class EdbookConverter extends AbstractRisConverter { + + public PublicationImportReport convert(final RisDataset dataset, + final ImporterUtil importerUtil, + final boolean pretend, + final boolean publishNewItems) { + final PublicationImportReport report = new PublicationImportReport(); + report.setType(CollectedVolume.BASE_DATA_OBJECT_TYPE); + + final CollectedVolume collectedVolume = new CollectedVolume(); + collectedVolume.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final CollectedVolumeBundle bundle = new CollectedVolumeBundle(collectedVolume); + + processTitle(dataset, collectedVolume, report, pretend); + + processEditors(dataset, RisField.AU, importerUtil, collectedVolume, report, pretend); + + processYear(dataset, pretend, collectedVolume, report); + + processPublisher(dataset, pretend, collectedVolume, importerUtil, report); + + processField(dataset, RisField.AB, collectedVolume, "abstract", report, pretend); + processField(dataset, RisField.ET, collectedVolume, "edition", report, pretend); + processNumberOfVolumes(dataset, pretend, collectedVolume, report); + processField(dataset, RisField.SN, collectedVolume, "isbn", report, pretend); + processNumberOfPages(dataset, pretend, collectedVolume, report); + processVolume(dataset, pretend, collectedVolume, report); + + + return report; + } + + public RisType getRisType() { + return RisType.EDBOOK; + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EjourConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EjourConverter.java index 2b5e41a45..b11dc6870 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EjourConverter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EjourConverter.java @@ -1,12 +1,14 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; import com.arsdigita.cms.contenttypes.ArticleInJournal; +import com.arsdigita.cms.contenttypes.ArticleInJournalBundle; 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.RisConverter; import com.arsdigita.cms.scipublications.importer.ris.RisDataset; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; +import com.arsdigita.kernel.Kernel; /** * Converter for the RIS {@code EJOUR} to the SciPublications type {@link ArticleInJournal} @@ -24,6 +26,8 @@ public class EjourConverter extends AbstractRisConverter implements RisConverter report.setType(ArticleInJournal.BASE_DATA_OBJECT_TYPE); final ArticleInJournal article = new ArticleInJournal(); + article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final ArticleInJournalBundle bundle = new ArticleInJournalBundle(article); processTitle(dataset, article, report, pretend); 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 index b67e90bf4..2d91a751e 100644 --- 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 @@ -1,11 +1,13 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; import com.arsdigita.cms.contenttypes.InternetArticle; +import com.arsdigita.cms.contenttypes.InternetArticleBundle; 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; +import com.arsdigita.kernel.Kernel; /** * @@ -22,6 +24,8 @@ public class ElecConverter extends AbstractRisConverter { report.setType(InternetArticle.BASE_DATA_OBJECT_TYPE); final InternetArticle article = new InternetArticle(); + article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final InternetArticleBundle bundle = new InternetArticleBundle(article); processTitle(dataset, article, report, pretend); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EncycConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EncycConverter.java new file mode 100644 index 000000000..f085f6510 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/EncycConverter.java @@ -0,0 +1,52 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters; + +import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume; +import com.arsdigita.cms.contenttypes.ArticleInCollectedVolumeBundle; +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; +import com.arsdigita.kernel.Kernel; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class EncycConverter 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(); + article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + ArticleInCollectedVolumeBundle bundle = new ArticleInCollectedVolumeBundle(article); + + 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.C1, article, "chapter", report, pretend); + processField(dataset, RisField.AB, article, "abstract", report, pretend); + processPages(dataset, RisField.SP, article, pretend, report); + + + + return report; + } + + public RisType getRisType() { + return RisType.ENCYC; + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/GenConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/GenConverter.java index 43b5865db..a81c0f4c4 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/GenConverter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/GenConverter.java @@ -2,11 +2,13 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; import com.arsdigita.cms.contenttypes.GreyLiterature; import com.arsdigita.cms.contenttypes.Monograph; +import com.arsdigita.cms.contenttypes.PublicationWithPublisherBundle; 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; +import com.arsdigita.kernel.Kernel; /** * Converter for the RIS type {@code GEN} to the SciPublications {@link GreyLiterature} @@ -24,6 +26,8 @@ public class GenConverter extends AbstractRisConverter { report.setType(GreyLiterature.BASE_DATA_OBJECT_TYPE); final Monograph publication = new Monograph(); + publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final PublicationWithPublisherBundle bundle = new PublicationWithPublisherBundle(publication); processTitle(dataset, publication, report, pretend); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/JourConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/JourConverter.java index 0ed052178..ec8851a76 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/JourConverter.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/JourConverter.java @@ -1,11 +1,13 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; import com.arsdigita.cms.contenttypes.ArticleInJournal; +import com.arsdigita.cms.contenttypes.ArticleInJournalBundle; 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; +import com.arsdigita.kernel.Kernel; /** * @@ -23,6 +25,8 @@ public class JourConverter extends AbstractRisConverter { report.setType(ArticleInJournal.BASE_DATA_OBJECT_TYPE); final ArticleInJournal article = new ArticleInJournal(); + article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final ArticleInJournalBundle bundle = new ArticleInJournalBundle(article); processTitle(dataset, article, report, pretend); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/MgznConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/MgznConverter.java new file mode 100644 index 000000000..1af9ff556 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/MgznConverter.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 MgznConverter extends JourConverter { + + @Override + public RisType getRisType() { + return RisType.MGZN; + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/RprtConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/RprtConverter.java new file mode 100644 index 000000000..af5998c73 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/RprtConverter.java @@ -0,0 +1,54 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters; + +import com.arsdigita.cms.contenttypes.GreyLiterature; +import com.arsdigita.cms.contenttypes.UnPublishedBundle; +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; +import com.arsdigita.kernel.Kernel; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class RprtConverter extends AbstractRisConverter { + + @Override + public PublicationImportReport convert(final RisDataset dataset, + final ImporterUtil importerUtil, + final boolean pretend, + final boolean publishNewItems) { + final PublicationImportReport report = new PublicationImportReport(); + report.setType(GreyLiterature.BASE_DATA_OBJECT_TYPE); + + final GreyLiterature publication = new GreyLiterature(); + publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final UnPublishedBundle bundle = new UnPublishedBundle(publication); + + processTitle(dataset, publication, report, pretend); + + processYear(dataset, pretend, publication, report); + + processAuthors(dataset, RisField.AU, importerUtil, publication, report, pretend); + + processSeries(dataset, RisField.T2, publication, importerUtil, pretend, report); + + processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, report); + + processField(dataset, RisField.AB, publication, "abstract", report, pretend); + processField(dataset, RisField.CY, publication, "place", report, pretend); + processField(dataset, RisField.SN, publication, "number", report, pretend); + processIntField(dataset, RisField.SP, publication, "numberOfPages", report, pretend); + + + return report; + } + + public RisType getRisType() { + return RisType.RPRT; + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ThesConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ThesConverter.java new file mode 100644 index 000000000..7eac3cdf6 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/ThesConverter.java @@ -0,0 +1,51 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters; + +import com.arsdigita.cms.contenttypes.GreyLiterature; +import com.arsdigita.cms.contenttypes.UnPublishedBundle; +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; +import com.arsdigita.kernel.Kernel; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class ThesConverter extends AbstractRisConverter { + + public PublicationImportReport convert(final RisDataset dataset, + final ImporterUtil importerUtil, + final boolean pretend, + final boolean publishNewItems) { + final PublicationImportReport report = new PublicationImportReport(); + report.setType(GreyLiterature.BASE_DATA_OBJECT_TYPE); + + final GreyLiterature publication = new GreyLiterature(); + publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final UnPublishedBundle bundle = new UnPublishedBundle(publication); + + processTitle(dataset, publication, report, pretend); + + processYear(dataset, pretend, publication, report); + + processAuthors(dataset, RisField.AU, importerUtil, publication, report, pretend); + + processField(dataset, RisField.AB, publication, "abstract", report, pretend); + processField(dataset, RisField.CY, publication, "place", report, pretend); + processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, report); + processIntField(dataset, RisField.SP, publication, "numberOfPages", report, pretend); + + + + + return report; + } + + public RisType getRisType() { + return RisType.THES; + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/UnpbConverter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/UnpbConverter.java new file mode 100644 index 000000000..8016a1e43 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/UnpbConverter.java @@ -0,0 +1,55 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters; + +import com.arsdigita.cms.contenttypes.GreyLiterature; +import com.arsdigita.cms.contenttypes.UnPublishedBundle; +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; +import com.arsdigita.kernel.Kernel; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class UnpbConverter extends AbstractRisConverter { + + @Override + public PublicationImportReport convert(final RisDataset dataset, + final ImporterUtil importerUtil, + final boolean pretend, + final boolean publishNewItems) { + final PublicationImportReport report = new PublicationImportReport(); + report.setType(GreyLiterature.BASE_DATA_OBJECT_TYPE); + + final GreyLiterature publication = new GreyLiterature(); + publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + final UnPublishedBundle bundle = new UnPublishedBundle(publication); + + processTitle(dataset, publication, report, pretend); + + processYear(dataset, pretend, publication, report); + + processAuthors(dataset, RisField.AU, importerUtil, publication, report, pretend); + + processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, report); + + processSeries(dataset, RisField.T2, publication, importerUtil, pretend, report); + + processField(dataset, RisField.AB, publication, "abstract", report, pretend); + processField(dataset, RisField.CY, publication, "place", report, pretend); + processField(dataset, RisField.M1, publication, "number", report, pretend); + processIntField(dataset, RisField.SP, publication, "numberOfPages", report, pretend); + + + + return report; + } + + public RisType getRisType() { + return RisType.RPRT; + } + +} 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 1ff2cab14..57d53136a 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 @@ -11,6 +11,7 @@ import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitBundle; import com.arsdigita.cms.contenttypes.GenericPerson; import com.arsdigita.cms.contenttypes.GenericPersonBundle; import com.arsdigita.cms.contenttypes.InProceedings; +import com.arsdigita.cms.contenttypes.InternetArticle; import com.arsdigita.cms.contenttypes.Journal; import com.arsdigita.cms.contenttypes.JournalBundle; import com.arsdigita.cms.contenttypes.Proceedings; @@ -27,7 +28,6 @@ import com.arsdigita.cms.lifecycle.LifecycleDefinition; import com.arsdigita.cms.lifecycle.LifecycleDefinitionCollection; import com.arsdigita.cms.scipublications.importer.report.AuthorImportReport; import com.arsdigita.cms.scipublications.importer.report.CollectedVolumeImportReport; -import com.arsdigita.cms.scipublications.importer.report.FieldImportReport; import com.arsdigita.cms.scipublications.importer.report.JournalImportReport; import com.arsdigita.cms.scipublications.importer.report.OrganizationalUnitImportReport; import com.arsdigita.cms.scipublications.importer.report.ProceedingsImportReport; @@ -512,6 +512,73 @@ public class ImporterUtil { return report; } + public OrganizationalUnitImportReport processOrganization(final InternetArticle publication, + final String name, + final boolean pretend) { + final OrganizationalUnitImportReport report = new OrganizationalUnitImportReport(); + + final Session session = SessionManager.getSession(); + final DataCollection collection = session.retrieve(GenericOrganizationalUnit.BASE_DATA_OBJECT_TYPE); + collection.addEqualsFilter("title", name); + report.setName(name); + if (collection.isEmpty()) { + if (!pretend) { + final Integer folderId = Publication.getConfig().getDefaultOrganizationsFolder(); + final Folder folder = new Folder(new BigDecimal(folderId)); + if (folder == null) { + throw new IllegalArgumentException("Error getting folder for organizations."); + } + + final GenericOrganizationalUnit orga = new GenericOrganizationalUnit(Publication.getConfig(). + getOrganizationType()); + orga.setTitle(name); + orga.setName(normalizeString(name)); + orga.setContentSection(folder.getContentSection()); + orga.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + orga.save(); + + final GenericOrganizationalUnitBundle bundle = new GenericOrganizationalUnitBundle(Publication. + getConfig().getOrganizationBundleType()); + bundle.setDefaultLanguage(orga.getLanguage()); + bundle.setContentType(orga.getContentType()); + bundle.addInstance(orga); + bundle.setName(orga.getName()); + bundle.setParent(folder); + bundle.setContentSection(folder.getContentSection()); + bundle.save(); + + publication.setOrganization(orga); + + if (publish) { + publishItem(orga); + } + + report.setType(orga.getClass().getName()); + } + + report.setCreated(true); + + //Special handling for pretend mode + if (pretend && createdOrgas.contains(name)) { + report.setCreated(false); + } else { + createdOrgas.add(name); + } + } else { + collection.next(); + final GenericOrganizationalUnit orga = new GenericOrganizationalUnit(collection.getDataObject()); + if (!pretend) { + publication.setOrganization(orga); + } + report.setType(orga.getClass().getName()); + report.setCreated(false); + } + + collection.close(); + return report; + } + + public SeriesImportReport processSeries(final Publication publication, final String seriesTitle, final boolean pretend) {