- 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
master
jensp 2012-04-11 17:26:44 +00:00
parent 5fc056c4f2
commit b47811a7e9
38 changed files with 2002 additions and 212 deletions

View File

@ -20,6 +20,7 @@
model com.arsdigita.cms.contenttypes; model com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentPage; import com.arsdigita.cms.ContentPage;
import com.arsdigita.cms.ContentBundle;
// PDL definition for an expertise // PDL definition for an expertise
object type Expertise extends Publication { object type Expertise extends Publication {
@ -30,30 +31,34 @@ object type Expertise extends Publication {
reference key (ct_expertise.expertise_id); reference key (ct_expertise.expertise_id);
} }
association { object type ExpertiseBundle extends PublicationBundle {
Expertise[0..n] expertise = join cms_organizationalunits.organizationalunit_id reference key(ct_expertise_bundles.bundle_id);
to ct_expertise_organization_map.organization_id, }
join ct_expertise_organization_map.experise_id
to ct_expertise.expertise_id;
GenericOrganizationalUnit[0..n] organization = join ct_expertise.expertise_id association {
to ct_expertise_organization_map.experise_id, ExpertiseBundle[0..n] expertise = join cms_orgaunit_bundles.bundle_id
join ct_expertise_organization_map.organization_id to ct_expertise_organization_map.organization_id,
to cms_organizationalunits.organizationalunit_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; Integer[0..1] orgaOrder = ct_expertise_organization_map.orga_order INTEGER;
} }
association { association {
Expertise[0..n] orderedExpertise = join cms_organizationalunits.organizationalunit_id ExpertiseBundle[0..n] orderedExpertise = join cms_orgaunit_bundles.bundle_id
to ct_expertise_orderer_map.orderer_id, to ct_expertise_orderer_map.orderer_id,
join ct_expertise_orderer_map.experise_id join ct_expertise_orderer_map.experise_id
to ct_expertise.expertise_id; to ct_expertise_bundles.bundle_id;
GenericOrganizationalUnit[0..n] orderer = join ct_expertise.expertise_id GenericOrganizationalUnitBundle[0..n] orderer = join ct_expertise_bundles.bundle_id
to ct_expertise_orderer_map.experise_id, to ct_expertise_orderer_map.experise_id,
join ct_expertise_orderer_map.orderer_id join ct_expertise_orderer_map.orderer_id
to cms_organizationalunits.organizationalunit_id; to cms_orgaunit_bundles.bundle_id;
Integer[0..1] ordererOrder = ct_expertise_orderer_map.orderer_order INTEGER; Integer[0..1] ordererOrder = ct_expertise_orderer_map.orderer_order INTEGER;
} }

View File

@ -20,6 +20,7 @@
model com.arsdigita.cms.contenttypes; model com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentPage; import com.arsdigita.cms.ContentPage;
import com.arsdigita.cms.ContentBundle;
// PDL definition for a InternetArticle publication // PDL definition for a InternetArticle publication
object type InternetArticle extends Publication { object type InternetArticle extends Publication {
@ -38,16 +39,20 @@ object type InternetArticle extends Publication {
reference key (ct_internet_article.internet_article_id); reference key (ct_internet_article.internet_article_id);
} }
association { object type InternetArticleBundle extends PublicationBundle {
InternetArticle[0..n] internetArticle = join cms_organizationalunits.organizationalunit_id reference key( ct_internet_article_bundles.bundle_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;
GenericOrganizationalUnit[0..n] organization = join ct_internet_article.internet_article_id association {
to ct_internet_article_organization_map.internet_article_id, InternetArticleBundle[0..n] internetArticle = join cms_orgaunit_bundles.bundle_id
join ct_internet_article_organization_map.organization_id to ct_internet_article_organization_map.organization_id,
to cms_organizationalunits.organizationalunit_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; Integer[0..1] orgaOrder = ct_internet_article_organization_map.orga_order INTEGER;
} }

View File

@ -31,16 +31,20 @@ object type UnPublished extends Publication {
reference key (ct_unpublished.unpublished_id); reference key (ct_unpublished.unpublished_id);
} }
association { object type UnPublishedBundle extends PublicationBundle {
UnPublished[0..n] unPublished = join cms_organizationalunits.organizationalunit_id reference key (ct_unpublished_bundles.bundle_id);
to ct_unpublished_organization_map.organization_id, }
join ct_unpublished_organization_map.unpublished_id
to ct_unpublished.unpublished_id;
GenericOrganizationalUnit[0..n] organization = join ct_unpublished.unpublished_id association {
to ct_unpublished_organization_map.unpublished_id, UnPublishedBundle[0..n] unPublished = join cms_orgaunit_bundles.bundle_id
join ct_unpublished_organization_map.organization_id to ct_unpublished_organization_map.organization_id,
to cms_organizationalunits.organizationalunit_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; Integer[0..1] orgaOrder = ct_unpublished_organization_map.orga_order INTEGER;
} }

View File

@ -10,7 +10,7 @@
objectType="com.arsdigita.cms.contenttypes.Expertise" objectType="com.arsdigita.cms.contenttypes.Expertise"
classname="com.arsdigita.cms.contenttypes.Expertise"> classname="com.arsdigita.cms.contenttypes.Expertise">
<ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.PublicationCreate"> <ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.ExpertiseCreate">
<ctd:authoring-step <ctd:authoring-step
labelKey="publications.ui.expertise_properties.title" labelKey="publications.ui.expertise_properties.title"

View File

@ -10,7 +10,7 @@
objectType="com.arsdigita.cms.contenttypes.GreyLiterature" objectType="com.arsdigita.cms.contenttypes.GreyLiterature"
classname="com.arsdigita.cms.contenttypes.GreyLiterature"> classname="com.arsdigita.cms.contenttypes.GreyLiterature">
<ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.PublicationCreate"> <ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.UnPublishedCreate">
<ctd:authoring-step <ctd:authoring-step
labelKey="publications.ui.greyLiterature_properties.title" labelKey="publications.ui.greyLiterature_properties.title"

View File

@ -10,7 +10,7 @@
objectType="com.arsdigita.cms.contenttypes.InternetArticle" objectType="com.arsdigita.cms.contenttypes.InternetArticle"
classname="com.arsdigita.cms.contenttypes.InternetArticle"> classname="com.arsdigita.cms.contenttypes.InternetArticle">
<ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.PublicationCreate"> <ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.InternetArticleCreate">
<ctd:authoring-step <ctd:authoring-step
labelKey="publications.ui.InternetArticle_properties.title" labelKey="publications.ui.InternetArticle_properties.title"

View File

@ -10,7 +10,7 @@
objectType="com.arsdigita.cms.contenttypes.Review" objectType="com.arsdigita.cms.contenttypes.Review"
classname="com.arsdigita.cms.contenttypes.Review"> classname="com.arsdigita.cms.contenttypes.Review">
<ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.PublicationCreate"> <ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.ArticleInJournalCreate">
<ctd:authoring-step <ctd:authoring-step
labelKey="publications.ui.review_properties.title" labelKey="publications.ui.review_properties.title"

View File

@ -11,7 +11,7 @@
classname="com.arsdigita.cms.contenttypes.UnPublished" classname="com.arsdigita.cms.contenttypes.UnPublished"
mode="hidden"> mode="hidden">
<ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.PublicationCreate"> <ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.UnPublishedCreate">
<ctd:authoring-step <ctd:authoring-step
labelKey="publications.ui.unPublished_properties.title" labelKey="publications.ui.unPublished_properties.title"

View File

@ -10,7 +10,7 @@
objectType="com.arsdigita.cms.contenttypes.WorkingPaper" objectType="com.arsdigita.cms.contenttypes.WorkingPaper"
classname="com.arsdigita.cms.contenttypes.WorkingPaper"> classname="com.arsdigita.cms.contenttypes.WorkingPaper">
<ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.PublicationCreate"> <ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.UnPublishedCreate">
<ctd:authoring-step <ctd:authoring-step
labelKey="publications.ui.workingPaper_properties.title" labelKey="publications.ui.workingPaper_properties.title"

View File

@ -19,10 +19,13 @@
*/ */
package com.arsdigita.cms.contenttypes; package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ExtraXMLGenerator;
import com.arsdigita.cms.contenttypes.ui.ArticleInCollectedVolumeExtraXmlGenerator;
import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* *
@ -113,7 +116,8 @@ public class ArticleInCollectedVolume extends Publication {
// return (CollectedVolume)DomainObjectFactory.newInstance(dobj); // return (CollectedVolume)DomainObjectFactory.newInstance(dobj);
// } // }
final CollectedVolumeBundle bundle = getArticleInCollectedVolumeBundle().getCollectedVolume(); final CollectedVolumeBundle bundle = getArticleInCollectedVolumeBundle().
getCollectedVolume();
if (bundle == null) { if (bundle == null) {
return null; return null;
@ -123,7 +127,8 @@ public class ArticleInCollectedVolume extends Publication {
} }
public CollectedVolume getCollectedVolume(final String language) { public CollectedVolume getCollectedVolume(final String language) {
final CollectedVolumeBundle bundle = getArticleInCollectedVolumeBundle().getCollectedVolume(); final CollectedVolumeBundle bundle = getArticleInCollectedVolumeBundle().
getCollectedVolume();
if (bundle == null) { if (bundle == null) {
return null; return null;
@ -150,4 +155,20 @@ public class ArticleInCollectedVolume extends Publication {
getArticleInCollectedVolumeBundle().setCollectedVolume(collectedVolume); getArticleInCollectedVolumeBundle().setCollectedVolume(collectedVolume);
} }
@Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.
getExtraListXMLGenerators();
generators.add(new ArticleInCollectedVolumeExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.
getExtraListXMLGenerators();
generators.add(new ArticleInCollectedVolumeExtraXmlGenerator());
return generators;
}
} }

View File

@ -19,14 +19,14 @@
*/ */
package com.arsdigita.cms.contenttypes; 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.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import com.arsdigita.util.Assert;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* *
@ -168,4 +168,20 @@ public class ArticleInJournal extends Publication {
getArticleInJournalBundle().setJournal(journal); getArticleInJournalBundle().setJournal(journal);
} }
@Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.
getExtraListXMLGenerators();
generators.add(new ArticleInJournalExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.
getExtraListXMLGenerators();
generators.add(new ArticleInJournalExtraXmlGenerator());
return generators;
}
} }

View File

@ -19,10 +19,13 @@
*/ */
package com.arsdigita.cms.contenttypes; 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.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* A collected volume which consists of some {@link ArticleInCollectedVolume} * A collected volume which consists of some {@link ArticleInCollectedVolume}
@ -95,4 +98,18 @@ public class CollectedVolume extends PublicationWithPublisher {
public boolean hasArticles() { public boolean hasArticles() {
return !this.getArticles().isEmpty(); return !this.getArticles().isEmpty();
} }
@Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators();
generators.add(new CollectedVolumeExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators();
generators.add(new CollectedVolumeExtraXmlGenerator());
return generators;
}
} }

View File

@ -19,13 +19,13 @@
*/ */
package com.arsdigita.cms.contenttypes; 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.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import com.arsdigita.util.Assert;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
/** /**
@ -62,6 +62,10 @@ public class Expertise extends Publication {
super(type); super(type);
} }
public ExpertiseBundle getExpertiseBundle() {
return (ExpertiseBundle) getContentBundle();
}
public String getPlace() { public String getPlace() {
return (String) get(PLACE); return (String) get(PLACE);
} }
@ -71,25 +75,32 @@ public class Expertise extends Publication {
} }
public GenericOrganizationalUnit getOrganization() { public GenericOrganizationalUnit getOrganization() {
DataCollection collection; /*DataCollection collection;
collection = (DataCollection) get(ORGANIZATION); collection = (DataCollection) get(ORGANIZATION);
if (0 == collection.size()) { if (0 == collection.size()) {
return null; return null;
} else { } else {
DataObject dobj; DataObject dobj;
collection.next(); collection.next();
dobj = collection.getDataObject(); dobj = collection.getDataObject();
collection.close(); 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) { public void setOrganization(final GenericOrganizationalUnit orga) {
GenericOrganizationalUnit oldOrga; /*GenericOrganizationalUnit oldOrga;
oldOrga = getOrganization(); oldOrga = getOrganization();
if (oldOrga != null) { if (oldOrga != null) {
@ -101,19 +112,21 @@ public class Expertise extends Publication {
DataObject link = add(ORGANIZATION, orga); DataObject link = add(ORGANIZATION, orga);
link.set("orgaOrder", 1); link.set("orgaOrder", 1);
link.save(); link.save();
} }*/
getExpertiseBundle().setOrganization(orga);
} }
public Integer getNumberOfPages() { public Integer getNumberOfPages() {
return (Integer) get(NUMBER_OF_PAGES); return (Integer) get(NUMBER_OF_PAGES);
} }
public void setNumberOfPages(Integer numberOfPages) { public void setNumberOfPages(final Integer numberOfPages) {
set(NUMBER_OF_PAGES, numberOfPages); set(NUMBER_OF_PAGES, numberOfPages);
} }
public GenericOrganizationalUnit getOrderer() { public GenericOrganizationalUnit getOrderer() {
DataCollection collection; /*DataCollection collection;
collection = (DataCollection) get(ORDERER); collection = (DataCollection) get(ORDERER);
@ -126,12 +139,19 @@ public class Expertise extends Publication {
dobj = collection.getDataObject(); dobj = collection.getDataObject();
collection.close(); collection.close();
return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj); return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(
} dobj);
}*/
return (GenericOrganizationalUnit) getExpertiseBundle().getOrderer().getPrimaryInstance();
} }
public void setOrderer(GenericOrganizationalUnit orderer) { public GenericOrganizationalUnit getOrderer(final String language) {
GenericOrganizationalUnit oldOrga; return (GenericOrganizationalUnit) getExpertiseBundle().getOrderer().getInstance(language);
}
public void setOrderer(final GenericOrganizationalUnit orderer) {
/*GenericOrganizationalUnit oldOrga;
oldOrga = getOrganization(); oldOrga = getOrganization();
if (oldOrga != null) { if (oldOrga != null) {
@ -143,6 +163,24 @@ public class Expertise extends Publication {
DataObject link = add(ORDERER, orderer); DataObject link = add(ORDERER, orderer);
link.set("ordererOrder", 1); link.set("ordererOrder", 1);
link.save(); link.save();
} }*/
getExpertiseBundle().setOrderer(orderer);
}
@Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.
getExtraListXMLGenerators();
generators.add(new ExpertiseExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.
getExtraListXMLGenerators();
generators.add(new ExpertiseExtraXmlGenerator());
return generators;
} }
} }

View File

@ -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();
}
}
}

View File

@ -19,13 +19,13 @@
*/ */
package com.arsdigita.cms.contenttypes; 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.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import com.arsdigita.util.Assert;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* *
@ -82,21 +82,22 @@ public class InProceedings extends Publication {
public Proceedings getProceedings() { public Proceedings getProceedings() {
/*DataCollection collection; /*DataCollection collection;
collection = (DataCollection) get(PROCEEDINGS); collection = (DataCollection) get(PROCEEDINGS);
if (collection.size() == 0) { if (collection.size() == 0) {
return null; return null;
} else { } else {
DataObject dobj; DataObject dobj;
collection.next(); collection.next();
dobj = collection.getDataObject(); dobj = collection.getDataObject();
collection.close(); collection.close();
return (Proceedings) DomainObjectFactory.newInstance(dobj); return (Proceedings) DomainObjectFactory.newInstance(dobj);
}*/ }*/
final ProceedingsBundle bundle = getInProceedingsBundle().getProceedings(); final ProceedingsBundle bundle =
getInProceedingsBundle().getProceedings();
if (bundle == null) { if (bundle == null) {
return null; return null;
@ -106,7 +107,8 @@ public class InProceedings extends Publication {
} }
public Proceedings getProceedings(final String language) { public Proceedings getProceedings(final String language) {
final ProceedingsBundle bundle = getInProceedingsBundle().getProceedings(); final ProceedingsBundle bundle =
getInProceedingsBundle().getProceedings();
if (bundle == null) { if (bundle == null) {
return null; return null;
@ -118,20 +120,34 @@ public class InProceedings extends Publication {
public void setProceedings(final Proceedings proceedings) { public void setProceedings(final Proceedings proceedings) {
/*Proceedings oldProceedings; /*Proceedings oldProceedings;
oldProceedings = getProceedings(); oldProceedings = getProceedings();
if (oldProceedings != null) { if (oldProceedings != null) {
remove(PROCEEDINGS, oldProceedings); remove(PROCEEDINGS, oldProceedings);
} }
if (proceedings != null) { if (proceedings != null) {
Assert.exists(proceedings, Proceedings.class); Assert.exists(proceedings, Proceedings.class);
DataObject link = add(PROCEEDINGS, proceedings); DataObject link = add(PROCEEDINGS, proceedings);
link.set(Proceedings.PAPER_ORDER, link.set(Proceedings.PAPER_ORDER,
Integer.valueOf((int) proceedings.getPapers().size())); Integer.valueOf((int) proceedings.getPapers().size()));
link.save(); link.save();
}*/ }*/
getInProceedingsBundle().setProceedings(proceedings); getInProceedingsBundle().setProceedings(proceedings);
}
@Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators();
generators.add(new InProceedingsExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.
getExtraListXMLGenerators();
generators.add(new InProceedingsExtraXmlGenerator());
return generators;
} }
} }

View File

@ -19,14 +19,14 @@
*/ */
package com.arsdigita.cms.contenttypes; 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.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import com.arsdigita.util.Assert;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* *
@ -52,22 +52,26 @@ public class InternetArticle extends Publication {
this(BASE_DATA_OBJECT_TYPE); 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)); this(new OID(BASE_DATA_OBJECT_TYPE, id));
} }
public InternetArticle(OID oid) throws DataObjectNotFoundException { public InternetArticle(final OID oid) throws DataObjectNotFoundException {
super(oid); super(oid);
} }
public InternetArticle(DataObject dataObject) { public InternetArticle(final DataObject dataObject) {
super(dataObject); super(dataObject);
} }
public InternetArticle(String type) { public InternetArticle(final String type) {
super(type); super(type);
} }
public InternetArticleBundle getInternetArticleBundle() {
return (InternetArticleBundle) getContentBundle();
}
public String getPlace() { public String getPlace() {
return (String) get(PLACE); return (String) get(PLACE);
} }
@ -77,7 +81,7 @@ public class InternetArticle extends Publication {
} }
public GenericOrganizationalUnit getOrganization() { public GenericOrganizationalUnit getOrganization() {
DataCollection collection; /*DataCollection collection;
collection = (DataCollection) get(ORGANIZATION); collection = (DataCollection) get(ORGANIZATION);
@ -91,11 +95,17 @@ public class InternetArticle extends Publication {
collection.close(); collection.close();
return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj); return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj);
} }*/
return (GenericOrganizationalUnit) getInternetArticleBundle().getOrganization().getPrimaryInstance();
} }
public void setOrganization(GenericOrganizationalUnit orga) { public GenericOrganizationalUnit getOrganization(final String language) {
GenericOrganizationalUnit oldOrga; return (GenericOrganizationalUnit) getInternetArticleBundle().getOrganization().getInstance(language);
}
public void setOrganization(final GenericOrganizationalUnit orga) {
/*GenericOrganizationalUnit oldOrga;
oldOrga = getOrganization(); oldOrga = getOrganization();
if(oldOrga != null) { if(oldOrga != null) {
@ -107,8 +117,9 @@ public class InternetArticle extends Publication {
DataObject link = add(ORGANIZATION, orga); DataObject link = add(ORGANIZATION, orga);
link.set("orgaOrder", 1); link.set("orgaOrder", 1);
link.save(); link.save();
} }*/
getInternetArticleBundle().setOrganization(orga);
} }
public String getNumber() { public String getNumber() {
@ -182,4 +193,18 @@ public class InternetArticle extends Publication {
public void setDoi(final String doi) { public void setDoi(final String doi) {
set(DOI, doi); set(DOI, doi);
} }
@Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators();
generators.add(new InternetArticleExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators();
generators.add(new InternetArticleExtraXmlGenerator());
return generators;
}
} }

View File

@ -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();
}
}
}

