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);
+ }
+ }
+
+
+
+}