Unterstützung für Research Report in CSV-Importer integriert
git-svn-id: https://svn.libreccm.org/ccm/trunk@1921 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
e0ffd9fd30
commit
a8d020704c
|
|
@ -0,0 +1,4 @@
|
|||
begin;
|
||||
\i ddl/postgres/create.sql
|
||||
\i ddl/postgres/deferred.sql
|
||||
end;
|
||||
|
|
@ -26,6 +26,8 @@ public class PublicationsConfig extends AbstractConfig {
|
|||
private final Parameter defaultInProceedingsFolder;
|
||||
private final Parameter defaultArticlesInJournalFolder;
|
||||
private final Parameter defaultPublicationsFolder;
|
||||
private final Parameter orgaType;
|
||||
private final Parameter orgaBundleType;
|
||||
|
||||
public PublicationsConfig() {
|
||||
attachOrgaUnitsStep =
|
||||
|
|
@ -95,6 +97,15 @@ public class PublicationsConfig extends AbstractConfig {
|
|||
Parameter.OPTIONAL,
|
||||
null);
|
||||
|
||||
orgaType = new StringParameter(
|
||||
"com.arsdigita.cms.contenttypes.publications.organization_type",
|
||||
Parameter.OPTIONAL,
|
||||
Publisher.BASE_DATA_OBJECT_TYPE);
|
||||
orgaBundleType = new StringParameter(
|
||||
"com.arsdigita.cms.contenttypes.publications.organization_bundle_type",
|
||||
Parameter.OPTIONAL,
|
||||
PublisherBundle.BASE_DATA_OBJECT_TYPE);
|
||||
|
||||
register(attachOrgaUnitsStep);
|
||||
register(attachPublicationsStepTo);
|
||||
register(defaultAuthorsFolder);
|
||||
|
|
@ -108,6 +119,8 @@ public class PublicationsConfig extends AbstractConfig {
|
|||
register(defaultInProceedingsFolder);
|
||||
register(defaultArticlesInJournalFolder);
|
||||
register(defaultPublicationsFolder);
|
||||
register(orgaType);
|
||||
register(orgaBundleType);
|
||||
|
||||
loadInfo();
|
||||
}
|
||||
|
|
@ -208,4 +221,11 @@ public class PublicationsConfig extends AbstractConfig {
|
|||
}
|
||||
}
|
||||
|
||||
public String getOrganizationType() {
|
||||
return (String) get(orgaType);
|
||||
}
|
||||
|
||||
public String getOrganizationBundleType() {
|
||||
return (String) get(orgaBundleType);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,4 +61,14 @@ com.arsdigita.cms.contenttypes.publications.default_articlesinjournal_folder.for
|
|||
com.arsdigita.cms.contenttypes.publications.default_publications_folder.title = Default publications folder
|
||||
com.arsdigita.cms.contenttypes.publications.default_publications_folder.purpose = Folder to put publications created using an importer in
|
||||
com.arsdigita.cms.contenttypes.publications.default_publications_folder.example = 10002
|
||||
com.arsdigita.cms.contenttypes.publications.default_publications_folder.format = Integer
|
||||
com.arsdigita.cms.contenttypes.publications.default_publications_folder.format = Integer
|
||||
|
||||
com.arsdigita.cms.contenttypes.publications.organization_type.title = Type for imported organizations
|
||||
com.arsdigita.cms.contenttypes.publications.organization_type.purpose = Sets the type used for imported organization. Must be a subtype of com.arsdigita.cms.contenttypes.GenericOrganizationalUnit
|
||||
com.arsdigita.cms.contenttypes.publications.organization_type.example = com.arsdigita.cms.contenttypes.Publisher
|
||||
com.arsdigita.cms.contenttypes.publications.organization_type.format = String
|
||||
|
||||
com.arsdigita.cms.contenttypes.publications.organization_bundle_type.title = Type of the content bundle sub class used for imported organizations
|
||||
com.arsdigita.cms.contenttypes.publications.organization_bundle_type.purpose = Sets the type of the bundle used for imported organization. Must be a subtype of com.arsdigita.cms.contenttypes.GenericOrganizationalUnitBundle
|
||||
com.arsdigita.cms.contenttypes.publications.organization_bundle_type.example = com.arsdigita.cms.contenttypes.PublisherBundle
|
||||
com.arsdigita.cms.contenttypes.publications.organization_bundle_type = String
|
||||
|
|
@ -6,6 +6,8 @@ import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume;
|
|||
import com.arsdigita.cms.contenttypes.ArticleInJournal;
|
||||
import com.arsdigita.cms.contenttypes.CollectedVolume;
|
||||
import com.arsdigita.cms.contenttypes.CollectedVolumeBundle;
|
||||
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
|
||||
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitBundle;
|
||||
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||
import com.arsdigita.cms.contenttypes.GenericPersonBundle;
|
||||
import com.arsdigita.cms.contenttypes.InProceedings;
|
||||
|
|
@ -18,11 +20,13 @@ import com.arsdigita.cms.contenttypes.PublicationWithPublisher;
|
|||
import com.arsdigita.cms.contenttypes.Publisher;
|
||||
import com.arsdigita.cms.contenttypes.PublisherBundle;
|
||||
import com.arsdigita.cms.contenttypes.SciAuthor;
|
||||
import com.arsdigita.cms.contenttypes.UnPublished;
|
||||
import com.arsdigita.cms.lifecycle.LifecycleDefinition;
|
||||
import com.arsdigita.cms.lifecycle.LifecycleDefinitionCollection;
|
||||
import com.arsdigita.cms.scipublications.importer.report.AuthorImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.report.CollectedVolumeImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.report.JournalImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.report.OrganizationalUnitImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.report.ProceedingsImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.report.PublisherImportReport;
|
||||
import com.arsdigita.kernel.Kernel;
|
||||
|
|
@ -49,6 +53,7 @@ public class ImporterUtil {
|
|||
private final transient Set<String> createdJournals = new HashSet<String>();
|
||||
private final transient Set<String> createdProcs = new HashSet<String>();
|
||||
private final transient Set<String> createdPublishers = new HashSet<String>();
|
||||
private final transient Set<String> createdOrgas = new HashSet<String>();
|
||||
|
||||
public ImporterUtil() {
|
||||
publish = false;
|
||||
|
|
@ -416,6 +421,67 @@ public class ImporterUtil {
|
|||
return report;
|
||||
}
|
||||
|
||||
public OrganizationalUnitImportReport processOrganization(final UnPublished publication,
|
||||
final String name,
|
||||
final boolean pretend) {
|
||||
final OrganizationalUnitImportReport report = new OrganizationalUnitImportReport();
|
||||
|
||||
final Session session = SessionManager.getSession();
|
||||
final DataCollection collection = session.retrieve(GenericOrganizationalUnit.BASE_DATA_OBJECT_TYPE);
|
||||
collection.addEqualsFilter("title", name);
|
||||
report.setName(name);
|
||||
if (collection.isEmpty()) {
|
||||
if (!pretend) {
|
||||
final Integer folderId = Publication.getConfig().getDefaultOrganizationsFolder();
|
||||
final Folder folder = new Folder(new BigDecimal(folderId));
|
||||
if (folder == null) {
|
||||
throw new IllegalArgumentException("Error getting folder for organizations.");
|
||||
}
|
||||
|
||||
final GenericOrganizationalUnit orga = new GenericOrganizationalUnit(Publication.getConfig().
|
||||
getOrganizationType());
|
||||
orga.setTitle(name);
|
||||
orga.setName(normalizeString(name));
|
||||
orga.setContentSection(folder.getContentSection());
|
||||
orga.setLanguage(Kernel.getConfig().getLanguagesIndependentCode());
|
||||
orga.save();
|
||||
|
||||
final GenericOrganizationalUnitBundle bundle = new GenericOrganizationalUnitBundle(Publication.
|
||||
getConfig().getOrganizationBundleType());
|
||||
bundle.setDefaultLanguage(orga.getLanguage());
|
||||
bundle.setContentType(orga.getContentType());
|
||||
bundle.addInstance(orga);
|
||||
bundle.setName(orga.getName());
|
||||
bundle.save();
|
||||
|
||||
publication.setOrganization(orga);
|
||||
|
||||
if (publish) {
|
||||
publishItem(orga);
|
||||
}
|
||||
}
|
||||
|
||||
report.setCreated(true);
|
||||
|
||||
//Special handling for pretend mode
|
||||
if (pretend && createdOrgas.contains(name)) {
|
||||
report.setCreated(false);
|
||||
} else {
|
||||
createdOrgas.add(name);
|
||||
}
|
||||
} else {
|
||||
if (!pretend) {
|
||||
collection.next();
|
||||
final GenericOrganizationalUnit orga = new GenericOrganizationalUnit(collection.getDataObject());
|
||||
publication.setOrganization(orga);
|
||||
}
|
||||
report.setCreated(false);
|
||||
}
|
||||
|
||||
collection.close();
|
||||
return report;
|
||||
}
|
||||
|
||||
public void publishItem(final ContentItem item) {
|
||||
final Calendar now = new GregorianCalendar();
|
||||
final LifecycleDefinitionCollection lifecycles = item.getContentSection().getLifecycleDefinitions();
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
<ccm:requires name="ccm-core" version="6.6.0" relation="ge"/>
|
||||
<ccm:requires name="ccm-cms" version="6.6.6" relation="ge"/>
|
||||
<ccm:requires name="ccm-sci-publications" version="6.6.3" relation="ge"/>
|
||||
<ccm:requires name="ccm-sci-publications-researchreport" version="6.6.3" relation="ge"/>
|
||||
</ccm:dependencies>
|
||||
|
||||
<ccm:directories>
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
<table name="ct_publications"/>
|
||||
<initializer class="com.arsdigita.cms.Initializer"/>
|
||||
<initializer class="com.arsdigita.cms.contenttypes.PublicationInitializer"/>
|
||||
<initializer class="com.arsdigita.cms.contenttypes.ResearchReportInitializer"/>
|
||||
</requires>
|
||||
|
||||
<provides>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.arsdigita.cms.scipublications.importer.csv;
|
|||
|
||||
import com.arsdigita.cms.contenttypes.UnPublished;
|
||||
import com.arsdigita.cms.scipublications.importer.report.FieldImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.report.OrganizationalUnitImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
|
||||
|
||||
|
|
@ -33,6 +34,7 @@ abstract class AbstractUnPublishedImporter<T extends UnPublished> extends Abstra
|
|||
}
|
||||
|
||||
processNumberOfPages(publication);
|
||||
processOrganization(publication);
|
||||
|
||||
return publication;
|
||||
}
|
||||
|
|
@ -51,5 +53,14 @@ abstract class AbstractUnPublishedImporter<T extends UnPublished> extends Abstra
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processOrganization(final T publication) {
|
||||
if ((getData().getPublisher() != null) && !getData().getPublisher().isEmpty()) {
|
||||
final OrganizationalUnitImportReport report = getImporterUtil().processOrganization(publication,
|
||||
getData().getPublisher(),
|
||||
isPretend());
|
||||
getReport().addOrgaUnit(report);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.arsdigita.cms.scipublications.importer.csv;
|
|||
|
||||
import com.arsdigita.cms.contenttypes.GreyLiterature;
|
||||
import com.arsdigita.cms.contenttypes.PublicationBundle;
|
||||
import com.arsdigita.cms.contenttypes.UnPublishedBundle;
|
||||
import com.arsdigita.cms.scipublications.importer.report.FieldImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
|
||||
|
|
@ -72,7 +73,7 @@ class GreyLiteratureImporter extends AbstractUnPublishedImporter<GreyLiterature>
|
|||
if (isPretend()) {
|
||||
return null;
|
||||
} else {
|
||||
return new PublicationBundle(greyLiterature);
|
||||
return new UnPublishedBundle(greyLiterature);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import com.arsdigita.cms.contenttypes.InternetArticle;
|
|||
import com.arsdigita.cms.contenttypes.Monograph;
|
||||
import com.arsdigita.cms.contenttypes.Proceedings;
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import com.arsdigita.cms.contenttypes.ResearchReport;
|
||||
import com.arsdigita.cms.contenttypes.Review;
|
||||
import com.arsdigita.cms.contenttypes.WorkingPaper;
|
||||
import com.arsdigita.cms.scipublications.imexporter.PublicationFormat;
|
||||
|
|
@ -162,6 +163,8 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
|||
processProceedings(publishNewItems, data, report, pretend, importerUtil);
|
||||
} else if (Review.class.getSimpleName().equals(data.getType())) {
|
||||
processReview(publishNewItems, data, report, pretend, importerUtil);
|
||||
} else if(ResearchReport.class.getSimpleName().equals(data.getType()) || "Report".equals(data.getType())) {
|
||||
processResearchReport(publishNewItems, data, report, pretend, importerUtil);
|
||||
} else if (WorkingPaper.class.getSimpleName().equals(data.getType())) {
|
||||
processWorkingPaper(publishNewItems, data, report, pretend, importerUtil);
|
||||
}
|
||||
|
|
@ -282,8 +285,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
|||
final ImporterUtil importerUtil) {
|
||||
if (isPublicationAlreadyInDatabase(data, Proceedings.class.getSimpleName(), report)) {
|
||||
return;
|
||||
}
|
||||
System.err.println("Publication is not in database");
|
||||
}
|
||||
|
||||
final ProceedingsImporter importer = new ProceedingsImporter(data, report, pretend, importerUtil);
|
||||
importer.doImport(publishNewItems);
|
||||
|
|
@ -302,6 +304,19 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
|||
importer.doImport(publishNewItems);
|
||||
|
||||
}
|
||||
|
||||
private void processResearchReport(final boolean publishNewItems,
|
||||
final CsvLine data,
|
||||
final PublicationImportReport report,
|
||||
final boolean pretend,
|
||||
final ImporterUtil importerUtil) {
|
||||
if (isPublicationAlreadyInDatabase(data, ResearchReport.class.getSimpleName(), report)) {
|
||||
return;
|
||||
}
|
||||
|
||||
final ResearchReportImporter importer = new ResearchReportImporter(data, report, pretend, importerUtil);
|
||||
importer.doImport(publishNewItems);
|
||||
}
|
||||
|
||||
private void processWorkingPaper(final boolean publishNewItems,
|
||||
final CsvLine data,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
package com.arsdigita.cms.scipublications.importer.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.PublicationBundle;
|
||||
import com.arsdigita.cms.contenttypes.ResearchReport;
|
||||
import com.arsdigita.cms.contenttypes.UnPublishedBundle;
|
||||
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
class ResearchReportImporter extends AbstractUnPublishedImporter<ResearchReport> {
|
||||
|
||||
protected ResearchReportImporter(final CsvLine data,
|
||||
final PublicationImportReport report,
|
||||
final boolean pretend,
|
||||
final ImporterUtil importerUtil) {
|
||||
super(data, report, pretend, importerUtil);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ResearchReport createPublication() {
|
||||
if (isPretend()) {
|
||||
return null;
|
||||
} else {
|
||||
return new ResearchReport();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PublicationBundle createBundle(final ResearchReport report) {
|
||||
if (isPretend()) {
|
||||
return null;
|
||||
} else {
|
||||
return new UnPublishedBundle(report);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
package com.arsdigita.cms.scipublications.importer.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.PublicationBundle;
|
||||
import com.arsdigita.cms.contenttypes.UnPublishedBundle;
|
||||
import com.arsdigita.cms.contenttypes.WorkingPaper;
|
||||
import com.arsdigita.cms.scipublications.importer.report.PublicationImportReport;
|
||||
import com.arsdigita.cms.scipublications.importer.util.ImporterUtil;
|
||||
|
|
@ -33,7 +34,7 @@ class WorkingPaperImporter extends AbstractUnPublishedImporter<WorkingPaper> {
|
|||
if (isPretend()) {
|
||||
return null;
|
||||
} else {
|
||||
return new PublicationBundle(workingPaper);
|
||||
return new UnPublishedBundle(workingPaper);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue