From b47811a7e9e66dc371cf48c67dc206032cd9d0a6 Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 11 Apr 2012 17:26:44 +0000 Subject: [PATCH] - XML-Ausgabe angepasst (Ticket #1208) - Verschiedene Korrekturen - Bisher noch nicht umgestellte Assoziationen umgestellt - Expertise <-> GenericOrganizationalUnit (Organisation und Auftraggeber des Gutachtens) - InternetArticle <-> GenericOrganizationalUnit (Organisation) - UnPublished <-> GenericOrganizationalUnit (Organisation) git-svn-id: https://svn.libreccm.org/ccm/trunk@1585 8810af33-2d31-482b-a856-94f89814c4df --- .../com/arsdigita/content-types/Expertise.pdl | 39 +-- .../content-types/InternetArticle.pdl | 23 +- .../arsdigita/content-types/UnPublished.pdl | 22 +- .../arsdigita/cms/contenttypes/Expertise.xml | 2 +- .../cms/contenttypes/GreyLiterature.xml | 2 +- .../cms/contenttypes/InternetArticle.xml | 2 +- .../com/arsdigita/cms/contenttypes/Review.xml | 2 +- .../cms/contenttypes/UnPublished.xml | 2 +- .../cms/contenttypes/WorkingPaper.xml | 2 +- .../ArticleInCollectedVolume.java | 33 ++- .../cms/contenttypes/ArticleInJournal.java | 34 ++- .../cms/contenttypes/CollectedVolume.java | 17 ++ .../arsdigita/cms/contenttypes/Expertise.java | 86 ++++-- .../cms/contenttypes/ExpertiseBundle.java | 273 ++++++++++++++++++ .../cms/contenttypes/InProceedings.java | 84 +++--- .../cms/contenttypes/InternetArticle.java | 51 +++- .../contenttypes/InternetArticleBundle.java | 186 ++++++++++++ .../arsdigita/cms/contenttypes/Journal.java | 17 ++ .../cms/contenttypes/Proceedings.java | 17 ++ .../cms/contenttypes/Publication.java | 12 +- .../PublicationWithPublisher.java | 17 ++ .../SciPublicationExtraXmlGenerator.java | 55 ---- .../cms/contenttypes/UnPublished.java | 81 ++++-- .../cms/contenttypes/UnPublishedBundle.java | 186 ++++++++++++ ...cleInCollectedVolumeExtraXmlGenerator.java | 65 +++++ .../ui/ArticleInJournalExtraXmlGenerator.java | 64 ++++ .../ui/CollectedVolumeExtraXmlGenerator.java | 81 ++++++ .../cms/contenttypes/ui/ExpertiseCreate.java | 26 ++ .../ui/ExpertiseExtraXmlGenerator.java | 79 +++++ .../ui/InProceedingsExtraXmlGenerator.java | 66 +++++ .../ui/InternetArticleCreate.java | 25 ++ .../ui/InternetArticleExtraXmlGenerator.java | 65 +++++ .../ui/JournalExtraXmlGenerator.java | 78 +++++ .../ui/ProceedingsExtraXmlGenerator.java | 95 ++++++ .../ui/PublicationExtraXmlGenerator.java | 166 +++++++++++ ...icationWithPublisherExtraXmlGenerator.java | 68 +++++ .../contenttypes/ui/UnPublishedCreate.java | 26 ++ .../ui/UnPublishedExtraXmlGenerator.java | 65 +++++ 38 files changed, 2002 insertions(+), 212 deletions(-) create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseBundle.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticleBundle.java delete mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/SciPublicationExtraXmlGenerator.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublishedBundle.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInCollectedVolumeExtraXmlGenerator.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalExtraXmlGenerator.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/CollectedVolumeExtraXmlGenerator.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseCreate.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseExtraXmlGenerator.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InProceedingsExtraXmlGenerator.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleCreate.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleExtraXmlGenerator.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalExtraXmlGenerator.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsExtraXmlGenerator.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationExtraXmlGenerator.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherExtraXmlGenerator.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedCreate.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedExtraXmlGenerator.java diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/Expertise.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/Expertise.pdl index eac800d54..e4e828082 100644 --- a/ccm-sci-publications/pdl/com/arsdigita/content-types/Expertise.pdl +++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/Expertise.pdl @@ -20,6 +20,7 @@ model com.arsdigita.cms.contenttypes; import com.arsdigita.cms.ContentPage; +import com.arsdigita.cms.ContentBundle; // PDL definition for an expertise object type Expertise extends Publication { @@ -30,30 +31,34 @@ object type Expertise extends Publication { reference key (ct_expertise.expertise_id); } -association { - Expertise[0..n] expertise = join cms_organizationalunits.organizationalunit_id - to ct_expertise_organization_map.organization_id, - join ct_expertise_organization_map.experise_id - to ct_expertise.expertise_id; +object type ExpertiseBundle extends PublicationBundle { + reference key(ct_expertise_bundles.bundle_id); +} - GenericOrganizationalUnit[0..n] organization = join ct_expertise.expertise_id - to ct_expertise_organization_map.experise_id, - join ct_expertise_organization_map.organization_id - to cms_organizationalunits.organizationalunit_id; +association { + ExpertiseBundle[0..n] expertise = join cms_orgaunit_bundles.bundle_id + to ct_expertise_organization_map.organization_id, + join ct_expertise_organization_map.experise_id + to ct_expertise_bundles.bundle_id; + + GenericOrganizationalUnitBundle[0..n] organization = join ct_expertise_bundles.bundle_id + to ct_expertise_organization_map.experise_id, + join ct_expertise_organization_map.organization_id + to cms_orgaunit_bundles.bundle_id; Integer[0..1] orgaOrder = ct_expertise_organization_map.orga_order INTEGER; } association { - Expertise[0..n] orderedExpertise = join cms_organizationalunits.organizationalunit_id - to ct_expertise_orderer_map.orderer_id, - join ct_expertise_orderer_map.experise_id - to ct_expertise.expertise_id; + ExpertiseBundle[0..n] orderedExpertise = join cms_orgaunit_bundles.bundle_id + to ct_expertise_orderer_map.orderer_id, + join ct_expertise_orderer_map.experise_id + to ct_expertise_bundles.bundle_id; - GenericOrganizationalUnit[0..n] orderer = join ct_expertise.expertise_id - to ct_expertise_orderer_map.experise_id, - join ct_expertise_orderer_map.orderer_id - to cms_organizationalunits.organizationalunit_id; + GenericOrganizationalUnitBundle[0..n] orderer = join ct_expertise_bundles.bundle_id + to ct_expertise_orderer_map.experise_id, + join ct_expertise_orderer_map.orderer_id + to cms_orgaunit_bundles.bundle_id; Integer[0..1] ordererOrder = ct_expertise_orderer_map.orderer_order INTEGER; } diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl index 6e50eeabf..4e4eb552b 100644 --- a/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl +++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl @@ -20,6 +20,7 @@ model com.arsdigita.cms.contenttypes; import com.arsdigita.cms.ContentPage; +import com.arsdigita.cms.ContentBundle; // PDL definition for a InternetArticle publication object type InternetArticle extends Publication { @@ -38,16 +39,20 @@ object type InternetArticle extends Publication { reference key (ct_internet_article.internet_article_id); } -association { - InternetArticle[0..n] internetArticle = join cms_organizationalunits.organizationalunit_id - to ct_internet_article_organization_map.organization_id, - join ct_internet_article_organization_map.internet_article_id - to ct_internet_article.internet_article_id; +object type InternetArticleBundle extends PublicationBundle { + reference key( ct_internet_article_bundles.bundle_id); +} - GenericOrganizationalUnit[0..n] organization = join ct_internet_article.internet_article_id - to ct_internet_article_organization_map.internet_article_id, - join ct_internet_article_organization_map.organization_id - to cms_organizationalunits.organizationalunit_id; +association { + InternetArticleBundle[0..n] internetArticle = join cms_orgaunit_bundles.bundle_id + to ct_internet_article_organization_map.organization_id, + join ct_internet_article_organization_map.internet_article_id + to ct_internet_article_bundles.bundle_id; + + GenericOrganizationalUnitBundle[0..n] organization = join ct_internet_article_bundles.bundle_id + to ct_internet_article_organization_map.internet_article_id, + join ct_internet_article_organization_map.organization_id + to cms_orgaunit_bundles.bundle_id; Integer[0..1] orgaOrder = ct_internet_article_organization_map.orga_order INTEGER; } \ No newline at end of file diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/UnPublished.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/UnPublished.pdl index 4baca77f7..e6ccf1759 100644 --- a/ccm-sci-publications/pdl/com/arsdigita/content-types/UnPublished.pdl +++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/UnPublished.pdl @@ -31,16 +31,20 @@ object type UnPublished extends Publication { reference key (ct_unpublished.unpublished_id); } -association { - UnPublished[0..n] unPublished = join cms_organizationalunits.organizationalunit_id - to ct_unpublished_organization_map.organization_id, - join ct_unpublished_organization_map.unpublished_id - to ct_unpublished.unpublished_id; +object type UnPublishedBundle extends PublicationBundle { + reference key (ct_unpublished_bundles.bundle_id); +} - GenericOrganizationalUnit[0..n] organization = join ct_unpublished.unpublished_id - to ct_unpublished_organization_map.unpublished_id, - join ct_unpublished_organization_map.organization_id - to cms_organizationalunits.organizationalunit_id; +association { + UnPublishedBundle[0..n] unPublished = join cms_orgaunit_bundles.bundle_id + to ct_unpublished_organization_map.organization_id, + join ct_unpublished_organization_map.unpublished_id + to ct_unpublished_bundles.bundle_id; + + GenericOrganizationalUnitBundle[0..n] organization = join ct_unpublished_bundles.bundle_id + to ct_unpublished_organization_map.unpublished_id, + join ct_unpublished_organization_map.organization_id + to cms_orgaunit_bundles.bundle_id; Integer[0..1] orgaOrder = ct_unpublished_organization_map.orga_order INTEGER; } \ No newline at end of file diff --git a/ccm-sci-publications/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/Expertise.xml b/ccm-sci-publications/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/Expertise.xml index aa09a1705..df150d09f 100644 --- a/ccm-sci-publications/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/Expertise.xml +++ b/ccm-sci-publications/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/Expertise.xml @@ -10,7 +10,7 @@ objectType="com.arsdigita.cms.contenttypes.Expertise" classname="com.arsdigita.cms.contenttypes.Expertise"> - + - + - + - + - + - + getExtraXMLGenerators() { + final List generators = super. + getExtraListXMLGenerators(); + generators.add(new ArticleInCollectedVolumeExtraXmlGenerator()); + return generators; + } + + @Override + public List getExtraListXMLGenerators() { + final List generators = super. + getExtraListXMLGenerators(); + generators.add(new ArticleInCollectedVolumeExtraXmlGenerator()); + return generators; + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ArticleInJournal.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ArticleInJournal.java index 2d1fc374c..dbf0e1e64 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ArticleInJournal.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ArticleInJournal.java @@ -19,14 +19,14 @@ */ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ui.ArticleInJournalExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; -import com.arsdigita.domain.DomainObjectFactory; -import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; -import com.arsdigita.util.Assert; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * @@ -135,19 +135,19 @@ public class ArticleInJournal extends Publication { final JournalBundle bundle = getArticleInJournalBundle().getJournal(); if (bundle == null) { - return null; + return null; } else { return (Journal) bundle.getPrimaryInstance(); - } + } } public Journal getJournal(final String language) { final JournalBundle bundle = getArticleInJournalBundle().getJournal(); if (bundle == null) { - return null; + return null; } else { return (Journal) bundle.getInstance(language); - } + } } public void setJournal(final Journal journal) { @@ -165,7 +165,23 @@ public class ArticleInJournal extends Publication { // Integer.valueOf((int) journal.getArticles().size())); // link.save(); // } - + getArticleInJournalBundle().setJournal(journal); - } + } + + @Override + public List getExtraXMLGenerators() { + final List generators = super. + getExtraListXMLGenerators(); + generators.add(new ArticleInJournalExtraXmlGenerator()); + return generators; + } + + @Override + public List getExtraListXMLGenerators() { + final List generators = super. + getExtraListXMLGenerators(); + generators.add(new ArticleInJournalExtraXmlGenerator()); + return generators; + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/CollectedVolume.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/CollectedVolume.java index e2582bd0f..7cea7b66c 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/CollectedVolume.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/CollectedVolume.java @@ -19,10 +19,13 @@ */ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ui.CollectedVolumeExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; import java.math.BigDecimal; +import java.util.List; /** * A collected volume which consists of some {@link ArticleInCollectedVolume} @@ -95,4 +98,18 @@ public class CollectedVolume extends PublicationWithPublisher { public boolean hasArticles() { return !this.getArticles().isEmpty(); } + + @Override + public List getExtraXMLGenerators() { + final List generators = super.getExtraXMLGenerators(); + generators.add(new CollectedVolumeExtraXmlGenerator()); + return generators; + } + + @Override + public List getExtraListXMLGenerators() { + final List generators = super.getExtraListXMLGenerators(); + generators.add(new CollectedVolumeExtraXmlGenerator()); + return generators; + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java index c2899574b..1495d798c 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java @@ -19,13 +19,13 @@ */ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ui.ExpertiseExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; -import com.arsdigita.domain.DomainObjectFactory; -import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; -import com.arsdigita.util.Assert; import java.math.BigDecimal; +import java.util.List; import org.apache.log4j.Logger; /** @@ -36,7 +36,7 @@ public class Expertise extends Publication { public static final String PLACE = "place"; public static final String ORGANIZATION = "organization"; - public static final String NUMBER_OF_PAGES = "numberOfPages"; + public static final String NUMBER_OF_PAGES = "numberOfPages"; public static final String ORDERER = "orderer"; public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.contenttypes.Expertise"; @@ -62,6 +62,10 @@ public class Expertise extends Publication { super(type); } + public ExpertiseBundle getExpertiseBundle() { + return (ExpertiseBundle) getContentBundle(); + } + public String getPlace() { return (String) get(PLACE); } @@ -71,25 +75,32 @@ public class Expertise extends Publication { } public GenericOrganizationalUnit getOrganization() { - DataCollection collection; + /*DataCollection collection; - collection = (DataCollection) get(ORGANIZATION); + collection = (DataCollection) get(ORGANIZATION); - if (0 == collection.size()) { - return null; - } else { - DataObject dobj; + if (0 == collection.size()) { + return null; + } else { + DataObject dobj; - collection.next(); - dobj = collection.getDataObject(); - collection.close(); + collection.next(); + dobj = collection.getDataObject(); + collection.close(); - return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj); - } + return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj); + } */ + return (GenericOrganizationalUnit) getExpertiseBundle().getOrganization(). + getPrimaryInstance(); + } + + public GenericOrganizationalUnit getOrganization(final String language) { + return (GenericOrganizationalUnit) getExpertiseBundle().getOrganization(). + getInstance(language); } public void setOrganization(final GenericOrganizationalUnit orga) { - GenericOrganizationalUnit oldOrga; + /*GenericOrganizationalUnit oldOrga; oldOrga = getOrganization(); if (oldOrga != null) { @@ -101,19 +112,21 @@ public class Expertise extends Publication { DataObject link = add(ORGANIZATION, orga); link.set("orgaOrder", 1); link.save(); - } + }*/ + + getExpertiseBundle().setOrganization(orga); } public Integer getNumberOfPages() { return (Integer) get(NUMBER_OF_PAGES); } - public void setNumberOfPages(Integer numberOfPages) { + public void setNumberOfPages(final Integer numberOfPages) { set(NUMBER_OF_PAGES, numberOfPages); } public GenericOrganizationalUnit getOrderer() { - DataCollection collection; + /*DataCollection collection; collection = (DataCollection) get(ORDERER); @@ -126,12 +139,19 @@ public class Expertise extends Publication { dobj = collection.getDataObject(); collection.close(); - return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj); - } + return (GenericOrganizationalUnit) DomainObjectFactory.newInstance( + dobj); + }*/ + + return (GenericOrganizationalUnit) getExpertiseBundle().getOrderer().getPrimaryInstance(); + } + + public GenericOrganizationalUnit getOrderer(final String language) { + return (GenericOrganizationalUnit) getExpertiseBundle().getOrderer().getInstance(language); } - public void setOrderer(GenericOrganizationalUnit orderer) { - GenericOrganizationalUnit oldOrga; + public void setOrderer(final GenericOrganizationalUnit orderer) { + /*GenericOrganizationalUnit oldOrga; oldOrga = getOrganization(); if (oldOrga != null) { @@ -143,6 +163,24 @@ public class Expertise extends Publication { DataObject link = add(ORDERER, orderer); link.set("ordererOrder", 1); link.save(); - } + }*/ + + getExpertiseBundle().setOrderer(orderer); + } + + @Override + public List getExtraXMLGenerators() { + final List generators = super. + getExtraListXMLGenerators(); + generators.add(new ExpertiseExtraXmlGenerator()); + return generators; + } + + @Override + public List getExtraListXMLGenerators() { + final List generators = super. + getExtraListXMLGenerators(); + generators.add(new ExpertiseExtraXmlGenerator()); + return generators; } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseBundle.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseBundle.java new file mode 100644 index 000000000..13e8dc454 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseBundle.java @@ -0,0 +1,273 @@ +package com.arsdigita.cms.contenttypes; + +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.CustomCopy; +import com.arsdigita.cms.ItemCopier; +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.persistence.DataCollection; +import com.arsdigita.persistence.DataObject; +import com.arsdigita.persistence.OID; +import com.arsdigita.persistence.metadata.Property; +import com.arsdigita.util.Assert; +import java.math.BigDecimal; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class ExpertiseBundle extends PublicationBundle { + + public static final String BASE_DATA_OBJECT_TYPE = + "com.arsdigita.cms.contenttypes.ExpertiseBundle"; + public static final String ORGANIZATION = "organization"; + public static final String ORDERER = "orderer"; + + public ExpertiseBundle(final ContentItem primary) { + super(BASE_DATA_OBJECT_TYPE); + + Assert.exists(primary, ContentItem.class); + + setDefaultLanguage(primary.getLanguage()); + setContentType(primary.getContentType()); + addInstance(primary); + + setName(primary.getName()); + } + + public ExpertiseBundle(final OID oid) throws DataObjectNotFoundException { + super(oid); + } + + public ExpertiseBundle(final BigDecimal id) + throws DataObjectNotFoundException { + super(new OID(BASE_DATA_OBJECT_TYPE, id)); + } + + public ExpertiseBundle(final DataObject dobj) { + super(dobj); + } + + public ExpertiseBundle(final String type) { + super(type); + } + + @Override + public boolean copyProperty(final CustomCopy source, + final Property property, + final ItemCopier copier) { + final String attribute = property.getName(); + if (copier.getCopyType() == ItemCopier.VERSION_COPY) { + final ExpertiseBundle expertiseBundle = (ExpertiseBundle) source; + + if (ORGANIZATION.equals(attribute)) { + final DataCollection organizations = + (DataCollection) expertiseBundle.get( + ORGANIZATION); + + while (organizations.next()) { + createOrganizationAssoc(organizations); + } + + return true; + } else if (ORDERER.equals(attribute)) { + final DataCollection orderers = + (DataCollection) expertiseBundle.get( + ORDERER); + + while (orderers.next()) { + createOrdererAssoc(orderers); + } + + return true; + } else { + return super.copyProperty(source, property, copier); + } + } else { + return super.copyProperty(source, property, copier); + } + } + + private void createOrganizationAssoc(final DataCollection organizations) { + final GenericOrganizationalUnitBundle orgaunitDraft = + (GenericOrganizationalUnitBundle) DomainObjectFactory. + newInstance(organizations.getDataObject()); + final GenericOrganizationalUnitBundle orgaunitLive = + (GenericOrganizationalUnitBundle) orgaunitDraft. + getLiveVersion(); + + if (orgaunitLive != null) { + final DataObject link = add(ORGANIZATION, orgaunitLive); + + link.set("orgaOrder", link.get("link.orgaOrder")); + + link.save(); + } + } + + private void createOrdererAssoc(final DataCollection orderers) { + final GenericOrganizationalUnitBundle ordererDraft = + (GenericOrganizationalUnitBundle) DomainObjectFactory. + newInstance(orderers.getDataObject()); + final GenericOrganizationalUnitBundle ordererLive = + (GenericOrganizationalUnitBundle) ordererDraft. + getLiveVersion(); + + if (ordererLive != null) { + final DataObject link = add(ORDERER, ordererLive); + + link.set("ordererOrder", link.get("link.ordererOrder")); + + link.save(); + } + } + + @Override + public boolean copyReverseProperty(final CustomCopy source, + final ContentItem liveItem, + final Property property, + final ItemCopier copier) { + final String attribute = property.getName(); + if (copier.getCopyType() == ItemCopier.VERSION_COPY) { + if (("expertise".equals(attribute) + && (source instanceof GenericOrganizationalUnitBundle))) { + final GenericOrganizationalUnitBundle orgaBundle = + (GenericOrganizationalUnitBundle) source; + final DataCollection expertises = (DataCollection) orgaBundle. + get("expertise"); + + while (expertises.next()) { + createExpertiseAssoc(expertises, + (GenericOrganizationalUnitBundle) liveItem); + } + + return true; + } else if ("ordererExpertise".equals(attribute) + && (source instanceof GenericOrganizationalUnitBundle)) { + final GenericOrganizationalUnitBundle ordererBundle = + (GenericOrganizationalUnitBundle) source; + final DataCollection expertises = + (DataCollection) ordererBundle.get( + "ordererExpertise"); + + while (expertises.next()) { + createOrderedExpertiseAssoc(expertises, + (GenericOrganizationalUnitBundle) liveItem); + } + + return true; + } else { + return super.copyReverseProperty(source, + liveItem, + property, + copier); + } + } else { + return super.copyReverseProperty(source, liveItem, property, copier); + } + } + + private void createExpertiseAssoc(final DataCollection expertises, + final GenericOrganizationalUnitBundle orgaBundle) { + final ExpertiseBundle draftExpertise = + (ExpertiseBundle) DomainObjectFactory.newInstance( + expertises.getDataObject()); + final ExpertiseBundle liveExpertise = (ExpertiseBundle) draftExpertise. + getLiveVersion(); + + if (liveExpertise != null) { + final DataObject link = orgaBundle.add("expertise", liveExpertise); + + link.set("orgaOrder", expertises.get("link.orderOrder")); + + link.save(); + } + } + + private void createOrderedExpertiseAssoc(final DataCollection expertises, + final GenericOrganizationalUnitBundle orderer) { + final ExpertiseBundle draftExpertise = + (ExpertiseBundle) DomainObjectFactory.newInstance( + expertises.getDataObject()); + final ExpertiseBundle liveExpertise = (ExpertiseBundle) draftExpertise. + getLiveVersion(); + + if (liveExpertise != null) { + final DataObject link = orderer.add("orderedExpertise", + liveExpertise); + + link.set("ordererOrder", expertises.get("link.ordererOrder")); + + link.save(); + } + } + + public GenericOrganizationalUnitBundle getOrganization() { + final DataCollection collection = (DataCollection) get(ORGANIZATION); + + if (collection.size() == 0) { + return null; + } else { + final DataObject dobj; + + collection.next(); + dobj = collection.getDataObject(); + collection.close(); + + return (GenericOrganizationalUnitBundle) DomainObjectFactory.newInstance(dobj); + } + } + + public void setOrganization(final GenericOrganizationalUnit organization) { + final GenericOrganizationalUnitBundle oldOrga = getOrganization(); + + if (oldOrga != null) { + remove(ORGANIZATION, oldOrga); + } + + if (organization != null) { + Assert.exists(organization, GenericOrganizationalUnit.class); + + final DataObject link = add(ORGANIZATION, + organization.getGenericOrganizationalUnitBundle()); + link.set("orgaOrder",1); + + link.save(); + } + } + + public GenericOrganizationalUnitBundle getOrderer() { + final DataCollection collection = (DataCollection) get(ORDERER); + + if (collection.size() == 0) { + return null; + } else { + final DataObject dobj; + + collection.next(); + dobj = collection.getDataObject(); + collection.close(); + + return (GenericOrganizationalUnitBundle) DomainObjectFactory.newInstance(dobj); + } + } + + public void setOrderer(final GenericOrganizationalUnit orderer) { + final GenericOrganizationalUnitBundle oldOrga = getOrganization(); + + if (oldOrga != null) { + remove(ORDERER, oldOrga); + } + + if (orderer != null) { + Assert.exists(orderer, GenericOrganizationalUnit.class); + + final DataObject link = add(ORDERER, + orderer.getGenericOrganizationalUnitBundle()); + link.set("ordererOrder",1); + + link.save(); + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InProceedings.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InProceedings.java index 2afe0bef4..f80c554f3 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InProceedings.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InProceedings.java @@ -19,13 +19,13 @@ */ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ui.InProceedingsExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; -import com.arsdigita.domain.DomainObjectFactory; -import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; -import com.arsdigita.util.Assert; import java.math.BigDecimal; +import java.util.List; /** * @@ -62,7 +62,7 @@ public class InProceedings extends Publication { public InProceedingsBundle getInProceedingsBundle() { return (InProceedingsBundle) getContentBundle(); } - + public Integer getPagesFrom() { return (Integer) get(PAGES_FROM); } @@ -82,32 +82,34 @@ public class InProceedings extends Publication { public Proceedings getProceedings() { /*DataCollection collection; - collection = (DataCollection) get(PROCEEDINGS); + collection = (DataCollection) get(PROCEEDINGS); - if (collection.size() == 0) { - return null; - } else { - DataObject dobj; + if (collection.size() == 0) { + return null; + } else { + DataObject dobj; - collection.next(); - dobj = collection.getDataObject(); - collection.close(); + collection.next(); + dobj = collection.getDataObject(); + collection.close(); + + return (Proceedings) DomainObjectFactory.newInstance(dobj); + }*/ + + final ProceedingsBundle bundle = + getInProceedingsBundle().getProceedings(); - return (Proceedings) DomainObjectFactory.newInstance(dobj); - }*/ - - final ProceedingsBundle bundle = getInProceedingsBundle().getProceedings(); - if (bundle == null) { return null; } else { return (Proceedings) bundle.getPrimaryInstance(); } } - + public Proceedings getProceedings(final String language) { - final ProceedingsBundle bundle = getInProceedingsBundle().getProceedings(); - + final ProceedingsBundle bundle = + getInProceedingsBundle().getProceedings(); + if (bundle == null) { return null; } else { @@ -118,20 +120,34 @@ public class InProceedings extends Publication { public void setProceedings(final Proceedings proceedings) { /*Proceedings oldProceedings; - oldProceedings = getProceedings(); - if (oldProceedings != null) { - remove(PROCEEDINGS, oldProceedings); - } + oldProceedings = getProceedings(); + if (oldProceedings != null) { + remove(PROCEEDINGS, oldProceedings); + } + + if (proceedings != null) { + Assert.exists(proceedings, Proceedings.class); + DataObject link = add(PROCEEDINGS, proceedings); + link.set(Proceedings.PAPER_ORDER, + Integer.valueOf((int) proceedings.getPapers().size())); + link.save(); + }*/ - if (proceedings != null) { - Assert.exists(proceedings, Proceedings.class); - DataObject link = add(PROCEEDINGS, proceedings); - link.set(Proceedings.PAPER_ORDER, - Integer.valueOf((int) proceedings.getPapers().size())); - link.save(); - }*/ - getInProceedingsBundle().setProceedings(proceedings); - - } + } + + @Override + public List getExtraXMLGenerators() { + final List generators = super.getExtraXMLGenerators(); + generators.add(new InProceedingsExtraXmlGenerator()); + return generators; + } + + @Override + public List getExtraListXMLGenerators() { + final List generators = super. + getExtraListXMLGenerators(); + generators.add(new InProceedingsExtraXmlGenerator()); + return generators; + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java index 9569f9b80..86df65f55 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java @@ -19,14 +19,14 @@ */ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ui.InternetArticleExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; -import com.arsdigita.domain.DomainObjectFactory; -import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; -import com.arsdigita.util.Assert; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * @@ -52,22 +52,26 @@ public class InternetArticle extends Publication { this(BASE_DATA_OBJECT_TYPE); } - public InternetArticle(BigDecimal id) throws DataObjectNotFoundException { + public InternetArticle(final BigDecimal id) throws DataObjectNotFoundException { this(new OID(BASE_DATA_OBJECT_TYPE, id)); } - public InternetArticle(OID oid) throws DataObjectNotFoundException { + public InternetArticle(final OID oid) throws DataObjectNotFoundException { super(oid); } - public InternetArticle(DataObject dataObject) { + public InternetArticle(final DataObject dataObject) { super(dataObject); } - public InternetArticle(String type) { + public InternetArticle(final String type) { super(type); } + public InternetArticleBundle getInternetArticleBundle() { + return (InternetArticleBundle) getContentBundle(); + } + public String getPlace() { return (String) get(PLACE); } @@ -77,7 +81,7 @@ public class InternetArticle extends Publication { } public GenericOrganizationalUnit getOrganization() { - DataCollection collection; + /*DataCollection collection; collection = (DataCollection) get(ORGANIZATION); @@ -91,11 +95,17 @@ public class InternetArticle extends Publication { collection.close(); return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj); - } + }*/ + + return (GenericOrganizationalUnit) getInternetArticleBundle().getOrganization().getPrimaryInstance(); + } + + public GenericOrganizationalUnit getOrganization(final String language) { + return (GenericOrganizationalUnit) getInternetArticleBundle().getOrganization().getInstance(language); } - public void setOrganization(GenericOrganizationalUnit orga) { - GenericOrganizationalUnit oldOrga; + public void setOrganization(final GenericOrganizationalUnit orga) { + /*GenericOrganizationalUnit oldOrga; oldOrga = getOrganization(); if(oldOrga != null) { @@ -107,8 +117,9 @@ public class InternetArticle extends Publication { DataObject link = add(ORGANIZATION, orga); link.set("orgaOrder", 1); link.save(); - } - + }*/ + + getInternetArticleBundle().setOrganization(orga); } public String getNumber() { @@ -182,4 +193,18 @@ public class InternetArticle extends Publication { public void setDoi(final String doi) { set(DOI, doi); } + + @Override + public List getExtraXMLGenerators() { + final List generators = super.getExtraXMLGenerators(); + generators.add(new InternetArticleExtraXmlGenerator()); + return generators; + } + + @Override + public List getExtraListXMLGenerators() { + final List generators = super.getExtraListXMLGenerators(); + generators.add(new InternetArticleExtraXmlGenerator()); + return generators; + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticleBundle.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticleBundle.java new file mode 100644 index 000000000..142f7f3d8 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticleBundle.java @@ -0,0 +1,186 @@ +package com.arsdigita.cms.contenttypes; + +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.CustomCopy; +import com.arsdigita.cms.ItemCopier; +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.persistence.DataCollection; +import com.arsdigita.persistence.DataObject; +import com.arsdigita.persistence.OID; +import com.arsdigita.persistence.metadata.Property; +import com.arsdigita.util.Assert; +import java.math.BigDecimal; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class InternetArticleBundle extends PublicationBundle { + + public static final String BASE_DATA_OBJECT_TYPE = + "com.arsdigita.cms.contenttypes.InternetArticleBundle"; + public static final String ORGANIZATION = "organization"; + + public InternetArticleBundle(final ContentItem primary) { + super(BASE_DATA_OBJECT_TYPE); + + Assert.exists(primary, ContentItem.class); + + setDefaultLanguage(primary.getLanguage()); + setContentType(primary.getContentType()); + addInstance(primary); + + setName(primary.getName()); + } + + public InternetArticleBundle(final OID oid) throws + DataObjectNotFoundException { + super(oid); + } + + public InternetArticleBundle(final BigDecimal id) + throws DataObjectNotFoundException { + super(new OID(BASE_DATA_OBJECT_TYPE, id)); + } + + public InternetArticleBundle(final DataObject dobj) { + super(dobj); + } + + public InternetArticleBundle(final String type) { + super(type); + } + + @Override + public boolean copyProperty(final CustomCopy source, + final Property property, + final ItemCopier copier) { + final String attribute = property.getName(); + if (copier.getCopyType() == ItemCopier.VERSION_COPY) { + final InternetArticleBundle InternetArticleBundle = + (InternetArticleBundle) source; + + if (ORGANIZATION.equals(attribute)) { + final DataCollection organizations = + (DataCollection) InternetArticleBundle.get( + ORGANIZATION); + + while (organizations.next()) { + createOrganizationAssoc(organizations); + } + + return true; + } else { + return super.copyProperty(source, property, copier); + } + } else { + return super.copyProperty(source, property, copier); + } + } + + private void createOrganizationAssoc(final DataCollection organizations) { + final GenericOrganizationalUnitBundle orgaunitDraft = + (GenericOrganizationalUnitBundle) DomainObjectFactory. + newInstance(organizations.getDataObject()); + final GenericOrganizationalUnitBundle orgaunitLive = + (GenericOrganizationalUnitBundle) orgaunitDraft. + getLiveVersion(); + + if (orgaunitLive != null) { + final DataObject link = add(ORGANIZATION, orgaunitLive); + + link.set("orgaOrder", link.get("link.orgaOrder")); + + link.save(); + } + } + + @Override + public boolean copyReverseProperty(final CustomCopy source, + final ContentItem liveItem, + final Property property, + final ItemCopier copier) { + final String attribute = property.getName(); + if (copier.getCopyType() == ItemCopier.VERSION_COPY) { + if (("internetArticle".equals(attribute) + && (source instanceof GenericOrganizationalUnitBundle))) { + final GenericOrganizationalUnitBundle orgaBundle = + (GenericOrganizationalUnitBundle) source; + final DataCollection internetArticles = (DataCollection) orgaBundle. + get("internetArticle"); + + while (internetArticles.next()) { + createInternetArticleAssoc(internetArticles, + (GenericOrganizationalUnitBundle) liveItem); + } + + return true; + } else { + return super.copyReverseProperty(source, + liveItem, + property, + copier); + } + } else { + return super.copyReverseProperty(source, liveItem, property, copier); + } + } + + private void createInternetArticleAssoc(final DataCollection internetArticles, + final GenericOrganizationalUnitBundle orgaBundle) { + final InternetArticleBundle draftInternetArticle = + (InternetArticleBundle) DomainObjectFactory. + newInstance( + internetArticles.getDataObject()); + final InternetArticleBundle liveInternetArticle = + (InternetArticleBundle) draftInternetArticle. + getLiveVersion(); + + if (liveInternetArticle != null) { + final DataObject link = orgaBundle.add("internetArticle", + liveInternetArticle); + + link.set("orgaOrder", internetArticles.get("link.orderOrder")); + + link.save(); + } + } + + public GenericOrganizationalUnitBundle getOrganization() { + final DataCollection collection = (DataCollection) get(ORGANIZATION); + + if (collection.size() == 0) { + return null; + } else { + final DataObject dobj; + + collection.next(); + dobj = collection.getDataObject(); + collection.close(); + + return (GenericOrganizationalUnitBundle) DomainObjectFactory. + newInstance(dobj); + } + } + + public void setOrganization(final GenericOrganizationalUnit organization) { + final GenericOrganizationalUnitBundle oldOrga = getOrganization(); + + if (oldOrga != null) { + remove(ORGANIZATION, oldOrga); + } + + if (organization != null) { + Assert.exists(organization, GenericOrganizationalUnit.class); + + final DataObject link = add(ORGANIZATION, + organization. + getGenericOrganizationalUnitBundle()); + link.set("orgaOrder", 1); + + link.save(); + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Journal.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Journal.java index 2a89ad972..d4e2c5d95 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Journal.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Journal.java @@ -20,10 +20,13 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.cms.ContentPage; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ui.JournalExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; import java.math.BigDecimal; +import java.util.List; /** * @@ -113,4 +116,18 @@ public class Journal extends ContentPage { public boolean hasArticles() { return !this.getArticles().isEmpty(); } + + @Override + public List getExtraXMLGenerators() { + final List generators = super.getExtraXMLGenerators(); + generators.add(new JournalExtraXmlGenerator()); + return generators; + } + + @Override + public List getExtraListXMLGenerators() { + final List generators = super.getExtraListXMLGenerators(); + generators.add(new JournalExtraXmlGenerator()); + return generators; + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java index 79edcc336..af30f9b06 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java @@ -19,6 +19,8 @@ */ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ui.ProceedingsExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.persistence.DataCollection; @@ -27,6 +29,7 @@ import com.arsdigita.persistence.OID; import com.arsdigita.util.Assert; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * Content type of proceedings. Provides attributes for storing the data @@ -186,4 +189,18 @@ public class Proceedings extends PublicationWithPublisher { public boolean hasPapers() { return !this.getPapers().isEmpty(); } + + @Override + public List getExtraXMLGenerators() { + final List generators = super.getExtraXMLGenerators(); + generators.add(new ProceedingsExtraXmlGenerator()); + return generators; + } + + @Override + public List getExtraListXMLGenerators() { + final List generators = super.getExtraListXMLGenerators(); + generators.add(new ProceedingsExtraXmlGenerator()); + return generators; + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Publication.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Publication.java index 3ecb0bdf0..b8213d173 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Publication.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Publication.java @@ -21,11 +21,10 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.cms.ContentPage; import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ui.PublicationExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; -import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; -import com.arsdigita.util.Assert; import java.math.BigDecimal; import java.util.List; @@ -335,10 +334,17 @@ public class Publication extends ContentPage { @Override public List getExtraXMLGenerators() { final List generators = super.getExtraXMLGenerators(); - generators.add(new SciPublicationExtraXmlGenerator()); + generators.add(new PublicationExtraXmlGenerator()); return generators; } + @Override + public List getExtraListXMLGenerators() { + final List generators = super.getExtraListXMLGenerators(); + generators.add(new PublicationExtraXmlGenerator()); + return generators; + } + @Override public String getSearchSummary() { return String.format("%s %s %s", diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/PublicationWithPublisher.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/PublicationWithPublisher.java index ef1539774..0ae72a049 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/PublicationWithPublisher.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/PublicationWithPublisher.java @@ -19,10 +19,13 @@ */ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ui.PublicationWithPublisherExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; import java.math.BigDecimal; +import java.util.List; import org.apache.log4j.Logger; /** @@ -198,4 +201,18 @@ public class PublicationWithPublisher extends Publication { getPublicationWithPublisherBundle().setPublisher(publisher); } + + @Override + public List getExtraXMLGenerators() { + final List generators = super.getExtraXMLGenerators(); + generators.add(new PublicationWithPublisherExtraXmlGenerator()); + return generators; + } + + @Override + public List getExtraListXMLGenerators() { + final List generators = super.getExtraXMLGenerators(); + generators.add(new PublicationWithPublisherExtraXmlGenerator()); + return generators; + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/SciPublicationExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/SciPublicationExtraXmlGenerator.java deleted file mode 100644 index 6b0f627f6..000000000 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/SciPublicationExtraXmlGenerator.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.arsdigita.cms.contenttypes; - -import com.arsdigita.bebop.Page; -import com.arsdigita.bebop.PageState; -import com.arsdigita.cms.ContentItem; -import com.arsdigita.cms.ExtraXMLGenerator; -import com.arsdigita.cms.scipublications.exporter.PublicationFormat; -import com.arsdigita.cms.scipublications.exporter.SciPublicationsExporters; -import com.arsdigita.xml.Element; -import java.util.List; - -/** - * - * @author Jens Pelzetter - * @version $Id$ - */ -public class SciPublicationExtraXmlGenerator implements ExtraXMLGenerator { - - public void generateXML(final ContentItem item, - final Element element, - final PageState state) { - if (!(item instanceof Publication)) { - throw new IllegalArgumentException(String.format( - "ExtraXMLGenerator '%s' only supports items of type '%s'.", - getClass().getName(), - Publication.class.getName())); - } - - List formats = SciPublicationsExporters.getInstance().getSupportedFormats(); - - for(PublicationFormat format : formats) { - createExportLink(format, element, (Publication) item, state); - } - } - - private void createExportLink(final PublicationFormat format, - final Element parent, - final Publication publication, - final PageState state) { - final Element exportLinkElem = parent.newChildElement("publicationExportLink"); - final Element formatKeyElem = exportLinkElem.newChildElement("formatKey"); - formatKeyElem.setText(format.getName().toLowerCase()); - final Element formatNameElem = exportLinkElem.newChildElement("formatName"); - formatNameElem.setText(format.getName()); - final Element publicationIdElem = exportLinkElem.newChildElement("publicationId"); - publicationIdElem.setText(publication.getID().toString()); - } - - public void addGlobalStateParams(final Page page) { - //Nothing for now - } - - - -} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublished.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublished.java index 6302411d6..9b1f58074 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublished.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublished.java @@ -19,20 +19,21 @@ */ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ui.UnPublishedExtraXmlGenerator; import com.arsdigita.domain.DataObjectNotFoundException; -import com.arsdigita.domain.DomainObjectFactory; -import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; -import com.arsdigita.util.Assert; import java.math.BigDecimal; +import java.util.List; /** * * @author Jens Pelzetter + * @version $Id$ */ public abstract class UnPublished extends Publication { - + public static final String PLACE = "place"; public static final String ORGANIZATION = "organization"; public static final String NUMBER = "number"; @@ -60,6 +61,10 @@ public abstract class UnPublished extends Publication { super(type); } + public UnPublishedBundle getUnPublishedBundle() { + return (UnPublishedBundle) getContentBundle(); + } + public String getPlace() { return (String) get(PLACE); } @@ -69,39 +74,47 @@ public abstract class UnPublished extends Publication { } public GenericOrganizationalUnit getOrganization() { - DataCollection collection; + /* DataCollection collection; - collection = (DataCollection) get(ORGANIZATION); + collection = (DataCollection) get(ORGANIZATION); - if (0 == collection.size()) { - return null; - } else { - DataObject dobj; + if (0 == collection.size()) { + return null; + } else { + DataObject dobj; - collection.next(); - dobj = collection.getDataObject(); - collection.close(); + collection.next(); + dobj = collection.getDataObject(); + collection.close(); - return (GenericOrganizationalUnit) DomainObjectFactory.newInstance( - dobj); - } + return (GenericOrganizationalUnit) DomainObjectFactory.newInstance( + dobj); + }*/ + return (GenericOrganizationalUnit) getUnPublishedBundle(). + getOrganization().getPrimaryInstance(); + } + + public GenericOrganizationalUnit getOrganization(final String language) { + return (GenericOrganizationalUnit) getUnPublishedBundle(). + getOrganization().getInstance(language); } public void setOrganization(final GenericOrganizationalUnit orga) { - GenericOrganizationalUnit oldOrga; + /*GenericOrganizationalUnit oldOrga; - oldOrga = getOrganization(); + oldOrga = getOrganization(); - if (oldOrga != null) { - remove(ORGANIZATION, oldOrga); - } + if (oldOrga != null) { + remove(ORGANIZATION, oldOrga); + } - if (null != orga) { - Assert.exists(orga, GenericOrganizationalUnit.class); - DataObject link = add(ORGANIZATION, orga); - link.set("orgaOrder", 1); - link.save(); - } + if (null != orga) { + Assert.exists(orga, GenericOrganizationalUnit.class); + DataObject link = add(ORGANIZATION, orga); + link.set("orgaOrder", 1); + link.save(); + }*/ + getUnPublishedBundle().setOrganization(orga); } public String getNumber() { @@ -119,4 +132,18 @@ public abstract class UnPublished extends Publication { public void setNumberOfPages(Integer numberOfPages) { set(NUMBER_OF_PAGES, numberOfPages); } + + @Override + public List getExtraXMLGenerators() { + final List generators = super.getExtraXMLGenerators(); + generators.add(new UnPublishedExtraXmlGenerator()); + return generators; + } + + @Override + public List getExtraListXMLGenerators() { + final List generators = super.getExtraListXMLGenerators(); + generators.add(new UnPublishedExtraXmlGenerator()); + return generators; + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublishedBundle.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublishedBundle.java new file mode 100644 index 000000000..b2945b347 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublishedBundle.java @@ -0,0 +1,186 @@ +package com.arsdigita.cms.contenttypes; + +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.CustomCopy; +import com.arsdigita.cms.ItemCopier; +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.persistence.DataCollection; +import com.arsdigita.persistence.DataObject; +import com.arsdigita.persistence.OID; +import com.arsdigita.persistence.metadata.Property; +import com.arsdigita.util.Assert; +import java.math.BigDecimal; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class UnPublishedBundle extends PublicationBundle { + + public static final String BASE_DATA_OBJECT_TYPE = + "com.arsdigita.cms.contenttypes.UnPublishedBundle"; + public static final String ORGANIZATION = "organization"; + + public UnPublishedBundle(final ContentItem primary) { + super(BASE_DATA_OBJECT_TYPE); + + Assert.exists(primary, ContentItem.class); + + setDefaultLanguage(primary.getLanguage()); + setContentType(primary.getContentType()); + addInstance(primary); + + setName(primary.getName()); + } + + public UnPublishedBundle(final OID oid) throws + DataObjectNotFoundException { + super(oid); + } + + public UnPublishedBundle(final BigDecimal id) + throws DataObjectNotFoundException { + super(new OID(BASE_DATA_OBJECT_TYPE, id)); + } + + public UnPublishedBundle(final DataObject dobj) { + super(dobj); + } + + public UnPublishedBundle(final String type) { + super(type); + } + + @Override + public boolean copyProperty(final CustomCopy source, + final Property property, + final ItemCopier copier) { + final String attribute = property.getName(); + if (copier.getCopyType() == ItemCopier.VERSION_COPY) { + final UnPublishedBundle unPublishedBundle = + (UnPublishedBundle) source; + + if (ORGANIZATION.equals(attribute)) { + final DataCollection organizations = + (DataCollection) unPublishedBundle.get( + ORGANIZATION); + + while (organizations.next()) { + createOrganizationAssoc(organizations); + } + + return true; + } else { + return super.copyProperty(source, property, copier); + } + } else { + return super.copyProperty(source, property, copier); + } + } + + private void createOrganizationAssoc(final DataCollection organizations) { + final GenericOrganizationalUnitBundle orgaunitDraft = + (GenericOrganizationalUnitBundle) DomainObjectFactory. + newInstance(organizations.getDataObject()); + final GenericOrganizationalUnitBundle orgaunitLive = + (GenericOrganizationalUnitBundle) orgaunitDraft. + getLiveVersion(); + + if (orgaunitLive != null) { + final DataObject link = add(ORGANIZATION, orgaunitLive); + + link.set("orgaOrder", link.get("link.orgaOrder")); + + link.save(); + } + } + + @Override + public boolean copyReverseProperty(final CustomCopy source, + final ContentItem liveItem, + final Property property, + final ItemCopier copier) { + final String attribute = property.getName(); + if (copier.getCopyType() == ItemCopier.VERSION_COPY) { + if (("unPublished".equals(attribute) + && (source instanceof GenericOrganizationalUnitBundle))) { + final GenericOrganizationalUnitBundle orgaBundle = + (GenericOrganizationalUnitBundle) source; + final DataCollection publications = (DataCollection) orgaBundle. + get("unPublished"); + + while (publications.next()) { + createUnPublishedAssoc(publications, + (GenericOrganizationalUnitBundle) liveItem); + } + + return true; + } else { + return super.copyReverseProperty(source, + liveItem, + property, + copier); + } + } else { + return super.copyReverseProperty(source, liveItem, property, copier); + } + } + + private void createUnPublishedAssoc(final DataCollection publications, + final GenericOrganizationalUnitBundle orgaBundle) { + final UnPublishedBundle draftUnPublished = + (UnPublishedBundle) DomainObjectFactory. + newInstance( + publications.getDataObject()); + final UnPublishedBundle liveUnPublished = + (UnPublishedBundle) draftUnPublished. + getLiveVersion(); + + if (liveUnPublished != null) { + final DataObject link = orgaBundle.add("unPublished", + liveUnPublished); + + link.set("orgaOrder", publications.get("link.orderOrder")); + + link.save(); + } + } + + public GenericOrganizationalUnitBundle getOrganization() { + final DataCollection collection = (DataCollection) get(ORGANIZATION); + + if (collection.size() == 0) { + return null; + } else { + final DataObject dobj; + + collection.next(); + dobj = collection.getDataObject(); + collection.close(); + + return (GenericOrganizationalUnitBundle) DomainObjectFactory. + newInstance(dobj); + } + } + + public void setOrganization(final GenericOrganizationalUnit organization) { + final GenericOrganizationalUnitBundle oldOrga = getOrganization(); + + if (oldOrga != null) { + remove(ORGANIZATION, oldOrga); + } + + if (organization != null) { + Assert.exists(organization, GenericOrganizationalUnit.class); + + final DataObject link = add(ORGANIZATION, + organization. + getGenericOrganizationalUnitBundle()); + link.set("orgaOrder", 1); + + link.save(); + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInCollectedVolumeExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInCollectedVolumeExtraXmlGenerator.java new file mode 100644 index 000000000..b2b6db135 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInCollectedVolumeExtraXmlGenerator.java @@ -0,0 +1,65 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume; +import com.arsdigita.cms.contenttypes.ArticleInJournal; +import com.arsdigita.cms.contenttypes.CollectedVolume; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class ArticleInCollectedVolumeExtraXmlGenerator + implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof ArticleInCollectedVolume)) { + throw new IllegalArgumentException(String.format( + "ExtraXMLGenerator '%s' only supports items of type '%s'.", + getClass().getName(), + ArticleInJournal.class.getName())); + } + + final ArticleInCollectedVolume article = (ArticleInCollectedVolume) item; + createCollectedVolumeXml(article, element, state); + } + + private void createCollectedVolumeXml(final ArticleInCollectedVolume article, + final Element parent, + final PageState state) { + final CollectedVolume collectedVolume = article.getCollectedVolume(GlobalizationHelper.getNegotiatedLocale().getLanguage()); + if (collectedVolume != null) { + final Element collVolElem = parent.newChildElement("collectedVolume"); + final XmlGenerator generator = new XmlGenerator(collectedVolume); + generator.generateXML(state, collVolElem, ""); + } + } + + public void addGlobalStateParams(final Page p) { + //nothing + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private final ContentItem item; + + public XmlGenerator(final ContentItem item) { + super(); + this.item = item; + } + + @Override + protected ContentItem getContentItem(final PageState state) { + return item; + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalExtraXmlGenerator.java new file mode 100644 index 000000000..6e90e2a8f --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ArticleInJournalExtraXmlGenerator.java @@ -0,0 +1,64 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ArticleInJournal; +import com.arsdigita.cms.contenttypes.Journal; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class ArticleInJournalExtraXmlGenerator implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof ArticleInJournal)) { + throw new IllegalArgumentException(String.format( + "ExtraXMLGenerator '%s' only supports items of type '%s'.", + getClass().getName(), + ArticleInJournal.class.getName())); + } + + final ArticleInJournal article = (ArticleInJournal) item; + createJournalXml(article, element, state); + } + + private void createJournalXml(final ArticleInJournal article, + final Element parent, + final PageState state) { + final Journal journal = article.getJournal(GlobalizationHelper. + getNegotiatedLocale().getLanguage()); + if (journal != null) { + final Element journalElem = parent.newChildElement("journal"); + final XmlGenerator generator = new XmlGenerator(journal); + generator.generateXML(state, journalElem, ""); + } + } + + public void addGlobalStateParams(final Page p) { + //nothing + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private final ContentItem item; + + public XmlGenerator(final ContentItem item) { + super(); + this.item = item; + } + + @Override + protected ContentItem getContentItem(final PageState state) { + return item; + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/CollectedVolumeExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/CollectedVolumeExtraXmlGenerator.java new file mode 100644 index 000000000..c0e94b3ce --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/CollectedVolumeExtraXmlGenerator.java @@ -0,0 +1,81 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume; +import com.arsdigita.cms.contenttypes.ArticleInCollectedVolumeCollection; +import com.arsdigita.cms.contenttypes.ArticleInJournal; +import com.arsdigita.cms.contenttypes.CollectedVolume; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class CollectedVolumeExtraXmlGenerator implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof CollectedVolume)) { + throw new IllegalArgumentException(String.format( + "ExtraXMLGenerator '%s' only supports items of type '%s'.", + getClass().getName(), + CollectedVolume.class.getName())); + } + + final CollectedVolume collectedVolume = (CollectedVolume) item; + createArticlesXml(collectedVolume, element, state); + } + + private void createArticlesXml(final CollectedVolume collectedVolume, + final Element parent, + final PageState state) { + final ArticleInCollectedVolumeCollection articles = collectedVolume.getArticles(); + if ((articles == null) || articles.isEmpty()) { + return; + } + + final Element articlesElem = parent.newChildElement("articles"); + while(articles.next()) { + createArticleXml(articles.getArticle(GlobalizationHelper.getNegotiatedLocale().getLanguage()), + articles.getArticleOrder(), + articlesElem, + state); + + } + } + + private void createArticleXml(final ArticleInCollectedVolume article, + final Integer order, + final Element articlesElem, + final PageState state) { + final XmlGenerator generator = new XmlGenerator(article); + generator.addItemAttribute("order", order.toString()); + generator.generateXML(state, articlesElem, ""); + } + + public void addGlobalStateParams(final Page page) { + //Nothing + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private final ContentItem item; + + public XmlGenerator(final ContentItem item) { + super(); + this.item = item; + } + + @Override + protected ContentItem getContentItem(final PageState state) { + return item; + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseCreate.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseCreate.java new file mode 100644 index 000000000..460c3b2d2 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseCreate.java @@ -0,0 +1,26 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.ExpertiseBundle; +import com.arsdigita.cms.contenttypes.PublicationBundle; +import com.arsdigita.cms.ui.authoring.CreationSelector; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class ExpertiseCreate extends PublicationCreate { + + public ExpertiseCreate(final ItemSelectionModel itemModel, + final CreationSelector parent) { + super(itemModel, parent); + } + + @Override + public PublicationBundle createBundle(final ContentItem primary) { + return new ExpertiseBundle(primary); + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseExtraXmlGenerator.java new file mode 100644 index 000000000..c074488e9 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseExtraXmlGenerator.java @@ -0,0 +1,79 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.Expertise; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class ExpertiseExtraXmlGenerator implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof Expertise)) { + throw new IllegalArgumentException(String.format( + "ExtraXMLGenerator '%s' only supports items of type '%s'.", + getClass().getName(), + Expertise.class.getName())); + } + + final Expertise expertise = (Expertise) item; + createOrganizationXml(expertise, element, state); + createOrdererXml(expertise, element, state); + } + + private void createOrganizationXml(final Expertise expertise, + final Element parent, + final PageState state) { + final GenericOrganizationalUnit orga = + expertise.getOrganization(GlobalizationHelper. + getNegotiatedLocale().getLanguage()); + if (orga != null) { + final Element orgaElem = parent.newChildElement("organization"); + final XmlGenerator generator = new XmlGenerator(orga); + generator.generateXML(state, orgaElem, ""); + } + } + + private void createOrdererXml(final Expertise expertise, + final Element parent, + final PageState state) { + final GenericOrganizationalUnit orderer = + expertise.getOrderer(GlobalizationHelper. + getNegotiatedLocale().getLanguage()); + if (orderer != null) { + final Element ordererElem = parent.newChildElement("orderer"); + final XmlGenerator generator = new XmlGenerator(orderer); + generator.generateXML(state, ordererElem, ""); + } + } + + public void addGlobalStateParams(Page p) { + //nothing + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private final ContentItem item; + + public XmlGenerator(final ContentItem item) { + super(); + this.item = item; + } + + @Override + protected ContentItem getContentItem(final PageState state) { + return item; + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InProceedingsExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InProceedingsExtraXmlGenerator.java new file mode 100644 index 000000000..4cb936faf --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InProceedingsExtraXmlGenerator.java @@ -0,0 +1,66 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.InProceedings; +import com.arsdigita.cms.contenttypes.Proceedings; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class InProceedingsExtraXmlGenerator implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof InProceedings)) { + throw new IllegalArgumentException(String.format( + "ExtraXMLGenerator '%s' only supports items of type '%s'.", + getClass().getName(), + InProceedings.class.getName())); + } + + final InProceedings inProceedings = (InProceedings) item; + createProceedingsXml(inProceedings, element, state); + } + + private void createProceedingsXml(final InProceedings inProceedings, + final Element parent, + final PageState state) { + final Proceedings proceedings = + inProceedings.getProceedings(GlobalizationHelper. + getNegotiatedLocale().getLanguage()); + if (proceedings != null) { + final Element proceedingsElem = + parent.newChildElement("proceedings"); + final XmlGenerator generator = new XmlGenerator(proceedings); + generator.generateXML(state, proceedingsElem, ""); + } + } + + public void addGlobalStateParams(final Page page) { + //nothing + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private final ContentItem item; + + public XmlGenerator(final ContentItem item) { + super(); + this.item = item; + } + + @Override + protected ContentItem getContentItem(final PageState state) { + return item; + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleCreate.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleCreate.java new file mode 100644 index 000000000..d66e9ad50 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleCreate.java @@ -0,0 +1,25 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.InternetArticleBundle; +import com.arsdigita.cms.contenttypes.PublicationBundle; +import com.arsdigita.cms.ui.authoring.CreationSelector; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class InternetArticleCreate extends PublicationCreate { + + public InternetArticleCreate(final ItemSelectionModel itemModel, + final CreationSelector parent) { + super(itemModel, parent); + } + + @Override + public PublicationBundle createBundle(final ContentItem primary) { + return new InternetArticleBundle(primary); + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleExtraXmlGenerator.java new file mode 100644 index 000000000..62926e937 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleExtraXmlGenerator.java @@ -0,0 +1,65 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.InternetArticle; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class InternetArticleExtraXmlGenerator implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof InternetArticle)) { + throw new IllegalArgumentException(String.format( + "ExtraXMLGenerator '%s' only supports items of type '%s'.", + getClass().getName(), + InternetArticle.class.getName())); + } + + final InternetArticle internetArticle = (InternetArticle) item; + createOrganizationXml(internetArticle, element, state); + } + + public void addGlobalStateParams(final Page page) { + //nothing + } + + private void createOrganizationXml(final InternetArticle internetArticle, + final Element parent, + final PageState state) { + final GenericOrganizationalUnit orga = + internetArticle.getOrganization(GlobalizationHelper. + getNegotiatedLocale().getLanguage()); + if (orga != null) { + final Element orgaElem = parent.newChildElement("organization"); + final XmlGenerator generator = new XmlGenerator(orga); + generator.generateXML(state, orgaElem, ""); + } + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private final ContentItem item; + + public XmlGenerator(final ContentItem item) { + super(); + this.item = item; + } + + @Override + protected ContentItem getContentItem(final PageState state) { + return item; + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalExtraXmlGenerator.java new file mode 100644 index 000000000..9d66bdebb --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalExtraXmlGenerator.java @@ -0,0 +1,78 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.ArticleInJournal; +import com.arsdigita.cms.contenttypes.ArticleInJournalCollection; +import com.arsdigita.cms.contenttypes.Journal; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class JournalExtraXmlGenerator implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof Journal)) { + throw new IllegalArgumentException(String.format( + "ExtraXMLGenerator '%s' only supports items of type '%s'.", + getClass().getName(), + Journal.class.getName())); + } + + final Journal journal = (Journal) item; + createArticlesXml(journal, element, state); + } + + private void createArticlesXml(final Journal journal, + final Element parent, + final PageState state) { + final ArticleInJournalCollection articles = journal.getArticles(); + if ((articles == null) || articles.isEmpty()) { + return; + } + + final Element articlesElem = parent.newChildElement("articles"); + while(articles.next()) { + createArticleXml(articles.getArticle(), + articles.getArticleOrder(), + articlesElem, + state); + } + } + + private void createArticleXml(final ArticleInJournal article, + final Integer order, + final Element articlesElem, + final PageState state) { + final XmlGenerator generator = new XmlGenerator(article); + generator.addItemAttribute("order", order.toString()); + generator.generateXML(state, articlesElem, ""); + } + + public void addGlobalStateParams(final Page page) { + //nothing + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private final ContentItem item; + + public XmlGenerator(final ContentItem item) { + super(); + this.item = item; + } + + @Override + protected ContentItem getContentItem(final PageState state) { + return item; + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsExtraXmlGenerator.java new file mode 100644 index 000000000..9eaaaa3b8 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsExtraXmlGenerator.java @@ -0,0 +1,95 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.InProceedings; +import com.arsdigita.cms.contenttypes.InProceedingsCollection; +import com.arsdigita.cms.contenttypes.Proceedings; +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class ProceedingsExtraXmlGenerator implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof Proceedings)) { + throw new IllegalArgumentException(String.format( + "ExtraXMLGenerator '%s' only supports items of type '%s'.", + getClass().getName(), + Proceedings.class.getName())); + } + + final Proceedings proceedings = (Proceedings) item; + createOrganizerXml(proceedings, element, state); + createPapersXml(proceedings, element, state); + } + + private void createOrganizerXml(final Proceedings proceedings, + final Element parent, + final PageState state) { + final GenericOrganizationalUnit organizer = + proceedings.getOrganizerOfConference(GlobalizationHelper. + getNegotiatedLocale().getLanguage()); + if (organizer != null) { + final Element organizerElem = parent.newChildElement("organizer"); + final XmlGenerator generator = new XmlGenerator(organizer); + generator.generateXML(state, organizerElem, ""); + } + } + + private void createPapersXml(final Proceedings proceedings, + final Element parent, + final PageState state) { + final InProceedingsCollection papers = proceedings.getPapers(); + if ((papers == null) || papers.isEmpty()) { + return; + } + + final Element papersElem = parent.newChildElement("papers"); + while(papers.next()) { + createPaperXml(papers.getPaper(GlobalizationHelper.getNegotiatedLocale().getLanguage()), + papers.getPaperOrder(), + papersElem, + state); + } + } + + private void createPaperXml(final InProceedings paper, + final Integer order, + final Element papersElem, + final PageState state) { + final XmlGenerator generator = new XmlGenerator(paper); + generator.addItemAttribute("order", order.toString()); + generator.generateXML(state, papersElem, ""); + } + + public void addGlobalStateParams(final Page page) { + //nothing + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private final ContentItem item; + + public XmlGenerator(final ContentItem item) { + super(); + this.item = item; + } + + @Override + protected ContentItem getContentItem(final PageState state) { + return item; + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationExtraXmlGenerator.java new file mode 100644 index 000000000..16c52cf66 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationExtraXmlGenerator.java @@ -0,0 +1,166 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.AuthorshipCollection; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.GenericPerson; +import com.arsdigita.cms.contenttypes.Publication; +import com.arsdigita.cms.contenttypes.PublicationGenericOrganizationalsUnitCollection; +import com.arsdigita.cms.contenttypes.Series; +import com.arsdigita.cms.contenttypes.SeriesCollection; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.cms.scipublications.exporter.PublicationFormat; +import com.arsdigita.cms.scipublications.exporter.SciPublicationsExporters; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; +import java.util.List; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class PublicationExtraXmlGenerator implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof Publication)) { + throw new IllegalArgumentException(String.format( + "ExtraXMLGenerator '%s' only supports items of type '%s'.", + getClass().getName(), + Publication.class.getName())); + } + + final Publication publication = (Publication) item; + createAuthorsXml(publication, element, state); + createOrgaUnitsXml(publication, element, state); + createSeriesXml(publication, element, state); + + final List formats = SciPublicationsExporters. + getInstance().getSupportedFormats(); + + for (PublicationFormat format : formats) { + createExportLink(format, element, (Publication) item, state); + } + } + + private void createAuthorsXml(final Publication publication, + final Element parent, + final PageState state) { + final AuthorshipCollection authors = publication.getAuthors(); + if ((authors == null) || authors.isEmpty()) { + return; + } + + final Element authorsElem = parent.newChildElement("authors"); + while (authors.next()) { + createAuthorXml(authors.getAuthor(), + authors.isEditor(), + authors.getAuthorshipOrder(), + authorsElem, + state); + } + } + + private void createAuthorXml(final GenericPerson author, + final Boolean isAuthor, + final Integer order, + final Element authorsElem, + final PageState state) { + final XmlGenerator generator = new XmlGenerator(author); + generator.addItemAttribute("isEditor", isAuthor.toString()); + generator.addItemAttribute("order", order.toString()); + generator.generateXML(state, authorsElem, ""); + } + + private void createOrgaUnitsXml(final Publication publication, + final Element parent, + final PageState state) { + final PublicationGenericOrganizationalsUnitCollection orgaunits = + publication. + getOrganizationalUnits(); + if ((orgaunits == null) || orgaunits.isEmpty()) { + return; + } + + final Element orgaunitsElem = parent.newChildElement( + "organizationalunits"); + while (orgaunits.next()) { + createOrgaUnitXml(orgaunits.getOrganizationalUnit(GlobalizationHelper. + getNegotiatedLocale().getLanguage()), + orgaunitsElem, + state); + } + } + + private void createOrgaUnitXml(final GenericOrganizationalUnit orgaunit, + final Element orgaunitsElem, + final PageState state) { + final XmlGenerator generator = new XmlGenerator(orgaunit); + generator.generateXML(state, orgaunitsElem, ""); + } + + private void createSeriesXml(final Publication publication, + final Element parent, + final PageState state) { + final SeriesCollection series = publication.getSeries(); + if ((series == null) || series.isEmpty()) { + return; + } + + final Element seriesElem = parent.newChildElement("series"); + while (series.next()) { + createSeriesElemXml(series.getSeries(GlobalizationHelper. + getNegotiatedLocale().getLanguage()), + seriesElem, + state); + } + } + + private void createSeriesElemXml(final Series series, + final Element seriesElem, + final PageState state) { + final XmlGenerator generator = new XmlGenerator(series); + generator.generateXML(state, seriesElem, ""); + } + + private void createExportLink(final PublicationFormat format, + final Element parent, + final Publication publication, + final PageState state) { + final Element exportLinkElem = parent.newChildElement( + "publicationExportLink"); + final Element formatKeyElem = + exportLinkElem.newChildElement("formatKey"); + formatKeyElem.setText(format.getName().toLowerCase()); + final Element formatNameElem = exportLinkElem.newChildElement( + "formatName"); + formatNameElem.setText(format.getName()); + final Element publicationIdElem = exportLinkElem.newChildElement( + "publicationId"); + publicationIdElem.setText(publication.getID().toString()); + } + + public void addGlobalStateParams(final Page page) { + //Nothing for now + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private final ContentItem item; + + public XmlGenerator(final ContentItem item) { + super(); + this.item = item; + } + + @Override + protected ContentItem getContentItem(final PageState state) { + return item; + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherExtraXmlGenerator.java new file mode 100644 index 000000000..aaff0ea46 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherExtraXmlGenerator.java @@ -0,0 +1,68 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.PublicationWithPublisher; +import com.arsdigita.cms.contenttypes.Publisher; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class PublicationWithPublisherExtraXmlGenerator + implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof PublicationWithPublisher)) { + throw new IllegalArgumentException(String.format( + "ExtraXMLGenerator '%s' only supports items of type '%s'.", + getClass().getName(), + PublicationWithPublisher.class.getName())); + } + + final PublicationWithPublisher publication = + (PublicationWithPublisher) item; + createPublisherXml(publication, element, state); + } + + private void createPublisherXml(final PublicationWithPublisher publication, + final Element parent, + final PageState state) { + final Publisher publisher = + publication.getPublisher(GlobalizationHelper. + getNegotiatedLocale().getLanguage()); + if (publisher == null) { + return; + } + + final XmlGenerator generator = new XmlGenerator(publisher); + generator.generateXML(state, parent, ""); + } + + public void addGlobalStateParams(final Page p) { + //nothing + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private final ContentItem item; + + public XmlGenerator(final ContentItem item) { + super(); + this.item = item; + } + + @Override + protected ContentItem getContentItem(final PageState state) { + return item; + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedCreate.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedCreate.java new file mode 100644 index 000000000..da387e8a8 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedCreate.java @@ -0,0 +1,26 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.PublicationBundle; +import com.arsdigita.cms.contenttypes.UnPublishedBundle; +import com.arsdigita.cms.ui.authoring.CreationSelector; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class UnPublishedCreate extends PublicationCreate { + + public UnPublishedCreate(final ItemSelectionModel itemModel, + final CreationSelector parent) { + super(itemModel, parent); + } + + @Override + public PublicationBundle createBundle(final ContentItem primary) { + return new UnPublishedBundle(primary); + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedExtraXmlGenerator.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedExtraXmlGenerator.java new file mode 100644 index 000000000..e87b95e4c --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedExtraXmlGenerator.java @@ -0,0 +1,65 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ExtraXMLGenerator; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.UnPublished; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.xml.Element; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class UnPublishedExtraXmlGenerator implements ExtraXMLGenerator { + + public void generateXML(final ContentItem item, + final Element element, + final PageState state) { + if (!(item instanceof UnPublished)) { + throw new IllegalArgumentException(String.format( + "ExtraXMLGenerator '%s' only supports items of type '%s'.", + getClass().getName(), + UnPublished.class.getName())); + } + + final UnPublished unPublished = (UnPublished) item; + createOrganizationXml(unPublished, element, state); + } + + private void createOrganizationXml(final UnPublished unPublished, + final Element parent, + final PageState state) { + final GenericOrganizationalUnit orga = + unPublished.getOrganization(GlobalizationHelper. + getNegotiatedLocale().getLanguage()); + if (orga != null) { + final Element orgaElem = parent.newChildElement("organization"); + final XmlGenerator generator = new XmlGenerator(orga); + generator.generateXML(state, orgaElem, ""); + } + } + + public void addGlobalStateParams(final Page page) { + //nothing + } + + private class XmlGenerator extends SimpleXMLGenerator { + + private final ContentItem item; + + public XmlGenerator(final ContentItem item) { + super(); + this.item = item; + } + + @Override + protected ContentItem getContentItem(final PageState state) { + return item; + } + } +}