RIS Importer: Support for more types
git-svn-id: https://svn.libreccm.org/ccm/trunk@2032 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
6dcdc33392
commit
ba2b3c0a7e
|
|
@ -353,6 +353,10 @@ public enum RisField {
|
||||||
* Number of volumes
|
* Number of volumes
|
||||||
*/
|
*/
|
||||||
NV,
|
NV,
|
||||||
|
/**
|
||||||
|
* DOI
|
||||||
|
*/
|
||||||
|
DO,
|
||||||
/**
|
/**
|
||||||
* Begin of a new reference. Value is the type of the reference.
|
* Begin of a new reference. Value is the type of the reference.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.arsdigita.cms.scipublications.importer.ris.converters;
|
package com.arsdigita.cms.scipublications.importer.ris.converters;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume;
|
||||||
import com.arsdigita.cms.contenttypes.ArticleInJournal;
|
import com.arsdigita.cms.contenttypes.ArticleInJournal;
|
||||||
import com.arsdigita.cms.contenttypes.Publication;
|
import com.arsdigita.cms.contenttypes.Publication;
|
||||||
import com.arsdigita.cms.contenttypes.PublicationWithPublisher;
|
import com.arsdigita.cms.contenttypes.PublicationWithPublisher;
|
||||||
|
|
@ -11,6 +12,7 @@ import com.arsdigita.cms.scipublications.importer.ris.RisConverter;
|
||||||
import com.arsdigita.cms.scipublications.importer.ris.RisDataset;
|
import com.arsdigita.cms.scipublications.importer.ris.RisDataset;
|
||||||
import com.arsdigita.cms.scipublications.importer.util.AuthorData;
|
import com.arsdigita.cms.scipublications.importer.util.AuthorData;
|
||||||
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
|
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -251,6 +253,62 @@ public abstract class AbstractRisConverter implements RisConverter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private AuthorData createAuthorData(final String[] tokens) {
|
||||||
|
final AuthorData authorData = new AuthorData();
|
||||||
|
|
||||||
|
if (tokens.length == 0) {
|
||||||
|
throw new IllegalArgumentException("No author data tokens!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(tokens.length >= 1) {
|
||||||
|
authorData.setSurname(tokens[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tokens.length >= 2) {
|
||||||
|
authorData.setGivenName(tokens[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return authorData;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void processCollectedVolume(final RisDataset dataset,
|
||||||
|
final RisField cvTitleField,
|
||||||
|
final RisField cvYearField,
|
||||||
|
final RisField cvEditorsField,
|
||||||
|
final RisField cvPlaceField,
|
||||||
|
final RisField cvPublisherField,
|
||||||
|
final RisField cvEditionField,
|
||||||
|
final ArticleInCollectedVolume article,
|
||||||
|
final ImporterUtil importerUtil,
|
||||||
|
final boolean pretend,
|
||||||
|
final PublicationImportReport report) {
|
||||||
|
final List<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 collVolEditor : colVolEditors) {
|
||||||
|
final String[] tokens = collVolEditor.split(",");
|
||||||
|
|
||||||
|
colVolEditorData.add(createAuthorData(tokens));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((colVolTitle != null) && !colVolTitle.isEmpty()) {
|
||||||
|
report.setCollectedVolume(importerUtil.processCollectedVolume(article,
|
||||||
|
colVolTitle.get(0),
|
||||||
|
colVolYear.get(0),
|
||||||
|
colVolEditorData,
|
||||||
|
colVolPublisher.get(0),
|
||||||
|
colVolPlace.get(0),
|
||||||
|
colVolEdition.get(0),
|
||||||
|
pretend));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected void processPages(final RisDataset dataset,
|
protected void processPages(final RisDataset dataset,
|
||||||
final RisField field,
|
final RisField field,
|
||||||
final Publication publication,
|
final Publication publication,
|
||||||
|
|
@ -293,5 +351,4 @@ public abstract class AbstractRisConverter implements RisConverter {
|
||||||
dataset.getFirstLine()));
|
dataset.getFirstLine()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,9 @@ package com.arsdigita.cms.scipublications.importer.ris.converters;
|
||||||
import com.arsdigita.cms.contenttypes.Monograph;
|
import com.arsdigita.cms.contenttypes.Monograph;
|
||||||
import com.arsdigita.cms.scipublications.imexporter.ris.RisField;
|
import com.arsdigita.cms.scipublications.imexporter.ris.RisField;
|
||||||
import com.arsdigita.cms.scipublications.imexporter.ris.RisType;
|
import com.arsdigita.cms.scipublications.imexporter.ris.RisType;
|
||||||
import com.arsdigita.cms.scipublications.importer.report.FieldImportReport;
|
|
||||||
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
|
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
|
||||||
import com.arsdigita.cms.scipublications.importer.ris.RisDataset;
|
import com.arsdigita.cms.scipublications.importer.ris.RisDataset;
|
||||||
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
|
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converter for the RIS type {@code BOOK} to the SciPublications type {@link Monograph}.
|
* Converter for the RIS type {@code BOOK} to the SciPublications type {@link Monograph}.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
package com.arsdigita.cms.scipublications.importer.ris.converters;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume;
|
||||||
|
import com.arsdigita.cms.scipublications.imexporter.ris.RisField;
|
||||||
|
import com.arsdigita.cms.scipublications.imexporter.ris.RisType;
|
||||||
|
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
|
||||||
|
import com.arsdigita.cms.scipublications.importer.ris.RisDataset;
|
||||||
|
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converter for the RIS type {@code CHAP} to the SciPublications type {@link ArticleInCollectedVolume}.
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class ChapConverter extends AbstractRisConverter {
|
||||||
|
|
||||||
|
public PublicationImportReport convert(final RisDataset dataset,
|
||||||
|
final ImporterUtil importerUtil,
|
||||||
|
final boolean pretend,
|
||||||
|
final boolean publishNewItems) {
|
||||||
|
final PublicationImportReport report = new PublicationImportReport();
|
||||||
|
report.setType(ArticleInCollectedVolume.BASE_DATA_OBJECT_TYPE);
|
||||||
|
|
||||||
|
final ArticleInCollectedVolume article = new ArticleInCollectedVolume();
|
||||||
|
|
||||||
|
processTitle(dataset, article, report, pretend);
|
||||||
|
|
||||||
|
processYear(dataset, pretend, article, report);
|
||||||
|
|
||||||
|
processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend);
|
||||||
|
|
||||||
|
processCollectedVolume(dataset,
|
||||||
|
RisField.T2,
|
||||||
|
RisField.PY,
|
||||||
|
RisField.A2,
|
||||||
|
RisField.CY,
|
||||||
|
RisField.PB,
|
||||||
|
RisField.ET,
|
||||||
|
article,
|
||||||
|
importerUtil,
|
||||||
|
pretend,
|
||||||
|
report);
|
||||||
|
|
||||||
|
processField(dataset, RisField.AB, article, "abstract", report, pretend);
|
||||||
|
processPages(dataset, RisField.ID, article, pretend, report);
|
||||||
|
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RisType getRisType() {
|
||||||
|
return RisType.CHAP;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.arsdigita.cms.scipublications.importer.ris.converters;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.scipublications.imexporter.ris.RisType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class EchapConverter extends ChapConverter {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RisType getRisType() {
|
||||||
|
return RisType.ECHAP;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
package com.arsdigita.cms.scipublications.importer.ris.converters;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.contenttypes.InternetArticle;
|
||||||
|
import com.arsdigita.cms.scipublications.imexporter.ris.RisField;
|
||||||
|
import com.arsdigita.cms.scipublications.imexporter.ris.RisType;
|
||||||
|
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
|
||||||
|
import com.arsdigita.cms.scipublications.importer.ris.RisDataset;
|
||||||
|
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class ElecConverter extends AbstractRisConverter {
|
||||||
|
|
||||||
|
public PublicationImportReport convert(final RisDataset dataset,
|
||||||
|
final ImporterUtil importerUtil,
|
||||||
|
final boolean pretend,
|
||||||
|
final boolean publishNewItems) {
|
||||||
|
final PublicationImportReport report = new PublicationImportReport();
|
||||||
|
report.setType(InternetArticle.BASE_DATA_OBJECT_TYPE);
|
||||||
|
|
||||||
|
final InternetArticle article = new InternetArticle();
|
||||||
|
|
||||||
|
processTitle(dataset, article, report, pretend);
|
||||||
|
|
||||||
|
processYear(dataset, pretend, article, report);
|
||||||
|
|
||||||
|
processAuthors(dataset, RisField.AU, importerUtil, article, report, pretend);
|
||||||
|
|
||||||
|
processField(dataset, RisField.AB, article, "abstract", report, pretend);
|
||||||
|
|
||||||
|
processSeries(dataset, RisField.T2, article, importerUtil, pretend, report);
|
||||||
|
|
||||||
|
processField(dataset, RisField.CY, article, "place", report, pretend);
|
||||||
|
|
||||||
|
processField(dataset, RisField.DO, article, "doi", report, pretend);
|
||||||
|
|
||||||
|
processField(dataset, RisField.ET, article, "edition", report, pretend);
|
||||||
|
|
||||||
|
processField(dataset, RisField.UR, article, "url", report, pretend);
|
||||||
|
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RisType getRisType() {
|
||||||
|
return RisType.ELEC;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -207,6 +207,7 @@ public class ImporterUtil {
|
||||||
final List<AuthorData> authors,
|
final List<AuthorData> authors,
|
||||||
final String publisherName,
|
final String publisherName,
|
||||||
final String place,
|
final String place,
|
||||||
|
final String edition,
|
||||||
final boolean pretend) {
|
final boolean pretend) {
|
||||||
final CollectedVolumeImportReport report = new CollectedVolumeImportReport();
|
final CollectedVolumeImportReport report = new CollectedVolumeImportReport();
|
||||||
|
|
||||||
|
|
@ -258,6 +259,10 @@ public class ImporterUtil {
|
||||||
report.setPublisher(processPublisher(collectedVolume, place, publisherName, pretend));
|
report.setPublisher(processPublisher(collectedVolume, place, publisherName, pretend));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((edition != null) && !edition.isEmpty()) {
|
||||||
|
collectedVolume.setEdition(edition);
|
||||||
|
}
|
||||||
|
|
||||||
collectedVolume.save();
|
collectedVolume.save();
|
||||||
article.setCollectedVolume(collectedVolume);
|
article.setCollectedVolume(collectedVolume);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue