Some changes to the CSV importer for publications (this module is only for internal use)
git-svn-id: https://svn.libreccm.org/ccm/trunk@2087 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
9b263bec1a
commit
25f1478b6b
|
|
@ -8,8 +8,9 @@
|
||||||
<ccm:dependencies>
|
<ccm:dependencies>
|
||||||
<ccm:requires name="ccm-core" version="6.6.0" relation="ge"/>
|
<ccm:requires name="ccm-core" version="6.6.0" relation="ge"/>
|
||||||
<ccm:requires name="ccm-cms" version="6.6.6" relation="ge"/>
|
<ccm:requires name="ccm-cms" version="6.6.6" relation="ge"/>
|
||||||
|
<ccm:requires name="ccm-cms-assets-relatedlink" version="6.6.1" relation="ge"/>
|
||||||
<ccm:requires name="ccm-sci-publications" version="6.6.3" relation="ge"/>
|
<ccm:requires name="ccm-sci-publications" version="6.6.3" relation="ge"/>
|
||||||
<ccm:requires name="ccm-sci-publications-researchreport" version="6.6.3" relation="ge"/>
|
<!--<ccm:requires name="ccm-sci-publications-researchreport" version="6.6.3" relation="ge"/>-->
|
||||||
</ccm:dependencies>
|
</ccm:dependencies>
|
||||||
|
|
||||||
<ccm:directories>
|
<ccm:directories>
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@ package com.arsdigita.cms.scipublications.importer.csv;
|
||||||
|
|
||||||
import com.arsdigita.categorization.Category;
|
import com.arsdigita.categorization.Category;
|
||||||
import com.arsdigita.cms.Folder;
|
import com.arsdigita.cms.Folder;
|
||||||
|
import com.arsdigita.cms.contentassets.RelatedLink;
|
||||||
|
import com.arsdigita.cms.contenttypes.Link;
|
||||||
import com.arsdigita.cms.contenttypes.Publication;
|
import com.arsdigita.cms.contenttypes.Publication;
|
||||||
import com.arsdigita.cms.contenttypes.PublicationBundle;
|
import com.arsdigita.cms.contenttypes.PublicationBundle;
|
||||||
import com.arsdigita.cms.scipublications.importer.report.AuthorImportReport;
|
import com.arsdigita.cms.scipublications.importer.report.AuthorImportReport;
|
||||||
|
|
@ -136,6 +138,10 @@ abstract class AbstractPublicationImporter<T extends Publication> {
|
||||||
publication.setMisc(data.getMisc().substring(0, 3975));
|
publication.setMisc(data.getMisc().substring(0, 3975));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data.getUrl() != null) && !data.getUrl().isEmpty()) {
|
||||||
|
processUrl(publication);
|
||||||
|
}
|
||||||
|
|
||||||
publication.save();
|
publication.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -143,6 +149,10 @@ abstract class AbstractPublicationImporter<T extends Publication> {
|
||||||
processAuthors(publication);
|
processAuthors(publication);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data.getSeriesTitle() != null) && !data.getSeriesTitle().isEmpty()) {
|
||||||
|
importerUtil.processSeries(publication, data.getSeriesTitle(), pretend);
|
||||||
|
}
|
||||||
|
|
||||||
return publication;
|
return publication;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -307,4 +317,29 @@ abstract class AbstractPublicationImporter<T extends Publication> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void processUrl(final Publication publication) {
|
||||||
|
if (!pretend) {
|
||||||
|
final RelatedLink link = new RelatedLink();
|
||||||
|
link.setLinkOwner(publication);
|
||||||
|
link.setLinkListName("NONE");
|
||||||
|
link.setTargetItem(null);
|
||||||
|
link.setTargetURI(getData().getUrl());
|
||||||
|
link.setTargetType(Link.EXTERNAL_LINK);
|
||||||
|
link.setTargetWindow("");
|
||||||
|
if ((getData().getLinkname() == null) || getData().getLinkname().isEmpty()) {
|
||||||
|
link.setTitle(getData().getUrl());
|
||||||
|
} else {
|
||||||
|
link.setTitle(getData().getLinkname());
|
||||||
|
}
|
||||||
|
|
||||||
|
link.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
report.addField(new FieldImportReport("url", getData().getUrl()));
|
||||||
|
if ((getData().getLinkname() != null) && !getData().getLinkname().isEmpty()) {
|
||||||
|
report.addField(new FieldImportReport("linkname", getData().getLinkname()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter<Artic
|
||||||
parseAuthors(data.getCollectedVolumeAuthors()),
|
parseAuthors(data.getCollectedVolumeAuthors()),
|
||||||
data.getPublisher(),
|
data.getPublisher(),
|
||||||
data.getPlace(),
|
data.getPlace(),
|
||||||
|
null,
|
||||||
isPretend()));
|
isPretend()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,13 +56,13 @@ class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJour
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processVolume(final ArticleInJournal article) {
|
private void processVolume(final ArticleInJournal article) {
|
||||||
if ((getData().getVolume() != null) && !getData().getVolume().isEmpty()) {
|
if ((getData().getVolumeOfJournal() != null) && !getData().getVolumeOfJournal().isEmpty()) {
|
||||||
try {
|
try {
|
||||||
final int volume = Integer.parseInt(getData().getVolume());
|
final int volume = Integer.parseInt(getData().getVolumeOfJournal());
|
||||||
if (!isPretend()) {
|
if (!isPretend()) {
|
||||||
article.setVolume(volume);
|
article.setVolume(volume);
|
||||||
}
|
}
|
||||||
getReport().addField(new FieldImportReport("Volume", getData().getVolume()));
|
getReport().addField(new FieldImportReport("Volume", getData().getVolumeOfJournal()));
|
||||||
} catch (NumberFormatException ex) {
|
} catch (NumberFormatException ex) {
|
||||||
getReport().addMessage(String.format("Failed to parse volume data in line '%d'.",
|
getReport().addMessage(String.format("Failed to parse volume data in line '%d'.",
|
||||||
getData().getLineNumber()));
|
getData().getLineNumber()));
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,8 @@ class CsvLine {
|
||||||
private final int lineNumber;
|
private final int lineNumber;
|
||||||
|
|
||||||
public CsvLine(final String[] cols, final int lineNumber) {
|
public CsvLine(final String[] cols, final int lineNumber) {
|
||||||
if (cols.length != 30) {
|
if (cols.length != 37) {
|
||||||
throw new IllegalArgumentException(String.format("Unexpected number of columns. Expected 30 columns, "
|
throw new IllegalArgumentException(String.format("Unexpected number of columns. Expected 37 columns, "
|
||||||
+ "but provided array has %d entries.", cols.length));
|
+ "but provided array has %d entries.", cols.length));
|
||||||
}
|
}
|
||||||
this.cols = Arrays.copyOf(cols, cols.length);
|
this.cols = Arrays.copyOf(cols, cols.length);
|
||||||
|
|
@ -93,55 +93,83 @@ class CsvLine {
|
||||||
return cols[16].trim();
|
return cols[16].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getIssue() {
|
public String getVolumeOfJournal() {
|
||||||
return cols[17].trim();
|
return cols[17].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPublicationDate() {
|
public String getIssue() {
|
||||||
return cols[18].trim();
|
return cols[18].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getJournal() {
|
public String getPublicationDate() {
|
||||||
return cols[19].trim();
|
return cols[19].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCollectedVolume() {
|
public String getJournal() {
|
||||||
return cols[20].trim();
|
return cols[20].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCollectedVolumeAuthors() {
|
public String getJournalSymbol() {
|
||||||
return cols[21].trim();
|
return cols[21].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getIsbn() {
|
public String getCollectedVolume() {
|
||||||
return cols[22].trim();
|
return cols[22].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getIssn() {
|
public String getCollectedVolumeAuthors() {
|
||||||
return cols[23].trim();
|
return cols[23].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLastAccess() {
|
public String getSeriesTitle() {
|
||||||
return cols[24].trim();
|
return cols[24].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUrl() {
|
public String getVolumeOfSeries() {
|
||||||
return cols[25].trim();
|
return cols[25].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUrn() {
|
public String getEditorOfSeries() {
|
||||||
return cols[26].trim();
|
return cols[26].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDoi() {
|
public String getOrganization() {
|
||||||
return cols[27].trim();
|
return cols[27].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getConference() {
|
public String getUrl() {
|
||||||
return cols[28].trim();
|
return cols[28].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getScope() {
|
public String getLinkname() {
|
||||||
return cols[29].trim();
|
return cols[29].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getIsbn() {
|
||||||
|
return cols[30].trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIssn() {
|
||||||
|
return cols[31].trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLastAccess() {
|
||||||
|
return cols[32].trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUrn() {
|
||||||
|
return cols[33].trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDoi() {
|
||||||
|
return cols[34].trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getConference() {
|
||||||
|
return cols[35].trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getScope() {
|
||||||
|
return cols[36].trim();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ import com.arsdigita.cms.contenttypes.InternetArticle;
|
||||||
import com.arsdigita.cms.contenttypes.Monograph;
|
import com.arsdigita.cms.contenttypes.Monograph;
|
||||||
import com.arsdigita.cms.contenttypes.Proceedings;
|
import com.arsdigita.cms.contenttypes.Proceedings;
|
||||||
import com.arsdigita.cms.contenttypes.Publication;
|
import com.arsdigita.cms.contenttypes.Publication;
|
||||||
import com.arsdigita.cms.contenttypes.ResearchReport;
|
//import com.arsdigita.cms.contenttypes.ResearchReport;
|
||||||
import com.arsdigita.cms.contenttypes.Review;
|
import com.arsdigita.cms.contenttypes.Review;
|
||||||
import com.arsdigita.cms.contenttypes.WorkingPaper;
|
import com.arsdigita.cms.contenttypes.WorkingPaper;
|
||||||
import com.arsdigita.cms.scipublications.imexporter.PublicationFormat;
|
import com.arsdigita.cms.scipublications.imexporter.PublicationFormat;
|
||||||
|
|
@ -45,6 +45,7 @@ import com.arsdigita.persistence.Session;
|
||||||
import com.arsdigita.persistence.SessionManager;
|
import com.arsdigita.persistence.SessionManager;
|
||||||
import com.arsdigita.persistence.TransactionContext;
|
import com.arsdigita.persistence.TransactionContext;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Map;
|
||||||
import javax.activation.MimeType;
|
import javax.activation.MimeType;
|
||||||
import javax.activation.MimeTypeParseException;
|
import javax.activation.MimeTypeParseException;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
@ -85,6 +86,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ImportReport importPublications(final String publications,
|
public ImportReport importPublications(final String publications,
|
||||||
|
final Map<String, String> params,
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final boolean publishNewItems)
|
final boolean publishNewItems)
|
||||||
throws SciPublicationsImportException {
|
throws SciPublicationsImportException {
|
||||||
|
|
@ -132,11 +134,11 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
final PublicationImportReport report = new PublicationImportReport();
|
final PublicationImportReport report = new PublicationImportReport();
|
||||||
|
|
||||||
final String[] cols = line.split(COL_SEP, -30);
|
final String[] cols = line.split(COL_SEP, -37);
|
||||||
//Check number of cols
|
//Check number of cols
|
||||||
if (cols.length != 30) {
|
if (cols.length != 37) {
|
||||||
report.setSuccessful(false);
|
report.setSuccessful(false);
|
||||||
report.addMessage(String.format("!!! Wrong number of columns. Exepcted 30 columns but found %d columns. "
|
report.addMessage(String.format("!!! Wrong number of columns. Exepcted 37 columns but found %d columns. "
|
||||||
+ "Skiping line %d!\n", cols.length, lineNumber));
|
+ "Skiping line %d!\n", cols.length, lineNumber));
|
||||||
return report;
|
return report;
|
||||||
}
|
}
|
||||||
|
|
@ -163,8 +165,8 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
processProceedings(publishNewItems, data, report, pretend, importerUtil);
|
processProceedings(publishNewItems, data, report, pretend, importerUtil);
|
||||||
} else if (Review.class.getSimpleName().equals(data.getType())) {
|
} else if (Review.class.getSimpleName().equals(data.getType())) {
|
||||||
processReview(publishNewItems, data, report, pretend, importerUtil);
|
processReview(publishNewItems, data, report, pretend, importerUtil);
|
||||||
} else if (ResearchReport.class.getSimpleName().equals(data.getType()) || "Report".equals(data.getType())) {
|
// } else if (ResearchReport.class.getSimpleName().equals(data.getType()) || "Report".equals(data.getType())) {
|
||||||
processResearchReport(publishNewItems, data, report, pretend, importerUtil);
|
// processResearchReport(publishNewItems, data, report, pretend, importerUtil);
|
||||||
} else if (WorkingPaper.class.getSimpleName().equals(data.getType())) {
|
} else if (WorkingPaper.class.getSimpleName().equals(data.getType())) {
|
||||||
processWorkingPaper(publishNewItems, data, report, pretend, importerUtil);
|
processWorkingPaper(publishNewItems, data, report, pretend, importerUtil);
|
||||||
}
|
}
|
||||||
|
|
@ -315,20 +317,19 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processResearchReport(final boolean publishNewItems,
|
// private void processResearchReport(final boolean publishNewItems,
|
||||||
final CsvLine data,
|
// final CsvLine data,
|
||||||
final PublicationImportReport report,
|
// final PublicationImportReport report,
|
||||||
final boolean pretend,
|
// final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
// final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, ResearchReport.class.getSimpleName(), report)) {
|
// if (isPublicationAlreadyInDatabase(data, ResearchReport.class.getSimpleName(), report)) {
|
||||||
report.setSuccessful(true);
|
// report.setSuccessful(true);
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
final ResearchReportImporter importer = new ResearchReportImporter(data, report, pretend, importerUtil);
|
// final ResearchReportImporter importer = new ResearchReportImporter(data, report, pretend, importerUtil);
|
||||||
importer.doImport(publishNewItems);
|
// importer.doImport(publishNewItems);
|
||||||
}
|
// }
|
||||||
|
|
||||||
private void processWorkingPaper(final boolean publishNewItems,
|
private void processWorkingPaper(final boolean publishNewItems,
|
||||||
final CsvLine data,
|
final CsvLine data,
|
||||||
final PublicationImportReport report,
|
final PublicationImportReport report,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue