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
|
||||
*/
|
||||
NV,
|
||||
/**
|
||||
* DOI
|
||||
*/
|
||||
DO,
|
||||
/**
|
||||
* Begin of a new reference. Value is the type of the reference.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
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.Publication;
|
||||
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.util.AuthorData;
|
||||
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
|
||||
import java.util.ArrayList;
|
||||
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,
|
||||
final RisField field,
|
||||
final Publication publication,
|
||||
|
|
@ -293,5 +351,4 @@ public abstract class AbstractRisConverter implements RisConverter {
|
|||
dataset.getFirstLine()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,11 +3,9 @@ package com.arsdigita.cms.scipublications.importer.ris.converters;
|
|||
import com.arsdigita.cms.contenttypes.Monograph;
|
||||
import com.arsdigita.cms.scipublications.imexporter.ris.RisField;
|
||||
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.ris.RisDataset;
|
||||
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}.
|
||||
|
|
|
|||
|
|
@ -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 String publisherName,
|
||||
final String place,
|
||||
final String edition,
|
||||
final boolean pretend) {
|
||||
final CollectedVolumeImportReport report = new CollectedVolumeImportReport();
|
||||
|
||||
|
|
@ -258,6 +259,10 @@ public class ImporterUtil {
|
|||
report.setPublisher(processPublisher(collectedVolume, place, publisherName, pretend));
|
||||
}
|
||||
|
||||
if ((edition != null) && !edition.isEmpty()) {
|
||||
collectedVolume.setEdition(edition);
|
||||
}
|
||||
|
||||
collectedVolume.save();
|
||||
article.setCollectedVolume(collectedVolume);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue