From b17872d7219e255357346ba854829e6817a72531 Mon Sep 17 00:00:00 2001 From: jensp Date: Sat, 17 Nov 2012 18:21:00 +0000 Subject: [PATCH] Aktueller Stand des CSV Importer. git-svn-id: https://svn.libreccm.org/ccm/trunk@1938 8810af33-2d31-482b-a856-94f89814c4df --- .../importer/util/ImporterUtil.java | 6 +- .../csv/AbstractPublicationImporter.java | 57 ++++++++++++------- .../importer/csv/CsvImporterConfig.java | 4 +- .../importer/csv/PublicationsImporter.java | 24 ++++---- 4 files changed, 55 insertions(+), 36 deletions(-) diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/util/ImporterUtil.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/util/ImporterUtil.java index f0069c25c..808e6876f 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/util/ImporterUtil.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/importer/util/ImporterUtil.java @@ -71,7 +71,9 @@ public class ImporterUtil { final DataCollection collection = session.retrieve(GenericPerson.BASE_DATA_OBJECT_TYPE); collection.addEqualsFilter("surname", authorData.getSurname()); - collection.addEqualsFilter("givenname", authorData.getGivenName()); + if ((authorData.getGivenName() != null) && !authorData.getGivenName().isEmpty()) { + collection.addEqualsFilter("givenname", authorData.getGivenName()); + } report.setSurname(authorData.getSurname()); report.setGivenName(authorData.getGivenName()); @@ -140,7 +142,7 @@ public class ImporterUtil { final Session session = SessionManager.getSession(); final DataCollection collection = session.retrieve(Publisher.BASE_DATA_OBJECT_TYPE); - collection.addEqualsFilter("title", publisherName); + collection.addEqualsFilter("publisherName", publisherName); collection.addEqualsFilter("place", place); report.setPublisherName(publisherName); report.setPlace(place); 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 54c6d5290..7cc0ed09f 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 @@ -4,8 +4,6 @@ import com.arsdigita.categorization.Category; import com.arsdigita.cms.Folder; import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.contenttypes.PublicationBundle; -import com.arsdigita.cms.lifecycle.LifecycleDefinition; -import com.arsdigita.cms.lifecycle.LifecycleDefinitionCollection; import com.arsdigita.cms.scipublications.importer.report.AuthorImportReport; import com.arsdigita.cms.scipublications.importer.report.FieldImportReport; import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; @@ -14,8 +12,6 @@ import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; import com.arsdigita.kernel.Kernel; import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Calendar; -import java.util.GregorianCalendar; import java.util.List; import java.util.Map; @@ -28,7 +24,8 @@ abstract class AbstractPublicationImporter { private static final String AUTHORS_SEP = ";"; private static final String AUTHOR_NAME_SEP = ","; - private static final String EDITOR_STR = "(Hrsg.)"; + //private static final String EDITOR_STR = "(Hrsg.)"; + private static final String[] EDITOR_STRS = {"(Hrsg.)", "(Hg.)", "(Ed.)", "(ed.)"}; private final CsvLine data; private final PublicationImportReport report; private final boolean pretend; @@ -109,6 +106,7 @@ abstract class AbstractPublicationImporter { final T publication = createPublication(); processTitleAndName(publication); + processYear(publication); processReviewed(publication); if (!pretend) { @@ -169,6 +167,20 @@ abstract class AbstractPublicationImporter { report.setTitle(data.getTitle()); } + private void processYear(final T publication) { + if (!pretend) { + final String year = data.getYear(); + + try { + publication.setYearOfPublication(Integer.parseInt(year)); + } 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; @@ -233,29 +245,34 @@ abstract class AbstractPublicationImporter { if (nameTokens.length == 1) { final AuthorData author = new AuthorData(); - author.setSurname(nameTokens[0]); + author.setSurname(checkForEditor(author, nameTokens[0])); authors.add(author); } else if (nameTokens.length == 2) { final AuthorData author = new AuthorData(); - author.setSurname(nameTokens[0]); - if (nameTokens[1].endsWith(EDITOR_STR)) { - author.setEditor(true); - author.setGivenName(nameTokens[1].substring(0, nameTokens[1].length() - EDITOR_STR.length())); - } else { - author.setGivenName(nameTokens[1]); - } + + author.setSurname(checkForEditor(author, nameTokens[0])); + author.setGivenName(checkForEditor(author, nameTokens[1])); + authors.add(author); } else { final AuthorData author = new AuthorData(); - author.setSurname(nameTokens[0]); - if (nameTokens[1].endsWith(EDITOR_STR)) { - author.setEditor(true); - author.setGivenName(nameTokens[1].substring(0, nameTokens[1].length() - EDITOR_STR.length())); - } else { - author.setGivenName(nameTokens[1]); - } + + 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) { + if (token.endsWith(editorStr)) { + author.setEditor(true); + return token.substring(0, token.length() - editorStr.length()).trim(); + } + } + + return token.trim(); } private void assignCategories(final PublicationBundle publicationBundle) { diff --git a/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/CsvImporterConfig.java b/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/CsvImporterConfig.java index cdc343ab8..852b961d0 100644 --- a/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/CsvImporterConfig.java +++ b/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/CsvImporterConfig.java @@ -57,9 +57,9 @@ public class CsvImporterConfig extends AbstractConfig { public Map getDepartmentCategories() { final String categoryIds = getDepartmentCategoryIds(); - + final Map categories = new HashMap(); - + if ((categoryIds == null) || categoryIds.isEmpty()) { return categories; } diff --git a/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/PublicationsImporter.java b/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/PublicationsImporter.java index 38d8633c1..94cf0585f 100644 --- a/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/PublicationsImporter.java +++ b/ccm-sci-publicationscsvimporter/src/com/arsdigita/cms/scipublications/importer/csv/PublicationsImporter.java @@ -178,6 +178,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, ArticleInCollectedVolume.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -194,6 +195,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, ArticleInJournal.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -207,6 +209,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, CollectedVolume.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -219,6 +222,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, Expertise.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -232,6 +236,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, GreyLiterature.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -245,6 +250,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, InProceedings.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -258,6 +264,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, InternetArticle.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -271,6 +278,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, Monograph.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -284,6 +292,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, Proceedings.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -297,6 +306,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, Review.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -311,6 +321,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, ResearchReport.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -324,6 +335,7 @@ public class PublicationsImporter implements SciPublicationsImporter { final boolean pretend, final ImporterUtil importerUtil) { if (isPublicationAlreadyInDatabase(data, WorkingPaper.class.getSimpleName(), report)) { + report.setSuccessful(true); return; } @@ -331,18 +343,6 @@ public class PublicationsImporter implements SciPublicationsImporter { importer.doImport(publishNewItems); } -// private List parseAuthors(final boolean publishNewItems, final String authorsStr, final PublicationImportReport report) { -// final List authors = new ArrayList(); -// -// final String[] tokens = authorsStr.split(AUTHORS_SEP); -// reportWriter.printf("Found %d authors...\n", tokens.length); -// -// for (String token : tokens) { -// parseAuthor(token, authors, reportWriter); -// } -// -// return authors; -// } private boolean isPublicationAlreadyInDatabase(final CsvLine data, final String type, final PublicationImportReport report) {