RIS Importer Beta-Version

git-svn-id: https://svn.libreccm.org/ccm/trunk@2034 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2013-01-11 21:08:35 +00:00
parent 056c0dbbf6
commit 47f50ad2c9
30 changed files with 1385 additions and 919 deletions

View File

@ -12,6 +12,7 @@
<ccm:directories>
<ccm:directory name="pdl"/>
<ccm:directory name="sql"/>
<ccm:directory name="lib"/>
<ccm:directory name="src"/>
</ccm:directories>
<ccm:contacts>

Binary file not shown.

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<registry>
<config class="com.arsdigita.cms.contenttypes.PublicationsConfig" storage="ccm-sci-publications/publications.properties"/>
<config class="com.arsdigita.cms.contenttypes.PublicationsConfig" storage="ccm-sci-publications/publications.properties"/>
<config class="com.arsdigita.cms.scipublications.importer.ris.RisImporterConfig" storage="ccm-sci-publications/ris_importer.properties"/>
</registry>

View File

@ -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 <jens@jp-digital.de>
* @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();
}
}

View File

@ -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.

View File

@ -19,17 +19,24 @@ import org.apache.log4j.Logger;
public class RisImporter implements SciPublicationsImporter {
private static final Logger LOGGER = Logger.getLogger(RisImporter.class);
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 {
return new PublicationFormat("RIS", new MimeType("application/x-research-info-systems"), "ris");
} 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");
}
}
@ -51,7 +58,7 @@ public class RisImporter implements SciPublicationsImporter {
for (RisDataset dataset : datasets) {
processPublication(dataset, report, importerUtil, pretend, publishNewItems);
}
} catch(Exception ex) {
} catch (Exception ex) {
ex.printStackTrace(System.out);
}

View File

@ -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 <jens@jp-digital.de>
* @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));
}
}
}

View File

@ -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]

View File

