Aktueller Stand des CSV Importer.
git-svn-id: https://svn.libreccm.org/ccm/trunk@1938 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
53e796b724
commit
b17872d721
|
|
@ -71,7 +71,9 @@ public class ImporterUtil {
|
||||||
|
|
||||||
final DataCollection collection = session.retrieve(GenericPerson.BASE_DATA_OBJECT_TYPE);
|
final DataCollection collection = session.retrieve(GenericPerson.BASE_DATA_OBJECT_TYPE);
|
||||||
collection.addEqualsFilter("surname", authorData.getSurname());
|
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.setSurname(authorData.getSurname());
|
||||||
report.setGivenName(authorData.getGivenName());
|
report.setGivenName(authorData.getGivenName());
|
||||||
|
|
@ -140,7 +142,7 @@ public class ImporterUtil {
|
||||||
|
|
||||||
final Session session = SessionManager.getSession();
|
final Session session = SessionManager.getSession();
|
||||||
final DataCollection collection = session.retrieve(Publisher.BASE_DATA_OBJECT_TYPE);
|
final DataCollection collection = session.retrieve(Publisher.BASE_DATA_OBJECT_TYPE);
|
||||||
collection.addEqualsFilter("title", publisherName);
|
collection.addEqualsFilter("publisherName", publisherName);
|
||||||
collection.addEqualsFilter("place", place);
|
collection.addEqualsFilter("place", place);
|
||||||
report.setPublisherName(publisherName);
|
report.setPublisherName(publisherName);
|
||||||
report.setPlace(place);
|
report.setPlace(place);
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,6 @@ import com.arsdigita.categorization.Category;
|
||||||
import com.arsdigita.cms.Folder;
|
import com.arsdigita.cms.Folder;
|
||||||
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.lifecycle.LifecycleDefinition;
|
|
||||||
import com.arsdigita.cms.lifecycle.LifecycleDefinitionCollection;
|
|
||||||
import com.arsdigita.cms.scipublications.importer.report.AuthorImportReport;
|
import com.arsdigita.cms.scipublications.importer.report.AuthorImportReport;
|
||||||
import com.arsdigita.cms.scipublications.importer.report.FieldImportReport;
|
import com.arsdigita.cms.scipublications.importer.report.FieldImportReport;
|
||||||
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
|
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 com.arsdigita.kernel.Kernel;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.GregorianCalendar;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
@ -28,7 +24,8 @@ abstract class AbstractPublicationImporter<T extends Publication> {
|
||||||
|
|
||||||
private static final String AUTHORS_SEP = ";";
|
private static final String AUTHORS_SEP = ";";
|
||||||
private static final String AUTHOR_NAME_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 CsvLine data;
|
||||||
private final PublicationImportReport report;
|
private final PublicationImportReport report;
|
||||||
private final boolean pretend;
|
private final boolean pretend;
|
||||||
|
|
@ -109,6 +106,7 @@ abstract class AbstractPublicationImporter<T extends Publication> {
|
||||||
final T publication = createPublication();
|
final T publication = createPublication();
|
||||||
|
|
||||||
processTitleAndName(publication);
|
processTitleAndName(publication);
|
||||||
|
processYear(publication);
|
||||||
processReviewed(publication);
|
processReviewed(publication);
|
||||||
|
|
||||||
if (!pretend) {
|
if (!pretend) {
|
||||||
|
|
@ -169,6 +167,20 @@ abstract class AbstractPublicationImporter<T extends Publication> {
|
||||||
report.setTitle(data.getTitle());
|
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) {
|
private void processReviewed(final T publication) {
|
||||||
final String reviewedStr = data.getReviewed();
|
final String reviewedStr = data.getReviewed();
|
||||||
final boolean reviewed;
|
final boolean reviewed;
|
||||||
|
|
@ -233,29 +245,34 @@ abstract class AbstractPublicationImporter<T extends Publication> {
|
||||||
|
|
||||||
if (nameTokens.length == 1) {
|
if (nameTokens.length == 1) {
|
||||||
final AuthorData author = new AuthorData();
|
final AuthorData author = new AuthorData();
|
||||||
author.setSurname(nameTokens[0]);
|
author.setSurname(checkForEditor(author, nameTokens[0]));
|
||||||
authors.add(author);
|
authors.add(author);
|
||||||
} else if (nameTokens.length == 2) {
|
} else if (nameTokens.length == 2) {
|
||||||
final AuthorData author = new AuthorData();
|
final AuthorData author = new AuthorData();
|
||||||
author.setSurname(nameTokens[0]);
|
|
||||||
if (nameTokens[1].endsWith(EDITOR_STR)) {
|
author.setSurname(checkForEditor(author, nameTokens[0]));
|
||||||
author.setEditor(true);
|
author.setGivenName(checkForEditor(author, nameTokens[1]));
|
||||||
author.setGivenName(nameTokens[1].substring(0, nameTokens[1].length() - EDITOR_STR.length()));
|
|
||||||
} else {
|
|
||||||
author.setGivenName(nameTokens[1]);
|
|
||||||
}
|
|
||||||
authors.add(author);
|
authors.add(author);
|
||||||
} else {
|
} else {
|
||||||
final AuthorData author = new AuthorData();
|
final AuthorData author = new AuthorData();
|
||||||
author.setSurname(nameTokens[0]);
|
|
||||||
if (nameTokens[1].endsWith(EDITOR_STR)) {
|
author.setSurname(checkForEditor(author, nameTokens[0]));
|
||||||
author.setEditor(true);
|
author.setGivenName(checkForEditor(author, nameTokens[1]));
|
||||||
author.setGivenName(nameTokens[1].substring(0, nameTokens[1].length() - EDITOR_STR.length()));
|
|
||||||
} else {
|
|
||||||
author.setGivenName(nameTokens[1]);
|
|
||||||
}
|
|
||||||
authors.add(author);
|
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) {
|
private void assignCategories(final PublicationBundle publicationBundle) {
|
||||||
|
|
|
||||||
|
|
@ -57,9 +57,9 @@ public class CsvImporterConfig extends AbstractConfig {
|
||||||
|
|
||||||
public Map<String, Category> getDepartmentCategories() {
|
public Map<String, Category> getDepartmentCategories() {
|
||||||
final String categoryIds = getDepartmentCategoryIds();
|
final String categoryIds = getDepartmentCategoryIds();
|
||||||
|
|
||||||
final Map<String, Category> categories = new HashMap<String, Category>();
|
final Map<String, Category> categories = new HashMap<String, Category>();
|
||||||
|
|
||||||
if ((categoryIds == null) || categoryIds.isEmpty()) {
|
if ((categoryIds == null) || categoryIds.isEmpty()) {
|
||||||
return categories;
|
return categories;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -178,6 +178,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, ArticleInCollectedVolume.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, ArticleInCollectedVolume.class.getSimpleName(), report)) {
|
||||||
|
report.setSuccessful(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -194,6 +195,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, ArticleInJournal.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, ArticleInJournal.class.getSimpleName(), report)) {
|
||||||
|
report.setSuccessful(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -207,6 +209,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, CollectedVolume.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, CollectedVolume.class.getSimpleName(), report)) {
|
||||||
|
report.setSuccessful(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -219,6 +222,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, Expertise.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, Expertise.class.getSimpleName(), report)) {
|
||||||
|
report.setSuccessful(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -232,6 +236,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, GreyLiterature.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, GreyLiterature.class.getSimpleName(), report)) {
|
||||||
|
report.setSuccessful(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -245,6 +250,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, InProceedings.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, InProceedings.class.getSimpleName(), report)) {
|
||||||
|
report.setSuccessful(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -258,6 +264,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, InternetArticle.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, InternetArticle.class.getSimpleName(), report)) {
|
||||||
|
report.setSuccessful(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -271,6 +278,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, Monograph.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, Monograph.class.getSimpleName(), report)) {
|
||||||
|
report.setSuccessful(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -284,6 +292,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, Proceedings.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, Proceedings.class.getSimpleName(), report)) {
|
||||||
|
report.setSuccessful(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -297,6 +306,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, Review.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, Review.class.getSimpleName(), report)) {
|
||||||
|
report.setSuccessful(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -311,6 +321,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
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);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -324,6 +335,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, WorkingPaper.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, WorkingPaper.class.getSimpleName(), report)) {
|
||||||
|
report.setSuccessful(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -331,18 +343,6 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
importer.doImport(publishNewItems);
|
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,
|
private boolean isPublicationAlreadyInDatabase(final CsvLine data,
|
||||||
final String type,
|
final String type,
|
||||||
final PublicationImportReport report) {
|
final PublicationImportReport report) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue