diff --git a/ccm-sci-publications/application.xml b/ccm-sci-publications/application.xml index d055118f5..ce659ccfc 100644 --- a/ccm-sci-publications/application.xml +++ b/ccm-sci-publications/application.xml @@ -12,6 +12,7 @@ + diff --git a/ccm-sci-publications/lib/JabRef-2.9.jar b/ccm-sci-publications/lib/JabRef-2.9.jar new file mode 100644 index 000000000..3166765d0 Binary files /dev/null and b/ccm-sci-publications/lib/JabRef-2.9.jar differ diff --git a/ccm-sci-publications/src/ccm-sci-publications.config b/ccm-sci-publications/src/ccm-sci-publications.config index 9877b71c8..65fbdd7f4 100644 --- a/ccm-sci-publications/src/ccm-sci-publications.config +++ b/ccm-sci-publications/src/ccm-sci-publications.config @@ -1,4 +1,5 @@ - + + diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/bibtex/BibTeXPublicationsImporter.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/bibtex/BibTeXPublicationsImporter.java new file mode 100644 index 000000000..8bf76de76 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/bibtex/BibTeXPublicationsImporter.java @@ -0,0 +1,39 @@ +package com.arsdigita.cms.scipublications.importer.bibtex; + +import com.arsdigita.cms.scipublications.imexporter.PublicationFormat; +import com.arsdigita.cms.scipublications.importer.SciPublicationsImportException; +import com.arsdigita.cms.scipublications.importer.SciPublicationsImporter; +import com.arsdigita.cms.scipublications.importer.report.ImportReport; +import javax.activation.MimeType; +import javax.activation.MimeTypeParseException; +import org.apache.log4j.Logger; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class BibTeXPublicationsImporter implements SciPublicationsImporter { + + private static final Logger LOGGER = Logger.getLogger(BibTeXPublicationsImporter.class); + + public PublicationFormat getSupportedFormat() { + try { + return new PublicationFormat("BibTeX", new MimeType("application/x-bibtex"), "bib"); + } catch (MimeTypeParseException ex) { + LOGGER.warn("Failed to create MimeType for PublicationFormat." + + "Using null mimetype instead. Cause: ", ex); + return new PublicationFormat("RIS", null, "RIS"); + } + } + + public ImportReport importPublications(final String publications, + final boolean pretend, + final boolean publishNewItems) + throws SciPublicationsImportException { + + + throw new UnsupportedOperationException(); + } + +} 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 92c079b21..eddc61853 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,7 +3,6 @@ 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. 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 931bdd7ef..481ac97da 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 @@ -19,7 +19,16 @@ import org.apache.log4j.Logger; public class RisImporter implements SciPublicationsImporter { private static final Logger LOGGER = Logger.getLogger(RisImporter.class); - private final RisConverters converters = RisConverters.getInstance(); + private static final RisImporterConfig CONFIG = new RisImporterConfig(); + private final RisConverters converters = RisConverters.getInstance(); + + static { + CONFIG.load(); + } + + public static RisImporterConfig getConfig() { + return CONFIG; + } public PublicationFormat getSupportedFormat() { try { @@ -27,15 +36,13 @@ public class RisImporter implements SciPublicationsImporter { } catch (MimeTypeParseException ex) { LOGGER.warn("Failed to create MimeType for PublicationFormat." + "Using null mimetype instead. Cause: ", ex); - return new PublicationFormat("RIS", - null, - "RIS"); + return new PublicationFormat("RIS", null, "RIS"); } } 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(); @@ -46,13 +53,13 @@ public class RisImporter implements SciPublicationsImporter { report.setPretend(pretend); final ImporterUtil importerUtil = new ImporterUtil(publishNewItems); - + try { - for (RisDataset dataset : datasets) { - processPublication(dataset, report, importerUtil, pretend, publishNewItems); - } - } catch(Exception ex) { - ex.printStackTrace(System.out); + for (RisDataset dataset : datasets) { + processPublication(dataset, report, importerUtil, pretend, publishNewItems); + } + } catch (Exception ex) { + ex.printStackTrace(System.out); } return report; @@ -67,7 +74,7 @@ public class RisImporter implements SciPublicationsImporter { report.addPublication(converters.convert(dataset, importerUtil, pretend, publishNewItems)); } catch (RisConverterException ex) { final PublicationImportReport importReport = new PublicationImportReport(); - importReport.addMessage(String.format("Failed to create converter for RIS type '%s'.", + importReport.addMessage(String.format("Failed to create converter for RIS type '%s'.", dataset.getType().toString())); } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisImporterConfig.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisImporterConfig.java new file mode 100644 index 000000000..297114ed7 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisImporterConfig.java @@ -0,0 +1,43 @@ +package com.arsdigita.cms.scipublications.importer.ris; + +import com.arsdigita.categorization.Category; +import com.arsdigita.runtime.AbstractConfig; +import com.arsdigita.util.parameter.IntegerParameter; +import com.arsdigita.util.parameter.Parameter; +import java.math.BigDecimal; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class RisImporterConfig extends AbstractConfig { + + private Parameter defaultCategoryId; + + public RisImporterConfig() { + super(); + defaultCategoryId = new IntegerParameter("com.arsdigita.cms.scipublications.importer.ris.default_category_id", + Parameter.REQUIRED, + 0); + + register(defaultCategoryId); + + loadInfo(); + } + + public Integer getDefaultCategoryId() { + return (Integer) get(defaultCategoryId); + } + + public Category getDefaultCategory() { + final Integer categoryId = getDefaultCategoryId(); + + if (categoryId == 0) { + return null; + } else { + return new Category(new BigDecimal(categoryId)); + } + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisImporterConfig_parameter.properties.properties b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisImporterConfig_parameter.properties.properties new file mode 100644 index 000000000..3b46f2af3 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/RisImporterConfig_parameter.properties.properties @@ -0,0 +1,4 @@ +com.arsdigita.cms.scipublications.importer.ris.default_category_id.title = Default category for imported publications +com.arsdigita.cms.scipublications.importer.ris.default_category_id.purpose = All publications which are created during the import will be assigned to this category. The category set using the id of the category. +com.arsdigita.cms.scipublications.importer.ris.default_category_id.example = 12345 +com.arsdigita.cms.scipublications.importer.ris.default_category_id.format = [Integer] 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 45062920d..8e42eb499 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,520 +1,92 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; +import com.arsdigita.categorization.Category; 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; 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.AuthorData; +import com.arsdigita.cms.scipublications.importer.ris.RisImporter; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.List; +import com.arsdigita.kernel.Kernel; +import java.math.BigDecimal; /** * + * @param + * @param * @author Jens Pelzetter * @version $Id$ */ -public abstract class AbstractRisConverter implements RisConverter { +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, - final String targetField, - final PublicationImportReport report, - final boolean pretend) { - final List values = dataset.getValues().get(field); - if ((values != null) && !values.isEmpty()) { - publication.set(targetField, values.get(0)); - report.addField(new FieldImportReport(targetField, values.get(0))); - } - } + protected abstract T createPublication(boolean pretend); - protected void processIntField(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); - try { - final int value = Integer.parseInt(valueStr); - publication.set(targetField, value); - publication.set(targetField, valueStr); - } catch (NumberFormatException ex) { - report.addMessage(String.format("Failed to parse value of field '%s' into an integer for dataset " - + "starting on line %d.", - field, - dataset.getFirstLine())); - } - } - } + protected abstract B createBundle(T publication, boolean pretend); - 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) { - 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, - final RisField risField, - final ImporterUtil importerUtil, - final Publication publication, - final PublicationImportReport report, - final boolean pretend) { - processAuthors(dataset, risField, importerUtil, publication, false, report, pretend); - } - - protected void processEditors(final RisDataset dataset, - final RisField risField, - final ImporterUtil importerUtil, - final Publication publication, - final PublicationImportReport report, - final boolean pretend) { - processAuthors(dataset, risField, importerUtil, publication, true, report, pretend); - } - - private void processAuthors(final RisDataset dataset, - final RisField risField, - final ImporterUtil importerUtil, - final Publication publication, - final boolean isEditors, - final PublicationImportReport report, - final boolean pretend) { - final List authors = dataset.getValues().get(risField); - if ((authors != null) && !authors.isEmpty()) { - for (String authorStr : authors) { - processAuthorStr(authorStr, - isEditors, - importerUtil, - publication, - report, - dataset.getFirstLine(), - pretend); - } - } - } - - private void processAuthorStr(final String authorStr, - final boolean editor, - final ImporterUtil importerUtil, - final Publication publication, - final PublicationImportReport importReport, - final int firstLine, - final boolean pretend) { - final AuthorData authorData = new AuthorData(); - - final String[] tokens = authorStr.split(","); - if (tokens.length == 0) { - importReport.addMessage(String.format("Failed to parse author string '%s' at dataset starting at line %d.", - authorStr, firstLine)); - return; - } - - if (tokens.length >= 1) { - authorData.setSurname(tokens[0]); - } - - if (tokens.length >= 2) { - authorData.setGivenName(tokens[1]); - } - - authorData.setEditor(editor); - - final AuthorImportReport authorReport = importerUtil.processAuthor(publication, authorData, pretend); - importReport.addAuthor(authorReport); - } - - protected void processPublisher(final RisDataset dataset, - final boolean pretend, - final PublicationWithPublisher publication, - final ImporterUtil importerUtil, - final PublicationImportReport report) { - 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; - } else { - publisherName = publisherList.get(0); - } - - final String place; - if ((placeList == null) || placeList.isEmpty()) { - place = null; - } else { - place = placeList.get(0); - } - - if (publisherName != null) { - report.setPublisher(importerUtil.processPublisher(publication, place, publisherName, pretend)); - } - } - - 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, - final PublicationImportReport report) { - final List numberOfPages = dataset.getValues().get(RisField.SP); - if ((numberOfPages != null) && !numberOfPages.isEmpty()) { - try { - final int value = Integer.parseInt(numberOfPages.get(0)); - publication.setNumberOfPages(value); - report.addField(new FieldImportReport("number of pages", numberOfPages.get(0))); - } catch (NumberFormatException ex) { - report.addMessage(String.format("Failed to parse number of pages at dataset starting at line %d", - dataset.getFirstLine())); - } - } - - } - - protected void processNumberOfVolumes(final RisDataset dataset, - final boolean pretend, - final PublicationWithPublisher publication, - final PublicationImportReport report) { - final List numberOfVols = dataset.getValues().get(RisField.NV); - if ((numberOfVols != null) && !numberOfVols.isEmpty()) { - try { - final int value = Integer.parseInt(numberOfVols.get(0)); - publication.setNumberOfVolumes(value); - report.addField(new FieldImportReport("number of volumes", numberOfVols.get(0))); - } catch (NumberFormatException ex) { - report.addMessage(String.format("Failed to parse number of volumes at dataset starting at line %d.", - dataset.getFirstLine())); - } - } - } - - protected void processVolume(final RisDataset dataset, - final boolean pretend, - final PublicationWithPublisher publication, - final PublicationImportReport report) { - final List volume = dataset.getValues().get(RisField.VL); - if ((volume != null) && !volume.isEmpty()) { - try { - final int value = Integer.parseInt(volume.get(0)); - publication.setVolume(value); - report.addField(new FieldImportReport("volume", volume.get(0))); - } catch (NumberFormatException ex) { - report.addMessage(String.format("Failed to parse value of field 'volume' on dataset starting " - + "at line %d.", dataset.getFirstLine())); - } - } - } - - protected void processYear(final RisDataset dataset, - final boolean pretend, - final Publication publication, - final PublicationImportReport report) { - 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); - report.addField(new FieldImportReport("year", yearStr)); - } catch (NumberFormatException ex) { - report.addMessage(String.format("Failed to convert year of publication value '%s' from RIS to" - + "integer value on dataset starting at line %d. Setting year of " - + "publication to 0", dataset.getFirstLine())); - publication.setYearOfPublication(0); - } - } - - protected void processSeries(final RisDataset dataset, - final RisField field, - final Publication publication, - final ImporterUtil importerUtil, - final boolean pretend, - final PublicationImportReport report) { - final List series = dataset.getValues().get(field); - if ((series != null) && !series.isEmpty()) { - report.setSeries(importerUtil.processSeries(publication, series.get(0), pretend)); - } - } - - protected void processJournal(final RisDataset dataset, - final RisField field, - final ArticleInJournal article, - final ImporterUtil importerUtil, - final boolean pretend, - final PublicationImportReport report) { - final List journal = dataset.getValues().get(field); - if ((journal != null) && !journal.isEmpty()) { - report.setJournal(importerUtil.processJournal(article, journal.get(0), pretend)); - } - } - - 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, + protected abstract void processFields(final RisDataset dataset, + final T publication, 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 PublicationImportReport importReport, + final boolean pretend); - final List colVolEditors = dataset.getValues().get(cvEditorsField); - final List colVolEditorData = new ArrayList(); + public final PublicationImportReport convert(final RisDataset dataset, + final ImporterUtil importerUtil, + final boolean pretend, + final boolean publishNewItems) { + final PublicationImportReport importReport = new PublicationImportReport(); - for (String colVolEditor : colVolEditors) { - final String[] tokens = colVolEditor.split(","); + final T publication = createPublication(pretend); + importReport.setTitle(publication.BASE_DATA_OBJECT_TYPE); - colVolEditorData.add(createAuthorData(tokens)); + processFields(dataset, publication, importerUtil, importReport, pretend); + + if (!pretend) { + publication.save(); + + publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); + + publication.save(); + + final B bundle = createBundle(publication, pretend); + + assignFolder(publication, bundle); + assignCategories(bundle); + + bundle.save(); + publication.save(); } - 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)); + if (publishNewItems) { + importerUtil.publishItem(publication); } + + importReport.setSuccessful(true); + + return importReport; } - 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)); - } + /** + * Overwrite this method to put a publication of specific type into a special folder. + * + * @return + */ + protected Integer getFolderId() { + return Publication.getConfig().getDefaultPublicationsFolder(); } - protected void processPages(final RisDataset dataset, - final RisField field, - final Publication publication, - final boolean pretend, - final PublicationImportReport report) { - final List values = dataset.getValues().get(field); - final String pages = values.get(0); + protected void assignFolder(final Publication publication, final PublicationBundle bundle) { + final Folder folder = new Folder(new BigDecimal(getFolderId())); + bundle.setParent(folder); + bundle.setContentSection(folder.getContentSection()); + publication.setContentSection(folder.getContentSection()); + } - final String[] tokens = pages.split("-"); - if (tokens.length == 2) { - try { - final int pagesFrom = Integer.parseInt(tokens[0]); - final int pagesTo = Integer.parseInt(tokens[1]); - - publication.set("pagesFrom", pagesFrom); - publication.set("pagesTo", pagesTo); - - report.addField(new FieldImportReport("pagesFrom", Integer.toString(pagesFrom))); - report.addField(new FieldImportReport("pagesTo", Integer.toString(pagesTo))); - } catch (NumberFormatException ex) { - report.addMessage(String.format("Failed to parse pages value in dataset starting at line %d. " - + "On of the values given is not an integer.", - dataset.getFirstLine())); - } - } else if (tokens.length == 1) { - try { - final int pagesFrom = Integer.parseInt(tokens[0]); - - publication.set("pagesFrom", pagesFrom); - - report.addField(new FieldImportReport("pagesFrom", Integer.toString(pagesFrom))); - } catch (NumberFormatException ex) { - report.addMessage(String.format("Failed to parse pages value in dataset starting at line %d. " - + "Value is not an integer.", - dataset.getFirstLine())); - } - } else if (tokens.length > 2) { - report.addMessage(String.format("Failed to parse pages value in dataset starting at line %d. " - + "Invalid format", - dataset.getFirstLine())); + protected void assignCategories(final PublicationBundle bundle) { + final Category defaultCat = RisImporter.getConfig().getDefaultCategory(); + if (defaultCat != null) { + defaultCat.addChild(bundle); } } 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 index fbb2a8008..616b0d81f 100644 --- 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 @@ -6,52 +6,67 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisOrgaUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; -import com.arsdigita.kernel.Kernel; /** * * @author Jens Pelzetter * @version $Id$ */ -public class BlogConverter extends AbstractRisConverter { +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; + @Override + protected InternetArticle createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new InternetArticle(); + } } + @Override + protected InternetArticleBundle createBundle(final InternetArticle publication, + final boolean pretend) { + if (pretend) { + return null; + } else { + return new InternetArticleBundle(publication); + } + } + + @Override + protected void processFields(final RisDataset dataset, + final InternetArticle publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisOrgaUtil orgaUtil = new RisOrgaUtil(importerUtil, pretend); + + fieldUtil.processTitle(dataset, publication, importReport); + + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); + + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); + authorUtil.processEditors(dataset, RisField.A2, publication, importReport); + + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + fieldUtil.processField(dataset, RisField.CY, publication, "place", importReport); + fieldUtil.processField(dataset, RisField.ET, publication, "edition", importReport); + + orgaUtil.processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, importReport); + orgaUtil.processOrganization(dataset, RisField.T3, pretend, publication, importerUtil, importReport); + + fieldUtil.processField(dataset, RisField.UR, publication, "url", importReport); + fieldUtil.processDateField(dataset, RisField.Y2, publication, "lastAccessed", importReport); + } + public RisType getRisType() { - return RisType.BLOG; + 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 8d2e0fe68..bf716dcc5 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,13 +1,16 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; import com.arsdigita.cms.contenttypes.Monograph; -import com.arsdigita.cms.contenttypes.PublicationWithPublisherBundle; +import com.arsdigita.cms.contenttypes.PublicationBundle; 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisOrgaUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisSeriesUtil; 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}. @@ -15,46 +18,56 @@ import com.arsdigita.kernel.Kernel; * @author Jens Pelzetter * @version $Id$ */ -public class BookConverter extends AbstractRisConverter { +public class BookConverter extends AbstractRisConverter { - public PublicationImportReport convert(final RisDataset dataset, - final ImporterUtil importerUtil, - final boolean pretend, - final boolean publishNewItems) { - final PublicationImportReport report = new PublicationImportReport(); - 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); - - processYear(dataset, pretend, monograph, report); - - processAuthors(dataset, RisField.AU, importerUtil, monograph, report, pretend); - - processEditors(dataset, RisField.A3, importerUtil, monograph, report, pretend); - - processPublisher(dataset, pretend, monograph, importerUtil, report); - - processField(dataset, RisField.AB, monograph, "abstract", report, pretend); - - processField(dataset, RisField.ET, monograph, "edition", report, pretend); - - processNumberOfVolumes(dataset, pretend, monograph, report); - - processField(dataset, RisField.SN, monograph, "isbn", report, pretend); - - processNumberOfPages(dataset, pretend, monograph, report); - - processVolume(dataset, pretend, monograph, report); - - processSeries(dataset, RisField.T2, monograph, importerUtil, pretend, report); - - return report; + @Override + protected Monograph createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new Monograph(); + } } + @Override + protected PublicationBundle createBundle(final Monograph publication, final boolean pretend) { + if (pretend) { + return null; + } else { + return new PublicationBundle(publication); + } + } + + @Override + protected void processFields(final RisDataset dataset, + final Monograph publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisOrgaUtil orgaUtil = new RisOrgaUtil(importerUtil, pretend); + final RisSeriesUtil seriesUtil = new RisSeriesUtil(importerUtil, pretend); + + fieldUtil.processTitle(dataset, publication, importReport); + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); + + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); + authorUtil.processEditors(dataset, RisField.A3, publication, importReport); + + orgaUtil.processPublisher(dataset, RisField.PB, RisField.CY, publication, importReport); + + seriesUtil.processSeries(dataset, RisField.T2, publication, importReport); + + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + fieldUtil.processField(dataset, RisField.ET, publication, "edition", importReport); + fieldUtil.processIntField(dataset, RisField.NV, publication, "numberOfVolumes", importReport); + fieldUtil.processField(dataset, RisField.SN, publication, "isbn", importReport); + fieldUtil.processIntField(dataset, RisField.SP, publication, "numberOfPages", importReport); + fieldUtil.processIntField(dataset, RisField.VL, publication, "volume", importReport); + + + } public RisType getRisType() { return RisType.BOOK; } 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 79d467f28..b2375fa92 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 @@ -6,8 +6,10 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisColVolUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; 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}. @@ -15,45 +17,60 @@ import com.arsdigita.kernel.Kernel; * @author Jens Pelzetter * @version $Id$ */ -public class ChapConverter extends AbstractRisConverter { +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); + @Override + protected ArticleInCollectedVolume createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new ArticleInCollectedVolume(); + } + } - final ArticleInCollectedVolume article = new ArticleInCollectedVolume(); - article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); - final ArticleInCollectedVolumeBundle bundle = new ArticleInCollectedVolumeBundle(article); + @Override + protected ArticleInCollectedVolumeBundle createBundle(final ArticleInCollectedVolume publication, + final boolean pretend) { + if (pretend) { + return null; + } else { + return new ArticleInCollectedVolumeBundle(publication); + } + } - processTitle(dataset, article, report, pretend); + @Override + protected void processFields(final RisDataset dataset, + final ArticleInCollectedVolume publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisColVolUtil colVolUtil = new RisColVolUtil(importerUtil, pretend); - processYear(dataset, pretend, article, report); + fieldUtil.processTitle(dataset, publication, importReport); - processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend); + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); - processCollectedVolume(dataset, - RisField.T2, - RisField.PY, - RisField.A2, - RisField.CY, - RisField.PB, - RisField.ET, - article, - importerUtil, - pretend, - report); + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); - processField(dataset, RisField.SE, article, "chapter", report, pretend); - processField(dataset, RisField.AB, article, "abstract", report, pretend); - processPages(dataset, RisField.SP, article, pretend, report); + colVolUtil.processCollectedVolume(dataset, + RisField.T2, + RisField.PY, + RisField.A2, + RisField.CY, + RisField.PB, + RisField.ET, + publication, + importReport); - return report; + fieldUtil.processField(dataset, RisField.SE, publication, "chapter", importReport); + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + fieldUtil.processPages(dataset, RisField.SP, publication, importReport); } public RisType getRisType() { return RisType.CHAP; } + } 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 index 1e596f517..4dc58e323 100644 --- 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 @@ -6,6 +6,10 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisOrgaUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisSeriesUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; import com.arsdigita.kernel.Kernel; @@ -14,42 +18,57 @@ import com.arsdigita.kernel.Kernel; * @author Jens Pelzetter * @version $Id$ */ -public class ConfConverter extends AbstractRisConverter { +public class ConfConverter extends AbstractRisConverter { + + @Override + protected Proceedings createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new Proceedings(); + } + } - 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); + @Override + protected ProceedingsBundle createBundle(final Proceedings publication, final boolean pretend) { + if (pretend) { + return null; + } else { + return new ProceedingsBundle(publication); + } + } - final Proceedings proceedings = new Proceedings(); - proceedings.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); - final ProceedingsBundle bundle = new ProceedingsBundle(proceedings); + @Override + protected void processFields(final RisDataset dataset, + final Proceedings publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisOrgaUtil orgaUtil = new RisOrgaUtil(importerUtil, pretend); + final RisSeriesUtil seriesUtil = new RisSeriesUtil(importerUtil, pretend); - processTitle(dataset, proceedings, report, pretend); + fieldUtil.processTitle(dataset, publication, importReport); - processYear(dataset, RisField.C2, pretend, proceedings, report); + fieldUtil.processIntField(dataset, RisField.C2, publication, "year", importReport); - processAuthors(dataset, RisField.AU, importerUtil, proceedings, report, pretend); + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); + authorUtil.processEditors(dataset, RisField.A2, publication, importReport); - processEditors(dataset, RisField.A2, importerUtil, proceedings, report, pretend); + seriesUtil.processSeries(dataset, RisField.T3, publication, importReport); - processSeries(dataset, RisField.T3, proceedings, importerUtil, pretend, report); + orgaUtil.processPublisher(dataset, RisField.PB, RisField.C1, publication, importReport); - 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; + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + fieldUtil.processField(dataset, RisField.CY, publication, "placeOfConference", importReport); + fieldUtil.processDateField(dataset, RisField.DA, publication, "dateFromOfConference", importReport); + fieldUtil.processField(dataset, RisField.ET, publication, "edition", importReport); + fieldUtil.processIntField(dataset, RisField.NV, publication, "numberOfVolumes", importReport); + fieldUtil.processField(dataset, RisField.SN, publication, "isbn", importReport); + fieldUtil.processIntField(dataset, RisField.SP, publication, "numberOfPages", importReport); + fieldUtil.processField(dataset, RisField.T2, publication, "nameOfConference", importReport); + fieldUtil.processIntField(dataset, RisField.VL, publication, "volume", importReport); } public RisType getRisType() { 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 index 63d4a6e17..606bed4bc 100644 --- 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 @@ -6,41 +6,60 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisColVolUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; -import com.arsdigita.kernel.Kernel; /** * * @author Jens Pelzetter * @version $Id$ */ -public class CpaperConverter extends AbstractRisConverter { +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); + @Override + protected InProceedings createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new InProceedings(); + } + } - final InProceedings inProceedings = new InProceedings(); - inProceedings.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); - final InProceedingsBundle bundle = new InProceedingsBundle(inProceedings); + @Override + protected InProceedingsBundle createBundle(final InProceedings publication, + final boolean pretend) { + if (pretend) { + return null; + } else { + return new InProceedingsBundle(publication); + } + } - processTitle(dataset, inProceedings, report, pretend); + @Override + protected void processFields(final RisDataset dataset, + final InProceedings publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisColVolUtil colVolUtil = new RisColVolUtil(importerUtil, pretend); - processYear(dataset, pretend, inProceedings, report); + fieldUtil.processTitle(dataset, publication, importReport); - processAuthors(dataset, RisField.AU, importerUtil, inProceedings, report, pretend); + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); - 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); + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); - return report; + colVolUtil.processProceedings(dataset, RisField.T2, RisField.PY, RisField.T2, RisField.A2, RisField.PB, + RisField.C1, + publication, importReport); + + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + + fieldUtil.processPages(dataset, RisField.SP, publication, importReport); } public RisType getRisType() { 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 2a4bb4cf6..199170149 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 @@ -6,6 +6,10 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisOrgaUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisSeriesUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; import com.arsdigita.kernel.Kernel; @@ -15,42 +19,53 @@ import com.arsdigita.kernel.Kernel; * @author Jens Pelzetter * @version $Id$ */ -public class EbookConverter extends AbstractRisConverter { +public class EbookConverter extends AbstractRisConverter { + + @Override + protected Monograph createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new Monograph(); + } + } - public PublicationImportReport convert(final RisDataset dataset, - final ImporterUtil importerUtil, - final boolean pretend, - final boolean publishNewItems) { - final PublicationImportReport report = new PublicationImportReport(); - report.setType(Monograph.BASE_DATA_OBJECT_TYPE); + @Override + protected PublicationWithPublisherBundle createBundle(final Monograph publication, + final boolean pretend) { + return new PublicationWithPublisherBundle(publication); + } - final Monograph monograph = new Monograph(); - monograph.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); - final PublicationWithPublisherBundle bundle = new PublicationWithPublisherBundle(monograph); + @Override + protected void processFields(final RisDataset dataset, + final Monograph publication, final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisOrgaUtil orgaUtil = new RisOrgaUtil(importerUtil, pretend); + final RisSeriesUtil seriesUtil = new RisSeriesUtil(importerUtil, pretend); - processTitle(dataset, monograph, report, pretend); - - processYear(dataset, pretend, monograph, report); + fieldUtil.processTitle(dataset, publication, importReport); - processAuthors(dataset, RisField.AU, importerUtil, monograph, report, pretend); + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); - processEditors(dataset, RisField.A3, importerUtil, monograph, report, pretend); + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); + authorUtil.processEditors(dataset, RisField.A3, publication, importReport); - processPublisher(dataset, pretend, monograph, importerUtil, report); + orgaUtil.processPublisher(dataset, RisField.PB, RisField.CY, publication, importReport); - processField(dataset, RisField.AB, monograph, "abstract", report, pretend); - - processField(dataset, RisField.ET, monograph, "edition", report, pretend); + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); - processField(dataset, RisField.SN, monograph, "isbn", report, pretend); + fieldUtil.processField(dataset, RisField.ET, publication, "edition", importReport); - processNumberOfPages(dataset, pretend, monograph, report); + fieldUtil.processField(dataset, RisField.SN, publication, "isbn", importReport); - processVolume(dataset, pretend, monograph, report); + fieldUtil.processIntField(dataset, RisField.SP, publication, "numberOfPages", importReport); - processSeries(dataset, RisField.T2, monograph, importerUtil, pretend, report); + fieldUtil.processIntField(dataset, RisField.VL, publication, "volume", importReport); - return report; + seriesUtil.processSeries(dataset, RisField.T2, publication, importReport); } public RisType getRisType() { 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 index 3a4887ba6..98dace986 100644 --- 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 @@ -6,6 +6,9 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisOrgaUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; import com.arsdigita.kernel.Kernel; @@ -14,36 +17,51 @@ import com.arsdigita.kernel.Kernel; * @author Jens Pelzetter * @version $Id$ */ -public class EdbookConverter extends AbstractRisConverter { +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); + @Override + protected CollectedVolume createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new CollectedVolume(); + } + } - final CollectedVolume collectedVolume = new CollectedVolume(); - collectedVolume.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); - final CollectedVolumeBundle bundle = new CollectedVolumeBundle(collectedVolume); + @Override + protected CollectedVolumeBundle createBundle(final CollectedVolume publication, + final boolean pretend) { + if (pretend) { + return null; + } else { + return new CollectedVolumeBundle(publication); + } + } - processTitle(dataset, collectedVolume, report, pretend); + @Override + protected void processFields(final RisDataset dataset, + final CollectedVolume publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisOrgaUtil orgaUtil = new RisOrgaUtil(importerUtil, pretend); - processEditors(dataset, RisField.AU, importerUtil, collectedVolume, report, pretend); + fieldUtil.processTitle(dataset, publication, importReport); - processYear(dataset, pretend, collectedVolume, report); + authorUtil.processEditors(dataset, RisField.AU, publication, importReport); - processPublisher(dataset, pretend, collectedVolume, importerUtil, report); + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); - 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); + orgaUtil.processPublisher(dataset, RisField.PB, RisField.CY, publication, importReport); - - return report; + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + fieldUtil.processField(dataset, RisField.ET, publication, "edition", importReport); + fieldUtil.processIntField(dataset, RisField.NV, publication, "numberOfVolumes", importReport); + fieldUtil.processField(dataset, RisField.SN, publication, "isbn", importReport); + fieldUtil.processIntField(dataset, RisField.SP, publication, "numberOfPages", importReport); + fieldUtil.processIntField(dataset, RisField.VL, publication, "volume", importReport); } public RisType getRisType() { 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 b11dc6870..7678b744f 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 @@ -7,6 +7,9 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisJournalUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; import com.arsdigita.kernel.Kernel; @@ -16,42 +19,56 @@ import com.arsdigita.kernel.Kernel; * @author Jens Pelzetter * @version $Id$ */ -public class EjourConverter extends AbstractRisConverter implements RisConverter { +public class EjourConverter extends AbstractRisConverter { + + @Override + protected ArticleInJournal createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new ArticleInJournal(); + } + } - public PublicationImportReport convert(final RisDataset dataset, - final ImporterUtil importerUtil, - final boolean pretend, - final boolean publishNewItems) { - final PublicationImportReport report = new PublicationImportReport(); - 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); - - processYear(dataset, pretend, article, report); - - processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend); - - processField(dataset, RisField.AB, article, "abstract", report, pretend); - - processJournal(dataset, RisField.T2, article, importerUtil, pretend, report); - - processField(dataset, RisField.M1, article, "issue", report, pretend); - - processPages(dataset, RisField.SP, article, pretend, report); - - processField(dataset, RisField.VL, article, "volume", report, pretend); - - return report; + @Override + protected ArticleInJournalBundle createBundle(final ArticleInJournal publication, + final boolean pretend) { + if (pretend) { + return null; + } else { + return new ArticleInJournalBundle(publication); + } + } + + @Override + protected void processFields(final RisDataset dataset, + final ArticleInJournal publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisJournalUtil journalUtil = new RisJournalUtil(importerUtil, pretend); + + fieldUtil.processTitle(dataset, publication, importReport); + + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); + + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); + + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + + journalUtil.processJournal(dataset, RisField.T2, publication, importReport); + + fieldUtil.processField(dataset, RisField.M1, publication, "issue", importReport); + + fieldUtil.processPages(dataset, RisField.SP, publication, importReport); + + fieldUtil.processField(dataset, RisField.VL, publication, "volume", importReport); } public RisType getRisType() { return RisType.EJOUR; } - - - + } 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 2d91a751e..515c7e530 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,15 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; +import com.arsdigita.cms.contenttypes.InProceedingsBundle; 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisSeriesUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; import com.arsdigita.kernel.Kernel; @@ -14,44 +18,57 @@ import com.arsdigita.kernel.Kernel; * @author Jens Pelzetter * @version $Id$ */ -public class ElecConverter extends AbstractRisConverter { +public class ElecConverter extends AbstractRisConverter { + + @Override + protected InternetArticle createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new InternetArticle(); + } + } - 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); - - 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; + @Override + protected InternetArticleBundle createBundle(final InternetArticle publication, final boolean pretend) { + if (pretend) { + return null; + } else { + return new InternetArticleBundle(publication); + } + } + + @Override + protected void processFields(final RisDataset dataset, + final InternetArticle publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisSeriesUtil seriesUtil = new RisSeriesUtil(importerUtil, pretend); + + fieldUtil.processTitle(dataset, publication, importReport); + + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); + + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); + + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + + seriesUtil.processSeries(dataset, RisField.T2, publication, importReport); + + fieldUtil.processField(dataset, RisField.CY, publication, "place", importReport); + + fieldUtil.processField(dataset, RisField.DO, publication, "doi", importReport); + + fieldUtil.processField(dataset, RisField.ET, publication, "edition", importReport); + + fieldUtil.processField(dataset, RisField.UR, publication, "url", importReport); } public RisType getRisType() { return RisType.ELEC; } - - - + } 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 index f085f6510..f1f941909 100644 --- 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 @@ -6,43 +6,60 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisColVolUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; -import com.arsdigita.kernel.Kernel; /** * * @author Jens Pelzetter * @version $Id$ */ -public class EncycConverter extends AbstractRisConverter { +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); + @Override + protected ArticleInCollectedVolume createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new ArticleInCollectedVolume(); + } + } - final ArticleInCollectedVolume article = new ArticleInCollectedVolume(); - article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); - ArticleInCollectedVolumeBundle bundle = new ArticleInCollectedVolumeBundle(article); + @Override + protected ArticleInCollectedVolumeBundle createBundle(final ArticleInCollectedVolume publication, + final boolean pretend) { + if (pretend) { + return null; + } else { + return new ArticleInCollectedVolumeBundle(publication); + } + } - processTitle(dataset, article, report, pretend); + @Override + protected void processFields(final RisDataset dataset, + final ArticleInCollectedVolume publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisColVolUtil colVolUtil = new RisColVolUtil(importerUtil, pretend); - processYear(dataset, pretend, article, report); + fieldUtil.processTitle(dataset, publication, importReport); - processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend); + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); - processCollectedVolume(dataset, RisField.T2, RisField.PY, RisField.A2, RisField.CY, RisField.PB, RisField.ET, - article, importerUtil, pretend, report); + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); - processField(dataset, RisField.C1, article, "chapter", report, pretend); - processField(dataset, RisField.AB, article, "abstract", report, pretend); - processPages(dataset, RisField.SP, article, pretend, report); + colVolUtil.processCollectedVolume(dataset, RisField.T2, RisField.PY, RisField.A2, RisField.CY, RisField.PB, + RisField.ET, + publication, importReport); - - - return report; + fieldUtil.processField(dataset, RisField.C1, publication, "chapter", importReport); + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + fieldUtil.processPages(dataset, RisField.SP, publication, importReport); } public RisType getRisType() { 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 a81c0f4c4..5464826a2 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 @@ -7,8 +7,10 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisOrgaUtil; 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} @@ -16,43 +18,58 @@ import com.arsdigita.kernel.Kernel; * @author Jens Pelzetter * @version $Id$ */ -public class GenConverter extends AbstractRisConverter { +public class GenConverter 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); + @Override + protected Monograph createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new Monograph(); + } + } - final Monograph publication = new Monograph(); - publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); - final PublicationWithPublisherBundle bundle = new PublicationWithPublisherBundle(publication); + @Override + protected PublicationWithPublisherBundle createBundle(final Monograph publication, final boolean pretend) { + if (pretend) { + return null; + } else { + return new PublicationWithPublisherBundle(publication); + } + } - processTitle(dataset, publication, report, pretend); + @Override + protected void processFields(final RisDataset dataset, + final Monograph publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisOrgaUtil orgaUtil = new RisOrgaUtil(importerUtil, pretend); - processYear(dataset, pretend, publication, report); + fieldUtil.processTitle(dataset, publication, importReport); - processAuthors(dataset, RisField.AU, importerUtil, publication, report, pretend); - processAuthors(dataset, RisField.A2, importerUtil, publication, report, pretend); - processAuthors(dataset, RisField.A3, importerUtil, publication, report, pretend); - processAuthors(dataset, RisField.A4, importerUtil, publication, report, pretend); + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); - processPublisher(dataset, pretend, publication, importerUtil, report); + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); + authorUtil.processAuthors(dataset, RisField.A2, publication, importReport); + authorUtil.processAuthors(dataset, RisField.A3, publication, importReport); + authorUtil.processAuthors(dataset, RisField.A4, publication, importReport); - processField(dataset, RisField.AB, publication, "abstract", report, pretend); + orgaUtil.processPublisher(dataset, RisField.PY, RisField.CY, publication, importReport); - processField(dataset, RisField.ET, publication, "edition", report, pretend); + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); - processField(dataset, RisField.SN, publication, "isbn", report, pretend); + fieldUtil.processField(dataset, RisField.ET, publication, "edition", importReport); - processNumberOfPages(dataset, pretend, publication, report); + fieldUtil.processField(dataset, RisField.SN, publication, "isbn", importReport); - processNumberOfVolumes(dataset, pretend, publication, report); - - processVolume(dataset, pretend, publication, report); + fieldUtil.processIntField(dataset, RisField.SP, publication, "numberOfPages", importReport); - return report; + fieldUtil.processIntField(dataset, RisField.NV, publication, "numberOfVolumes", importReport); + + fieldUtil.processIntField(dataset, RisField.VL, publication, "volume", importReport); } public RisType getRisType() { 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 ec8851a76..3c1f92103 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 @@ -6,6 +6,9 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisJournalUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; import com.arsdigita.kernel.Kernel; @@ -14,39 +17,52 @@ import com.arsdigita.kernel.Kernel; * @author Jens Pelzetter * @version $Id$ */ -public class JourConverter extends AbstractRisConverter { +public class JourConverter 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(ArticleInJournal.BASE_DATA_OBJECT_TYPE); + protected ArticleInJournal createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new ArticleInJournal(); + } + } - final ArticleInJournal article = new ArticleInJournal(); - article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); - final ArticleInJournalBundle bundle = new ArticleInJournalBundle(article); + @Override + protected ArticleInJournalBundle createBundle(final ArticleInJournal publication, final boolean pretend) { + if (pretend) { + return null; + } else { + return new ArticleInJournalBundle(publication); + } + } - processTitle(dataset, article, report, pretend); + @Override + protected void processFields(final RisDataset dataset, + final ArticleInJournal publication, final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisJournalUtil journalUtil = new RisJournalUtil(importerUtil, pretend); - processYear(dataset, pretend, article, report); + fieldUtil.processTitle(dataset, publication, importReport); - processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend); + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); - processField(dataset, RisField.AB, article, "abstract", report, pretend); + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); - processJournal(dataset, RisField.T2, article, importerUtil, pretend, report); + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); - processField(dataset, RisField.M1, article, "issue", report, pretend); + journalUtil.processJournal(dataset, RisField.T2, publication, importReport); - processPages(dataset, RisField.SP, article, pretend, report); + fieldUtil.processField(dataset, RisField.M1, publication, "issue", importReport); - processField(dataset, RisField.VL, article, "volume", report, pretend); + fieldUtil.processPages(dataset, RisField.SP, publication, importReport); - processIntField(dataset, RisField.M2, article, "pagesFrom", report, pretend); - - return report; + fieldUtil.processField(dataset, RisField.VL, publication, "volume", importReport); + + fieldUtil.processIntField(dataset, RisField.M2, publication, "pagesFrom", importReport); } @Override 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 index af5998c73..2a2e179cf 100644 --- 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 @@ -6,49 +6,67 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisOrgaUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisSeriesUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; -import com.arsdigita.kernel.Kernel; /** * * @author Jens Pelzetter * @version $Id$ */ -public class RprtConverter extends AbstractRisConverter { - +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; + protected GreyLiterature createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new GreyLiterature(); + } } - + + @Override + protected UnPublishedBundle createBundle(final GreyLiterature publication, + final boolean pretend) { + if (pretend) { + return null; + } else { + return new UnPublishedBundle(publication); + } + } + + @Override + protected void processFields(final RisDataset dataset, + final GreyLiterature publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisOrgaUtil orgaUtil = new RisOrgaUtil(importerUtil, pretend); + final RisSeriesUtil seriesUtil = new RisSeriesUtil(importerUtil, pretend); + + fieldUtil.processTitle(dataset, publication, importReport); + + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); + + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); + + seriesUtil.processSeries(dataset, RisField.T2, publication, importReport); + + orgaUtil.processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, importReport); + + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + fieldUtil.processField(dataset, RisField.CY, publication, "place", importReport); + fieldUtil.processField(dataset, RisField.SN, publication, "number", importReport); + fieldUtil.processIntField(dataset, RisField.SP, publication, "numberOfPages", importReport); + } + 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 index 7eac3cdf6..ee618a62b 100644 --- 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 @@ -6,6 +6,9 @@ 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisOrgaUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; import com.arsdigita.kernel.Kernel; @@ -14,34 +17,46 @@ import com.arsdigita.kernel.Kernel; * @author Jens Pelzetter * @version $Id$ */ -public class ThesConverter extends AbstractRisConverter { +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); + @Override + protected GreyLiterature createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new GreyLiterature(); + } + } - final GreyLiterature publication = new GreyLiterature(); - publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode()); - final UnPublishedBundle bundle = new UnPublishedBundle(publication); + @Override + protected UnPublishedBundle createBundle(final GreyLiterature publication, final boolean pretend) { + if (pretend) { + return null; + } else { + return new UnPublishedBundle(publication); + } + } - processTitle(dataset, publication, report, pretend); + @Override + protected void processFields(final RisDataset dataset, + final GreyLiterature publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, + final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisOrgaUtil orgaUtil = new RisOrgaUtil(importerUtil, pretend); - processYear(dataset, pretend, publication, report); + fieldUtil.processTitle(dataset, publication, importReport); - processAuthors(dataset, RisField.AU, importerUtil, publication, report, pretend); + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); - 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); + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); - - - - return report; + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + fieldUtil.processField(dataset, RisField.CY, publication, "place", importReport); + orgaUtil.processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, importReport); + fieldUtil.processIntField(dataset, RisField.SP, publication, "numberOfPages", importReport); } public RisType getRisType() { 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 index 8016a1e43..385c752fb 100644 --- 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 @@ -1,11 +1,17 @@ package com.arsdigita.cms.scipublications.importer.ris.converters; import com.arsdigita.cms.contenttypes.GreyLiterature; +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.contenttypes.PublicationBundle; 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.ris.converters.utils.RisAuthorUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisFieldUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisOrgaUtil; +import com.arsdigita.cms.scipublications.importer.ris.converters.utils.RisSeriesUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; import com.arsdigita.kernel.Kernel; @@ -14,38 +20,51 @@ import com.arsdigita.kernel.Kernel; * @author Jens Pelzetter * @version $Id$ */ -public class UnpbConverter extends AbstractRisConverter { +public class UnpbConverter extends AbstractRisConverter { + + @Override + protected GreyLiterature createPublication(final boolean pretend) { + if (pretend) { + return null; + } else { + return new GreyLiterature(); + } + } @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; + protected UnPublishedBundle createBundle(final GreyLiterature publication, + final boolean pretend) { + if (pretend) { + return null; + } else { + return new UnPublishedBundle(publication); + } + } + + @Override + protected void processFields(final RisDataset dataset, + final GreyLiterature publication, + final ImporterUtil importerUtil, + final PublicationImportReport importReport, final boolean pretend) { + final RisFieldUtil fieldUtil = new RisFieldUtil(pretend); + final RisAuthorUtil authorUtil = new RisAuthorUtil(importerUtil, pretend); + final RisOrgaUtil orgaUtil = new RisOrgaUtil(importerUtil, pretend); + final RisSeriesUtil seriesUtil = new RisSeriesUtil(importerUtil, pretend); + + fieldUtil.processTitle(dataset, publication, importReport); + + fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport); + + authorUtil.processAuthors(dataset, RisField.AU, publication, importReport); + + orgaUtil.processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, importReport); + + seriesUtil.processSeries(dataset, RisField.T2, publication, importReport); + + fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport); + fieldUtil.processField(dataset, RisField.CY, publication, "place", importReport); + fieldUtil.processField(dataset, RisField.M1, publication, "number", importReport); + fieldUtil.processIntField(dataset, RisField.SP, publication, "numberOfPages", importReport); } public RisType getRisType() { diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisAuthorUtil.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisAuthorUtil.java new file mode 100644 index 000000000..49f90b8a1 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisAuthorUtil.java @@ -0,0 +1,86 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters.utils; + +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.scipublications.imexporter.ris.RisField; +import com.arsdigita.cms.scipublications.importer.report.AuthorImportReport; +import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; +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.List; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class RisAuthorUtil { + + private final ImporterUtil importerUtil; + private final boolean pretend; + + public RisAuthorUtil(final ImporterUtil importerUtil, final boolean pretend) { + this.importerUtil = importerUtil; + this.pretend = pretend; + } + + public void processAuthors(final RisDataset dataset, + final RisField risField, + final Publication publication, + final PublicationImportReport report) { + processAuthors(dataset, risField, publication, false, report); + } + + public void processEditors(final RisDataset dataset, + final RisField risField, + final Publication publication, + final PublicationImportReport report) { + processAuthors(dataset, risField, publication, true, report); + } + + private void processAuthors(final RisDataset dataset, + final RisField risField, + final Publication publication, + final boolean isEditors, + final PublicationImportReport report) { + final List authors = dataset.getValues().get(risField); + if ((authors != null) && !authors.isEmpty()) { + for (String authorStr : authors) { + processAuthorStr(authorStr, + isEditors, + publication, + report, + dataset.getFirstLine()); + } + } + } + + private void processAuthorStr(final String authorStr, + final boolean editor, + final Publication publication, + final PublicationImportReport importReport, + final int firstLine) { + final AuthorData authorData = new AuthorData(); + + final String[] tokens = authorStr.split(","); + if (tokens.length == 0) { + importReport.addMessage(String.format("Failed to parse author string '%s' at dataset starting at line %d.", + authorStr, firstLine)); + return; + } + + if (tokens.length >= 1) { + authorData.setSurname(tokens[0]); + } + + if (tokens.length >= 2) { + authorData.setGivenName(tokens[1]); + } + + authorData.setEditor(editor); + + final AuthorImportReport authorReport = importerUtil.processAuthor(publication, authorData, pretend); + importReport.addAuthor(authorReport); + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisColVolUtil.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisColVolUtil.java new file mode 100644 index 000000000..5571b3000 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisColVolUtil.java @@ -0,0 +1,123 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters.utils; + +import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume; +import com.arsdigita.cms.contenttypes.InProceedings; +import com.arsdigita.cms.scipublications.imexporter.ris.RisField; +import com.arsdigita.cms.scipublications.importer.report.CollectedVolumeImportReport; +import com.arsdigita.cms.scipublications.importer.report.ProceedingsImportReport; +import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; +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; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class RisColVolUtil { + + private final ImporterUtil importerUtil; + private final boolean pretend; + + public RisColVolUtil(final ImporterUtil importerUtil, final boolean pretend) { + this.importerUtil = importerUtil; + this.pretend = pretend; + } + + public 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 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 colVolEditor : colVolEditors) { + final String[] tokens = colVolEditor.split(","); + + colVolEditorData.add(createAuthorData(tokens)); + } + + if ((colVolTitle != null) && !colVolTitle.isEmpty()) { + final CollectedVolumeImportReport colVolReport = importerUtil.processCollectedVolume(article, + colVolTitle.get(0), + colVolYear.get(0), + colVolEditorData, + colVolPublisher.get(0), + colVolPlace.get(0), + colVolEdition.get(0), + pretend); + report.setCollectedVolume(colVolReport); + } + } + + @SuppressWarnings("PMD.LongVariable") + public 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 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()) { + final ProceedingsImportReport procReport = importerUtil.processProceedings(inProceedings, + procTitle.get(0), + procYear.get(0), + procConfName.get(0), + procEditorData, + procPublisher.get(0), + procPlace.get(0), + pretend); + report.setProceedings(procReport); + } + } + + 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; + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisFieldUtil.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisFieldUtil.java new file mode 100644 index 000000000..96cae9b62 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisFieldUtil.java @@ -0,0 +1,170 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters.utils; + +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.scipublications.imexporter.ris.RisField; +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 java.util.Calendar; +import java.util.List; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class RisFieldUtil { + + private static final String PAGES_FROM = "pagesFrom"; + private static final String PAGES_TO = "pagesTo"; + private final boolean pretend; + + public RisFieldUtil(final boolean pretend) { + this.pretend = pretend; + } + + @SuppressWarnings("PMD.ConfusingTernary") + public void processTitle(final RisDataset dataset, + final Publication publication, + final PublicationImportReport report) { + 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"; + } + + if (!pretend) { + publication.setTitle(title); + } + + report.setTitle(title); + } + + public void processField(final RisDataset dataset, + final RisField field, + final Publication publication, + final String targetField, + final PublicationImportReport report) { + final List values = dataset.getValues().get(field); + if ((values != null) && !values.isEmpty()) { + if (!pretend) { + publication.set(targetField, values.get(0)); + } + report.addField(new FieldImportReport(targetField, values.get(0))); + } + } + + public void processIntField(final RisDataset dataset, + final RisField field, + final Publication publication, + final String targetField, + final PublicationImportReport report) { + final List values = dataset.getValues().get(field); + if ((values != null) && !values.isEmpty()) { + final String valueStr = values.get(0); + try { + final int value = Integer.parseInt(valueStr); + if (!pretend) { + publication.set(targetField, value); + } + report.addField(new FieldImportReport(targetField, valueStr)); + } catch (NumberFormatException ex) { + report.addMessage(String.format("Failed to parse value of field '%s' into an integer for dataset " + + "starting on line %d.", + field, + dataset.getFirstLine())); + } + } + } + + public void processDateField(final RisDataset dataset, + final RisField field, + final Publication publication, + final String targetField, + final PublicationImportReport report) { + 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 + + if (!pretend) { + publication.set(targetField, calendar.getTime()); + } + report.addField(new FieldImportReport(targetField, String.format("%d-%d-%d", + calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), + calendar.get(Calendar.DAY_OF_MONTH)))); + + } 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())); + } + + + } + } + + public void processPages(final RisDataset dataset, + final RisField field, + final Publication publication, + final PublicationImportReport report) { + final List values = dataset.getValues().get(field); + final String pages = values.get(0); + final String[] tokens = pages.split("-"); + if (tokens.length == 2) { + try { + final int pagesFrom = Integer.parseInt(tokens[0]); + final int pagesTo = Integer.parseInt(tokens[1]); + if (!pretend) { + publication.set(PAGES_FROM, pagesFrom); + publication.set(PAGES_TO, pagesTo); + } + report.addField(new FieldImportReport(PAGES_FROM, Integer.toString(pagesFrom))); + report.addField(new FieldImportReport(PAGES_TO, Integer.toString(pagesTo))); + } catch (NumberFormatException ex) { + report.addMessage(String.format("Failed to parse pages value in dataset starting at line %d. " + + "On of the values given is not an integer.", dataset.getFirstLine())); + } + } else if (tokens.length == 1) { + try { + final int pagesFrom = Integer.parseInt(tokens[0]); + if (!pretend) { + publication.set(PAGES_FROM, pagesFrom); + } + report.addField(new FieldImportReport(PAGES_FROM, Integer.toString(pagesFrom))); + } catch (NumberFormatException ex) { + report.addMessage(String.format("Failed to parse pages value in dataset starting at line %d. " + + "Value is not an integer.", dataset.getFirstLine())); + } + } else if (tokens.length > 2) { + report.addMessage(String.format("Failed to parse pages value in dataset starting at line %d. " + + "Invalid format", dataset.getFirstLine())); + } + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisJournalUtil.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisJournalUtil.java new file mode 100644 index 000000000..0f9096472 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisJournalUtil.java @@ -0,0 +1,37 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters.utils; + +import com.arsdigita.cms.contenttypes.ArticleInJournal; +import com.arsdigita.cms.scipublications.imexporter.ris.RisField; +import com.arsdigita.cms.scipublications.importer.report.JournalImportReport; +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; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class RisJournalUtil { + + private final ImporterUtil importerUtil; + private final boolean pretend; + + public RisJournalUtil(final ImporterUtil importerUtil, final boolean pretend) { + this.importerUtil = importerUtil; + this.pretend = pretend; + } + + public void processJournal(final RisDataset dataset, + final RisField field, + final ArticleInJournal article, + final PublicationImportReport report) { + final List journal = dataset.getValues().get(field); + if ((journal != null) && !journal.isEmpty()) { + final JournalImportReport journalReport = importerUtil.processJournal(article, journal.get(0), pretend); + report.setJournal(journalReport); + } + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisOrgaUtil.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisOrgaUtil.java new file mode 100644 index 000000000..79b7cdf42 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisOrgaUtil.java @@ -0,0 +1,93 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters.utils; + +import com.arsdigita.cms.contenttypes.InternetArticle; +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.PublicationImportReport; +import com.arsdigita.cms.scipublications.importer.ris.RisDataset; +import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; +import java.util.List; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class RisOrgaUtil { + + private final ImporterUtil importerUtil; + private final boolean pretend; + + public RisOrgaUtil(final ImporterUtil importerUtil, final boolean pretend) { + this.importerUtil = importerUtil; + this.pretend = pretend; + } + + public void processPublisher(final RisDataset dataset, + final RisField publisherField, + final RisField placeField, + final PublicationWithPublisher publication, + 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; + } else { + publisherName = publisherList.get(0); + } + + final String place; + if ((placeList == null) || placeList.isEmpty()) { + place = null; + } else { + place = placeList.get(0); + } + + if (publisherName != null) { + report.setPublisher(importerUtil.processPublisher(publication, place, publisherName, pretend)); + } + } + + public 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)); + } + } + + public 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)); + } + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisSeriesUtil.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisSeriesUtil.java new file mode 100644 index 000000000..59385437f --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/ris/converters/utils/RisSeriesUtil.java @@ -0,0 +1,39 @@ +package com.arsdigita.cms.scipublications.importer.ris.converters.utils; + +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.scipublications.imexporter.ris.RisField; +import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; +import com.arsdigita.cms.scipublications.importer.report.SeriesImportReport; +import com.arsdigita.cms.scipublications.importer.ris.RisDataset; +import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; +import java.util.List; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class RisSeriesUtil { + + private final ImporterUtil importerUtil; + private final boolean pretend; + + public RisSeriesUtil(final ImporterUtil importerUtil, final boolean pretend) { + this.importerUtil = importerUtil; + this.pretend = pretend; + } + + public void processSeries(final RisDataset dataset, + final RisField field, + final Publication publication, + final PublicationImportReport report) { + final List series = dataset.getValues().get(field); + if ((series != null) && !series.isEmpty()) { + final SeriesImportReport seriesReport = importerUtil.processSeries(publication, series.get(0), pretend); + report.setSeries(seriesReport); + } + } + + + +}