@ -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 <T>
* @param <B>
* @author Jens Pelzetter <jens@jp-digital.de>
* @version $Id$
*/
public abstract class AbstractRisConverter implements RisConverter {
public abstract class AbstractRisConverter<T extends Publication, B extends PublicationBundle> 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 abstract T createPublication(boolean pretend);
protected abstract B createBundle(T publication, boolean pretend);
protected abstract void processFields(final RisDataset dataset,
final T publication,
final ImporterUtil importerUtil,
final PublicationImportReport importReport,
final boolean pretend);
public final PublicationImportReport convert(final RisDataset dataset,
final ImporterUtil importerUtil,
final boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport importReport = new PublicationImportReport();
final T publication = createPublication(pretend);
importReport.setTitle(publication.BASE_DATA_OBJECT_TYPE);
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 (publishNewItems) {
importerUtil.publishItem(publication);
}
importReport.setSuccessful(true);
return importReport;
}
/**
* Overwrite this method to put a publication of specific type into a special folder.
*
* @return
*/
protected Integer getFolderId() {
return Publication.getConfig().getDefaultPublicationsFolder();
}
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());
}
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<String> 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 void processIntField(final RisDataset dataset,
final RisField field,
final Publication publication,
final String targetField,
final PublicationImportReport report,
final boolean pretend) {
final List<String> 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 void processDateField(final RisDataset dataset,
final RisField field,
final Publication publication,
final String targetField,
final PublicationImportReport report,
final boolean pretend) {
final List<String> 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<String> 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<String> publisherList = dataset.getValues().get(publisherField);
final List<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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,
final ImporterUtil importerUtil,
final boolean pretend,
final PublicationImportReport report) {
final List<String> colVolTitle = dataset.getValues().get(cvTitleField);
final List<String> colVolYear = dataset.getValues().get(cvYearField);
final List<String> colVolPlace = dataset.getValues().get(cvPlaceField);
final List<String> colVolPublisher = dataset.getValues().get(cvPublisherField);
final List<String> colVolEdition = dataset.getValues().get(cvEditionField);
final List<String> colVolEditors = dataset.getValues().get(cvEditorsField);
final List<AuthorData> colVolEditorData = new ArrayList<AuthorData>();
for (String colVolEditor : colVolEditors) {
final String[] tokens = colVolEditor.split(",");
colVolEditorData.add(createAuthorData(tokens));
}
if ((colVolTitle != null) && !colVolTitle.isEmpty()) {
report.setCollectedVolume(importerUtil.processCollectedVolume(article,
colVolTitle.get(0),
colVolYear.get(0),
colVolEditorData,
colVolPublisher.get(0),
colVolPlace.get(0),
colVolEdition.get(0),
pretend));
}
}
protected void processProceedings(final RisDataset dataset,
final RisField procTitleField,
final RisField procYearField,
final RisField procConfNameField,
final RisField procEditorsField,
final RisField procPublisherField,
final RisField procPlaceField,
final InProceedings inProceedings,
final ImporterUtil importerUtil,
final boolean pretend,
final PublicationImportReport report) {
final List<String> procTitle = dataset.getValues().get(procTitleField);
final List<String> procYear = dataset.getValues().get(procYearField);
final List<String> procConfName = dataset.getValues().get(procConfNameField);
final List<String> procPublisher = dataset.getValues().get(procPublisherField);
final List<String> procPlace = dataset.getValues().get(procPlaceField);
final List<String> procEditors = dataset.getValues().get(procEditorsField);
final List<AuthorData> procEditorData = new ArrayList<AuthorData>();
for (String procEditor : procEditors) {
final String[] tokens = procEditor.split(", ");
procEditorData.add(createAuthorData(tokens));
}
if ((procTitle != null) && !procTitle.isEmpty()) {
report.setProceedings(importerUtil.processProceedings(inProceedings,
procTitle.get(0),
procYear.get(0),
procConfName.get(0),
procEditorData,
procPublisher.get(0),
procPlace.get(0),
pretend));
}
}
protected void processPages(final RisDataset dataset,
final RisField field,
final Publication publication,
final boolean pretend,
final PublicationImportReport report) {
final List<String> 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]);
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()));
final Category defaultCat = RisImporter.getConfig().getDefaultCategory();
if (defaultCat != null) {
defaultCat.addChild(bundle);
}
}

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class BlogConverter extends AbstractRisConverter {
public class BlogConverter extends AbstractRisConverter<InternetArticle, InternetArticleBundle> {
public PublicationImportReport convert(final RisDataset dataset,
@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 boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(InternetArticle.BASE_DATA_OBJECT_TYPE);
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 InternetArticle article = new InternetArticle();
article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final InternetArticleBundle bundle = new InternetArticleBundle(article);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, article, report, pretend);
fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport);
processYear(dataset, pretend, article, report);
authorUtil.processAuthors(dataset, RisField.AU, publication, importReport);
authorUtil.processEditors(dataset, RisField.A2, publication, importReport);
processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend);
fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport);
fieldUtil.processField(dataset, RisField.CY, publication, "place", importReport);
fieldUtil.processField(dataset, RisField.ET, publication, "edition", importReport);
processEditors(dataset, RisField.A2, importerUtil, article, report, pretend);
orgaUtil.processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, importReport);
orgaUtil.processOrganization(dataset, RisField.T3, pretend, publication, importerUtil, importReport);
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;
fieldUtil.processField(dataset, RisField.UR, publication, "url", importReport);
fieldUtil.processDateField(dataset, RisField.Y2, publication, "lastAccessed", importReport);
}
public RisType getRisType() {
return RisType.BLOG;
}
}

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class BookConverter extends AbstractRisConverter {
public class BookConverter extends AbstractRisConverter<Monograph, PublicationBundle> {
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;
}

View File

@ -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<ArticleInCollectedVolume, ArticleInCollectedVolumeBundle> {
public PublicationImportReport convert(final RisDataset dataset,
@Override
protected ArticleInCollectedVolume createPublication(final boolean pretend) {
if (pretend) {
return null;
} else {
return new ArticleInCollectedVolume();
}
}
@Override
protected ArticleInCollectedVolumeBundle createBundle(final ArticleInCollectedVolume publication,
final boolean pretend) {
if (pretend) {
return null;
} else {
return new ArticleInCollectedVolumeBundle(publication);
}
}
@Override
protected void processFields(final RisDataset dataset,
final ArticleInCollectedVolume publication,
final ImporterUtil importerUtil,
final boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(ArticleInCollectedVolume.BASE_DATA_OBJECT_TYPE);
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);
final ArticleInCollectedVolume article = new ArticleInCollectedVolume();
article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final ArticleInCollectedVolumeBundle bundle = new ArticleInCollectedVolumeBundle(article);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, article, report, pretend);
fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport);
processYear(dataset, pretend, article, report);
authorUtil.processAuthors(dataset, RisField.AU, publication, importReport);
processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend);
processCollectedVolume(dataset,
colVolUtil.processCollectedVolume(dataset,
RisField.T2,
RisField.PY,
RisField.A2,
RisField.CY,
RisField.PB,
RisField.ET,
article,
importerUtil,
pretend,
report);
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);
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;
}
}

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class ConfConverter extends AbstractRisConverter {
public class ConfConverter extends AbstractRisConverter<Proceedings, ProceedingsBundle> {
public PublicationImportReport convert(final RisDataset dataset,
@Override
protected Proceedings createPublication(final boolean pretend) {
if (pretend) {
return null;
} else {
return new Proceedings();
}
}
@Override
protected ProceedingsBundle createBundle(final Proceedings publication, final boolean pretend) {
if (pretend) {
return null;
} else {
return new ProceedingsBundle(publication);
}
}
@Override
protected void processFields(final RisDataset dataset,
final Proceedings publication,
final ImporterUtil importerUtil,
final boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(Proceedings.BASE_DATA_OBJECT_TYPE);
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);
final Proceedings proceedings = new Proceedings();
proceedings.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final ProceedingsBundle bundle = new ProceedingsBundle(proceedings);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, proceedings, report, pretend);
fieldUtil.processIntField(dataset, RisField.C2, publication, "year", importReport);
processYear(dataset, RisField.C2, pretend, proceedings, report);
authorUtil.processAuthors(dataset, RisField.AU, publication, importReport);
authorUtil.processEditors(dataset, RisField.A2, publication, importReport);
processAuthors(dataset, RisField.AU, importerUtil, proceedings, report, pretend);
seriesUtil.processSeries(dataset, RisField.T3, publication, importReport);
processEditors(dataset, RisField.A2, importerUtil, proceedings, report, pretend);
orgaUtil.processPublisher(dataset, RisField.PB, RisField.C1, publication, importReport);
processSeries(dataset, RisField.T3, proceedings, importerUtil, pretend, report);
processPublisher(dataset, RisField.PB, RisField.C1, pretend, proceedings, importerUtil, report);
processField(dataset, RisField.AB, proceedings, "abstract", report, pretend);
processField(dataset, RisField.CY, proceedings, "placeOfConference", report, pretend);
processDateField(dataset, RisField.DA, proceedings, "dateFromOfConference", report, pretend);
processField(dataset, RisField.ET, proceedings, "edition", report, pretend);
processNumberOfVolumes(dataset, pretend, proceedings, report);
processField(dataset, RisField.SN, proceedings, "isbn", report, pretend);
processNumberOfPages(dataset, pretend, proceedings, report);
processField(dataset, RisField.T2, proceedings, "nameOfConference", report, pretend);
processVolume(dataset, pretend, proceedings, report);
return report;
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() {

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class CpaperConverter extends AbstractRisConverter {
public class CpaperConverter extends AbstractRisConverter<InProceedings, InProceedingsBundle> {
public PublicationImportReport convert(final RisDataset dataset,
@Override
protected InProceedings createPublication(final boolean pretend) {
if (pretend) {
return null;
} else {
return new InProceedings();
}
}
@Override
protected InProceedingsBundle createBundle(final InProceedings publication,
final boolean pretend) {
if (pretend) {
return null;
} else {
return new InProceedingsBundle(publication);
}
}
@Override
protected void processFields(final RisDataset dataset,
final InProceedings publication,
final ImporterUtil importerUtil,
final boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(InProceedings.BASE_DATA_OBJECT_TYPE);
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);
final InProceedings inProceedings = new InProceedings();
inProceedings.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final InProceedingsBundle bundle = new InProceedingsBundle(inProceedings);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, inProceedings, report, pretend);
fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport);
processYear(dataset, pretend, inProceedings, report);
authorUtil.processAuthors(dataset, RisField.AU, publication, importReport);
processAuthors(dataset, RisField.AU, importerUtil, inProceedings, report, pretend);
colVolUtil.processProceedings(dataset, RisField.T2, RisField.PY, RisField.T2, RisField.A2, RisField.PB,
RisField.C1,
publication, importReport);
processProceedings(dataset, RisField.T2, RisField.PY, RisField.T2, RisField.A2, RisField.PB, RisField.C1,
inProceedings, importerUtil, pretend, report);
fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport);
processField(dataset, RisField.AB, inProceedings, "abstract", report, pretend);
processPages(dataset, RisField.SP, inProceedings, pretend, report);
return report;
fieldUtil.processPages(dataset, RisField.SP, publication, importReport);
}
public RisType getRisType() {

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class EbookConverter extends AbstractRisConverter {
public class EbookConverter extends AbstractRisConverter<Monograph, PublicationWithPublisherBundle> {
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 Monograph createPublication(final boolean pretend) {
if (pretend) {
return null;
} else {
return new Monograph();
}
}
final Monograph monograph = new Monograph();
monograph.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final PublicationWithPublisherBundle bundle = new PublicationWithPublisherBundle(monograph);
@Override
protected PublicationWithPublisherBundle createBundle(final Monograph publication,
final boolean pretend) {
return new PublicationWithPublisherBundle(publication);
}
processTitle(dataset, monograph, 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);
final RisSeriesUtil seriesUtil = new RisSeriesUtil(importerUtil, 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);
fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport);
processField(dataset, RisField.ET, monograph, "edition", report, pretend);
fieldUtil.processField(dataset, RisField.ET, publication, "edition", importReport);
processField(dataset, RisField.SN, monograph, "isbn", report, pretend);
fieldUtil.processField(dataset, RisField.SN, publication, "isbn", importReport);
processNumberOfPages(dataset, pretend, monograph, report);
fieldUtil.processIntField(dataset, RisField.SP, publication, "numberOfPages", importReport);
processVolume(dataset, pretend, monograph, report);
fieldUtil.processIntField(dataset, RisField.VL, publication, "volume", importReport);
processSeries(dataset, RisField.T2, monograph, importerUtil, pretend, report);
return report;
seriesUtil.processSeries(dataset, RisField.T2, publication, importReport);
}
public RisType getRisType() {

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class EdbookConverter extends AbstractRisConverter {
public class EdbookConverter extends AbstractRisConverter<CollectedVolume, CollectedVolumeBundle> {
public PublicationImportReport convert(final RisDataset dataset,
@Override
protected CollectedVolume createPublication(final boolean pretend) {
if (pretend) {
return null;
} else {
return new CollectedVolume();
}
}
@Override
protected CollectedVolumeBundle createBundle(final CollectedVolume publication,
final boolean pretend) {
if (pretend) {
return null;
} else {
return new CollectedVolumeBundle(publication);
}
}
@Override
protected void processFields(final RisDataset dataset,
final CollectedVolume publication,
final ImporterUtil importerUtil,
final boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(CollectedVolume.BASE_DATA_OBJECT_TYPE);
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 CollectedVolume collectedVolume = new CollectedVolume();
collectedVolume.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final CollectedVolumeBundle bundle = new CollectedVolumeBundle(collectedVolume);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, collectedVolume, report, pretend);
authorUtil.processEditors(dataset, RisField.AU, publication, importReport);
processEditors(dataset, RisField.AU, importerUtil, collectedVolume, report, pretend);
fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport);
processYear(dataset, pretend, collectedVolume, report);
orgaUtil.processPublisher(dataset, RisField.PB, RisField.CY, publication, importReport);
processPublisher(dataset, pretend, collectedVolume, importerUtil, report);
processField(dataset, RisField.AB, collectedVolume, "abstract", report, pretend);
processField(dataset, RisField.ET, collectedVolume, "edition", report, pretend);
processNumberOfVolumes(dataset, pretend, collectedVolume, report);
processField(dataset, RisField.SN, collectedVolume, "isbn", report, pretend);
processNumberOfPages(dataset, pretend, collectedVolume, report);
processVolume(dataset, pretend, collectedVolume, report);
return report;
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() {

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class EjourConverter extends AbstractRisConverter implements RisConverter {
public class EjourConverter extends AbstractRisConverter<ArticleInJournal, ArticleInJournalBundle> {
public PublicationImportReport convert(final RisDataset dataset,
@Override
protected ArticleInJournal createPublication(final boolean pretend) {
if (pretend) {
return null;
} else {
return new ArticleInJournal();
}
}
@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 boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(ArticleInJournal.BASE_DATA_OBJECT_TYPE);
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);
final ArticleInJournal article = new ArticleInJournal();
article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final ArticleInJournalBundle bundle = new ArticleInJournalBundle(article);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, article, report, pretend);
fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport);
processYear(dataset, pretend, article, report);
authorUtil.processAuthors(dataset, RisField.AU, publication, importReport);
processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend);
fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport);
processField(dataset, RisField.AB, article, "abstract", report, pretend);
journalUtil.processJournal(dataset, RisField.T2, publication, importReport);
processJournal(dataset, RisField.T2, article, importerUtil, pretend, report);
fieldUtil.processField(dataset, RisField.M1, publication, "issue", importReport);
processField(dataset, RisField.M1, article, "issue", report, pretend);
fieldUtil.processPages(dataset, RisField.SP, publication, importReport);
processPages(dataset, RisField.SP, article, pretend, report);
processField(dataset, RisField.VL, article, "volume", report, pretend);
return report;
fieldUtil.processField(dataset, RisField.VL, publication, "volume", importReport);
}
public RisType getRisType() {
return RisType.EJOUR;
}
}

View File

@ -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<InternetArticle, InternetArticleBundle> {
public PublicationImportReport convert(final RisDataset dataset,
@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 boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(InternetArticle.BASE_DATA_OBJECT_TYPE);
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);
final InternetArticle article = new InternetArticle();
article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final InternetArticleBundle bundle = new InternetArticleBundle(article);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, article, report, pretend);
fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport);
processYear(dataset, pretend, article, report);
authorUtil.processAuthors(dataset, RisField.AU, publication, importReport);
processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend);
fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport);
processField(dataset, RisField.AB, article, "abstract", report, pretend);
seriesUtil.processSeries(dataset, RisField.T2, publication, importReport);
processSeries(dataset, RisField.T2, article, importerUtil, pretend, report);
fieldUtil.processField(dataset, RisField.CY, publication, "place", importReport);
processField(dataset, RisField.CY, article, "place", report, pretend);
fieldUtil.processField(dataset, RisField.DO, publication, "doi", importReport);
processField(dataset, RisField.DO, article, "doi", report, pretend);
fieldUtil.processField(dataset, RisField.ET, publication, "edition", importReport);
processField(dataset, RisField.ET, article, "edition", report, pretend);
processField(dataset, RisField.UR, article, "url", report, pretend);
return report;
fieldUtil.processField(dataset, RisField.UR, publication, "url", importReport);
}
public RisType getRisType() {
return RisType.ELEC;
}
}

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class EncycConverter extends AbstractRisConverter {
public class EncycConverter extends AbstractRisConverter<ArticleInCollectedVolume, ArticleInCollectedVolumeBundle> {
public PublicationImportReport convert(final RisDataset dataset,
@Override
protected ArticleInCollectedVolume createPublication(final boolean pretend) {
if (pretend) {
return null;
} else {
return new ArticleInCollectedVolume();
}
}
@Override
protected ArticleInCollectedVolumeBundle createBundle(final ArticleInCollectedVolume publication,
final boolean pretend) {
if (pretend) {
return null;
} else {
return new ArticleInCollectedVolumeBundle(publication);
}
}
@Override
protected void processFields(final RisDataset dataset,
final ArticleInCollectedVolume publication,
final ImporterUtil importerUtil,
final boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(ArticleInCollectedVolume.BASE_DATA_OBJECT_TYPE);
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);
final ArticleInCollectedVolume article = new ArticleInCollectedVolume();
article.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
ArticleInCollectedVolumeBundle bundle = new ArticleInCollectedVolumeBundle(article);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, article, report, pretend);
fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport);
processYear(dataset, pretend, article, report);
authorUtil.processAuthors(dataset, RisField.AU, publication, importReport);
processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend);
colVolUtil.processCollectedVolume(dataset, RisField.T2, RisField.PY, RisField.A2, RisField.CY, RisField.PB,
RisField.ET,
publication, importReport);
processCollectedVolume(dataset, RisField.T2, RisField.PY, RisField.A2, RisField.CY, RisField.PB, RisField.ET,
article, importerUtil, pretend, report);
processField(dataset, RisField.C1, article, "chapter", report, pretend);
processField(dataset, RisField.AB, article, "abstract", report, pretend);
processPages(dataset, RisField.SP, article, pretend, report);
return report;
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() {

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class GenConverter extends AbstractRisConverter {
public class GenConverter extends AbstractRisConverter<Monograph, PublicationWithPublisherBundle> {
public PublicationImportReport convert(final RisDataset dataset,
@Override
protected Monograph createPublication(final boolean pretend) {
if (pretend) {
return null;
} else {
return new Monograph();
}
}
@Override
protected PublicationWithPublisherBundle createBundle(final Monograph publication, final boolean pretend) {
if (pretend) {
return null;
} else {
return new PublicationWithPublisherBundle(publication);
}
}
@Override
protected void processFields(final RisDataset dataset,
final Monograph publication,
final ImporterUtil importerUtil,
final boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(GreyLiterature.BASE_DATA_OBJECT_TYPE);
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 Monograph publication = new Monograph();
publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final PublicationWithPublisherBundle bundle = new PublicationWithPublisherBundle(publication);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, publication, report, pretend);
fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport);
processYear(dataset, pretend, publication, 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);
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);
orgaUtil.processPublisher(dataset, RisField.PY, RisField.CY, publication, importReport);
processPublisher(dataset, pretend, publication, importerUtil, report);
fieldUtil.processField(dataset, RisField.AB, publication, "abstract", importReport);
processField(dataset, RisField.AB, publication, "abstract", report, pretend);
fieldUtil.processField(dataset, RisField.ET, publication, "edition", importReport);
processField(dataset, RisField.ET, publication, "edition", report, pretend);
fieldUtil.processField(dataset, RisField.SN, publication, "isbn", importReport);
processField(dataset, RisField.SN, publication, "isbn", report, pretend);
fieldUtil.processIntField(dataset, RisField.SP, publication, "numberOfPages", importReport);
processNumberOfPages(dataset, pretend, publication, report);
fieldUtil.processIntField(dataset, RisField.NV, publication, "numberOfVolumes", importReport);
processNumberOfVolumes(dataset, pretend, publication, report);
processVolume(dataset, pretend, publication, report);
return report;
fieldUtil.processIntField(dataset, RisField.VL, publication, "volume", importReport);
}
public RisType getRisType() {

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class JourConverter extends AbstractRisConverter {
public class JourConverter extends AbstractRisConverter<ArticleInJournal, ArticleInJournalBundle> {
@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);
fieldUtil.processField(dataset, RisField.VL, publication, "volume", importReport);
return report;
fieldUtil.processIntField(dataset, RisField.M2, publication, "pagesFrom", importReport);
}
@Override

View File

@ -6,45 +6,63 @@ 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 <jens@jp-digital.de>
* @version $Id$
*/
public class RprtConverter extends AbstractRisConverter {
public class RprtConverter extends AbstractRisConverter<GreyLiterature, UnPublishedBundle> {
@Override
public PublicationImportReport convert(final RisDataset dataset,
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 boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(GreyLiterature.BASE_DATA_OBJECT_TYPE);
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);
final GreyLiterature publication = new GreyLiterature();
publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final UnPublishedBundle bundle = new UnPublishedBundle(publication);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, publication, report, pretend);
fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport);
processYear(dataset, pretend, publication, report);
authorUtil.processAuthors(dataset, RisField.AU, publication, importReport);
processAuthors(dataset, RisField.AU, importerUtil, publication, report, pretend);
seriesUtil.processSeries(dataset, RisField.T2, publication, importReport);
processSeries(dataset, RisField.T2, publication, importerUtil, pretend, report);
orgaUtil.processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, importReport);
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;
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() {

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class ThesConverter extends AbstractRisConverter {
public class ThesConverter extends AbstractRisConverter<GreyLiterature, UnPublishedBundle> {
public PublicationImportReport convert(final RisDataset dataset,
@Override
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 boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(GreyLiterature.BASE_DATA_OBJECT_TYPE);
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 GreyLiterature publication = new GreyLiterature();
publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final UnPublishedBundle bundle = new UnPublishedBundle(publication);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, publication, report, pretend);
fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport);
processYear(dataset, pretend, publication, report);
authorUtil.processAuthors(dataset, RisField.AU, publication, importReport);
processAuthors(dataset, RisField.AU, importerUtil, publication, report, pretend);
processField(dataset, RisField.AB, publication, "abstract", report, pretend);
processField(dataset, RisField.CY, publication, "place", report, pretend);
processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, report);
processIntField(dataset, RisField.SP, publication, "numberOfPages", report, pretend);
return report;
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() {

View File

@ -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 <jens@jp-digital.de>
* @version $Id$
*/
public class UnpbConverter extends AbstractRisConverter {
public class UnpbConverter extends AbstractRisConverter<GreyLiterature, UnPublishedBundle> {
@Override
public PublicationImportReport convert(final RisDataset dataset,
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 boolean pretend,
final boolean publishNewItems) {
final PublicationImportReport report = new PublicationImportReport();
report.setType(GreyLiterature.BASE_DATA_OBJECT_TYPE);
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);
final GreyLiterature publication = new GreyLiterature();
publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
final UnPublishedBundle bundle = new UnPublishedBundle(publication);
fieldUtil.processTitle(dataset, publication, importReport);
processTitle(dataset, publication, report, pretend);
fieldUtil.processIntField(dataset, RisField.PY, publication, "year", importReport);
processYear(dataset, pretend, publication, report);
authorUtil.processAuthors(dataset, RisField.AU, publication, importReport);
processAuthors(dataset, RisField.AU, importerUtil, publication, report, pretend);
orgaUtil.processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, importReport);
processOrganization(dataset, RisField.PB, pretend, publication, importerUtil, report);
seriesUtil.processSeries(dataset, RisField.T2, publication, importReport);
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;
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() {

View File

@ -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 <jens@jp-digital.de>
* @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<String> 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);
}
}

View File

@ -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 <jens@jp-digital.de>
* @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<String> colVolTitle = dataset.getValues().get(cvTitleField);
final List<String> colVolYear = dataset.getValues().get(cvYearField);
final List<String> colVolPlace = dataset.getValues().get(cvPlaceField);
final List<String> colVolPublisher = dataset.getValues().get(cvPublisherField);
final List<String> colVolEdition = dataset.getValues().get(cvEditionField);
final List<String> colVolEditors = dataset.getValues().get(cvEditorsField);
final List<AuthorData> colVolEditorData = new ArrayList<AuthorData>();
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<String> procTitle = dataset.getValues().get(procTitleField);
final List<String> procYear = dataset.getValues().get(procYearField);
final List<String> procConfName = dataset.getValues().get(procConfNameField);
final List<String> procPublisher = dataset.getValues().get(procPublisherField);
final List<String> procPlace = dataset.getValues().get(procPlaceField);
final List<String> procEditors = dataset.getValues().get(procEditorsField);
final List<AuthorData> procEditorData = new ArrayList<AuthorData>();
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;
}
}

View File

@ -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 <jens@jp-digital.de>
* @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<String> 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<String> 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<String> 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<String> 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()));
}
}
}

View File

@ -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 <jens@jp-digital.de>
* @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<String> journal = dataset.getValues().get(field);
if ((journal != null) && !journal.isEmpty()) {
final JournalImportReport journalReport = importerUtil.processJournal(article, journal.get(0), pretend);
report.setJournal(journalReport);
}
}
}

View File

@ -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 <jens@jp-digital.de>
* @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<String> publisherList = dataset.getValues().get(publisherField);
final List<String> 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<String> 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<String> 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));
}
}
}

View File

@ -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 <jens@jp-digital.de>
* @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<String> series = dataset.getValues().get(field);
if ((series != null) && !series.isEmpty()) {
final SeriesImportReport seriesReport = importerUtil.processSeries(publication, series.get(0), pretend);
report.setSeries(seriesReport);
}
}
}