Aktueller Stand Importer Publikationen

git-svn-id: https://svn.libreccm.org/ccm/trunk@1908 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2012-11-02 16:07:03 +00:00
parent 575c9d3dd7
commit 6abbc6715e
16 changed files with 544 additions and 375 deletions

View File

@ -36,7 +36,9 @@ import java.util.List;
*/ */
public class ImporterUtil { public class ImporterUtil {
public AuthorImportReport processAuthor(final Publication publication, final AuthorData authorData) { public AuthorImportReport processAuthor(final Publication publication,
final AuthorData authorData,
final boolean pretend) {
final AuthorImportReport report = new AuthorImportReport(); final AuthorImportReport report = new AuthorImportReport();
final Session session = SessionManager.getSession(); final Session session = SessionManager.getSession();
@ -44,234 +46,261 @@ public class ImporterUtil {
collection.addEqualsFilter("surname", authorData.getSurname()); collection.addEqualsFilter("surname", authorData.getSurname());
collection.addEqualsFilter("givenname", authorData.getGivenName()); collection.addEqualsFilter("givenname", authorData.getGivenName());
final GenericPerson author;
report.setSurname(authorData.getSurname()); report.setSurname(authorData.getSurname());
report.setGivenName(authorData.getGivenName()); report.setGivenName(authorData.getGivenName());
report.setEditor(authorData.isEditor()); report.setEditor(authorData.isEditor());
if (collection.isEmpty()) { if (collection.isEmpty()) {
final Integer folderId = Publication.getConfig().getDefaultAuthorsFolder(); if (!pretend) {
final Folder folder = new Folder(new BigDecimal(folderId)); final Integer folderId = Publication.getConfig().getDefaultAuthorsFolder();
if (folder == null) { final Folder folder = new Folder(new BigDecimal(folderId));
throw new IllegalArgumentException("Error getting folders for authors."); if (folder == null) {
throw new IllegalArgumentException("Error getting folders for authors.");
}
final SciAuthor author = new SciAuthor();
author.setSurname(authorData.getSurname());
author.setGivenName(authorData.getGivenName());
author.setName(GenericPerson.urlSave(String.format("%s %s",
authorData.getSurname(),
authorData.getGivenName())));
author.setContentSection(folder.getContentSection());
author.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
author.save();
final GenericPersonBundle bundle = new GenericPersonBundle(author);
bundle.setParent(folder);
bundle.setContentSection(folder.getContentSection());
bundle.save();
publication.addAuthor(author, authorData.isEditor());
} }
final SciAuthor newAuthor = new SciAuthor();
newAuthor.setSurname(authorData.getSurname());
newAuthor.setGivenName(authorData.getGivenName());
newAuthor.setName(GenericPerson.urlSave(String.format("%s %s",
authorData.getSurname(),
authorData.getGivenName())));
newAuthor.setContentSection(folder.getContentSection());
newAuthor.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
newAuthor.save();
final GenericPersonBundle bundle = new GenericPersonBundle(newAuthor);
bundle.setParent(folder);
bundle.setContentSection(folder.getContentSection());
bundle.save();
report.setCreated(true); report.setCreated(true);
author = newAuthor;
} else { } else {
collection.next(); if (!pretend) {
author = new GenericPerson(collection.getDataObject()); final GenericPerson author;
collection.next();
author = new GenericPerson(collection.getDataObject());
publication.addAuthor(author, authorData.isEditor());
}
report.setCreated(false); report.setCreated(false);
} }
publication.addAuthor(author, authorData.isEditor()); collection.close();
return report; return report;
} }
public PublisherImportReport processPublisher(final PublicationWithPublisher publication, public PublisherImportReport processPublisher(final PublicationWithPublisher publication,
final String place, final String place,
final String publisherName) { final String publisherName,
final boolean pretend) {
final PublisherImportReport report = new PublisherImportReport(); final PublisherImportReport report = new PublisherImportReport();
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("title", publisherName);
collection.addEqualsFilter("place", place); collection.addEqualsFilter("place", place);
final Publisher publisher;
report.setPublisherName(publisherName); report.setPublisherName(publisherName);
report.setPlace(place); report.setPlace(place);
if (collection.isEmpty()) { if (collection.isEmpty()) {
final Integer folderId = Publication.getConfig().getDefaultPublisherFolder(); if (!pretend) {
final Folder folder = new Folder(new BigDecimal(folderId)); final Integer folderId = Publication.getConfig().getDefaultPublisherFolder();
if (folder == null) { final Folder folder = new Folder(new BigDecimal(folderId));
throw new IllegalArgumentException("Error getting folders for publishers"); if (folder == null) {
throw new IllegalArgumentException("Error getting folders for publishers");
}
final Publisher publisher = new Publisher();
publisher.setPublisherName(publisherName);
publisher.setPlace(place);
publisher.setTitle(String.format("%s %s", publisherName, place));
publisher.setName(Publisher.urlSave(String.format("%s %s", publisherName, place)));
publisher.setContentSection(folder.getContentSection());
publisher.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
publisher.save();
final PublisherBundle bundle = new PublisherBundle(publisher);
bundle.setParent(folder);
bundle.setContentSection(folder.getContentSection());
bundle.save();
publication.setPublisher(publisher);
} }
final Publisher newPublisher = new Publisher();
newPublisher.setPublisherName(publisherName);
newPublisher.setPlace(place);
newPublisher.setTitle(String.format("%s %s", publisherName, place));
newPublisher.setName(Publisher.urlSave(String.format("%s %s", publisherName, place)));
newPublisher.setContentSection(folder.getContentSection());
newPublisher.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
newPublisher.save();
final PublisherBundle bundle = new PublisherBundle(newPublisher);
bundle.setParent(folder);
bundle.setContentSection(folder.getContentSection());
bundle.save();
report.setCreated(true); report.setCreated(true);
publisher = newPublisher;
} else { } else {
collection.next(); if (!pretend) {
publisher = new Publisher(collection.getDataObject()); collection.next();
final Publisher publisher = new Publisher(collection.getDataObject());
publication.setPublisher(publisher);
}
report.setCreated(false); report.setCreated(false);
} }
publication.setPublisher(publisher); collection.close();
return report; return report;
} }
public CollectedVolumeImportReport processCollectedVolume(final ArticleInCollectedVolume article, public CollectedVolumeImportReport processCollectedVolume(final ArticleInCollectedVolume article,
final String title, final String title,
final int year, final int year,
final List<AuthorData> authors) { final List<AuthorData> authors,
final boolean pretend) {
final CollectedVolumeImportReport report = new CollectedVolumeImportReport(); final CollectedVolumeImportReport report = new CollectedVolumeImportReport();
final Session session = SessionManager.getSession(); final Session session = SessionManager.getSession();
final DataCollection collection = session.retrieve(CollectedVolume.BASE_DATA_OBJECT_TYPE); final DataCollection collection = session.retrieve(CollectedVolume.BASE_DATA_OBJECT_TYPE);
collection.addEqualsFilter("title", title); collection.addEqualsFilter("title", title);
collection.addEqualsFilter("yearOfPublication", year); collection.addEqualsFilter("yearOfPublication", year);
final CollectedVolume collectedVolume;
report.setCollectedVolumeTitle(title); report.setCollectedVolumeTitle(title);
if (collection.isEmpty()) { if (collection.isEmpty()) {
final Integer folderId = Publication.getConfig().getDefaultCollectedVolumesFolder(); if (!pretend) {
final Folder folder = new Folder(new BigDecimal(folderId)); final Integer folderId = Publication.getConfig().getDefaultCollectedVolumesFolder();
if (folder == null) { final Folder folder = new Folder(new BigDecimal(folderId));
throw new IllegalArgumentException("Error getting foldes for collected volumes."); if (folder == null) {
throw new IllegalArgumentException("Error getting foldes for collected volumes.");
}
final CollectedVolume collectedVolume = new CollectedVolume();
collectedVolume.setTitle(title);
collectedVolume.setName(normalizeString(title));
collectedVolume.setContentSection(folder.getContentSection());
collectedVolume.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
collectedVolume.save();
final CollectedVolumeBundle bundle = new CollectedVolumeBundle(collectedVolume);
bundle.setParent(folder);
bundle.setContentSection(folder.getContentSection());
bundle.save();
collectedVolume.setYearOfPublication(year);
for (AuthorData author : authors) {
report.addAuthor(processAuthor(collectedVolume, author, pretend));
}
collectedVolume.save();
article.setCollectedVolume(collectedVolume);
} }
final CollectedVolume newCollectedVolume = new CollectedVolume();
newCollectedVolume.setTitle(title);
newCollectedVolume.setName(normalizeString(title));
newCollectedVolume.setContentSection(folder.getContentSection());
newCollectedVolume.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
newCollectedVolume.save();
final CollectedVolumeBundle bundle = new CollectedVolumeBundle(newCollectedVolume);
bundle.setParent(folder);
bundle.setContentSection(folder.getContentSection());
bundle.save();
newCollectedVolume.setYearOfPublication(year);
for(AuthorData author : authors) {
report.addAuthor(processAuthor(newCollectedVolume, author));
}
newCollectedVolume.save();
report.setCreated(true); report.setCreated(true);
collectedVolume = newCollectedVolume;
} else { } else {
collection.next(); if (!pretend) {
collectedVolume = new CollectedVolume(collection.getDataObject()); collection.next();
final CollectedVolume collectedVolume = new CollectedVolume(collection.getDataObject());
article.setCollectedVolume(collectedVolume);
}
report.setCreated(false); report.setCreated(false);
} }
article.setCollectedVolume(collectedVolume); collection.close();
return report; return report;
} }
public ProceedingsImportReport processProceedings(final InProceedings inProceedings, public ProceedingsImportReport processProceedings(final InProceedings inProceedings,
final String title, final String title,
final int year, final int year,
final String conference, final String conference,
final List<AuthorData> authors) { final List<AuthorData> authors,
final boolean pretend) {
final ProceedingsImportReport report = new ProceedingsImportReport(); final ProceedingsImportReport report = new ProceedingsImportReport();
final Session session = SessionManager.getSession(); final Session session = SessionManager.getSession();
final DataCollection collection = session.retrieve(Proceedings.BASE_DATA_OBJECT_TYPE); final DataCollection collection = session.retrieve(Proceedings.BASE_DATA_OBJECT_TYPE);
collection.addEqualsFilter("title", title); collection.addEqualsFilter("title", title);
collection.addEqualsFilter("yearOfPublication", year); collection.addEqualsFilter("yearOfPublication", year);
final Proceedings proceedings;
report.setProceedingsTitle(title); report.setProceedingsTitle(title);
if (collection.isEmpty()) { if (collection.isEmpty()) {
final Integer folderId = Publication.getConfig().getDefaultProceedingsFolder(); if (!pretend) {
final Folder folder = new Folder(new BigDecimal(folderId)); final Integer folderId = Publication.getConfig().getDefaultProceedingsFolder();
if (folder == null) { final Folder folder = new Folder(new BigDecimal(folderId));
throw new IllegalArgumentException("Failed to get folder for proceedings."); if (folder == null) {
throw new IllegalArgumentException("Failed to get folder for proceedings.");
}
final Proceedings proceedings = new Proceedings();
proceedings.setTitle(title);
proceedings.setName(normalizeString(title));
proceedings.setNameOfConference(conference);
report.setConference(conference);
proceedings.setContentSection(folder.getContentSection());
proceedings.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
proceedings.save();
final ProceedingsBundle bundle = new ProceedingsBundle(proceedings);
bundle.setContentSection(folder.getContentSection());
bundle.setParent(folder);
bundle.save();
proceedings.setYearOfPublication(year);
for (AuthorData author : authors) {
report.addAuthor(processAuthor(proceedings, author, pretend));
}
inProceedings.setProceedings(proceedings);
} }
final Proceedings newProceedings = new Proceedings();
newProceedings.setTitle(title);
newProceedings.setName(normalizeString(title));
newProceedings.setNameOfConference(conference);
report.setConference(conference);
newProceedings.setContentSection(folder.getContentSection());
newProceedings.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
newProceedings.save();
final ProceedingsBundle bundle = new ProceedingsBundle(newProceedings);
bundle.setContentSection(folder.getContentSection());
bundle.setParent(folder);
bundle.save();
newProceedings.setYearOfPublication(year);
for(AuthorData author : authors) {
report.addAuthor(processAuthor(newProceedings, author));
}
report.setCreated(true); report.setCreated(true);
proceedings = newProceedings;
} else { } else {
collection.next(); if (!pretend) {
proceedings = new Proceedings(collection.getDataObject()); collection.next();
final Proceedings proceedings = new Proceedings(collection.getDataObject());
inProceedings.setProceedings(proceedings);
}
report.setCreated(false); report.setCreated(false);
} }
inProceedings.setProceedings(proceedings); collection.close();
return report; return report;
} }
public JournalImportReport processJournal(final ArticleInJournal article, final String title) { public JournalImportReport processJournal(final ArticleInJournal article,
final String title,
final boolean pretend) {
final JournalImportReport report = new JournalImportReport(); final JournalImportReport report = new JournalImportReport();
final Session session = SessionManager.getSession(); final Session session = SessionManager.getSession();
final DataCollection collection = session.retrieve(Journal.BASE_DATA_OBJECT_TYPE); final DataCollection collection = session.retrieve(Journal.BASE_DATA_OBJECT_TYPE);
collection.addEqualsFilter("title", title); collection.addEqualsFilter("title", title);
final Journal journal;
report.setJournalTitle(title); report.setJournalTitle(title);
if (collection.isEmpty()) { if (collection.isEmpty()) {
final Integer folderId = Publication.getConfig().getDefaultJournalsFolder(); if (!pretend) {
final Folder folder = new Folder(new BigDecimal(folderId)); final Integer folderId = Publication.getConfig().getDefaultJournalsFolder();
if (folder == null) { final Folder folder = new Folder(new BigDecimal(folderId));
throw new IllegalArgumentException("Error getting folder for journals"); if (folder == null) {
throw new IllegalArgumentException("Error getting folder for journals");
}
final Journal newJournal = new Journal();
newJournal.setTitle(title);
newJournal.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
newJournal.setContentSection(folder.getContentSection());
newJournal.save();
final JournalBundle bundle = new JournalBundle(newJournal);
bundle.setParent(folder);
bundle.setContentSection(folder.getContentSection());
bundle.save();
article.setJournal(newJournal);
} }
final Journal newJournal = new Journal();
newJournal.setTitle(title);
newJournal.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
newJournal.setContentSection(folder.getContentSection());
newJournal.save();
final JournalBundle bundle = new JournalBundle(newJournal);
bundle.setParent(folder);
bundle.setContentSection(folder.getContentSection());
bundle.save();
report.setCreated(true); report.setCreated(true);
journal = newJournal;
} else { } else {
collection.next(); if (!pretend) {
journal = new Journal(collection.getDataObject()); collection.next();
report.setCreated(false); final Journal journal = new Journal(collection.getDataObject());
article.setJournal(journal);
}
report.setCreated(false);
} }
article.setJournal(journal); collection.close();
return report; return report;
} }
protected final String normalizeString(final String str) { protected final String normalizeString(final String str) {
if (str == null) { if (str == null) {
return "null"; return "null";

View File

@ -31,11 +31,13 @@ abstract class AbstractPublicationImporter<T extends Publication> {
private static final String EDITOR_STR = "(Hrsg.)"; private static final String EDITOR_STR = "(Hrsg.)";
private final CsvLine data; private final CsvLine data;
private final PublicationImportReport report; private final PublicationImportReport report;
private final boolean pretend;
private final ImporterUtil importerUtil = new ImporterUtil(); private final ImporterUtil importerUtil = new ImporterUtil();
public AbstractPublicationImporter(final CsvLine data, final PublicationImportReport report) { public AbstractPublicationImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) {
this.data = data; this.data = data;
this.report = report; this.report = report;
this.pretend = pretend;
} }
protected CsvLine getData() { protected CsvLine getData() {
@ -50,24 +52,31 @@ abstract class AbstractPublicationImporter<T extends Publication> {
return report; return report;
} }
protected boolean isPretend() {
return pretend;
}
/** /**
* This method is called by {@link PublicationsImporter}. * This method is called by {@link PublicationsImporter}.
*/ */
public final void doImport(final boolean publishNewItems) { public final void doImport(final boolean publishNewItems) {
final T publication = importPublication(); final T publication = importPublication();
publication.save(); if (!pretend) {
publication.save();
assignCategories(publication.getPublicationBundle()); assignCategories(publication.getPublicationBundle());
if (publishNewItems) { if (publishNewItems) {
final Calendar now = new GregorianCalendar(); final Calendar now = new GregorianCalendar();
final LifecycleDefinitionCollection lifecycles = publication.getContentSection().getLifecycleDefinitions(); final LifecycleDefinitionCollection lifecycles = publication.getContentSection().
lifecycles.next(); getLifecycleDefinitions();
final LifecycleDefinition lifecycleDef = lifecycles.getLifecycleDefinition(); lifecycles.next();
publication.publish(lifecycleDef, now.getTime()); final LifecycleDefinition lifecycleDef = lifecycles.getLifecycleDefinition();
publication.publish(lifecycleDef, now.getTime());
}
} }
report.setSuccessful(true); report.setSuccessful(true);
} }
@ -94,29 +103,32 @@ abstract class AbstractPublicationImporter<T extends Publication> {
final T publication = createPublication(); final T publication = createPublication();
processTitleAndName(publication); processTitleAndName(publication);
publication.save();
final Integer folderId = Publication.getConfig().getDefaultPublicationsFolder();
final Folder folder = new Folder(new BigDecimal(folderId));
publication.setContentSection(folder.getContentSection());
publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
publication.save();
final PublicationBundle bundle = createBundle(publication);
bundle.setParent(folder);
bundle.setContentSection(folder.getContentSection());
bundle.save();
publication.setAbstract(data.getAbstract());
publication.setMisc(data.getMisc());
processReviewed(publication); processReviewed(publication);
if (!pretend) {
publication.save();
final Integer folderId = Publication.getConfig().getDefaultPublicationsFolder();
final Folder folder = new Folder(new BigDecimal(folderId));
publication.setContentSection(folder.getContentSection());
publication.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
publication.save();
final PublicationBundle bundle = createBundle(publication);
bundle.setParent(folder);
bundle.setContentSection(folder.getContentSection());
bundle.save();
publication.setAbstract(data.getAbstract());
publication.setMisc(data.getMisc());
publication.save();
}
processAuthors(publication); processAuthors(publication);
publication.save();
return publication; return publication;
} }
@ -130,9 +142,11 @@ abstract class AbstractPublicationImporter<T extends Publication> {
protected abstract PublicationBundle createBundle(final T publication); protected abstract PublicationBundle createBundle(final T publication);
private void processTitleAndName(final T publication) { private void processTitleAndName(final T publication) {
publication.setTitle(data.getTitle()); if (!pretend) {
publication.setName(normalizeString(data.getTitle())); publication.setTitle(data.getTitle());
report.setTitle(publication.getTitle()); publication.setName(normalizeString(data.getTitle()));
}
report.setTitle(data.getTitle());
} }
private void processReviewed(final T publication) { private void processReviewed(final T publication) {
@ -155,7 +169,9 @@ abstract class AbstractPublicationImporter<T extends Publication> {
reviewed = false; reviewed = false;
} }
publication.setReviewed(reviewed); if (!pretend) {
publication.setReviewed(reviewed);
}
report.addField(new FieldImportReport("reviewed", Boolean.toString(reviewed))); report.addField(new FieldImportReport("reviewed", Boolean.toString(reviewed)));
} }
@ -164,7 +180,7 @@ abstract class AbstractPublicationImporter<T extends Publication> {
AuthorImportReport authorReport; AuthorImportReport authorReport;
for (AuthorData authorData : authorsData) { for (AuthorData authorData : authorsData) {
authorReport = importerUtil.processAuthor(publication, authorData); authorReport = importerUtil.processAuthor(publication, authorData, pretend);
report.addAuthor(authorReport); report.addAuthor(authorReport);
} }
} }

View File

@ -13,8 +13,9 @@ abstract class AbstractPublicationWithPublisherImporter<T extends PublicationWit
extends AbstractPublicationImporter<T> { extends AbstractPublicationImporter<T> {
public AbstractPublicationWithPublisherImporter(final CsvLine data, public AbstractPublicationWithPublisherImporter(final CsvLine data,
final PublicationImportReport report) { final PublicationImportReport report,
super(data, report); final boolean pretend) {
super(data, report, pretend);
} }
@Override @Override
@ -23,7 +24,9 @@ abstract class AbstractPublicationWithPublisherImporter<T extends PublicationWit
final CsvLine data = getData(); final CsvLine data = getData();
if ((data.getIsbn() != null) && !data.getIsbn().isEmpty()) { if ((data.getIsbn() != null) && !data.getIsbn().isEmpty()) {
publication.setISBN(data.getIsbn()); if (!isPretend()) {
publication.setISBN(data.getIsbn());
}
getReport().addField(new FieldImportReport("isbn", data.getIsbn())); getReport().addField(new FieldImportReport("isbn", data.getIsbn()));
} }
@ -31,10 +34,13 @@ abstract class AbstractPublicationWithPublisherImporter<T extends PublicationWit
processNumberOfVolumes(publication); processNumberOfVolumes(publication);
processNumberOfPages(publication); processNumberOfPages(publication);
if ((data.getEdition() != null) && !data.getEdition().isEmpty()) { if ((data.getEdition() != null) && !data.getEdition().isEmpty()) {
publication.setEdition(data.getEdition()); if (!isPretend()) {
publication.setEdition(data.getEdition());
}
getReport().addField(new FieldImportReport("edition", data.getEdition()));
} }
getImporterUtil().processPublisher(publication, getData().getPlace(), getData().getPublisher()); getImporterUtil().processPublisher(publication, getData().getPlace(), getData().getPublisher(), isPretend());
return publication; return publication;
} }
@ -43,7 +49,9 @@ abstract class AbstractPublicationWithPublisherImporter<T extends PublicationWit
if ((getData().getVolume() != null) && !getData().getVolume().isEmpty()) { if ((getData().getVolume() != null) && !getData().getVolume().isEmpty()) {
try { try {
final int volume = Integer.parseInt(getData().getVolume()); final int volume = Integer.parseInt(getData().getVolume());
publication.setVolume(volume); if (!isPretend()) {
publication.setVolume(volume);
}
getReport().addField(new FieldImportReport("Volume", getData().getVolume())); getReport().addField(new FieldImportReport("Volume", getData().getVolume()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse volume data in line %d.", getData(). getReport().addMessage(String.format("Failed to parse volume data in line %d.", getData().
@ -56,7 +64,9 @@ abstract class AbstractPublicationWithPublisherImporter<T extends PublicationWit
if ((getData().getNumberOfVolumes() != null) && !getData().getNumberOfVolumes().isEmpty()) { if ((getData().getNumberOfVolumes() != null) && !getData().getNumberOfVolumes().isEmpty()) {
try { try {
final int volume = Integer.parseInt(getData().getNumberOfVolumes()); final int volume = Integer.parseInt(getData().getNumberOfVolumes());
publication.setNumberOfVolumes(volume); if (!isPretend()) {
publication.setNumberOfVolumes(volume);
}
getReport().addField(new FieldImportReport("Number of volumes", getData().getNumberOfVolumes())); getReport().addField(new FieldImportReport("Number of volumes", getData().getNumberOfVolumes()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format( getReport().addMessage(String.format(
@ -69,60 +79,14 @@ abstract class AbstractPublicationWithPublisherImporter<T extends PublicationWit
if ((getData().getNumberOfPages() != null) && !getData().getNumberOfPages().isEmpty()) { if ((getData().getNumberOfPages() != null) && !getData().getNumberOfPages().isEmpty()) {
try { try {
final int volume = Integer.parseInt(getData().getNumberOfPages()); final int volume = Integer.parseInt(getData().getNumberOfPages());
publication.setNumberOfPages(volume); if (!isPretend()) {
publication.setNumberOfPages(volume);
}
getReport().addField(new FieldImportReport("Number of pages", getData().getNumberOfPages())); getReport().addField(new FieldImportReport("Number of pages", getData().getNumberOfPages()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse numberOfPages data in line %d.", getReport().addMessage(String.format("Failed to parse numberOfPages data in line %d.",
getData().getLineNumber())); getData().getLineNumber()));
} }
} }
} }
// private void processPublisher(final T publication) {
// final String publisherName = getData().getPublisher();
// final String place = getData().getPlace();
//
// final Session session = SessionManager.getSession();
// final DataCollection collection = session.retrieve(Publisher.BASE_DATA_OBJECT_TYPE);
// collection.addEqualsFilter("title", publisherName);
// collection.addEqualsFilter("place", place);
// final Publisher publisher;
// if (collection.isEmpty()) {
// getReportWriter().printf("Publisher %s: %s not found in database. Creating...\n",
// getData().getPlace(),
// getData().getPublisher());
//
// final Integer folderId = Publication.getConfig().getDefaultPublisherFolder();
// final Folder folder = new Folder(new BigDecimal(folderId));
// if (folder == null) {
// throw new IllegalArgumentException("Error getting folders for publishers");
// }
//
// final Publisher newPublisher = new Publisher();
// newPublisher.setPublisherName(publisherName);
// newPublisher.setPlace(place);
// newPublisher.setTitle(String.format("%s %s", publisherName, place));
// newPublisher.setName(Publisher.urlSave(String.format("%s %s", publisherName, place)));
// newPublisher.setContentSection(folder.getContentSection());
// newPublisher.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
// newPublisher.save();
//
// final PublisherBundle bundle = new PublisherBundle(newPublisher);
// bundle.setParent(folder);
// bundle.setContentSection(folder.getContentSection());
// bundle.save();
//
// publisher = newPublisher;
// } else {
// getReportWriter().printf("Publisher %s: %s found in database. Using existing item.\n",
// getData().getPlace(),
// getData().getPublisher());
// collection.next();
// final DataObject dobj = collection.getDataObject();
// publisher = new Publisher(dobj);
// }
//
// publication.setPublisher(publisher);
// }
} }

View File

@ -12,8 +12,9 @@ import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport
abstract class AbstractUnPublishedImporter<T extends UnPublished> extends AbstractPublicationImporter<T> { abstract class AbstractUnPublishedImporter<T extends UnPublished> extends AbstractPublicationImporter<T> {
protected AbstractUnPublishedImporter(final CsvLine data, protected AbstractUnPublishedImporter(final CsvLine data,
final PublicationImportReport report) { final PublicationImportReport report,
super(data, report); final boolean pretend) {
super(data, report, pretend);
} }
@Override @Override
@ -23,12 +24,14 @@ abstract class AbstractUnPublishedImporter<T extends UnPublished> extends Abstra
final PublicationImportReport report = getReport(); final PublicationImportReport report = getReport();
if ((data.getPlace() != null) && !data.getPlace().isEmpty()) { if ((data.getPlace() != null) && !data.getPlace().isEmpty()) {
publication.setPlace(data.getPlace()); if (!isPretend()) {
publication.setPlace(data.getPlace());
}
report.addField(new FieldImportReport("place", data.getPlace())); report.addField(new FieldImportReport("place", data.getPlace()));
} }
processNumberOfPages(publication); processNumberOfPages(publication);
return publication; return publication;
} }
@ -36,7 +39,9 @@ abstract class AbstractUnPublishedImporter<T extends UnPublished> extends Abstra
if ((getData().getNumberOfPages() != null) && !getData().getNumberOfPages().isEmpty()) { if ((getData().getNumberOfPages() != null) && !getData().getNumberOfPages().isEmpty()) {
try { try {
final int volume = Integer.parseInt(getData().getNumberOfPages()); final int volume = Integer.parseInt(getData().getNumberOfPages());
publication.setNumberOfPages(volume); if (!isPretend()) {
publication.setNumberOfPages(volume);
}
getReport().addField(new FieldImportReport("Number of pages", getData().getNumberOfPages())); getReport().addField(new FieldImportReport("Number of pages", getData().getNumberOfPages()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse numberOfPages data in line %d.", getReport().addMessage(String.format("Failed to parse numberOfPages data in line %d.",

View File

@ -14,8 +14,8 @@ import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
*/ */
class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter<ArticleInCollectedVolume> { class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter<ArticleInCollectedVolume> {
public ArticleInCollectedVolumeImporter(CsvLine data, PublicationImportReport report) { public ArticleInCollectedVolumeImporter(CsvLine data, PublicationImportReport report, final boolean pretend) {
super(data, report); super(data, report, pretend);
} }
@Override @Override
@ -27,26 +27,32 @@ class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter<Artic
processPagesFrom(article); processPagesFrom(article);
processPagesTo(article); processPagesTo(article);
if ((data.getChapter() != null) && !data.getChapter().isEmpty()) { if ((data.getChapter() != null) && !data.getChapter().isEmpty()) {
article.setChapter(data.getChapter()); if (!isPretend()) {
article.setChapter(data.getChapter());
}
report.addField(new FieldImportReport("Chapter", data.getChapter())); report.addField(new FieldImportReport("Chapter", data.getChapter()));
} }
report.setCollectedVolume(importerUtil.processCollectedVolume(article, report.setCollectedVolume(importerUtil.processCollectedVolume(
data.getCollectedVolume(), article,
article.getYearOfPublication(), data.getCollectedVolume(),
parseAuthors(data.getAuthors()))); article.getYearOfPublication(),
parseAuthors(data.getCollectedVolumeAuthors()),
isPretend()));
return article; return article;
} }
private void processPagesFrom(final ArticleInCollectedVolume publication) { private void processPagesFrom(final ArticleInCollectedVolume publication) {
if ((getData().getPageFrom() != null) && !getData().getPageFrom().isEmpty()) { if ((getData().getPageFrom() != null) && !getData().getPageFrom().isEmpty()) {
try { try {
final int pagesFrom = Integer.parseInt(getData().getPageFrom()); final int pagesFrom = Integer.parseInt(getData().getPageFrom());
publication.setPagesFrom(pagesFrom); if (!isPretend()) {
publication.setPagesFrom(pagesFrom);
}
getReport().addField(new FieldImportReport("Pages from", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages from", getData().getPageFrom()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse pageFrom data in line '%d'.", getReport().addMessage(String.format("Failed to parse pageFrom data in line '%d'.",
@ -58,7 +64,9 @@ class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter<Artic
private void processPagesTo(final ArticleInCollectedVolume publication) { private void processPagesTo(final ArticleInCollectedVolume publication) {
try { try {
final int pagesTo = Integer.parseInt(getData().getPageTo()); final int pagesTo = Integer.parseInt(getData().getPageTo());
publication.setPagesFrom(pagesTo); if (!isPretend()) {
publication.setPagesFrom(pagesTo);
}
getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom()));
} 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'.",
@ -67,12 +75,21 @@ class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter<Artic
} }
@Override @Override
protected ArticleInCollectedVolume createPublication() { protected ArticleInCollectedVolume createPublication() {
return new ArticleInCollectedVolume(); if (isPretend()) {
} return null;
} else {
return new ArticleInCollectedVolume();
}
}
@Override @Override
protected PublicationBundle createBundle(final ArticleInCollectedVolume article) { protected PublicationBundle createBundle(final ArticleInCollectedVolume article) {
return new ArticleInCollectedVolumeBundle(article); if (isPretend()) {
return null;
} else {
return new ArticleInCollectedVolumeBundle(article);
}
} }
} }

View File

@ -17,8 +17,10 @@ import java.util.Date;
*/ */
class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJournal> { class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJournal> {
protected ArticleInJournalImporter(final CsvLine data, final PublicationImportReport report) { protected ArticleInJournalImporter(final CsvLine data,
super(data, report); final PublicationImportReport report,
final boolean pretend) {
super(data, report, pretend);
} }
@Override @Override
@ -30,7 +32,9 @@ class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJour
processVolume(article); processVolume(article);
if ((data.getIssue() != null) && !data.getIssue().isEmpty()) { if ((data.getIssue() != null) && !data.getIssue().isEmpty()) {
article.setIssue(data.getIssue()); if (!isPretend()) {
article.setIssue(data.getIssue());
}
report.addField(new FieldImportReport("Issue", data.getIssue())); report.addField(new FieldImportReport("Issue", data.getIssue()));
} }
processPagesFrom(article); processPagesFrom(article);
@ -38,7 +42,7 @@ 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()); importerUtil.processJournal(article, data.getJournal(), isPretend());
} }
@ -49,7 +53,9 @@ class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJour
if ((getData().getVolume() != null) && !getData().getVolume().isEmpty()) { if ((getData().getVolume() != null) && !getData().getVolume().isEmpty()) {
try { try {
final int volume = Integer.parseInt(getData().getVolume()); final int volume = Integer.parseInt(getData().getVolume());
article.setVolume(volume); if (!isPretend()) {
article.setVolume(volume);
}
getReport().addField(new FieldImportReport("Volume", getData().getVolume())); getReport().addField(new FieldImportReport("Volume", getData().getVolume()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse volume data in line '%d'.", getReport().addMessage(String.format("Failed to parse volume data in line '%d'.",
@ -62,7 +68,9 @@ class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJour
if ((getData().getPageFrom() != null) && !getData().getPageFrom().isEmpty()) { if ((getData().getPageFrom() != null) && !getData().getPageFrom().isEmpty()) {
try { try {
final int pagesFrom = Integer.parseInt(getData().getPageFrom()); final int pagesFrom = Integer.parseInt(getData().getPageFrom());
publication.setPagesFrom(pagesFrom); if (!isPretend()) {
publication.setPagesFrom(pagesFrom);
}
getReport().addField(new FieldImportReport("Pages from", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages from", getData().getPageFrom()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse pageFrom data in line '%d'.", getReport().addMessage(String.format("Failed to parse pageFrom data in line '%d'.",
@ -74,7 +82,9 @@ class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJour
private void processPagesTo(final ArticleInJournal publication) { private void processPagesTo(final ArticleInJournal publication) {
try { try {
final int pagesTo = Integer.parseInt(getData().getPageTo()); final int pagesTo = Integer.parseInt(getData().getPageTo());
publication.setPagesFrom(pagesTo); if (!isPretend()) {
publication.setPagesFrom(pagesTo);
}
getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom()));
} 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'.",
@ -87,7 +97,9 @@ class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJour
final DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd"); final DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
try { try {
final Date date = dateFormat.parse(getData().getPublicationDate()); final Date date = dateFormat.parse(getData().getPublicationDate());
article.setPublicationDate(date); if (!isPretend()) {
article.setPublicationDate(date);
}
getReport().addField(new FieldImportReport("Publication date", getData().getPublicationDate())); getReport().addField(new FieldImportReport("Publication date", getData().getPublicationDate()));
} catch (java.text.ParseException ex) { } catch (java.text.ParseException ex) {
getReport().addMessage(String.format("Failed to parse publication date in line %d.", getReport().addMessage(String.format("Failed to parse publication date in line %d.",
@ -98,12 +110,20 @@ class ArticleInJournalImporter extends AbstractPublicationImporter<ArticleInJour
@Override @Override
protected ArticleInJournal createPublication() { protected ArticleInJournal createPublication() {
return new ArticleInJournal(); if (isPretend()) {
return null;
} else {
return new ArticleInJournal();
}
} }
@Override @Override
protected PublicationBundle createBundle(final ArticleInJournal article) { protected PublicationBundle createBundle(final ArticleInJournal article) {
return new ArticleInJournalBundle(article); if (isPretend()) {
return null;
} else {
return new ArticleInJournalBundle(article);
}
} }
} }

View File

@ -12,18 +12,28 @@ import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport
*/ */
class CollectedVolumeImporter extends AbstractPublicationWithPublisherImporter<CollectedVolume> { class CollectedVolumeImporter extends AbstractPublicationWithPublisherImporter<CollectedVolume> {
protected CollectedVolumeImporter(final CsvLine data, final PublicationImportReport report) { protected CollectedVolumeImporter(final CsvLine data,
super(data, report); final PublicationImportReport report,
final boolean pretend) {
super(data, report, pretend);
} }
@Override @Override
protected CollectedVolume createPublication() { protected CollectedVolume createPublication() {
return new CollectedVolume(); if (isPretend()) {
return null;
} else {
return new CollectedVolume();
}
} }
@Override @Override
protected PublicationBundle createBundle(final CollectedVolume collectedVolume) { protected PublicationBundle createBundle(final CollectedVolume collectedVolume) {
return new CollectedVolumeBundle(collectedVolume); if (isPretend()) {
return null;
} else {
return new CollectedVolumeBundle(collectedVolume);
}
} }
} }

View File

@ -12,8 +12,8 @@ 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) { protected ExpertiseImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) {
super(data, report); super(data, report, pretend);
} }
@Override @Override
@ -23,7 +23,9 @@ class ExpertiseImporter extends AbstractPublicationImporter<Expertise> {
final PublicationImportReport report = getReport(); final PublicationImportReport report = getReport();
if ((data.getPlace() != null) && !data.getPlace().isEmpty()) { if ((data.getPlace() != null) && !data.getPlace().isEmpty()) {
expertise.setPlace(data.getPlace()); if (!isPretend()) {
expertise.setPlace(data.getPlace());
}
report.addField(new FieldImportReport("Place", data.getPlace())); report.addField(new FieldImportReport("Place", data.getPlace()));
} }
@ -36,7 +38,9 @@ class ExpertiseImporter extends AbstractPublicationImporter<Expertise> {
if ((getData().getNumberOfPages() != null) && !getData().getNumberOfPages().isEmpty()) { if ((getData().getNumberOfPages() != null) && !getData().getNumberOfPages().isEmpty()) {
try { try {
final int volume = Integer.parseInt(getData().getNumberOfPages()); final int volume = Integer.parseInt(getData().getNumberOfPages());
publication.setNumberOfPages(volume); if (!isPretend()) {
publication.setNumberOfPages(volume);
}
getReport().addField(new FieldImportReport("Number of pages", getData().getNumberOfPages())); getReport().addField(new FieldImportReport("Number of pages", getData().getNumberOfPages()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse numberOfPages data in line %d.", getReport().addMessage(String.format("Failed to parse numberOfPages data in line %d.",
@ -47,12 +51,20 @@ class ExpertiseImporter extends AbstractPublicationImporter<Expertise> {
@Override @Override
protected Expertise createPublication() { protected Expertise createPublication() {
return new Expertise(); if (isPretend()) {
return null;
} else {
return new Expertise();
}
} }
@Override @Override
protected PublicationBundle createBundle(final Expertise expertise) { protected PublicationBundle createBundle(final Expertise expertise) {
return new PublicationBundle(expertise); if (isPretend()) {
return null;
} else {
return new PublicationBundle(expertise);
}
} }
} }

View File

@ -12,8 +12,8 @@ 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) { protected GreyLiteratureImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) {
super(data, report); super(data, report, pretend);
} }
@Override @Override
@ -30,7 +30,9 @@ class GreyLiteratureImporter extends AbstractUnPublishedImporter<GreyLiterature>
if ((getData().getPageFrom() != null) && !getData().getPageFrom().isEmpty()) { if ((getData().getPageFrom() != null) && !getData().getPageFrom().isEmpty()) {
try { try {
final int pagesFrom = Integer.parseInt(getData().getPageFrom()); final int pagesFrom = Integer.parseInt(getData().getPageFrom());
publication.setPagesFrom(pagesFrom); if (!isPretend()) {
publication.setPagesFrom(pagesFrom);
}
getReport().addField(new FieldImportReport("Pages from", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages from", getData().getPageFrom()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse pageFrom data in line '%d'.", getReport().addMessage(String.format("Failed to parse pageFrom data in line '%d'.",
@ -42,7 +44,9 @@ class GreyLiteratureImporter extends AbstractUnPublishedImporter<GreyLiterature>
private void processPagesTo(final GreyLiterature publication) { private void processPagesTo(final GreyLiterature publication) {
try { try {
final int pagesTo = Integer.parseInt(getData().getPageTo()); final int pagesTo = Integer.parseInt(getData().getPageTo());
publication.setPagesFrom(pagesTo); if (!isPretend()) {
publication.setPagesFrom(pagesTo);
}
getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom()));
} 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'.",
@ -52,12 +56,20 @@ class GreyLiteratureImporter extends AbstractUnPublishedImporter<GreyLiterature>
@Override @Override
protected GreyLiterature createPublication() { protected GreyLiterature createPublication() {
return new GreyLiterature(); if (isPretend()) {
return null;
} else {
return new GreyLiterature();
}
} }
@Override @Override
protected PublicationBundle createBundle(final GreyLiterature greyLiterature) { protected PublicationBundle createBundle(final GreyLiterature greyLiterature) {
return new PublicationBundle(greyLiterature); if (isPretend()) {
return null;
} else {
return new PublicationBundle(greyLiterature);
}
} }
} }

View File

@ -14,8 +14,8 @@ 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) { public InProceedingsImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) {
super(data, report); super(data, report, pretend);
} }
@Override @Override
@ -28,11 +28,12 @@ class InProceedingsImporter extends AbstractPublicationImporter<InProceedings> {
processPagesFrom(inProceedings); processPagesFrom(inProceedings);
processPagesTo(inProceedings); processPagesTo(inProceedings);
importerUtil.processProceedings(inProceedings, report.setProceedings(importerUtil.processProceedings(inProceedings,
data.getCollectedVolume(), data.getCollectedVolume(),
inProceedings.getYearOfPublication(), inProceedings.getYearOfPublication(),
data.getConference(), data.getConference(),
parseAuthors(data.getCollectedVolumeAuthors())); parseAuthors(data.getCollectedVolumeAuthors()),
isPretend()));
return inProceedings; return inProceedings;
} }
@ -41,7 +42,9 @@ class InProceedingsImporter extends AbstractPublicationImporter<InProceedings> {
if ((getData().getPageFrom() != null) && !getData().getPageFrom().isEmpty()) { if ((getData().getPageFrom() != null) && !getData().getPageFrom().isEmpty()) {
try { try {
final int pagesFrom = Integer.parseInt(getData().getPageFrom()); final int pagesFrom = Integer.parseInt(getData().getPageFrom());
publication.setPagesFrom(pagesFrom); if (!isPretend()) {
publication.setPagesFrom(pagesFrom);
}
getReport().addField(new FieldImportReport("Pages from", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages from", getData().getPageFrom()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse pageFrom data in line '%d'.", getReport().addMessage(String.format("Failed to parse pageFrom data in line '%d'.",
@ -53,7 +56,9 @@ class InProceedingsImporter extends AbstractPublicationImporter<InProceedings> {
private void processPagesTo(final InProceedings publication) { private void processPagesTo(final InProceedings publication) {
try { try {
final int pagesTo = Integer.parseInt(getData().getPageTo()); final int pagesTo = Integer.parseInt(getData().getPageTo());
publication.setPagesFrom(pagesTo); if (!isPretend()) {
publication.setPagesFrom(pagesTo);
}
getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom())); getReport().addField(new FieldImportReport("Pages to", getData().getPageFrom()));
} 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'.",
@ -63,13 +68,21 @@ class InProceedingsImporter extends AbstractPublicationImporter<InProceedings> {
@Override @Override
protected InProceedings createPublication() { protected InProceedings createPublication() {
return new InProceedings(); if (isPretend()) {
return null;
} else {
return new InProceedings();
}
} }
@Override @Override
protected PublicationBundle createBundle(final InProceedings inProceedings) { protected PublicationBundle createBundle(final InProceedings inProceedings) {
return new InProceedingsBundle(inProceedings); if (isPretend()) {
return null;
} else {
return new InProceedingsBundle(inProceedings);
}
} }
} }

View File

@ -16,8 +16,8 @@ import java.util.Date;
*/ */
class InternetArticleImporter extends AbstractPublicationImporter<InternetArticle> { class InternetArticleImporter extends AbstractPublicationImporter<InternetArticle> {
public InternetArticleImporter(final CsvLine data, final PublicationImportReport report) { public InternetArticleImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) {
super(data, report); super(data, report, pretend);
} }
@Override @Override
@ -27,19 +27,25 @@ class InternetArticleImporter extends AbstractPublicationImporter<InternetArticl
final PublicationImportReport report = getReport(); final PublicationImportReport report = getReport();
if ((data.getPlace() != null) && !data.getPlace().isEmpty()) { if ((data.getPlace() != null) && !data.getPlace().isEmpty()) {
article.setPlace(data.getPlace()); if (!isPretend()) {
article.setPlace(data.getPlace());
}
report.addField(new FieldImportReport("Place", data.getPlace())); report.addField(new FieldImportReport("Place", data.getPlace()));
} }
processNumberOfPages(article); processNumberOfPages(article);
if ((data.getEdition() != null) && !data.getEdition().isEmpty()) { if ((data.getEdition() != null) && !data.getEdition().isEmpty()) {
article.setEdition(data.getEdition()); if (!isPretend()) {
article.setEdition(data.getEdition());
}
report.addField(new FieldImportReport("Edition", data.getEdition())); report.addField(new FieldImportReport("Edition", data.getEdition()));
} }
if ((data.getIssn() != null) && !data.getIssn().isEmpty()) { if ((data.getIssn() != null) && !data.getIssn().isEmpty()) {
article.setISSN(data.getIssn()); if (!isPretend()) {
article.setISSN(data.getIssn());
}
report.addField(new FieldImportReport("ISSN", data.getIssn())); report.addField(new FieldImportReport("ISSN", data.getIssn()));
} }
@ -47,17 +53,23 @@ class InternetArticleImporter extends AbstractPublicationImporter<InternetArticl
processPublicationDate(article); processPublicationDate(article);
if ((data.getUrl() != null) && !data.getUrl().isEmpty()) { if ((data.getUrl() != null) && !data.getUrl().isEmpty()) {
article.setUrl(data.getUrl()); if (!isPretend()) {
article.setUrl(data.getUrl());
}
report.addField(new FieldImportReport("URL", data.getUrl())); report.addField(new FieldImportReport("URL", data.getUrl()));
} }
if ((data.getUrn() != null) && !data.getUrn().isEmpty()) { if ((data.getUrn() != null) && !data.getUrn().isEmpty()) {
article.setUrn(data.getUrn()); if (!isPretend()) {
article.setUrn(data.getUrn());
}
report.addField(new FieldImportReport("URN", data.getUrn())); report.addField(new FieldImportReport("URN", data.getUrn()));
} }
if ((data.getDoi() != null) && !data.getDoi().isEmpty()) { if ((data.getDoi() != null) && !data.getDoi().isEmpty()) {
article.setDoi(data.getDoi()); if (!isPretend()) {
article.setDoi(data.getDoi());
}
report.addField(new FieldImportReport("DOI", data.getDoi())); report.addField(new FieldImportReport("DOI", data.getDoi()));
} }
@ -68,7 +80,9 @@ class InternetArticleImporter extends AbstractPublicationImporter<InternetArticl
if ((getData().getNumberOfPages() != null) && !getData().getNumberOfPages().isEmpty()) { if ((getData().getNumberOfPages() != null) && !getData().getNumberOfPages().isEmpty()) {
try { try {
final int volume = Integer.parseInt(getData().getNumberOfPages()); final int volume = Integer.parseInt(getData().getNumberOfPages());
publication.setNumberOfPages(volume); if (!isPretend()) {
publication.setNumberOfPages(volume);
}
getReport().addField(new FieldImportReport("Number of pages", getData().getNumberOfPages())); getReport().addField(new FieldImportReport("Number of pages", getData().getNumberOfPages()));
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
getReport().addMessage(String.format("Failed to parse numberOfPages data in line %d.", getReport().addMessage(String.format("Failed to parse numberOfPages data in line %d.",
@ -82,7 +96,9 @@ class InternetArticleImporter extends AbstractPublicationImporter<InternetArticl
final DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd"); final DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
try { try {
final Date date = dateFormat.parse(getData().getLastAccess()); final Date date = dateFormat.parse(getData().getLastAccess());
article.setLastAccessed(date); if (!isPretend()) {
article.setLastAccessed(date);
}
getReport().addField(new FieldImportReport("Last access", getData().getLastAccess())); getReport().addField(new FieldImportReport("Last access", getData().getLastAccess()));
} catch (java.text.ParseException ex) { } catch (java.text.ParseException ex) {
getReport().addMessage(String.format("Failed to parse date of last access in line %d.", getReport().addMessage(String.format("Failed to parse date of last access in line %d.",
@ -96,7 +112,9 @@ class InternetArticleImporter extends AbstractPublicationImporter<InternetArticl
final DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd"); final DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
try { try {
final Date date = dateFormat.parse(getData().getPublicationDate()); final Date date = dateFormat.parse(getData().getPublicationDate());
article.setPublicationDate(date); if (!isPretend()) {
article.setPublicationDate(date);
}
getReport().addField(new FieldImportReport("Publication date", getData().getPublicationDate())); getReport().addField(new FieldImportReport("Publication date", getData().getPublicationDate()));
} catch (java.text.ParseException ex) { } catch (java.text.ParseException ex) {
getReport().addMessage(String.format("Failed to parse publication date in line %d.", getReport().addMessage(String.format("Failed to parse publication date in line %d.",
@ -106,12 +124,21 @@ class InternetArticleImporter extends AbstractPublicationImporter<InternetArticl
} }
@Override @Override
protected InternetArticle createPublication() { protected InternetArticle createPublication() {
return new InternetArticle(); if (isPretend()) {
return null;
} else {
return new InternetArticle();
}
} }
@Override @Override
protected PublicationBundle createBundle(final InternetArticle article) { protected PublicationBundle createBundle(final InternetArticle article) {
return new InternetArticleBundle(article); if (isPretend()) {
return null;
} else {
return new InternetArticleBundle(article);
}
} }
} }

View File

@ -12,18 +12,26 @@ 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) { protected MonographImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) {
super(data, report); super(data, report, pretend);
} }
@Override @Override
protected Monograph createPublication() { protected Monograph createPublication() {
return new Monograph(); if (isPretend()) {
return null;
} else {
return new Monograph();
}
} }
@Override @Override
protected PublicationBundle createBundle(final Monograph monograph) { protected PublicationBundle createBundle(final Monograph monograph) {
return new PublicationWithPublisherBundle(monograph); if (isPretend()) {
} return null;
} else {
return new PublicationWithPublisherBundle(monograph);
}
}
} }

View File

@ -13,31 +13,42 @@ 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) { public ProceedingsImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) {
super(data, report); super(data, report, pretend);
} }
@Override @Override
public Proceedings importPublication() { public Proceedings importPublication() {
final Proceedings proceedings = super.importPublication(); final Proceedings proceedings = super.importPublication();
final CsvLine data = getData(); final CsvLine data = getData();
final PublicationImportReport report = getReport(); final PublicationImportReport report = getReport();
if ((data.getConference() != null) && !data.getConference().isEmpty()) { if ((data.getConference() != null) && !data.getConference().isEmpty()) {
proceedings.setNameOfConference(data.getConference()); if (!isPretend()) {
proceedings.setNameOfConference(data.getConference());
}
report.addField(new FieldImportReport("Name of conference", data.getConference())); report.addField(new FieldImportReport("Name of conference", data.getConference()));
} }
return proceedings; return proceedings;
} }
@Override @Override
protected Proceedings createPublication() { protected Proceedings createPublication() {
return new Proceedings(); if (isPretend()) {
} return null;
} else {
return new Proceedings();
}
}
@Override @Override
protected PublicationBundle createBundle(final Proceedings proceedings) { protected PublicationBundle createBundle(final Proceedings proceedings) {
return new ProceedingsBundle(proceedings); if (isPretend()) {
return null;
} else {
return new ProceedingsBundle(proceedings);
}
} }
} }

View File

@ -100,7 +100,7 @@ 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); final PublicationImportReport result = importPublication(line, lineNumber, publishNewItems, pretend);
report.addPublication(result); report.addPublication(result);
lineNumber++; lineNumber++;
} }
@ -120,7 +120,8 @@ 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 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);
@ -139,28 +140,28 @@ public class PublicationsImporter implements SciPublicationsImporter {
System.err.println("Calling importer..."); System.err.println("Calling importer...");
if (ArticleInCollectedVolume.class.getSimpleName().equals(data.getType())) { if (ArticleInCollectedVolume.class.getSimpleName().equals(data.getType())) {
processArticleInCollectedVolume(publishNewItems, data, report); processArticleInCollectedVolume(publishNewItems, data, report, pretend);
} else if (ArticleInCollectedVolume.class.getSimpleName().equals(data.getType())) { } else if (ArticleInCollectedVolume.class.getSimpleName().equals(data.getType())) {
processArticleInJournal(publishNewItems, data, report); processArticleInJournal(publishNewItems, data, report, pretend);
} else if (CollectedVolume.class.getSimpleName().equals(data.getType())) { } else if (CollectedVolume.class.getSimpleName().equals(data.getType())) {
processCollectedVolume(publishNewItems, data, report); processCollectedVolume(publishNewItems, data, report, pretend);
} else if (Expertise.class.getSimpleName().equals(data.getType())) { } else if (Expertise.class.getSimpleName().equals(data.getType())) {
processExpertise(publishNewItems, data, report); processExpertise(publishNewItems, data, report, pretend);
} else if (GreyLiterature.class.getSimpleName().equals(data.getType())) { } else if (GreyLiterature.class.getSimpleName().equals(data.getType())) {
processGreyLiterature(publishNewItems, data, report); processGreyLiterature(publishNewItems, data, report, pretend);
} else if (InProceedings.class.getSimpleName().equals(data.getType())) { } else if (InProceedings.class.getSimpleName().equals(data.getType())) {
processInProceedings(publishNewItems, data, report); processInProceedings(publishNewItems, data, report, pretend);
} else if (InternetArticle.class.getSimpleName().equals(data.getType())) { } else if (InternetArticle.class.getSimpleName().equals(data.getType())) {
processInternetArticle(publishNewItems, data, report); processInternetArticle(publishNewItems, data, report, pretend);
} else if (Monograph.class.getSimpleName().equals(data.getType())) { } else if (Monograph.class.getSimpleName().equals(data.getType())) {
System.err.println("CAlling monograph importer..."); System.err.println("CAlling monograph importer...");
processMonograph(publishNewItems, data, report); 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); processProceedings(publishNewItems, data, report, pretend);
} else if (Review.class.getSimpleName().equals(data.getType())) { } else if (Review.class.getSimpleName().equals(data.getType())) {
processReview(publishNewItems, data, report); processReview(publishNewItems, data, report, pretend);
} else if (WorkingPaper.class.getSimpleName().equals(data.getType())) { } else if (WorkingPaper.class.getSimpleName().equals(data.getType())) {
processWorkingPaper(publishNewItems, data, report); processWorkingPaper(publishNewItems, data, report, pretend);
} }
return report; return report;
@ -168,123 +169,134 @@ 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) {
if (isPublicationAlreadyInDatabase(data, ArticleInCollectedVolume.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, ArticleInCollectedVolume.class.getSimpleName(), report)) {
return; return;
} }
final ArticleInCollectedVolumeImporter importer = new ArticleInCollectedVolumeImporter(data, report); final ArticleInCollectedVolumeImporter importer = new ArticleInCollectedVolumeImporter(data, report, pretend);
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) {
if (isPublicationAlreadyInDatabase(data, ArticleInJournal.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, ArticleInJournal.class.getSimpleName(), report)) {
return; return;
} }
final ArticleInJournalImporter importer = new ArticleInJournalImporter(data, report); final ArticleInJournalImporter importer = new ArticleInJournalImporter(data, report, pretend);
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) {
if (isPublicationAlreadyInDatabase(data, CollectedVolume.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, CollectedVolume.class.getSimpleName(), report)) {
return; return;
} }
final CollectedVolumeImporter importer = new CollectedVolumeImporter(data, report); final CollectedVolumeImporter importer = new CollectedVolumeImporter(data, report, pretend);
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) {
if (isPublicationAlreadyInDatabase(data, Expertise.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, Expertise.class.getSimpleName(), report)) {
return; return;
} }
final ExpertiseImporter importer = new ExpertiseImporter(data, report); final ExpertiseImporter importer = new ExpertiseImporter(data, report, pretend);
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) {
if (isPublicationAlreadyInDatabase(data, GreyLiterature.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, GreyLiterature.class.getSimpleName(), report)) {
return; return;
} }
final GreyLiteratureImporter importer = new GreyLiteratureImporter(data, report); final GreyLiteratureImporter importer = new GreyLiteratureImporter(data, report, pretend);
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) {
if (isPublicationAlreadyInDatabase(data, InProceedings.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, InProceedings.class.getSimpleName(), report)) {
return; return;
} }
final InProceedingsImporter importer = new InProceedingsImporter(data, report); final InProceedingsImporter importer = new InProceedingsImporter(data, report, pretend);
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) {
if (isPublicationAlreadyInDatabase(data, InternetArticle.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, InternetArticle.class.getSimpleName(), report)) {
return; return;
} }
final InternetArticleImporter importer = new InternetArticleImporter(data, report); final InternetArticleImporter importer = new InternetArticleImporter(data, report, pretend);
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) {
if (isPublicationAlreadyInDatabase(data, Monograph.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, Monograph.class.getSimpleName(), report)) {
return; return;
} }
final MonographImporter importer = new MonographImporter(data, report); final MonographImporter importer = new MonographImporter(data, report, pretend);
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) {
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); final ProceedingsImporter importer = new ProceedingsImporter(data, report, pretend);
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) {
if (isPublicationAlreadyInDatabase(data, Review.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, Review.class.getSimpleName(), report)) {
return; return;
} }
final ReviewImporter importer = new ReviewImporter(data, report); final ReviewImporter importer = new ReviewImporter(data, report, pretend);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }
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) {
if (isPublicationAlreadyInDatabase(data, WorkingPaper.class.getSimpleName(), report)) { if (isPublicationAlreadyInDatabase(data, WorkingPaper.class.getSimpleName(), report)) {
return; return;
} }
final WorkingPaperImporter importer = new WorkingPaperImporter(data, report); final WorkingPaperImporter importer = new WorkingPaperImporter(data, report, pretend);
importer.doImport(publishNewItems); importer.doImport(publishNewItems);
} }

View File

@ -11,13 +11,17 @@ import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport
*/ */
class ReviewImporter extends ArticleInJournalImporter { class ReviewImporter extends ArticleInJournalImporter {
public ReviewImporter(final CsvLine data, final PublicationImportReport report) { public ReviewImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) {
super(data, report); super(data, report, pretend);
} }
@Override @Override
protected ArticleInJournal createPublication() { protected ArticleInJournal createPublication() {
return new Review(); if (isPretend()) {
return null;
} else {
return new Review();
}
} }
} }

View File

@ -11,17 +11,26 @@ 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) { protected WorkingPaperImporter(final CsvLine data, final PublicationImportReport report, final boolean pretend) {
super(data, report); super(data, report, pretend);
} }
@Override @Override
protected WorkingPaper createPublication() { protected WorkingPaper createPublication() {
return new WorkingPaper(); if (isPretend()) {
return null;
} else {
return new WorkingPaper();
}
} }
@Override @Override
protected PublicationBundle createBundle(final WorkingPaper workingPaper) { protected PublicationBundle createBundle(final WorkingPaper workingPaper) {
return new PublicationBundle(workingPaper); if (isPretend()) {
return null;
} else {
return new PublicationBundle(workingPaper);
}
} }
} }