From 25f1478b6bd7b0e45826072a777a20e24981ab39 Mon Sep 17 00:00:00 2001 From: jensp Date: Sun, 17 Mar 2013 13:02:27 +0000 Subject: [PATCH] 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-94f89814c4df --- .../application.xml | 3 +- .../csv/AbstractPublicationImporter.java | 65 ++++++++++++++----- .../csv/ArticleInCollectedVolumeImporter.java | 1 + .../csv/ArticleInJournalImporter.java | 6 +- .../scipublications/importer/csv/CsvLine.java | 58 ++++++++++++----- .../importer/csv/PublicationsImporter.java | 43 ++++++------ ...ResearchReportImporter.java.nolongerinuse} | 0 7 files changed, 121 insertions(+), 55 deletions(-) rename ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/{ResearchReportImporter.java => ResearchReportImporter.java.nolongerinuse} (100%) diff --git a/ccm-sci-publicationscsvimporter/application.xml b/ccm-sci-publicationscsvimporter/application.xml index cb6b57258..e9ea67cd7 100644 --- a/ccm-sci-publicationscsvimporter/application.xml +++ b/ccm-sci-publicationscsvimporter/application.xml @@ -8,8 +8,9 @@ + - + diff --git a/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/AbstractPublicationImporter.java b/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/AbstractPublicationImporter.java index 160ba0064..52b8f4bbf 100644 --- a/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/AbstractPublicationImporter.java +++ b/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/AbstractPublicationImporter.java @@ -2,6 +2,8 @@ package com.arsdigita.cms.scipublications.importer.csv; import com.arsdigita.categorization.Category; 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.PublicationBundle; import com.arsdigita.cms.scipublications.importer.report.AuthorImportReport; @@ -136,6 +138,10 @@ abstract class AbstractPublicationImporter { publication.setMisc(data.getMisc().substring(0, 3975)); } + if ((data.getUrl() != null) && !data.getUrl().isEmpty()) { + processUrl(publication); + } + publication.save(); } @@ -143,6 +149,10 @@ abstract class AbstractPublicationImporter { processAuthors(publication); } + if ((data.getSeriesTitle() != null) && !data.getSeriesTitle().isEmpty()) { + importerUtil.processSeries(publication, data.getSeriesTitle(), pretend); + } + return publication; } @@ -163,7 +173,7 @@ abstract class AbstractPublicationImporter { protected Integer getFolderId() { return Publication.getConfig().getDefaultPublicationsFolder(); } - + private void processTitleAndName(final T publication) { if (!pretend) { publication.setTitle(data.getTitle()); @@ -179,17 +189,17 @@ abstract class AbstractPublicationImporter { private void processYear(final T publication) { if (!pretend) { final String year = data.getYear(); - + try { publication.setYearOfPublication(Integer.parseInt(year)); - } catch(NumberFormatException ex) { + } catch (NumberFormatException ex) { publication.setYearOfPublication(0); } } - + report.addField(new FieldImportReport("year", data.getYear())); } - + private void processReviewed(final T publication) { final String reviewedStr = data.getReviewed(); final boolean reviewed; @@ -258,29 +268,29 @@ abstract class AbstractPublicationImporter { authors.add(author); } else if (nameTokens.length == 2) { final AuthorData author = new AuthorData(); - - author.setSurname(checkForEditor(author, nameTokens[0])); + + author.setSurname(checkForEditor(author, nameTokens[0])); author.setGivenName(checkForEditor(author, nameTokens[1])); - + authors.add(author); } else { final AuthorData author = new AuthorData(); - - author.setSurname(checkForEditor(author, nameTokens[0])); + + author.setSurname(checkForEditor(author, nameTokens[0])); author.setGivenName(checkForEditor(author, nameTokens[1])); - + authors.add(author); } - } - + } + private String checkForEditor(final AuthorData author, final String token) { - for(String editorStr : EDITOR_STRS) { + for (String editorStr : EDITOR_STRS) { if (token.endsWith(editorStr)) { author.setEditor(true); return token.substring(0, token.length() - editorStr.length()).trim(); } } - + return token.trim(); } @@ -307,4 +317,29 @@ abstract class AbstractPublicationImporter { } } + 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())); + } + } + } diff --git a/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/ArticleInCollectedVolumeImporter.java b/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/ArticleInCollectedVolumeImporter.java index 2e2d2b3be..e56e48e05 100644 --- a/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/ArticleInCollectedVolumeImporter.java +++ b/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/ArticleInCollectedVolumeImporter.java @@ -47,6 +47,7 @@ class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter params, final boolean pretend, final boolean publishNewItems) throws SciPublicationsImportException { @@ -113,7 +115,7 @@ public class PublicationsImporter implements SciPublicationsImporter { importerUtil); report.addPublication(result); } catch (Exception ex) { - tctx.abortTxn(); + tctx.abortTxn(); throw new SciPublicationsImportException(ex); } @@ -132,11 +134,11 @@ public class PublicationsImporter implements SciPublicationsImporter { final ImporterUtil importerUtil) { 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 - if (cols.length != 30) { + if (cols.length != 37) { 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)); return report; } @@ -163,8 +165,8 @@ public class PublicationsImporter implements SciPublicationsImporter { processProceedings(publishNewItems, data, report, pretend, importerUtil); } else if (Review.class.getSimpleName().equals(data.getType())) { processReview(publishNewItems, data, report, pretend, importerUtil); - } else if (ResearchReport.class.getSimpleName().equals(data.getType()) || "Report".equals(data.getType())) { - processResearchReport(publishNewItems, data, report, pretend, importerUtil); +// } else if (ResearchReport.class.getSimpleName().equals(data.getType()) || "Report".equals(data.getType())) { +// processResearchReport(publishNewItems, data, report, pretend, importerUtil); } else if (WorkingPaper.class.getSimpleName().equals(data.getType())) { processWorkingPaper(publishNewItems, data, report, pretend, importerUtil); } @@ -315,20 +317,19 @@ public class PublicationsImporter implements SciPublicationsImporter { } - private void processResearchReport(final boolean publishNewItems, - final CsvLine data, - final PublicationImportReport report, - final boolean pretend, - final ImporterUtil importerUtil) { - if (isPublicationAlreadyInDatabase(data, ResearchReport.class.getSimpleName(), report)) { - report.setSuccessful(true); - return; - } - - final ResearchReportImporter importer = new ResearchReportImporter(data, report, pretend, importerUtil); - importer.doImport(publishNewItems); - } - +// private void processResearchReport(final boolean publishNewItems, +// final CsvLine data, +// final PublicationImportReport report, +// final boolean pretend, +// final ImporterUtil importerUtil) { +// if (isPublicationAlreadyInDatabase(data, ResearchReport.class.getSimpleName(), report)) { +// report.setSuccessful(true); +// return; +// } +// +// final ResearchReportImporter importer = new ResearchReportImporter(data, report, pretend, importerUtil); +// importer.doImport(publishNewItems); +// } private void processWorkingPaper(final boolean publishNewItems, final CsvLine data, final PublicationImportReport report, diff --git a/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/ResearchReportImporter.java b/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/ResearchReportImporter.java.nolongerinuse similarity index 100% rename from ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/ResearchReportImporter.java rename to ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/ResearchReportImporter.java.nolongerinuse