View File

@ -20,10 +20,13 @@
package com.arsdigita.cms.contenttypes; package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentPage; 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.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* *
@ -113,4 +116,18 @@ public class Journal extends ContentPage {
public boolean hasArticles() { public boolean hasArticles() {
return !this.getArticles().isEmpty(); return !this.getArticles().isEmpty();
} }
@Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators();
generators.add(new JournalExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators();
generators.add(new JournalExtraXmlGenerator());
return generators;
}
} }

View File

@ -19,6 +19,8 @@
*/ */
package com.arsdigita.cms.contenttypes; 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.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataCollection;
@ -27,6 +29,7 @@ import com.arsdigita.persistence.OID;
import com.arsdigita.util.Assert; import com.arsdigita.util.Assert;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* Content type of proceedings. Provides attributes for storing the data * Content type of proceedings. Provides attributes for storing the data
@ -186,4 +189,18 @@ public class Proceedings extends PublicationWithPublisher {
public boolean hasPapers() { public boolean hasPapers() {
return !this.getPapers().isEmpty(); return !this.getPapers().isEmpty();
} }
@Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators();
generators.add(new ProceedingsExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators();
generators.add(new ProceedingsExtraXmlGenerator());
return generators;
}
} }

View File

@ -21,11 +21,10 @@ package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentPage; import com.arsdigita.cms.ContentPage;
import com.arsdigita.cms.ExtraXMLGenerator; import com.arsdigita.cms.ExtraXMLGenerator;
import com.arsdigita.cms.contenttypes.ui.PublicationExtraXmlGenerator;
import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import com.arsdigita.util.Assert;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
@ -335,7 +334,14 @@ public class Publication extends ContentPage {
@Override @Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() { public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators(); final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators();
generators.add(new SciPublicationExtraXmlGenerator()); generators.add(new PublicationExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators();
generators.add(new PublicationExtraXmlGenerator());
return generators; return generators;
} }

View File

@ -19,10 +19,13 @@
*/ */
package com.arsdigita.cms.contenttypes; 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.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
/** /**
@ -198,4 +201,18 @@ public class PublicationWithPublisher extends Publication {
getPublicationWithPublisherBundle().setPublisher(publisher); getPublicationWithPublisherBundle().setPublisher(publisher);
} }
@Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators();
generators.add(new PublicationWithPublisherExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators();
generators.add(new PublicationWithPublisherExtraXmlGenerator());
return generators;
}
} }

View File

@ -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<PublicationFormat> 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
}
}

View File

@ -19,17 +19,18 @@
*/ */
package com.arsdigita.cms.contenttypes; 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.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import com.arsdigita.util.Assert;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* *
* @author Jens Pelzetter * @author Jens Pelzetter
* @version $Id$
*/ */
public abstract class UnPublished extends Publication { public abstract class UnPublished extends Publication {
@ -60,6 +61,10 @@ public abstract class UnPublished extends Publication {
super(type); super(type);
} }
public UnPublishedBundle getUnPublishedBundle() {
return (UnPublishedBundle) getContentBundle();
}
public String getPlace() { public String getPlace() {
return (String) get(PLACE); return (String) get(PLACE);
} }
@ -69,39 +74,47 @@ public abstract class UnPublished extends Publication {
} }
public GenericOrganizationalUnit getOrganization() { public GenericOrganizationalUnit getOrganization() {
DataCollection collection; /* DataCollection collection;
collection = (DataCollection) get(ORGANIZATION); collection = (DataCollection) get(ORGANIZATION);
if (0 == collection.size()) { if (0 == collection.size()) {
return null; return null;
} else { } else {
DataObject dobj; DataObject dobj;
collection.next(); collection.next();
dobj = collection.getDataObject(); dobj = collection.getDataObject();
collection.close(); collection.close();
return (GenericOrganizationalUnit) DomainObjectFactory.newInstance( return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(
dobj); dobj);
} }*/
return (GenericOrganizationalUnit) getUnPublishedBundle().
getOrganization().getPrimaryInstance();
}
public GenericOrganizationalUnit getOrganization(final String language) {
return (GenericOrganizationalUnit) getUnPublishedBundle().
getOrganization().getInstance(language);
} }
public void setOrganization(final GenericOrganizationalUnit orga) { public void setOrganization(final GenericOrganizationalUnit orga) {
GenericOrganizationalUnit oldOrga; /*GenericOrganizationalUnit oldOrga;
oldOrga = getOrganization(); oldOrga = getOrganization();
if (oldOrga != null) { if (oldOrga != null) {
remove(ORGANIZATION, oldOrga); remove(ORGANIZATION, oldOrga);
} }
if (null != orga) { if (null != orga) {
Assert.exists(orga, GenericOrganizationalUnit.class); Assert.exists(orga, GenericOrganizationalUnit.class);
DataObject link = add(ORGANIZATION, orga); DataObject link = add(ORGANIZATION, orga);
link.set("orgaOrder", 1); link.set("orgaOrder", 1);
link.save(); link.save();
} }*/
getUnPublishedBundle().setOrganization(orga);
} }
public String getNumber() { public String getNumber() {
@ -119,4 +132,18 @@ public abstract class UnPublished extends Publication {
public void setNumberOfPages(Integer numberOfPages) { public void setNumberOfPages(Integer numberOfPages) {
set(NUMBER_OF_PAGES, numberOfPages); set(NUMBER_OF_PAGES, numberOfPages);
} }
@Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators();
generators.add(new UnPublishedExtraXmlGenerator());
return generators;
}
@Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators();
generators.add(new UnPublishedExtraXmlGenerator());
return generators;
}
} }

View File

@ -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();
}
}
}

View File

@ -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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -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<PublicationFormat> 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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}
}