Aktueller Stand Importer CSV Importer Publikation

git-svn-id: https://svn.libreccm.org/ccm/trunk@1910 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2012-11-05 16:13:56 +00:00
parent c4ce62775f
commit 755c7ab48a
20 changed files with 276 additions and 100 deletions

View File

@ -15,6 +15,7 @@ public class CollectedVolumeImportReport {
private String collectedVolumeTitle; private String collectedVolumeTitle;
private List<AuthorImportReport> authors = new ArrayList<AuthorImportReport>(); private List<AuthorImportReport> authors = new ArrayList<AuthorImportReport>();
private PublisherImportReport publisher;
private boolean created; private boolean created;
public String getCollectedVolumeTitle() { public String getCollectedVolumeTitle() {
@ -37,6 +38,14 @@ public class CollectedVolumeImportReport {
this.authors = authors; this.authors = authors;
} }
public PublisherImportReport getPublisher() {
return publisher;
}
public void setPublisher(final PublisherImportReport publisher) {
this.publisher = publisher;
}
public boolean isCreated() { public boolean isCreated() {
return created; return created;
} }
@ -54,13 +63,17 @@ public class CollectedVolumeImportReport {
for(int i = 0; i < 40; i++) { for(int i = 0; i < 40; i++) {
writer.append("- "); writer.append("- ");
} }
writer.append("\n");
writer.printf("Created collected volume '%s' and linked it with publication.\n"); writer.printf("Created collected volume '%s' and linked it with publication.\n", collectedVolumeTitle);
writer.print("Author of collected volume:\n"); writer.print("Authors of collected volume:\n");
for(AuthorImportReport author : authors) { for(AuthorImportReport author : authors) {
writer.printf("%s\n", author.toString()); writer.printf("%s\n", author.toString());
} }
writer.append(publisher.toString());
writer.append('\n');
for(int i = 0; i < 40; i++) { for(int i = 0; i < 40; i++) {
writer.append("- "); writer.append("- ");
} }

View File

@ -29,9 +29,9 @@ public class JournalImportReport {
@Override @Override
public String toString() { public String toString() {
if (created) { if (created) {
return String.format("Created journal '%s' and linked it to publication."); return String.format("Created journal '%s' and linked it to publication.", journalTitle);
} else { } else {
return String.format("Found journal '%s' in database and linked it to publication."); return String.format("Found journal '%s' in database and linked it to publication.", journalTitle);
} }
} }

View File

@ -19,6 +19,7 @@ public class ProceedingsImportReport {
private Date dateFromOfConference; private Date dateFromOfConference;
private Date dateToOfConference; private Date dateToOfConference;
private List<AuthorImportReport> authors = new ArrayList<AuthorImportReport>(); private List<AuthorImportReport> authors = new ArrayList<AuthorImportReport>();
private PublisherImportReport publisher;
private boolean created; private boolean created;
public String getProceedingsTitle() { public String getProceedingsTitle() {
@ -65,6 +66,14 @@ public class ProceedingsImportReport {
this.authors = authors; this.authors = authors;
} }
public PublisherImportReport getPublisher() {
return publisher;
}
public void setPublisher(final PublisherImportReport publisher) {
this.publisher = publisher;
}
public boolean isCreated() { public boolean isCreated() {
return created; return created;
} }
@ -82,19 +91,24 @@ public class ProceedingsImportReport {
for (int i = 0; i < 40; i++) { for (int i = 0; i < 40; i++) {
writer.append("- "); writer.append("- ");
} }
writer.append('\n');
writer.printf("Created proceedings '%s' and linked them with publication."); writer.printf("Created proceedings '%s' and linked them with publication.\n", proceedingsTitle);
writer.printf("Conference.............: %s\n", conference); writer.printf("Conference.............: %s\n", conference);
writer.printf("Date from of conference: %s\n", dateToOfConference.toString()); //writer.printf("Date from of conference: %s\n", dateToOfConference.toString());
writer.printf("Date to of conference..: %s\n", dateToOfConference.toString()); //writer.printf("Date to of conference..: %s\n", dateToOfConference.toString());
writer.print("Authors:\n"); writer.print("Authors:\n");
for(AuthorImportReport author : authors) { for(AuthorImportReport author : authors) {
writer.printf("%s\n", author.toString()); writer.printf("%s\n", author.toString());
} }
writer.append(publisher.toString());
writer.append('\n');
for (int i = 0; i < 40; i++) { for (int i = 0; i < 40; i++) {
writer.append("- "); writer.append("- ");
} }
writer.append('\n');
return strWriter.toString(); return strWriter.toString();
} else { } else {

View File

@ -27,7 +27,9 @@ import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.Session; import com.arsdigita.persistence.Session;
import com.arsdigita.persistence.SessionManager; import com.arsdigita.persistence.SessionManager;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* *
@ -36,12 +38,18 @@ import java.util.List;
*/ */
public class ImporterUtil { public class ImporterUtil {
private final Set<String> createdAuthors = new HashSet<String>();
private final Set<String> createdColVols = new HashSet<String>();
private final Set<String> createdJournals = new HashSet<String>();
private final Set<String> createdProcs = new HashSet<String>();
private final Set<String> createdPublishers = new HashSet<String>();
public AuthorImportReport processAuthor(final Publication publication, public AuthorImportReport processAuthor(final Publication publication,
final AuthorData authorData, final AuthorData authorData,
final boolean pretend) { final boolean pretend) {
final AuthorImportReport report = new AuthorImportReport(); final AuthorImportReport report = new AuthorImportReport();
final Session session = SessionManager.getSession(); final Session session = SessionManager.getSession();
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()); collection.addEqualsFilter("givenname", authorData.getGivenName());
@ -78,6 +86,15 @@ public class ImporterUtil {
report.setCreated(true); report.setCreated(true);
//Special handling for pretend mode
if (pretend && createdAuthors.contains(String.format("%s %s",
authorData.getSurname(),
authorData.getGivenName()))) {
report.setCreated(false);
} else {
createdAuthors.add(String.format("%s %s", authorData.getSurname(), authorData.getGivenName()));
}
} else { } else {
if (!pretend) { if (!pretend) {
final GenericPerson author; final GenericPerson author;
@ -130,6 +147,13 @@ public class ImporterUtil {
} }
report.setCreated(true); report.setCreated(true);
//Special handling for pretend mode
if (pretend && createdPublishers.contains(String.format("%s %s", publisherName, place))) {
report.setCreated(false);
} else {
createdPublishers.add(String.format("%s %s", publisherName, place));
}
} else { } else {
if (!pretend) { if (!pretend) {
collection.next(); collection.next();
@ -145,8 +169,10 @@ public class ImporterUtil {
public CollectedVolumeImportReport processCollectedVolume(final ArticleInCollectedVolume article, public CollectedVolumeImportReport processCollectedVolume(final ArticleInCollectedVolume article,
final String title, final String title,
final int year, final String year,
final List<AuthorData> authors, final List<AuthorData> authors,
final String publisherName,
final String place,
final boolean pretend) { final boolean pretend) {
final CollectedVolumeImportReport report = new CollectedVolumeImportReport(); final CollectedVolumeImportReport report = new CollectedVolumeImportReport();
@ -175,17 +201,38 @@ public class ImporterUtil {
bundle.setContentSection(folder.getContentSection()); bundle.setContentSection(folder.getContentSection());
bundle.save(); bundle.save();
collectedVolume.setYearOfPublication(year); int yearOfPub;
try {
yearOfPub = Integer.parseInt(year);
} catch (NumberFormatException ex) {
yearOfPub = 0;
}
collectedVolume.setYearOfPublication(yearOfPub);
for (AuthorData author : authors) { for (AuthorData author : authors) {
report.addAuthor(processAuthor(collectedVolume, author, pretend)); report.addAuthor(processAuthor(collectedVolume, author, pretend));
} }
report.setPublisher(processPublisher(collectedVolume, place, publisherName, pretend));
collectedVolume.save(); collectedVolume.save();
article.setCollectedVolume(collectedVolume); article.setCollectedVolume(collectedVolume);
} }
report.setCreated(true); report.setCreated(true);
//Special handling for pretend mode
if (pretend && createdColVols.contains(String.format("%s %s", title, year))) {
report.setCreated(false);
} else {
if (pretend) {
for (AuthorData author : authors) {
report.addAuthor(processAuthor(null, author, pretend));
}
report.setPublisher(processPublisher(null, place, publisherName, pretend));
}
createdColVols.add(String.format("%s %s", title, year));
}
} else { } else {
if (!pretend) { if (!pretend) {
collection.next(); collection.next();
@ -201,9 +248,11 @@ public class ImporterUtil {
public ProceedingsImportReport processProceedings(final InProceedings inProceedings, public ProceedingsImportReport processProceedings(final InProceedings inProceedings,
final String title, final String title,
final int year, final String year,
final String conference, final String conference,
final List<AuthorData> authors, final List<AuthorData> authors,
final String publisherName,
final String place,
final boolean pretend) { final boolean pretend) {
final ProceedingsImportReport report = new ProceedingsImportReport(); final ProceedingsImportReport report = new ProceedingsImportReport();
@ -234,15 +283,39 @@ public class ImporterUtil {
bundle.setParent(folder); bundle.setParent(folder);
bundle.save(); bundle.save();
proceedings.setYearOfPublication(year); int yearOfPub;
try {
yearOfPub = Integer.parseInt(year);
} catch(NumberFormatException ex ){
yearOfPub = 0;
}
proceedings.setYearOfPublication(yearOfPub);
for (AuthorData author : authors) { for (AuthorData author : authors) {
report.addAuthor(processAuthor(proceedings, author, pretend)); report.addAuthor(processAuthor(proceedings, author, pretend));
} }
report.setPublisher(processPublisher(proceedings, publisherName, place, pretend));
proceedings.save();
inProceedings.setProceedings(proceedings); inProceedings.setProceedings(proceedings);
} }
report.setCreated(true); report.setCreated(true);
//Special handling for pretend mode
if (pretend && createdProcs.contains(String.format("%s %s", title, year))) {
report.setCreated(false);
} else {
if (pretend) {
for (AuthorData author : authors) {
report.addAuthor(processAuthor(null, author, pretend));
}
report.setPublisher(processPublisher(null, place, publisherName, pretend));
report.setConference(conference);
}
createdProcs.add(String.format("%s %s", title, year));
}
} else { } else {
if (!pretend) { if (!pretend) {
collection.next(); collection.next();
@ -288,6 +361,13 @@ public class ImporterUtil {
article.setJournal(newJournal); article.setJournal(newJournal);
} }
report.setCreated(true); report.setCreated(true);
//Special handling for pretend mode
if (pretend && createdJournals.contains(title)) {
report.setCreated(false);
} else {
createdJournals.add(title);
}
} else { } else {
if (!pretend) { if (!pretend) {
collection.next(); collection.next();

View File

@ -32,12 +32,16 @@ abstract class AbstractPublicationImporter<T extends Publication> {
private final CsvLine data; private final CsvLine data;
private final PublicationImportReport report; private final PublicationImportReport report;
private final boolean pretend; private final boolean pretend;
private final ImporterUtil importerUtil = new ImporterUtil(); private final ImporterUtil importerUtil;
public AbstractPublicationImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) { public AbstractPublicationImporter(final CsvLine data,
final PublicationImportReport report,
final boolean pretend,
final ImporterUtil importerUtil) {
this.data = data; this.data = data;
this.report = report; this.report = report;
this.pretend = pretend; this.pretend = pretend;
this.importerUtil = importerUtil;
} }
protected CsvLine getData() { protected CsvLine getData() {

View File

@ -3,6 +3,7 @@ package com.arsdigita.cms.scipublications.importer.csv;
import com.arsdigita.cms.contenttypes.PublicationWithPublisher; import com.arsdigita.cms.contenttypes.PublicationWithPublisher;
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;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
/** /**
* *
@ -14,8 +15,9 @@ abstract class AbstractPublicationWithPublisherImporter<T extends PublicationWit
public AbstractPublicationWithPublisherImporter(final CsvLine data, public AbstractPublicationWithPublisherImporter(final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
super(data, report, pretend); final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override

View File

@ -3,6 +3,7 @@ package com.arsdigita.cms.scipublications.importer.csv;
import com.arsdigita.cms.contenttypes.UnPublished; import com.arsdigita.cms.contenttypes.UnPublished;
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;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
/** /**
* *
@ -13,8 +14,9 @@ abstract class AbstractUnPublishedImporter<T extends UnPublished> extends Abstra
protected AbstractUnPublishedImporter(final CsvLine data, protected AbstractUnPublishedImporter(final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
super(data, report, pretend); final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override

View File

@ -14,13 +14,16 @@ import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
*/ */
class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter<ArticleInCollectedVolume> { class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter<ArticleInCollectedVolume> {
public ArticleInCollectedVolumeImporter(CsvLine data, PublicationImportReport report, final boolean pretend) { public ArticleInCollectedVolumeImporter(final CsvLine data,
super(data, report, pretend); final PublicationImportReport report,
final boolean pretend,
final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override
public ArticleInCollectedVolume importPublication() { public ArticleInCollectedVolume importPublication() {
final ArticleInCollectedVolume article = importPublication(); final ArticleInCollectedVolume article = super.importPublication();
final CsvLine data = getData(); final CsvLine data = getData();
final PublicationImportReport report = getReport(); final PublicationImportReport report = getReport();
final ImporterUtil importerUtil = getImporterUtil(); final ImporterUtil importerUtil = getImporterUtil();
@ -38,8 +41,10 @@ class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter<Artic
report.setCollectedVolume(importerUtil.processCollectedVolume( report.setCollectedVolume(importerUtil.processCollectedVolume(
article, article,
data.getCollectedVolume(), data.getCollectedVolume(),
article.getYearOfPublication(), data.getYear(),
parseAuthors(data.getCollectedVolumeAuthors()), parseAuthors(data.getCollectedVolumeAuthors()),
data.getPublisher(),
data.getPlace(),
isPretend())); isPretend()));
@ -65,9 +70,9 @@ class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter<Artic
try { try {
final int pagesTo = Integer.parseInt(getData().getPageTo()); final int pagesTo = Integer.parseInt(getData().getPageTo());
if (!isPretend()) { if (!isPretend()) {
publication.setPagesFrom(pagesTo); publication.setPagesTo(pagesTo);
} }
getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages to", getData().getPageTo()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse pageTo data in line '%d'.", getReport().addMessage(String.format("Failed to parse pageTo data in line '%d'.",
getData().getLineNumber())); getData().getLineNumber()));

View File

@ -4,6 +4,7 @@ import com.arsdigita.cms.contenttypes.ArticleInJournal;
import com.arsdigita.cms.contenttypes.ArticleInJournalBundle; import com.arsdigita.cms.contenttypes.ArticleInJournalBundle;
import com.arsdigita.cms.contenttypes.PublicationBundle; import com.arsdigita.cms.contenttypes.PublicationBundle;
import com.arsdigita.cms.scipublications.importer.report.FieldImportReport; import com.arsdigita.cms.scipublications.importer.report.FieldImportReport;
import com.arsdigita.cms.scipublications.importer.report.JournalImportReport;
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil; import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
import java.text.DateFormat; import java.text.DateFormat;
@ -19,8 +20,9 @@ class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJour
protected ArticleInJournalImporter(final CsvLine data, protected ArticleInJournalImporter(final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
super(data, report, pretend); final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override
@ -42,7 +44,10 @@ class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJour
processPublicationDate(article); processPublicationDate(article);
if ((data.getJournal() != null) && !data.getJournal().isEmpty()) { if ((data.getJournal() != null) && !data.getJournal().isEmpty()) {
importerUtil.processJournal(article, data.getJournal(), isPretend()); final JournalImportReport journalReport = importerUtil.processJournal(article,
data.getJournal(),
isPretend());
report.setJournal(journalReport);
} }
@ -83,9 +88,9 @@ class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJour
try { try {
final int pagesTo = Integer.parseInt(getData().getPageTo()); final int pagesTo = Integer.parseInt(getData().getPageTo());
if (!isPretend()) { if (!isPretend()) {
publication.setPagesFrom(pagesTo); publication.setPagesTo(pagesTo);
} }
getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages to", getData().getPageTo()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse pageTo data in line '%d'.", getReport().addMessage(String.format("Failed to parse pageTo data in line '%d'.",
getData().getLineNumber())); getData().getLineNumber()));

View File

@ -4,6 +4,7 @@ import com.arsdigita.cms.contenttypes.CollectedVolume;
import com.arsdigita.cms.contenttypes.CollectedVolumeBundle; import com.arsdigita.cms.contenttypes.CollectedVolumeBundle;
import com.arsdigita.cms.contenttypes.PublicationBundle; import com.arsdigita.cms.contenttypes.PublicationBundle;
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
/** /**
* *
@ -14,8 +15,9 @@ class CollectedVolumeImporter extends AbstractPublicationWithPublisherImporter<C
protected CollectedVolumeImporter(final CsvLine data, protected CollectedVolumeImporter(final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
super(data, report, pretend); final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override

View File

@ -4,6 +4,7 @@ import com.arsdigita.cms.contenttypes.Expertise;
import com.arsdigita.cms.contenttypes.PublicationBundle; import com.arsdigita.cms.contenttypes.PublicationBundle;
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;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
/** /**
* *
@ -12,8 +13,11 @@ import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport
*/ */
class ExpertiseImporter extends AbstractPublicationImporter<Expertise> { class ExpertiseImporter extends AbstractPublicationImporter<Expertise> {
protected ExpertiseImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) { protected ExpertiseImporter(final CsvLine data,
super(data, report, pretend); final PublicationImportReport report,
final boolean pretend,
final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override

View File

@ -4,6 +4,7 @@ import com.arsdigita.cms.contenttypes.GreyLiterature;
import com.arsdigita.cms.contenttypes.PublicationBundle; import com.arsdigita.cms.contenttypes.PublicationBundle;
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;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
/** /**
* *
@ -12,8 +13,11 @@ import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport
*/ */
class GreyLiteratureImporter extends AbstractUnPublishedImporter<GreyLiterature> { class GreyLiteratureImporter extends AbstractUnPublishedImporter<GreyLiterature> {
protected GreyLiteratureImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) { protected GreyLiteratureImporter(final CsvLine data,
super(data, report, pretend); final PublicationImportReport report,
final boolean pretend,
final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override
@ -45,9 +49,9 @@ class GreyLiteratureImporter extends AbstractUnPublishedImporter<GreyLiterature>
try { try {
final int pagesTo = Integer.parseInt(getData().getPageTo()); final int pagesTo = Integer.parseInt(getData().getPageTo());
if (!isPretend()) { if (!isPretend()) {
publication.setPagesFrom(pagesTo); publication.setPagesTo(pagesTo);
} }
getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages to", getData().getPageTo()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse pageTo data in line '%d'.", getReport().addMessage(String.format("Failed to parse pageTo data in line '%d'.",
getData().getLineNumber())); getData().getLineNumber()));

View File

@ -14,8 +14,11 @@ import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
*/ */
class InProceedingsImporter extends AbstractPublicationImporter<InProceedings> { class InProceedingsImporter extends AbstractPublicationImporter<InProceedings> {
public InProceedingsImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) { public InProceedingsImporter(final CsvLine data,
super(data, report, pretend); final PublicationImportReport report,
final boolean pretend,
final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override
@ -30,9 +33,11 @@ class InProceedingsImporter extends AbstractPublicationImporter<InProceedings> {
report.setProceedings(importerUtil.processProceedings(inProceedings, report.setProceedings(importerUtil.processProceedings(inProceedings,
data.getCollectedVolume(), data.getCollectedVolume(),
inProceedings.getYearOfPublication(), data.getYear(),
data.getConference(), data.getConference(),
parseAuthors(data.getCollectedVolumeAuthors()), parseAuthors(data.getCollectedVolumeAuthors()),
data.getPublisher(),
data.getPlace(),
isPretend())); isPretend()));
return inProceedings; return inProceedings;
@ -57,9 +62,9 @@ class InProceedingsImporter extends AbstractPublicationImporter<InProceedings> {
try { try {
final int pagesTo = Integer.parseInt(getData().getPageTo()); final int pagesTo = Integer.parseInt(getData().getPageTo());
if (!isPretend()) { if (!isPretend()) {
publication.setPagesFrom(pagesTo); publication.setPagesTo(pagesTo);
} }
getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages to", getData().getPageTo()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse pageTo data in line '%d'.", getReport().addMessage(String.format("Failed to parse pageTo data in line '%d'.",
getData().getLineNumber())); getData().getLineNumber()));

View File

@ -5,6 +5,7 @@ import com.arsdigita.cms.contenttypes.InternetArticleBundle;
import com.arsdigita.cms.contenttypes.PublicationBundle; import com.arsdigita.cms.contenttypes.PublicationBundle;
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;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
@ -16,8 +17,11 @@ import java.util.Date;
*/ */
class InternetArticleImporter extends AbstractPublicationImporter<InternetArticle> { class InternetArticleImporter extends AbstractPublicationImporter<InternetArticle> {
public InternetArticleImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) { public InternetArticleImporter(final CsvLine data,
super(data, report, pretend); final PublicationImportReport report,
final boolean pretend,
final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override

View File

@ -4,6 +4,7 @@ import com.arsdigita.cms.contenttypes.Monograph;
import com.arsdigita.cms.contenttypes.PublicationBundle; import com.arsdigita.cms.contenttypes.PublicationBundle;
import com.arsdigita.cms.contenttypes.PublicationWithPublisherBundle; import com.arsdigita.cms.contenttypes.PublicationWithPublisherBundle;
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
/** /**
* *
@ -12,8 +13,11 @@ import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport
*/ */
class MonographImporter extends AbstractPublicationWithPublisherImporter<Monograph> { class MonographImporter extends AbstractPublicationWithPublisherImporter<Monograph> {
protected MonographImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) { protected MonographImporter(final CsvLine data,
super(data, report, pretend); final PublicationImportReport report,
final boolean pretend,
final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override

View File

@ -5,6 +5,7 @@ import com.arsdigita.cms.contenttypes.ProceedingsBundle;
import com.arsdigita.cms.contenttypes.PublicationBundle; import com.arsdigita.cms.contenttypes.PublicationBundle;
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;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
/** /**
* *
@ -13,8 +14,11 @@ import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport
*/ */
class ProceedingsImporter extends AbstractPublicationWithPublisherImporter<Proceedings> { class ProceedingsImporter extends AbstractPublicationWithPublisherImporter<Proceedings> {
public ProceedingsImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) { public ProceedingsImporter(final CsvLine data,
super(data, report, pretend); final PublicationImportReport report,
final boolean pretend,
final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override

View File

@ -36,6 +36,7 @@ import com.arsdigita.cms.scipublications.importer.SciPublicationsImporter;
import com.arsdigita.cms.scipublications.importer.report.FieldImportReport; import com.arsdigita.cms.scipublications.importer.report.FieldImportReport;
import com.arsdigita.cms.scipublications.importer.report.ImportReport; import com.arsdigita.cms.scipublications.importer.report.ImportReport;
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.Filter; import com.arsdigita.persistence.Filter;
import com.arsdigita.persistence.FilterFactory; import com.arsdigita.persistence.FilterFactory;
@ -89,6 +90,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
final String[] linesWithHeader = publications.split(LINE_SEP); final String[] linesWithHeader = publications.split(LINE_SEP);
final String[] lines = Arrays.copyOfRange(linesWithHeader, 1, linesWithHeader.length); final String[] lines = Arrays.copyOfRange(linesWithHeader, 1, linesWithHeader.length);
final ImportReport report = new ImportReport(); final ImportReport report = new ImportReport();
final ImporterUtil importerUtil = new ImporterUtil();
report.setImporter("CSV Importer"); report.setImporter("CSV Importer");
report.setPretend(pretend); report.setPretend(pretend);
@ -100,7 +102,11 @@ public class PublicationsImporter implements SciPublicationsImporter {
try { try {
int lineNumber = 2; //Because we are starting at line 2 of the CSV file (line 1 contains the column headers) int lineNumber = 2; //Because we are starting at line 2 of the CSV file (line 1 contains the column headers)
for (String line : lines) { for (String line : lines) {
final PublicationImportReport result = importPublication(line, lineNumber, publishNewItems, pretend); final PublicationImportReport result = importPublication(line,
lineNumber,
publishNewItems,
pretend,
importerUtil);
report.addPublication(result); report.addPublication(result);
lineNumber++; lineNumber++;
} }
@ -121,47 +127,43 @@ public class PublicationsImporter implements SciPublicationsImporter {
private PublicationImportReport importPublication(final String line, private PublicationImportReport importPublication(final String line,
final int lineNumber, final int lineNumber,
final boolean publishNewItems, final boolean publishNewItems,
final boolean pretend) { final boolean pretend,
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, -30);
//Check number of cols //Check number of cols
System.err.println("Checking number of cols...");
if (cols.length != 30) { if (cols.length != 30) {
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 30 columns but found %d columns. "
+ "Skiping line %d!\n", cols.length, lineNumber)); + "Skiping line %d!\n", cols.length, lineNumber));
return report; return report;
} }
System.err.println("Checked number of cols...");
System.err.println("Creating csv object...");
final CsvLine data = new CsvLine(cols, lineNumber); final CsvLine data = new CsvLine(cols, lineNumber);
System.err.println("Calling importer...");
if (ArticleInCollectedVolume.class.getSimpleName().equals(data.getType())) { if (ArticleInCollectedVolume.class.getSimpleName().equals(data.getType())) {
processArticleInCollectedVolume(publishNewItems, data, report, pretend); processArticleInCollectedVolume(publishNewItems, data, report, pretend, importerUtil);
} else if (ArticleInCollectedVolume.class.getSimpleName().equals(data.getType())) { } else if (ArticleInJournal.class.getSimpleName().equals(data.getType())) {
processArticleInJournal(publishNewItems, data, report, pretend); processArticleInJournal(publishNewItems, data, report, pretend, importerUtil);
} else if (CollectedVolume.class.getSimpleName().equals(data.getType())) { } else if (CollectedVolume.class.getSimpleName().equals(data.getType())) {
processCollectedVolume(publishNewItems, data, report, pretend); processCollectedVolume(publishNewItems, data, report, pretend, importerUtil);
} else if (Expertise.class.getSimpleName().equals(data.getType())) { } else if (Expertise.class.getSimpleName().equals(data.getType())) {
processExpertise(publishNewItems, data, report, pretend); processExpertise(publishNewItems, data, report, pretend, importerUtil);
} else if (GreyLiterature.class.getSimpleName().equals(data.getType())) { } else if (GreyLiterature.class.getSimpleName().equals(data.getType())) {
processGreyLiterature(publishNewItems, data, report, pretend); processGreyLiterature(publishNewItems, data, report, pretend, importerUtil);
} else if (InProceedings.class.getSimpleName().equals(data.getType())) { } else if (InProceedings.class.getSimpleName().equals(data.getType())) {
processInProceedings(publishNewItems, data, report, pretend); processInProceedings(publishNewItems, data, report, pretend, importerUtil);
} else if (InternetArticle.class.getSimpleName().equals(data.getType())) { } else if (InternetArticle.class.getSimpleName().equals(data.getType())) {
processInternetArticle(publishNewItems, data, report, pretend); processInternetArticle(publishNewItems, data, report, pretend, importerUtil);
} else if (Monograph.class.getSimpleName().equals(data.getType())) { } else if (Monograph.class.getSimpleName().equals(data.getType())) {
System.err.println("CAlling monograph importer..."); processMonograph(publishNewItems, data, report, pretend, importerUtil);
processMonograph(publishNewItems, data, report, pretend);
} else if (Proceedings.class.getSimpleName().equals(data.getType())) { } else if (Proceedings.class.getSimpleName().equals(data.getType())) {
processProceedings(publishNewItems, data, report, pretend); 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); processReview(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); processWorkingPaper(publishNewItems, data, report, pretend, importerUtil);
} }
return report; return report;
@ -170,120 +172,133 @@ public class PublicationsImporter implements SciPublicationsImporter {
private void processArticleInCollectedVolume(final boolean publishNewItems, private void processArticleInCollectedVolume(final boolean publishNewItems,
final CsvLine data, final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
final ImporterUtil importerUtil) {
if (isPublicationAlreadyInDatabase(data, ArticleInCollectedVolume.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, ArticleInCollectedVolume.class.getSimpleName(), report)) {
return; return;
} }
final ArticleInCollectedVolumeImporter importer = new ArticleInCollectedVolumeImporter(data, report, pretend); final ArticleInCollectedVolumeImporter importer = new ArticleInCollectedVolumeImporter(data,
report,
pretend,
importerUtil);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }
private void processArticleInJournal(final boolean publishNewItems, private void processArticleInJournal(final boolean publishNewItems,
final CsvLine data, final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
final ImporterUtil importerUtil) {
if (isPublicationAlreadyInDatabase(data, ArticleInJournal.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, ArticleInJournal.class.getSimpleName(), report)) {
return; return;
} }
final ArticleInJournalImporter importer = new ArticleInJournalImporter(data, report, pretend); final ArticleInJournalImporter importer = new ArticleInJournalImporter(data, report, pretend, importerUtil);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }
private void processCollectedVolume(final boolean publishNewItems, private void processCollectedVolume(final boolean publishNewItems,
final CsvLine data, final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
final ImporterUtil importerUtil) {
if (isPublicationAlreadyInDatabase(data, CollectedVolume.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, CollectedVolume.class.getSimpleName(), report)) {
return; return;
} }
final CollectedVolumeImporter importer = new CollectedVolumeImporter(data, report, pretend); final CollectedVolumeImporter importer = new CollectedVolumeImporter(data, report, pretend, importerUtil);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }
private void processExpertise(final boolean publishNewItems, final CsvLine data, private void processExpertise(final boolean publishNewItems, final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
final ImporterUtil importerUtil) {
if (isPublicationAlreadyInDatabase(data, Expertise.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, Expertise.class.getSimpleName(), report)) {
return; return;
} }
final ExpertiseImporter importer = new ExpertiseImporter(data, report, pretend); final ExpertiseImporter importer = new ExpertiseImporter(data, report, pretend, importerUtil);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }
private void processGreyLiterature(final boolean publishNewItems, private void processGreyLiterature(final boolean publishNewItems,
final CsvLine data, final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
final ImporterUtil importerUtil) {
if (isPublicationAlreadyInDatabase(data, GreyLiterature.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, GreyLiterature.class.getSimpleName(), report)) {
return; return;
} }
final GreyLiteratureImporter importer = new GreyLiteratureImporter(data, report, pretend); final GreyLiteratureImporter importer = new GreyLiteratureImporter(data, report, pretend, importerUtil);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }
private void processInProceedings(final boolean publishNewItems, private void processInProceedings(final boolean publishNewItems,
final CsvLine data, final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
final ImporterUtil importerUtil) {
if (isPublicationAlreadyInDatabase(data, InProceedings.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, InProceedings.class.getSimpleName(), report)) {
return; return;
} }
final InProceedingsImporter importer = new InProceedingsImporter(data, report, pretend); final InProceedingsImporter importer = new InProceedingsImporter(data, report, pretend, importerUtil);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }
private void processInternetArticle(final boolean publishNewItems, private void processInternetArticle(final boolean publishNewItems,
final CsvLine data, final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
final ImporterUtil importerUtil) {
if (isPublicationAlreadyInDatabase(data, InternetArticle.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, InternetArticle.class.getSimpleName(), report)) {
return; return;
} }
final InternetArticleImporter importer = new InternetArticleImporter(data, report, pretend); final InternetArticleImporter importer = new InternetArticleImporter(data, report, pretend, importerUtil);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }
private void processMonograph(final boolean publishNewItems, private void processMonograph(final boolean publishNewItems,
final CsvLine data, final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
final ImporterUtil importerUtil) {
if (isPublicationAlreadyInDatabase(data, Monograph.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, Monograph.class.getSimpleName(), report)) {
return; return;
} }
final MonographImporter importer = new MonographImporter(data, report, pretend); final MonographImporter importer = new MonographImporter(data, report, pretend, importerUtil);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }
private void processProceedings(final boolean publishNewItems, private void processProceedings(final boolean publishNewItems,
final CsvLine data, final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
final ImporterUtil importerUtil) {
if (isPublicationAlreadyInDatabase(data, Proceedings.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, Proceedings.class.getSimpleName(), report)) {
return; return;
} }
System.err.println("Publication is not in database"); System.err.println("Publication is not in database");
final ProceedingsImporter importer = new ProceedingsImporter(data, report, pretend); final ProceedingsImporter importer = new ProceedingsImporter(data, report, pretend, importerUtil);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }
private void processReview(final boolean publishNewItems, private void processReview(final boolean publishNewItems,
final CsvLine data, final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
final ImporterUtil importerUtil) {
if (isPublicationAlreadyInDatabase(data, Review.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, Review.class.getSimpleName(), report)) {
return; return;
} }
final ReviewImporter importer = new ReviewImporter(data, report, pretend); final ReviewImporter importer = new ReviewImporter(data, report, pretend, importerUtil);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }
@ -291,12 +306,13 @@ public class PublicationsImporter implements SciPublicationsImporter {
private void processWorkingPaper(final boolean publishNewItems, private void processWorkingPaper(final boolean publishNewItems,
final CsvLine data, final CsvLine data,
final PublicationImportReport report, final PublicationImportReport report,
final boolean pretend) { final boolean pretend,
final ImporterUtil importerUtil) {
if (isPublicationAlreadyInDatabase(data, WorkingPaper.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, WorkingPaper.class.getSimpleName(), report)) {
return; return;
} }
final WorkingPaperImporter importer = new WorkingPaperImporter(data, report, pretend); final WorkingPaperImporter importer = new WorkingPaperImporter(data, report, pretend, importerUtil);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }

View File

@ -3,6 +3,7 @@ package com.arsdigita.cms.scipublications.importer.csv;
import com.arsdigita.cms.contenttypes.ArticleInJournal; import com.arsdigita.cms.contenttypes.ArticleInJournal;
import com.arsdigita.cms.contenttypes.Review; import com.arsdigita.cms.contenttypes.Review;
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
/** /**
* *
@ -11,8 +12,11 @@ import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport
*/ */
class ReviewImporter extends ArticleInJournalImporter { class ReviewImporter extends ArticleInJournalImporter {
public ReviewImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) { public ReviewImporter(final CsvLine data,
super(data, report, pretend); final PublicationImportReport report,
final boolean pretend,
final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override

View File

@ -3,6 +3,7 @@ package com.arsdigita.cms.scipublications.importer.csv;
import com.arsdigita.cms.contenttypes.PublicationBundle; import com.arsdigita.cms.contenttypes.PublicationBundle;
import com.arsdigita.cms.contenttypes.WorkingPaper; import com.arsdigita.cms.contenttypes.WorkingPaper;
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport; import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
/** /**
* *
@ -11,8 +12,11 @@ import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport
*/ */
class WorkingPaperImporter extends AbstractUnPublishedImporter<WorkingPaper> { class WorkingPaperImporter extends AbstractUnPublishedImporter<WorkingPaper> {
protected WorkingPaperImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) { protected WorkingPaperImporter(final CsvLine data,
super(data, report, pretend); final PublicationImportReport report,
final boolean pretend,
final ImporterUtil importerUtil) {
super(data, report, pretend, importerUtil);
} }
@Override @Override