Aktueller Stand des CSV Importer.

git-svn-id: https://svn.libreccm.org/ccm/trunk@1938 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2012-11-17 18:21:00 +00:00
parent 53e796b724
commit b17872d721
4 changed files with 55 additions and 36 deletions

View File

@ -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);

View File

@ -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<T extends Publication> {
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<T extends Publication> {
final T publication = createPublication();
processTitleAndName(publication);
processYear(publication);
processReviewed(publication);
if (!pretend) {
@ -169,6 +167,20 @@ abstract class AbstractPublicationImporter<T extends Publication> {
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<T extends Publication> {
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) {

View File

@ -57,9 +57,9 @@ public class CsvImporterConfig extends AbstractConfig {
public Map<String, Category> getDepartmentCategories() {
final String categoryIds = getDepartmentCategoryIds();
final Map<String, Category> categories = new HashMap<String, Category>();
if ((categoryIds == null) || categoryIds.isEmpty()) {
return categories;
}

View File

@ -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<AuthorData> parseAuthors(final boolean publishNewItems, final String authorsStr, final PublicationImportReport report) {
// final List<AuthorData> authors = new ArrayList<AuthorData>();
//
// 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) {