From 3669e85d1171d026ddbecdb0023738fcf88eb2fc Mon Sep 17 00:00:00 2001 From: jensp Date: Sun, 5 Jun 2011 19:56:02 +0000 Subject: [PATCH] - Erster Teil des neuen Module ccm-sci-types-organizationwithpublications git-svn-id: https://svn.libreccm.org/ccm/trunk@952 8810af33-2d31-482b-a856-94f89814c4df --- .../src/com/arsdigita/cms/ContentItem.java | 23 ++ .../arsdigita/persistence/DataObjectImpl.java | 147 +++++---- .../persistence/metadata/ObjectType.java | 95 +++--- .../london/util/cmd/ReloadAuthoringSteps.java | 14 +- .../SciOrganizationPublicationLink.pdl | 30 -- .../SciOrganizationPublication.xml | 9 - ...ci-assets-organizationpublicationlink.load | 17 -- ...tedPublicationsLinkToPublicationAssoc.java | 163 ---------- .../PublicationSciOrganizationCollection.java | 43 --- .../SciOrganizationPublicationCollection.java | 43 --- ...SciOrganizationPublicationInitializer.java | 131 --------- .../SciOrganizationPublicationLoader.java | 35 --- .../ui/PublicationSciOrganizationAddForm.java | 88 ------ .../ui/PublicationSciOrganizationStep.java | 61 ---- .../ui/PublicationSciOrganizationTable.java | 267 ----------------- .../ui/SciOrganizationPublicationAddForm.java | 86 ------ ...rganizationPublicationResources.properties | 5 - ...nizationPublicationResources_de.properties | 5 - .../ui/SciOrganizationPublicationStep.java | 60 ---- .../ui/SciOrganizationPublicationTable.java | 278 ------------------ ...ricOrganizationalUnitWithPublications.java | 78 ----- .../PublicationWithOrganization.java | 75 ----- .../SciPublicationComparator.java | 17 -- .../arsdigita/cms/contenttypes/SciProject.xml | 2 +- .../cms/contenttypes/SciDepartmentLoader.java | 2 +- ...DepartmentPublicationLinkPropertyForm.java | 43 --- .../ui/SciDepartmentPublicationsStep.java | 54 ---- ...SciProjectPublicationLinkPropertyForm.java | 41 --- .../ui/SciProjectPublicationsStep.java | 55 ---- .../application.xml | 7 +- .../postgres-create.sql | 0 ...-types-organizationwithpublications.config | 0 ...ci-types-organizationwithpublications.load | 27 ++ .../SciDepartmentWithPublications.java | 86 +++--- .../SciOrganizationWithPublications.java | 74 +++-- ...SciOrganizationWithPublicationsConfig.java | 0 ...ithPublicationsConfig_parameter.properties | 0 .../SciProjectWithPublications.java | 52 ++-- .../SciPublicationTitleComparator.java | 43 +++ .../contenttypes/ui/PublicationXmlHelper.java | 0 .../SciDepartmentWithPublicationsPanel.java | 50 ++-- ...tionWithPublicationsGlobalizationUtil.java | 7 +- .../SciOrganizationWithPublicationsPanel.java | 161 ++++------ ...zationWithPublicationsResources.properties | 35 +++ ...ionWithPublicationsResources_de.properties | 35 +++ .../ui/SciProjectWithPublicationsPanel.java | 46 ++- 46 files changed, 557 insertions(+), 2033 deletions(-) delete mode 100644 ccm-sci-assets-organizationpublicationlink/pdl/com/arsdigita/cms/contentassets/SciOrganizationPublicationLink.pdl delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contentassets/SciOrganizationPublication.xml delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/ccm-sci-assets-organizationpublicationlink.load delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ConvertRelatedPublicationsLinkToPublicationAssoc.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/PublicationSciOrganizationCollection.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationCollection.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationInitializer.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationLoader.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationAddForm.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationStep.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationTable.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationAddForm.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationResources.properties delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationResources_de.properties delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationStep.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationTable.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitWithPublications.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/PublicationWithOrganization.java delete mode 100644 ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciPublicationComparator.java delete mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationLinkPropertyForm.java delete mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationsStep.java delete mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPublicationLinkPropertyForm.java delete mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPublicationsStep.java rename {ccm-sci-assets-organizationpublicationlink => ccm-sci-types-organizationwithpublications}/application.xml (79%) rename {ccm-sci-assets-organizationpublicationlink/sql/ccm-sci-assets-organizationpublicationlink => ccm-sci-types-organizationwithpublications/sql/ccm-sci-types-organizationwithpublications}/postgres-create.sql (100%) rename ccm-sci-assets-organizationpublicationlink/src/ccm-sci-assets-organizationpublicationlink.config => ccm-sci-types-organizationwithpublications/src/ccm-sci-types-organizationwithpublications.config (100%) create mode 100644 ccm-sci-types-organizationwithpublications/src/ccm-sci-types-organizationwithpublications.load rename {ccm-sci-assets-organizationpublicationlink => ccm-sci-types-organizationwithpublications}/src/com/arsdigita/cms/contenttypes/SciDepartmentWithPublications.java (74%) rename {ccm-sci-assets-organizationpublicationlink => ccm-sci-types-organizationwithpublications}/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublications.java (69%) rename {ccm-sci-assets-organizationpublicationlink => ccm-sci-types-organizationwithpublications}/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublicationsConfig.java (100%) rename {ccm-sci-assets-organizationpublicationlink => ccm-sci-types-organizationwithpublications}/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublicationsConfig_parameter.properties (100%) rename {ccm-sci-assets-organizationpublicationlink => ccm-sci-types-organizationwithpublications}/src/com/arsdigita/cms/contenttypes/SciProjectWithPublications.java (75%) create mode 100644 ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciPublicationTitleComparator.java rename {ccm-sci-assets-organizationpublicationlink => ccm-sci-types-organizationwithpublications}/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java (100%) rename ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentsWithPublicationsPanel.java => ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentWithPublicationsPanel.java (80%) rename ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationGlobalizationUtil.java => ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsGlobalizationUtil.java (82%) rename {ccm-sci-assets-organizationpublicationlink => ccm-sci-types-organizationwithpublications}/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsPanel.java (59%) create mode 100644 ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsResources.properties create mode 100644 ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsResources_de.properties rename {ccm-sci-assets-organizationpublicationlink => ccm-sci-types-organizationwithpublications}/src/com/arsdigita/cms/contenttypes/ui/SciProjectWithPublicationsPanel.java (82%) diff --git a/ccm-cms/src/com/arsdigita/cms/ContentItem.java b/ccm-cms/src/com/arsdigita/cms/ContentItem.java index 7ea2c5c81..964df7614 100755 --- a/ccm-cms/src/com/arsdigita/cms/ContentItem.java +++ b/ccm-cms/src/com/arsdigita/cms/ContentItem.java @@ -400,6 +400,29 @@ public class ContentItem extends VersionedACSObject implements CustomCopy { super.set(key, value); } + /** + * Public add for use by metadata forms. + * + * @param propertyName + * @param dobj + * @return + */ + @Override + public DataObject add(String propertyName, DomainObject dobj) { + return super.add(propertyName, dobj); + } + + /** + * Public remove for use by metadata forms + * + * @param propertyName + * @param dobj + */ + @Override + public void remove(String propertyName, DomainObject dobj) { + super.remove(propertyName, dobj); + } + /** * For new content items, sets the associated content type if it * has not been already set. diff --git a/ccm-core/src/com/arsdigita/persistence/DataObjectImpl.java b/ccm-core/src/com/arsdigita/persistence/DataObjectImpl.java index b8cbd964b..089a29d98 100755 --- a/ccm-core/src/com/arsdigita/persistence/DataObjectImpl.java +++ b/ccm-core/src/com/arsdigita/persistence/DataObjectImpl.java @@ -43,7 +43,6 @@ import org.apache.log4j.Logger; class DataObjectImpl implements DataObject { final static Logger s_log = Logger.getLogger(DataObjectImpl.class); - private Session m_ssn; private OID m_oid; private List m_observers = new ArrayList(); @@ -53,10 +52,9 @@ class DataObjectImpl implements DataObject { private boolean m_valid = true; // originating transaction has terminated private boolean m_transactionDone = false; - // package-scoped, written and read by Session PropertyMap p_pMap; - // package-scoped, read/written by Session + // package-scoped, read/written by Session com.redhat.persistence.metadata.ObjectType p_objectType; private final class ObserverEntry { @@ -85,7 +83,7 @@ class DataObjectImpl implements DataObject { // unschedule event from others if (isWaiting(event)) { for (Iterator it = m_waiting.entrySet().iterator(); - it.hasNext(); ) { + it.hasNext();) { Map.Entry me = (Map.Entry) it.next(); DataEvent value = (DataEvent) me.getValue(); if (value.equals(event)) { @@ -100,7 +98,9 @@ class DataObjectImpl implements DataObject { } public void scheduleEvent(DataEvent now, DataEvent waiting) { - if (!isFiring(waiting)) { m_waiting.put(now, waiting); } + if (!isFiring(waiting)) { + m_waiting.put(now, waiting); + } } public DataEvent clearFiring(DataEvent event) { @@ -124,7 +124,6 @@ class DataObjectImpl implements DataObject { public String toString() { return "Observer: " + m_observer; } - } DataObjectImpl(ObjectType type) { @@ -143,9 +142,9 @@ class DataObjectImpl implements DataObject { // disconnected data objects should use the session of the current // thread if (isDisconnected()) { - throw new IllegalStateException - ("There was an error in disconnected object implementation. " - + "Disconnected data object can not access session."); + throw new IllegalStateException( + "There was an error in disconnected object implementation. " + + "Disconnected data object can not access session."); } // this checks that nondisconnected objects are not being used @@ -156,10 +155,10 @@ class DataObjectImpl implements DataObject { && m_ssn != null && SessionManager.getSession() != null && m_ssn != SessionManager.getSession().getProtoSession()) { - throw new PersistenceException - ("This data object: (" + this + ") is being accessed from " - + "another thread before its originating transaction has " - + "terminated."); + throw new PersistenceException("This data object: (" + this + + ") is being accessed from " + + "another thread before its originating transaction has " + + "terminated."); } return m_ssn; @@ -188,13 +187,26 @@ class DataObjectImpl implements DataObject { validate(); Property prop = getObjectType().getProperty(property); if (prop == null) { - throw new PersistenceException - ("no such property: " + property + " for " + this); + StringBuilder builder = new StringBuilder(); + Iterator properties = getObjectType().getProperties(); + while (properties.hasNext()) { + if (builder.length() > 0) { + builder.append(", "); + } + + builder.append(((Property) properties.next()).getName()); + } + + throw new PersistenceException(String.format( + "no such property: %s for %s. Available properties: %s", + property.toString(), + this.toString(), + builder.toString())); } if (prop.isCollection()) { if (isDisconnected()) { - return new DataAssociationImpl - (SessionManager.getSession(), this, prop); + return new DataAssociationImpl(SessionManager.getSession(), this, + prop); } else { return new DataAssociationImpl(getSession(), this, prop); } @@ -222,8 +234,8 @@ class DataObjectImpl implements DataObject { DataObjectImpl dobj = (DataObjectImpl) obj; dobj.disconnect(); if (!dobj.isValid()) { - throw new IllegalStateException - ("got invalid data object from session: " + obj); + throw new IllegalStateException("got invalid data object from session: " + + obj); } } m_disconnect.put(prop, obj); @@ -244,10 +256,14 @@ class DataObjectImpl implements DataObject { } private void doDisconnect() { - if (m_disconnect != null) { return; } + if (m_disconnect != null) { + return; + } m_disconnect = new HashMap(); // access the session directly as part of disconnection - if (m_ssn.isDeleted(this)) { return; } + if (m_ssn.isDeleted(this)) { + return; + } if (!m_manualDisconnect) { if (s_log.isDebugEnabled()) { s_log.debug("autodisconnect: " + getOID(), new Throwable()); @@ -255,10 +271,11 @@ class DataObjectImpl implements DataObject { } com.redhat.persistence.Session ssn = - SessionManager.getSession().getProtoSession(); + SessionManager.getSession(). + getProtoSession(); for (Iterator it = getObjectType().getProperties(); - it.hasNext(); ) { + it.hasNext();) { Property p = (Property) it.next(); if (!p.isCollection() && !p.isKeyProperty() @@ -274,12 +291,14 @@ class DataObjectImpl implements DataObject { public void set(String property, Object value) { validateWrite(); // all entry points for empty strings need to be converted to null - if ("".equals(value)) { value = null; } + if ("".equals(value)) { + value = null; + } try { Property prop = getObjectType().getProperty(property); if (prop == null) { - throw new PersistenceException - ("no such property: " + property + " for " + this); + throw new PersistenceException("no such property: " + property + + " for " + this); } if (prop.isKeyProperty()) { m_oid.set(property, value); @@ -296,21 +315,27 @@ class DataObjectImpl implements DataObject { public boolean isNew() { validate(); - if (isDisconnected()) { return false; } + if (isDisconnected()) { + return false; + } // handle calls to isNew before key is set - return !m_oid.isInitialized() || - (getSsn().isNew(this) && !getSsn().isPersisted(this)); + return !m_oid.isInitialized() || (getSsn().isNew(this) && !getSsn(). + isPersisted(this)); } public boolean isDeleted() { validate(); - if (isDisconnected()) { return false; } + if (isDisconnected()) { + return false; + } return getSsn().isDeleted(this); } public boolean isCommitted() { validate(); - if (isDisconnected()) { return false; } + if (isDisconnected()) { + return false; + } return m_oid.isInitialized() && !getSsn().isNew(this); } @@ -319,7 +344,9 @@ class DataObjectImpl implements DataObject { } void invalidate(boolean connectedOnly, boolean error) { - if (!isValid()) { return; } + if (!isValid()) { + return; + } // access the session directly as part of disconnection if (error || (!connectedOnly && m_ssn.isModified(this))) { @@ -336,8 +363,8 @@ class DataObjectImpl implements DataObject { public void disconnect() { if (!m_oid.isInitialized()) { - throw new PersistenceException - ("can't disconnect uninitialized: " + this); + throw new PersistenceException("can't disconnect uninitialized: " + + this); } m_manualDisconnect = true; @@ -346,13 +373,17 @@ class DataObjectImpl implements DataObject { public boolean isModified() { validate(); - if (isDisconnected()) { return false; } + if (isDisconnected()) { + return false; + } return !getSsn().isFlushed(this); } public boolean isPropertyModified(String name) { validate(); - if (isDisconnected()) { return false; } + if (isDisconnected()) { + return false; + } return !getSsn().isFlushed(this, convert(name)); } @@ -369,8 +400,8 @@ class DataObjectImpl implements DataObject { private void validate() { if (!isValid()) { if (s_log.isDebugEnabled()) { - s_log.debug - ("invalid data object invalidated at: ", m_invalidStack); + s_log.debug("invalid data object invalidated at: ", + m_invalidStack); } throw new PersistenceException("invalid data object: " + this); } @@ -379,8 +410,8 @@ class DataObjectImpl implements DataObject { private void validateWrite() { validate(); if (isDisconnected()) { - throw new PersistenceException - ("can not write to disconnected data object: " + this); + throw new PersistenceException("can not write to disconnected data object: " + + this); } } @@ -398,7 +429,7 @@ class DataObjectImpl implements DataObject { public void specialize(String subtypeName) { validate(); ObjectType subtype = - getSession().getMetadataRoot().getObjectType(subtypeName); + getSession().getMetadataRoot().getObjectType(subtypeName); if (subtype == null) { throw new PersistenceException("No such type: " + subtypeName); @@ -442,9 +473,10 @@ class DataObjectImpl implements DataObject { private void assertFlushed() { // m_ssn.assertFlushed(this) doesn't work because of '~' properties for (Iterator it = getObjectType().getProperties(); - it.hasNext(); ) { + it.hasNext();) { Property p = (Property) it.next(); - s_log.debug(String.format("Asserting that property '%s' is flushed...", p.getName())); + s_log.debug(String.format( + "Asserting that property '%s' is flushed...", p.getName())); if (!getSsn().isFlushed(this, C.prop(m_ssn.getRoot(), p))) { // use m_ssn to generate the exception getSsn().assertFlushed(this); @@ -460,21 +492,21 @@ class DataObjectImpl implements DataObject { ObserverEntry entry = new ObserverEntry(observer); if (!m_observers.contains(entry)) { if (m_firing != null) { - throw new IllegalStateException - ("Can't add a new observer from within another " + - "observer.\n" + - "Trying to add: " + observer + "\n" + - "Currently firing: " + m_firing + "\n" + - "Current observers: " + m_observers); + throw new IllegalStateException("Can't add a new observer from within another " + + "observer.\n" + + "Trying to add: " + observer + + "\n" + "Currently firing: " + + m_firing + "\n" + + "Current observers: " + + m_observers); } m_observers.add(entry); } } - private ObserverEntry m_firing = null; void scheduleObserver(DataEvent event) { - for (Iterator it = m_observers.iterator(); it.hasNext(); ) { + for (Iterator it = m_observers.iterator(); it.hasNext();) { ObserverEntry entry = (ObserverEntry) it.next(); DataObserver observer = entry.getObserver(); if (event instanceof AfterEvent) { @@ -488,7 +520,9 @@ class DataObjectImpl implements DataObject { ObserverEntry entry = (ObserverEntry) m_observers.get(i); final DataObserver observer = entry.getObserver(); if (entry.isFiring(event)) { - if (s_log.isDebugEnabled()) { s_log.debug("isFiring: " + event); } + if (s_log.isDebugEnabled()) { + s_log.debug("isFiring: " + event); + } continue; } @@ -510,7 +544,9 @@ class DataObjectImpl implements DataObject { // after events never delay firing if (event instanceof BeforeEvent) { DataEvent waiting = entry.clearFiring(event); - if (waiting != null) { fireObserver(waiting); } + if (waiting != null) { + fireObserver(waiting); + } } entry.setFiring(event); @@ -518,7 +554,9 @@ class DataObjectImpl implements DataObject { event.invoke(observer); DataEvent waiting = entry.clearFiring(event); - if (waiting != null) { fireObserver(waiting); } + if (waiting != null) { + fireObserver(waiting); + } } finally { entry.clearFiring(event); } @@ -549,5 +587,4 @@ class DataObjectImpl implements DataObject { public String toString() { return m_oid.toString(); } - } diff --git a/ccm-core/src/com/arsdigita/persistence/metadata/ObjectType.java b/ccm-core/src/com/arsdigita/persistence/metadata/ObjectType.java index d2805a951..4eddad177 100755 --- a/ccm-core/src/com/arsdigita/persistence/metadata/ObjectType.java +++ b/ccm-core/src/com/arsdigita/persistence/metadata/ObjectType.java @@ -24,7 +24,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; - /** * The ObjectType class is a specialized form of CompoundType that supports * inheritence. It also adds the notion of identity by allowing properties to @@ -36,59 +35,49 @@ import java.util.Iterator; */ public class ObjectType extends CompoundType { - static ObjectType - wrap(com.redhat.persistence.metadata.ObjectType type) { - if (type == null) { - return null; - } else { - return new ObjectType(type); - } + static ObjectType wrap(com.redhat.persistence.metadata.ObjectType type) { + if (type == null) { + return null; + } else { + return new ObjectType(type); + } } static Collection wrap(Collection types) { - ArrayList result = new ArrayList(types.size()); - for (Iterator it = types.iterator(); it.hasNext(); ) { - result.add - (wrap((com.redhat.persistence.metadata.ObjectType) - it.next())); - } - return result; + ArrayList result = new ArrayList(types.size()); + for (Iterator it = types.iterator(); it.hasNext();) { + result.add(wrap( + (com.redhat.persistence.metadata.ObjectType) it.next())); + } + return result; } - - private com.redhat.persistence.metadata.ObjectType m_type; - private - ObjectType(com.redhat.persistence.metadata.ObjectType type) { - super(type); + private ObjectType(com.redhat.persistence.metadata.ObjectType type) { + super(type); m_type = type; } - /** * Returns the supertype of this ObjectType or null if this is a base * type. * * @return The supertype of this ObjectType or null if this is a base. **/ - public ObjectType getSupertype() { return ObjectType.wrap(m_type.getSupertype()); } - /** * Returns the base type of this ObjectType (which may simply be the * current ObjectType). * * @return The base type of this ObjectType. **/ - public ObjectType getBasetype() { - return ObjectType.wrap(m_type.getBasetype()); + return ObjectType.wrap(m_type.getBasetype()); } - /** * Returns true if the given Property is one of the key Properties on this * ObjectType. @@ -97,7 +86,7 @@ public class ObjectType extends CompoundType { * @return true if is a key property. */ public boolean isKeyProperty(Property p) { - return m_type.isKeyProperty(p.getName()); + return m_type.isKeyProperty(p.getName()); } /** @@ -108,7 +97,7 @@ public class ObjectType extends CompoundType { * @return true if is a key property. */ public boolean isKeyProperty(String name) { - return m_type.isKeyProperty(name); + return m_type.isKeyProperty(name); } /** @@ -119,9 +108,8 @@ public class ObjectType extends CompoundType { * * @see Property **/ - public Iterator getKeyProperties() { - return Property.wrap(m_type.getKeyProperties()).iterator(); + return Property.wrap(m_type.getKeyProperties()).iterator(); } /** @@ -133,7 +121,6 @@ public class ObjectType extends CompoundType { * * @see Property **/ - public Iterator getProperties() { return Property.wrap(m_type.getProperties()).iterator(); } @@ -147,12 +134,10 @@ public class ObjectType extends CompoundType { * * @see Property **/ - public Iterator getDeclaredProperties() { return Property.wrap(m_type.getDeclaredProperties()).iterator(); } - /** * Returns true if this ObjectType contains a Property with the given * name. This includes any Properties inherited from the supertype. @@ -162,12 +147,10 @@ public class ObjectType extends CompoundType { * @return True if this ObjectType contains a Property with the given * name, false otherwise. **/ - public boolean hasProperty(String name) { - return m_type.hasProperty(name); + return m_type.hasProperty(name); } - /** * Returns true if this ObjectType directly defines a Property with the * given name. This does not any Properties inherited from the @@ -178,12 +161,10 @@ public class ObjectType extends CompoundType { * @return True if this ObjectType contains a directly defined Property * with the given name, false otherwise. **/ - public boolean hasDeclaredProperty(String name) { return m_type.hasDeclaredProperty(name); } - /** * Returns the Property contained by this ObjectType with the given name * or null if no such property exists. This includes any properties that @@ -193,12 +174,10 @@ public class ObjectType extends CompoundType { * * @return An instance of Property or null. **/ - public Property getProperty(String name) { - return Property.wrap(m_type.getProperty(name)); + return Property.wrap(m_type.getProperty(name)); } - /** * Returns the Property directly defined by this ObjectType with the given * name or null if no such property exists. This does not include @@ -208,18 +187,15 @@ public class ObjectType extends CompoundType { * * @return An instance of Property or null. **/ - public Property getDeclaredProperty(String name) { return Property.wrap(m_type.getDeclaredProperty(name)); } - /** * @see #isSubtypeOf(ObjectType) **/ - public boolean isSubtypeOf(String qualifiedName) { - return m_type.isSubtypeOf(qualifiedName); + return m_type.isSubtypeOf(qualifiedName); } /** @@ -233,12 +209,10 @@ public class ObjectType extends CompoundType { * * @return True if this ObjectType is a subtype of type. **/ - public boolean isSubtypeOf(ObjectType type) { - return m_type.isSubtypeOf(type.m_type); + return m_type.isSubtypeOf(type.m_type); } - /** * Checks if the ObjectType specified by extendedType * is a subtype of the ObjectType specified by baseType. @@ -255,35 +229,32 @@ public class ObjectType extends CompoundType { public static void verifySubtype(ObjectType baseType, ObjectType extendedType) { if (!extendedType.isSubtypeOf(baseType)) { - throw new PersistenceException - ("The object type '" + extendedType.getQualifiedName() + - "' is not a subtype of the object type '" + - baseType.getQualifiedName() + "'"); + throw new PersistenceException("The object type '" + extendedType. + getQualifiedName() + + "' is not a subtype of the object type '" + + baseType.getQualifiedName() + "'"); } } public static void verifySubtype(String baseType, String extendedType) { - verifySubtype - (MetadataRoot.getMetadataRoot().getObjectType(baseType), - MetadataRoot.getMetadataRoot().getObjectType(extendedType)); + verifySubtype(MetadataRoot.getMetadataRoot().getObjectType(baseType), + MetadataRoot.getMetadataRoot().getObjectType(extendedType)); } public static void verifySubtype(String baseType, ObjectType extendedType) { ObjectType baseObjectType = - MetadataRoot.getMetadataRoot().getObjectType(baseType); + MetadataRoot.getMetadataRoot().getObjectType(baseType); Assert.isTrue(baseObjectType != null, - "Could not find the ObjectType for the " + - "base type. The base type was: " + baseType + "."); + "Could not find the ObjectType for the " + + "base type. The base type was: " + baseType + "."); verifySubtype(baseObjectType, extendedType); } public static void verifySubtype(ObjectType baseType, String extendedType) { - verifySubtype - (baseType, - MetadataRoot.getMetadataRoot().getObjectType(extendedType)); + verifySubtype(baseType, + MetadataRoot.getMetadataRoot().getObjectType(extendedType)); } - } diff --git a/ccm-ldn-util/src/com/arsdigita/london/util/cmd/ReloadAuthoringSteps.java b/ccm-ldn-util/src/com/arsdigita/london/util/cmd/ReloadAuthoringSteps.java index 22bc2ff8d..4189c6438 100644 --- a/ccm-ldn-util/src/com/arsdigita/london/util/cmd/ReloadAuthoringSteps.java +++ b/ccm-ldn-util/src/com/arsdigita/london/util/cmd/ReloadAuthoringSteps.java @@ -1,15 +1,10 @@ package com.arsdigita.london.util.cmd; -import com.arsdigita.cms.installer.xml.XMLContentItemHandler; import com.arsdigita.cms.installer.xml.XMLContentTypeHandler; import com.arsdigita.london.util.Transaction; import com.arsdigita.packaging.Program; -import com.arsdigita.persistence.Session; -import com.arsdigita.persistence.SessionManager; -import com.arsdigita.persistence.TransactionContext; import com.arsdigita.xml.XML; import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.Options; /** * @@ -22,8 +17,6 @@ public class ReloadAuthoringSteps extends Program { "1.0.0", ""); - - } @Override @@ -57,7 +50,10 @@ public class ReloadAuthoringSteps extends Program { XML.parseResource(defToReload, handler); } }.run(); - System.out.printf("Reloaded AuthoringSteps from '%s'.", defToReload); - + System.out.printf("Reloaded AuthoringSteps from '%s'.", defToReload); + } + + public static void main(String[] args) { + new ReloadAuthoringSteps().run(args); } } diff --git a/ccm-sci-assets-organizationpublicationlink/pdl/com/arsdigita/cms/contentassets/SciOrganizationPublicationLink.pdl b/ccm-sci-assets-organizationpublicationlink/pdl/com/arsdigita/cms/contentassets/SciOrganizationPublicationLink.pdl deleted file mode 100644 index 99688433d..000000000 --- a/ccm-sci-assets-organizationpublicationlink/pdl/com/arsdigita/cms/contentassets/SciOrganizationPublicationLink.pdl +++ /dev/null @@ -1,30 +0,0 @@ -model com.arsdigita.cms.contentassets; - -import com.arsdigita.kernel.ACSObject; -import com.arsdigita.cms.*; -import com.arsdigita.cms.contenttypes.Publication; -import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; - -association { - GenericOrganizationalUnit[0..n] organizations = join ct_publications.publication_id - to cms_organization_publication_map.publication_id, - join cms_organization_publication_map.organization_id - to cms_organizationalunits.organizationalunit_id; - - Publication[0..n] publications = join cms_organizationalunits.organizationalunit_id - to cms_organization_publication_map.organization_id, - join cms_organization_publication_map.publication_id - to ct_publications.publication_id; -} - -query getIdsOfPublicationsOfSciOrganization { - BigDecimal publicationId; - - do { - select cms_organization_publication_map.publication_id - from cms_organization_publication_map - where cms_organization_publication_map.organization_id = :organization - } map { - publicationId = cms_organization_publication_map.publication_id; - } -} \ No newline at end of file diff --git a/ccm-sci-assets-organizationpublicationlink/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contentassets/SciOrganizationPublication.xml b/ccm-sci-assets-organizationpublicationlink/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contentassets/SciOrganizationPublication.xml deleted file mode 100644 index a8d6c5b2b..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contentassets/SciOrganizationPublication.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/ccm-sci-assets-organizationpublicationlink/src/ccm-sci-assets-organizationpublicationlink.load b/ccm-sci-assets-organizationpublicationlink/src/ccm-sci-assets-organizationpublicationlink.load deleted file mode 100644 index a75fee60c..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/ccm-sci-assets-organizationpublicationlink.load +++ /dev/null @@ -1,17 +0,0 @@ - - - -
-
-
- - - - - - - - - - - \ No newline at end of file diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ConvertRelatedPublicationsLinkToPublicationAssoc.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ConvertRelatedPublicationsLinkToPublicationAssoc.java deleted file mode 100644 index f38cc2d5f..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ConvertRelatedPublicationsLinkToPublicationAssoc.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.arsdigita.cms.contentassets; - -import com.arsdigita.cms.ContentItem; -import com.arsdigita.cms.ContentPage; -import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitWithPublications; -import com.arsdigita.cms.contenttypes.GenericPerson; -import com.arsdigita.cms.contenttypes.Publication; -import com.arsdigita.cms.contenttypes.SciDepartment; -import com.arsdigita.cms.contenttypes.SciMember; -import com.arsdigita.cms.dispatcher.ContentItemDispatcher; -import com.arsdigita.cms.installer.xml.ContentItemHelper; -import com.arsdigita.domain.DomainObjectFactory; -import com.arsdigita.persistence.DataCollection; -import com.arsdigita.persistence.Session; -import com.arsdigita.persistence.SessionManager; -import com.arsdigita.persistence.TransactionContext; -import java.math.BigDecimal; -import javax.sound.sampled.TargetDataLine; - -/** - * - * @author Jens Pelzetter - */ -public class ConvertRelatedPublicationsLinkToPublicationAssoc { - - public static void main(String[] args) { - final com.arsdigita.runtime.Runtime runtime = - new com.arsdigita.runtime.Runtime(); - - runtime.startup(); - - final Session session = SessionManager.getSession(); - final TransactionContext tc = session.getTransactionContext(); - - tc.beginTxn(); - try { - DataCollection data = session.retrieve( - SciDepartment.BASE_DATA_OBJECT_TYPE); - data.addOrder("title"); - - SciDepartment department; - while (data.next()) { - department = - (SciDepartment) DomainObjectFactory.newInstance(data. - getDataObject()); - - if (department.isDraftVersion()) { - - System.out.printf("Found department '%s'\n", - department.getTitle()); - - DataCollection relatedLinks = RelatedLink.getRelatedLinks( - department, "SciDepartmentPublications"); - - System.out.printf( - "Found %d related links from department '%s' with link list name '%s':\n", - relatedLinks.size(), - department.getTitle(), - "SciDepartmentPublications"); - int i = 1; - while (relatedLinks.next()) { - RelatedLink relatedLink = - (RelatedLink) DomainObjectFactory. - newInstance(relatedLinks.getDataObject()); - - if (relatedLink == null) { - System.out.println( - "Failed to convert related link to domain object..."); - continue; - } - - ContentItem target = relatedLink.getTargetItem(); - Publication publication = (Publication) target; - System.out.printf( - "\tconverting related link to '%s' (%d of %d)\n", - publication.getTitle(), - i, - relatedLinks.size()); - - GenericOrganizationalUnitWithPublications orga = - new GenericOrganizationalUnitWithPublications( - department.getID()); - orga.addPublication(publication); - - relatedLink.delete(); - - i++; - } - } - } - - - DataCollection persons = session.retrieve( - GenericPerson.BASE_DATA_OBJECT_TYPE); - persons.addOrder("surname"); - persons.addOrder("givenname"); - - GenericPerson person; - while (persons.next()) { - person = - (GenericPerson) DomainObjectFactory.newInstance(persons. - getDataObject()); - - if (person.isDraftVersion()) { - System.out.printf("Found person '%s'\n", - person.getGivenName(), - person.getSurname()); - - DataCollection relatedLinks = RelatedLink.getRelatedLinks( - person, "MyPublications"); - - System.out.printf( - "Found %d related links from person '%s' '%s' with link list name '%s'\n", - relatedLinks.size(), - person.getGivenName(), - person.getSurname(), - "MyPublications"); - int i = 1; - while (relatedLinks.next()) { - RelatedLink relatedLink = - (RelatedLink) DomainObjectFactory. - newInstance(relatedLinks.getDataObject()); - - if (relatedLink == null) { - System.out.println( - "Failed to convert related link to domain object..."); - continue; - } - - ContentItem target = relatedLink.getTargetItem(); - if (target == null) { - System.out.println( - "\t Strange: Target item is null. But thats no problem, since we are only deleting this related link."); - - } else { - Publication publication = (Publication) target; - System.out.printf( - "\tDeleting obsolete related link to '%s' (%d of %d)\n", - publication.getTitle(), - i, - relatedLinks.size()); - } - relatedLink.delete(); - - i++; - } - - - } - } - - - tc.commitTxn(); - } catch (Exception ex) { - System.out.println("Exception ocurred during convert process:"); - ex.printStackTrace(System.err); - } finally { - if (tc.inTxn()) { - tc.abortTxn(); - } - } - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/PublicationSciOrganizationCollection.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/PublicationSciOrganizationCollection.java deleted file mode 100644 index bb534b646..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/PublicationSciOrganizationCollection.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contentassets; - -import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; -import com.arsdigita.domain.DomainCollection; -import com.arsdigita.domain.DomainObjectFactory; -import com.arsdigita.persistence.DataCollection; - -/** - * - * @author Jens Pelzetter - */ -public class PublicationSciOrganizationCollection extends DomainCollection { - - public PublicationSciOrganizationCollection(final DataCollection dataCollection) { - super(dataCollection); - - m_dataCollection.addOrder("title"); - } - - public GenericOrganizationalUnit getOrganization() { - return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(m_dataCollection. - getDataObject()); - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationCollection.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationCollection.java deleted file mode 100644 index 815583fdf..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationCollection.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contentassets; - -import com.arsdigita.cms.contenttypes.Publication; -import com.arsdigita.domain.DomainCollection; -import com.arsdigita.domain.DomainObjectFactory; -import com.arsdigita.persistence.DataCollection; - -/** - * - * @author Jens Pelzetter - */ -public class SciOrganizationPublicationCollection extends DomainCollection { - - public SciOrganizationPublicationCollection(final DataCollection dataCollection) { - super(dataCollection); - - m_dataCollection.addOrder("title"); - } - - public Publication getPublication() { - return (Publication) DomainObjectFactory.newInstance(m_dataCollection. - getDataObject()); - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationInitializer.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationInitializer.java deleted file mode 100644 index 697b7b292..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationInitializer.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contentassets; - -import com.arsdigita.cms.contentassets.ui.PublicationSciOrganizationStep; -import com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationStep; -import com.arsdigita.cms.contenttypes.ContentAssetTraversalHandler; -import com.arsdigita.cms.contenttypes.Publication; -import com.arsdigita.cms.contenttypes.SciDepartment; -import com.arsdigita.cms.contenttypes.SciOrganization; -import com.arsdigita.cms.contenttypes.SciProject; -import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; -import com.arsdigita.db.DbHelper; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.persistence.pdl.ManifestSource; -import com.arsdigita.persistence.pdl.NameFilter; -import com.arsdigita.runtime.CompoundInitializer; -import com.arsdigita.runtime.DomainInitEvent; -import com.arsdigita.runtime.PDLInitializer; -import com.arsdigita.runtime.RuntimeConfig; -import com.arsdigita.xml.XML; - -/** - * - * @author Jens Pelzetter - */ -public class SciOrganizationPublicationInitializer extends CompoundInitializer { - - public SciOrganizationPublicationInitializer() { - final String url = RuntimeConfig.getConfig().getJDBCURL(); - final int database = DbHelper.getDatabaseFromURL(url); - - System.err.println("Creating SciOrganizationPublicationInitializer..."); - - add(new PDLInitializer( - new ManifestSource( - "ccm-sci-assets-organizationpublicationlink.pdl.mf", - new NameFilter(DbHelper.getDatabaseSuffix(database), "pdl")))); - - System.err.println("Constructor of SciOrganizationPublicationInitializer finished..."); - } - - @Override - public void init(DomainInitEvent event) { - System.out.println("Beginning init of SciOrganizationPublicationInitializer..."); - - System.out.println("Calling super.init()"); - super.init(event); - - System.out.println("Creating traversal handler..."); - final String traversal = getTraversalXML(); - XML.parseResource(traversal, - new ContentAssetTraversalHandler(getProperty())); - - System.out.println("Registering authoring step for publications of an organization..."); - AuthoringKitWizard.registerAssetStep( - SciOrganization.BASE_DATA_OBJECT_TYPE, - SciOrganizationPublicationStep.class, - new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfOrganization", - "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"), - new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfOrganization", - "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"), - 99); - - System.out.println("Registering authoring step for publications of a department.."); - AuthoringKitWizard.registerAssetStep( - SciDepartment.BASE_DATA_OBJECT_TYPE, - SciOrganizationPublicationStep.class, - new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfDepartment", - "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"), - new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfDepartment", - "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"), - 99); - - System.out.println("Registering authoring step for publications of a project..."); - AuthoringKitWizard.registerAssetStep( - SciProject.BASE_DATA_OBJECT_TYPE, - SciOrganizationPublicationStep.class, - new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfProject", - "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"), - new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfProject", - "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"), - 1); - - System.out.println("Registering authoring step of organization of a publication..."); - AuthoringKitWizard.registerAssetStep( - Publication.BASE_DATA_OBJECT_TYPE, - PublicationSciOrganizationStep.class, - new GlobalizedMessage("sciorganizationpublication.ui.organizationsOfPublication", - "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"), - new GlobalizedMessage("ssciorganizationpublication.ui.organizationsOfPublication", - "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"), - 1); - - System.err.println("Finished init of SciOrganizationPublicationInitializer."); - } - - /** - * - * @return - */ - public String getTraversalXML() { - return "/WEB-INF/traversal-adapters/com/arsdigita/" - + "cms/contentassets/SciOrganizationPublication.xml"; - } - - /** - * - * @return - */ - public String getProperty() { - return "publications"; - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationLoader.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationLoader.java deleted file mode 100644 index e1ecce67d..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/SciOrganizationPublicationLoader.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contentassets; - -import com.arsdigita.loader.PackageLoader; -import com.arsdigita.runtime.ScriptContext; - -/** - * - * @author Jens Pelzetter - */ -public class SciOrganizationPublicationLoader extends PackageLoader { - - public void run(final ScriptContext cts) { - //Nothing to do. - } - -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationAddForm.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationAddForm.java deleted file mode 100644 index 5fa67a7ef..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationAddForm.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contentassets.ui; - -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.event.FormInitListener; -import com.arsdigita.bebop.event.FormProcessListener; -import com.arsdigita.bebop.event.FormSectionEvent; -import com.arsdigita.cms.ContentType; -import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; -import com.arsdigita.cms.contenttypes.Publication; -import com.arsdigita.cms.contenttypes.PublicationWithOrganization; -import com.arsdigita.cms.ui.ItemSearchWidget; -import com.arsdigita.cms.ui.authoring.BasicItemForm; -import java.math.BigDecimal; - -/** - * - * @author Jens Pelzetter - */ -public class PublicationSciOrganizationAddForm - extends BasicItemForm - implements FormProcessListener, - FormInitListener { - - private ItemSearchWidget itemSearch; - private final String ITEM_SEARCH = "organizations"; - - public PublicationSciOrganizationAddForm(ItemSelectionModel itemModel) { - super("OrganizationsAddForm", itemModel); - } - - @Override - public void addWidgets() { - add(new Label((String) SciOrganizationPublicationGlobalizationUtil. - globalize("sciorganization.ui.selectOrganization").localize())); - itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType. - findByAssociatedObjectType(GenericOrganizationalUnit.class. - getName())); - add(itemSearch); - } - - @Override - public void init(FormSectionEvent fse) throws FormProcessException { - PageState state = fse.getPageState(); - - setVisible(state, true); - } - - @Override - public void process(FormSectionEvent fse) throws FormProcessException { - FormData data = fse.getFormData(); - PageState state = fse.getPageState(); - Publication pub = (Publication) getItemSelectionModel(). - getSelectedObject(state); - PublicationWithOrganization publication = - new PublicationWithOrganization( - pub.getOID()); - - if (this.getSaveCancelSection().getSaveButton().isSelected(state)) { - publication.addOrganization((GenericOrganizationalUnit) data.get( - ITEM_SEARCH)); - } - - init(fse); - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationStep.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationStep.java deleted file mode 100644 index 813c2bce5..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationStep.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contentassets.ui; - -import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; -import com.arsdigita.cms.contenttypes.SciOrganization; -import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; -import com.arsdigita.cms.ui.authoring.BasicItemForm; -import com.arsdigita.cms.ui.authoring.SimpleEditStep; -import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; - -/** - * - * @author Jens Pelzetter - */ -public class PublicationSciOrganizationStep extends SimpleEditStep { - - private String ADD_ORGANIZATION_SHEET_NAME = "addOrganization"; - - public PublicationSciOrganizationStep(ItemSelectionModel itemModel, - AuthoringKitWizard parent) { - this(itemModel, parent, null); - } - - public PublicationSciOrganizationStep(ItemSelectionModel itemModel, - AuthoringKitWizard parent, - String prefix) { - super(itemModel, parent, prefix); - - BasicItemForm addOrganizationSheet = - new PublicationSciOrganizationAddForm(itemModel); - add(ADD_ORGANIZATION_SHEET_NAME, - (String) SciOrganizationPublicationGlobalizationUtil.globalize( - "sciorganizationpublication.ui.addOrganization").localize(), - new WorkflowLockedComponentAccess(addOrganizationSheet, itemModel), - addOrganizationSheet.getSaveCancelSection().getCancelButton()); - - PublicationSciOrganizationTable organizationTable = - new PublicationSciOrganizationTable( - itemModel); - setDisplayComponent(organizationTable); - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationTable.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationTable.java deleted file mode 100644 index d6b220044..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/PublicationSciOrganizationTable.java +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contentassets.ui; - -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.ControlLink; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.Link; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.event.TableActionEvent; -import com.arsdigita.bebop.event.TableActionListener; -import com.arsdigita.bebop.table.TableCellRenderer; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.bebop.table.TableModelBuilder; -import com.arsdigita.cms.CMS; -import com.arsdigita.cms.ContentSection; -import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.contentassets.PublicationSciOrganizationCollection; -import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; -import com.arsdigita.cms.contenttypes.Publication; -import com.arsdigita.cms.contenttypes.PublicationWithOrganization; -import com.arsdigita.cms.dispatcher.ItemResolver; -import com.arsdigita.cms.dispatcher.Utilities; -import com.arsdigita.dispatcher.ObjectNotFoundException; -import com.arsdigita.util.Assert; -import com.arsdigita.util.LockableImpl; -import java.math.BigDecimal; - -/** - * - * @author Jens Pelzetter - */ -public class PublicationSciOrganizationTable - extends Table - implements TableActionListener { - - private final String TABLE_COL_EDIT = "table_col_edit"; - private final String TABLE_COL_DEL = "table_col_del"; - private ItemSelectionModel itemModel; - - public PublicationSciOrganizationTable(ItemSelectionModel itemModel) { - super(); - this.itemModel = itemModel; - - setEmptyView(new Label(SciOrganizationPublicationGlobalizationUtil. - globalize("sciorganizationpublication.ui.organizations.none"))); - - TableColumnModel columnModel = getColumnModel(); - columnModel.add(new TableColumn( - 0, - SciOrganizationPublicationGlobalizationUtil.globalize( - "sciorganizationpublication.ui.organization").localize(), - TABLE_COL_EDIT)); - columnModel.add(new TableColumn( - 1, - SciOrganizationPublicationGlobalizationUtil.globalize( - "sciorganizationpublication.ui.organization.remove"). - localize(), TABLE_COL_DEL)); - - setModelBuilder(new PublicationSciOrganizationTableModelBuilder( - itemModel)); - - columnModel.get(0).setCellRenderer(new EditCellRenderer()); - columnModel.get(1).setCellRenderer(new DeleteCellRenderer()); - - addTableActionListener(this); - } - - private class PublicationSciOrganizationTableModelBuilder - extends LockableImpl - implements TableModelBuilder { - - private ItemSelectionModel itemModel; - - public PublicationSciOrganizationTableModelBuilder( - ItemSelectionModel itemModel) { - this.itemModel = itemModel; - } - - public TableModel makeModel(Table table, PageState state) { - table.getRowSelectionModel().clearSelection(state); - Publication publication = (Publication) itemModel.getSelectedObject( - state); - return new PublicationSciOrganizationTableModel(table, - state, - publication); - } - } - - private class PublicationSciOrganizationTableModel - implements TableModel { - - private Table table; - private PublicationSciOrganizationCollection organizations; - private GenericOrganizationalUnit orga; - - public PublicationSciOrganizationTableModel(Table table, - PageState state, - Publication pub) { - PublicationWithOrganization publication; - this.table = table; - publication = new PublicationWithOrganization(pub.getOID()); - organizations = publication.getOrganizations(); - } - - public int getColumnCount() { - return table.getColumnModel().size(); - } - - public boolean nextRow() { - boolean ret; - - if ((organizations != null) && organizations.next()) { - orga = organizations.getOrganization(); - ret = true; - } else { - ret = false; - } - - return ret; - } - - public Object getElementAt(int columnIndex) { - switch (columnIndex) { - case 0: - return orga.getTitle(); - case 1: - return SciOrganizationPublicationGlobalizationUtil.globalize( - "sciorganizationpublication.ui.organization.remove"). - localize(); - default: - return null; - } - } - - public Object getKeyAt(int columnIndex) { - return orga.getID(); - } - } - - private class EditCellRenderer - extends LockableImpl - implements TableCellRenderer { - - public Component getComponent(Table table, - PageState state, - Object value, - boolean isSelected, - Object key, - int row, - int column) { - com.arsdigita.cms.SecurityManager securityManager = Utilities. - getSecurityManager(state); - Publication publication = (Publication) itemModel.getSelectedObject( - state); - - boolean canEdit = securityManager.canAccess( - state.getRequest(), - com.arsdigita.cms.SecurityManager.EDIT_ITEM, - publication); - - if (canEdit) { - GenericOrganizationalUnit orga; - try { - orga = new GenericOrganizationalUnit((BigDecimal) key); - } catch (ObjectNotFoundException ex) { - return new Label(value.toString()); - } - - ContentSection section = CMS.getContext().getContentSection(); - ItemResolver resolver = section.getItemResolver(); - Link link = - new Link(value.toString(), - resolver.generateItemURL(state, - orga, - section, - orga.getVersion())); - return link; - } else { - Label label = new Label(value.toString()); - return label; - } - } - } - - private class DeleteCellRenderer - extends LockableImpl - implements TableCellRenderer { - - public Component getComponent(Table table, - PageState state, - Object value, - boolean isSelected, - Object key, - int row, - int column) { - com.arsdigita.cms.SecurityManager securityManager = Utilities. - getSecurityManager(state); - Publication publication = (Publication) itemModel.getSelectedObject( - state); - - boolean canEdit = securityManager.canAccess( - state.getRequest(), - com.arsdigita.cms.SecurityManager.DELETE_ITEM, - publication); - - if (canEdit) { - ControlLink link = new ControlLink(value.toString()); - link.setConfirmation((String) SciOrganizationPublicationGlobalizationUtil. - globalize( - "sciorganizationpublication.ui.organization.confirm.remove"). - localize()); - return link; - } else { - Label label = new Label(value.toString()); - return label; - } - } - } - - public void cellSelected(TableActionEvent event) { - PageState state = event.getPageState(); - - GenericOrganizationalUnit orga = new GenericOrganizationalUnit(new BigDecimal(event.getRowKey().toString())); - - Publication pub = (Publication) itemModel.getSelectedObject( - state); - PublicationWithOrganization publication = new PublicationWithOrganization( - pub.getOID()); - - PublicationSciOrganizationCollection organizations = publication.getOrganizations(); - - TableColumn column = getColumnModel().get(event.getColumn().intValue()); - - if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) { - - } else if(column.getHeaderKey().toString().equals(TABLE_COL_DEL)) { - Assert.exists(orga, GenericOrganizationalUnit.class); - - publication.removeOrganization(orga); - } - } - - public void headSelected(TableActionEvent event) { - //Nothing to do. - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationAddForm.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationAddForm.java deleted file mode 100644 index 5e82b8938..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationAddForm.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contentassets.ui; - -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.event.FormInitListener; -import com.arsdigita.bebop.event.FormProcessListener; -import com.arsdigita.bebop.event.FormSectionEvent; -import com.arsdigita.cms.ContentType; -import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; -import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitWithPublications; -import com.arsdigita.cms.contenttypes.Publication; -import com.arsdigita.cms.ui.ItemSearchWidget; -import com.arsdigita.cms.ui.authoring.BasicItemForm; - -/** - * - * @author Jens Pelzetter - */ -public class SciOrganizationPublicationAddForm - extends BasicItemForm - implements FormProcessListener, - FormInitListener { - - private ItemSearchWidget itemSearch; - private final String ITEM_SEARCH = "publications"; - - public SciOrganizationPublicationAddForm(ItemSelectionModel itemModel) { - super("PublicationsAddForm", itemModel); - } - - @Override - public void addWidgets() { - add(new Label((String) SciOrganizationPublicationGlobalizationUtil. - globalize("sciorganization.ui.selectPublication").localize())); - itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType. - findByAssociatedObjectType(Publication.class.getName())); - add(itemSearch); - } - - @Override - public void init(FormSectionEvent fse) throws FormProcessException { - PageState state = fse.getPageState(); - - setVisible(state, true); - } - - @Override - public void process(FormSectionEvent fse) throws FormProcessException { - FormData data = fse.getFormData(); - PageState state = fse.getPageState(); - GenericOrganizationalUnit orga = - (GenericOrganizationalUnit) getItemSelectionModel(). - getSelectedObject(state); - GenericOrganizationalUnitWithPublications organization; - organization = new GenericOrganizationalUnitWithPublications( - orga.getOID()); - - if (this.getSaveCancelSection().getSaveButton().isSelected(state)) { - organization.addPublication((Publication) data.get(ITEM_SEARCH)); - } - - init(fse); - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationResources.properties b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationResources.properties deleted file mode 100644 index 6dfeb11a6..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationResources.properties +++ /dev/null @@ -1,5 +0,0 @@ - -sciorganizationpublication.ui.publicationsOfOrganization=Publications of the organization -sciorganizationpublication.ui.publicationsOfDepartment=Publications of the department -sciorganizationpublication.ui.publicationsOfProject=Publications of the project -sciorganizationpublication.ui.organizationsOfPublication=Organizations diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationResources_de.properties b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationResources_de.properties deleted file mode 100644 index b61e66e52..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationResources_de.properties +++ /dev/null @@ -1,5 +0,0 @@ - -sciorganizationpublication.ui.publicationsOfOrganization=Publikationen der Organisation -sciorganizationpublication.ui.publicationsOfDepartment=Publikationen der Abteilung -sciorganizationpublication.ui.publicationsOfProject=Publikationen des Projektes -sciorganizationpublication.ui.organizationsOfPublication=Beteiligte Organizationen diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationStep.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationStep.java deleted file mode 100644 index a33288ad7..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationStep.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contentassets.ui; - -import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; -import com.arsdigita.cms.ui.authoring.BasicItemForm; -import com.arsdigita.cms.ui.authoring.SimpleEditStep; -import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; - -/** - * - * @author Jens Pelzetter - */ -public class SciOrganizationPublicationStep extends SimpleEditStep { - - private String ADD_PUBLICATION_SHEET_NAME = "addPublication"; - - public SciOrganizationPublicationStep(ItemSelectionModel itemModel, - AuthoringKitWizard parent) { - this(itemModel, parent, null); - } - - public SciOrganizationPublicationStep(ItemSelectionModel itemModel, - AuthoringKitWizard parent, - String prefix) { - super(itemModel, parent, prefix); - - BasicItemForm addPublicationSheet = - new SciOrganizationPublicationAddForm(itemModel); - add(ADD_PUBLICATION_SHEET_NAME, - (String) SciOrganizationPublicationGlobalizationUtil.globalize( - "sciorganizationpublication.ui.addPublication").localize(), - new WorkflowLockedComponentAccess(addPublicationSheet, itemModel), - addPublicationSheet.getSaveCancelSection().getCancelButton()); - - SciOrganizationPublicationTable publicationTable = - new SciOrganizationPublicationTable( - itemModel); - setDisplayComponent(publicationTable); - - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationTable.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationTable.java deleted file mode 100644 index bf451a0c9..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationTable.java +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contentassets.ui; - -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.ControlLink; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.Link; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.event.TableActionEvent; -import com.arsdigita.bebop.event.TableActionListener; -import com.arsdigita.bebop.table.TableCellRenderer; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.bebop.table.TableModelBuilder; -import com.arsdigita.cms.CMS; -import com.arsdigita.cms.ContentSection; -import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.contentassets.SciOrganizationPublicationCollection; -import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; -import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitWithPublications; -import com.arsdigita.cms.contenttypes.Publication; -import com.arsdigita.cms.dispatcher.ItemResolver; -import com.arsdigita.cms.dispatcher.Utilities; -import com.arsdigita.dispatcher.ObjectNotFoundException; -import com.arsdigita.persistence.DataCollection; -import com.arsdigita.util.Assert; -import com.arsdigita.util.LockableImpl; -import java.math.BigDecimal; - -/** - * - * @author Jens Pelzetter - */ -public class SciOrganizationPublicationTable - extends Table - implements TableActionListener { - - private final String TABLE_COL_EDIT = "table_col_edit"; - private final String TABLE_COL_DEL = "table_col_del"; - private ItemSelectionModel itemModel; - - public SciOrganizationPublicationTable(ItemSelectionModel itemModel) { - super(); - this.itemModel = itemModel; - - setEmptyView(new Label(SciOrganizationPublicationGlobalizationUtil. - globalize("sciorganizationpublication.ui.publications.none"))); - - TableColumnModel columnModel = getColumnModel(); - columnModel.add(new TableColumn( - 0, - SciOrganizationPublicationGlobalizationUtil.globalize( - "sciorganizationpublication.ui.publication").localize(), - TABLE_COL_EDIT)); - columnModel.add(new TableColumn( - 1, - SciOrganizationPublicationGlobalizationUtil.globalize( - "sciorganizationpublication.ui.publication.remove").localize(), - TABLE_COL_DEL)); - - setModelBuilder( - new SciOrganizationPublicationTableModelBuilder(itemModel)); - - columnModel.get(0).setCellRenderer(new EditCellRenderer()); - columnModel.get(1).setCellRenderer(new DeleteCellRenderer()); - - addTableActionListener(this); - } - - private class SciOrganizationPublicationTableModelBuilder - extends LockableImpl - implements TableModelBuilder { - - private ItemSelectionModel itemModel; - - public SciOrganizationPublicationTableModelBuilder( - ItemSelectionModel itemModel) { - this.itemModel = itemModel; - } - - @Override - public TableModel makeModel(Table table, PageState state) { - table.getRowSelectionModel().clearSelection(state); - GenericOrganizationalUnit orga = - (GenericOrganizationalUnit) itemModel. - getSelectedObject(state); - return new SciOrganizationPublicationTableModel(table, state, orga); - } - } - - private class SciOrganizationPublicationTableModel - implements TableModel { - - private Table table; - private SciOrganizationPublicationCollection publications; - private Publication publication; - - public SciOrganizationPublicationTableModel(Table table, - PageState state, - GenericOrganizationalUnit orga) { - GenericOrganizationalUnitWithPublications organization; - this.table = table; - organization = new GenericOrganizationalUnitWithPublications(orga. - getOID()); - publications = organization.getPublications(); - - } - - public int getColumnCount() { - return table.getColumnModel().size(); - } - - public boolean nextRow() { - boolean ret; - - if ((publications != null) && publications.next()) { - publication = publications.getPublication(); - ret = true; - } else { - ret = false; - } - - return ret; - } - - public Object getElementAt(int columnIndex) { - switch (columnIndex) { - case 0: - return publication.getTitle(); - case 1: - return SciOrganizationPublicationGlobalizationUtil.globalize( - "sciorganizationpublication.ui.publication.remove"). - localize(); - default: - return null; - } - } - - public Object getKeyAt(int columnIndex) { - return publication.getID(); - } - } - - private class EditCellRenderer - extends LockableImpl - implements TableCellRenderer { - - public Component getComponent(Table table, - PageState state, - Object value, - boolean isSelected, - Object key, - int row, - int column) { - com.arsdigita.cms.SecurityManager securityManager = Utilities. - getSecurityManager(state); - GenericOrganizationalUnit orga = - (GenericOrganizationalUnit) itemModel. - getSelectedObject(state); - - boolean canEdit = securityManager.canAccess( - state.getRequest(), - com.arsdigita.cms.SecurityManager.EDIT_ITEM, - orga); - - if (canEdit) { - Publication publication; - try { - publication = new Publication((BigDecimal) key); - } catch (ObjectNotFoundException ex) { - return new Label(value.toString()); - } - - ContentSection section = CMS.getContext().getContentSection(); - ItemResolver resolver = section.getItemResolver(); - Link link = new Link(value.toString(), - resolver.generateItemURL(state, - publication, - section, - publication. - getVersion())); - - return link; - } else { - Label label = new Label(value.toString()); - return label; - } - } - } - - private class DeleteCellRenderer - extends LockableImpl - implements TableCellRenderer { - - public Component getComponent(Table table, - PageState state, - Object value, - boolean isSelected, - Object key, - int row, - int column) { - com.arsdigita.cms.SecurityManager securityManager = Utilities. - getSecurityManager(state); - GenericOrganizationalUnit orga = - (GenericOrganizationalUnit) itemModel. - getSelectedObject(state); - - boolean canEdit = securityManager.canAccess( - state.getRequest(), - com.arsdigita.cms.SecurityManager.DELETE_ITEM, - orga); - - if (canEdit) { - ControlLink link = new ControlLink(value.toString()); - link.setConfirmation((String) SciOrganizationPublicationGlobalizationUtil. - globalize( - "sciorganizationpublication.ui.publication.confirm.remove"). - localize()); - return link; - } else { - Label label = new Label(value.toString()); - return label; - } - } - } - - @Override - public void cellSelected(TableActionEvent event) { - PageState state = event.getPageState(); - - Publication publication = - new Publication(new BigDecimal(event.getRowKey().toString())); - - GenericOrganizationalUnit orga = (GenericOrganizationalUnit) itemModel. - getSelectedObject(state); - GenericOrganizationalUnitWithPublications organization; - organization = - new GenericOrganizationalUnitWithPublications(orga.getOID()); - - SciOrganizationPublicationCollection publications = - organization.getPublications(); - - TableColumn column = getColumnModel().get(event.getColumn().intValue()); - - if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) { - //Nothing to do here - } else if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) { - Assert.exists(publication, Publication.class); - - organization.removePublication(publication); - } - } - - @Override - public void headSelected(TableActionEvent event) { - //Nothing to do. - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitWithPublications.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitWithPublications.java deleted file mode 100644 index aa5f9e585..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitWithPublications.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contenttypes; - -import com.arsdigita.cms.contentassets.SciOrganizationPublicationCollection; -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; - -/** - * - * @author Jens Pelzetter - */ -public class GenericOrganizationalUnitWithPublications extends GenericOrganizationalUnit { - - public static final String PUBLICATIONS = "publications"; - //public static final String BASE_DATA_OBJECT_TYPE = - // "com.arsdigita.cms.contenttypes.GenericOrganizationalUnit"; - - private GenericOrganizationalUnitWithPublications() { - this(BASE_DATA_OBJECT_TYPE); - } - - public GenericOrganizationalUnitWithPublications(final BigDecimal id) - throws DataObjectNotFoundException { - this(new OID(BASE_DATA_OBJECT_TYPE, id)); - } - - public GenericOrganizationalUnitWithPublications(final OID oid) - throws DataObjectNotFoundException { - super(oid); - } - - public GenericOrganizationalUnitWithPublications(final DataObject dobj) { - super(dobj); - } - - private GenericOrganizationalUnitWithPublications(final String type) { - super(type); - } - - public SciOrganizationPublicationCollection getPublications() { - return new SciOrganizationPublicationCollection((DataCollection) get( - PUBLICATIONS)); - } - - public void addPublication(Publication publication) { - Assert.exists(publication, Publication.class); - - add(PUBLICATIONS, publication); - } - - public void removePublication(Publication publication) { - Assert.exists(publication, Publication.class); - - remove(PUBLICATIONS, publication); - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/PublicationWithOrganization.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/PublicationWithOrganization.java deleted file mode 100644 index d4984ad4d..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/PublicationWithOrganization.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2011 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contenttypes; - -import com.arsdigita.cms.contentassets.PublicationSciOrganizationCollection; -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; - -/** - * - * @author Jens Pelzetter - */ -public class PublicationWithOrganization extends Publication { - - public static final String ORGANIZATIONS = "organizations"; - - private PublicationWithOrganization() { - this(BASE_DATA_OBJECT_TYPE); - } - - public PublicationWithOrganization(BigDecimal id) - throws DataObjectNotFoundException { - this(new OID(BASE_DATA_OBJECT_TYPE, id)); - } - - public PublicationWithOrganization(OID oid) - throws DataObjectNotFoundException { - super(oid); - } - - public PublicationWithOrganization(DataObject dobj) { - super(dobj); - } - - private PublicationWithOrganization(String type) { - super(type); - } - - public PublicationSciOrganizationCollection getOrganizations() { - return new PublicationSciOrganizationCollection((DataCollection) get(ORGANIZATIONS)); - } - - public void addOrganization(GenericOrganizationalUnit orga) { - Assert.exists(orga, GenericOrganizationalUnit.class); - - add(ORGANIZATIONS, orga); - } - - public void removeOrganization(GenericOrganizationalUnit orga) { - Assert.exists(orga, GenericOrganizationalUnit.class); - - remove(ORGANIZATIONS, orga); - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciPublicationComparator.java b/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciPublicationComparator.java deleted file mode 100644 index 6f9c64209..000000000 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciPublicationComparator.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.arsdigita.cms.contenttypes; - -import java.util.Comparator; - -/** - * - * @author Jens Pelzetter - */ -public class SciPublicationComparator implements Comparator { - - public int compare(Publication publication1, Publication publication2) { - return publication1.getTitle().compareTo(publication2.getTitle()); - } - - - -} diff --git a/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciProject.xml b/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciProject.xml index 95716f355..4d7a99ee3 100644 --- a/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciProject.xml +++ b/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciProject.xml @@ -20,7 +20,7 @@ - + --> diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentLoader.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentLoader.java index e379e206a..e72273cbf 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentLoader.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentLoader.java @@ -55,7 +55,7 @@ public class SciDepartmentLoader extends AbstractContentTypeLoader { return TYPES; } - @Override + @Override protected void prepareSection(final ContentSection section, final ContentType type, final LifecycleDefinition lifecycle, diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationLinkPropertyForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationLinkPropertyForm.java deleted file mode 100644 index b52ffc8e0..000000000 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationLinkPropertyForm.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.arsdigita.cms.contenttypes.ui; - - -import com.arsdigita.bebop.PageState; -import com.arsdigita.cms.ContentItem; -import com.arsdigita.cms.ContentType; -import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.contentassets.SciDepartmentPublicationLink; -import com.arsdigita.cms.contentassets.ui.RelatedLinkPropertyForm; -import com.arsdigita.cms.contenttypes.Link; -import com.arsdigita.util.Assert; - -/** - * - * @author Jens Pelzetter - */ -public class SciDepartmentPublicationLinkPropertyForm extends RelatedLinkPropertyForm { - - public SciDepartmentPublicationLinkPropertyForm(ItemSelectionModel itemModel, - LinkSelectionModel linkModel, - String linkListName) { - this(itemModel, linkModel, linkListName, null); - } - - public SciDepartmentPublicationLinkPropertyForm(ItemSelectionModel itemModel, - LinkSelectionModel linkModel, - String linkListName, - ContentType contentType) { - super(itemModel, linkModel, linkListName, contentType); - } - - @Override - protected Link createLink(PageState state) { - ContentItem item = getContentItem(state); - Assert.exists(item, ContentItem.class); - SciDepartmentPublicationLink link = new SciDepartmentPublicationLink(); - - link.setLinkOwner(item); - - return link; - } - -} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationsStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationsStep.java deleted file mode 100644 index 745264527..000000000 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationsStep.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2010 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contenttypes.ui; - -import com.arsdigita.bebop.FormSection; -import com.arsdigita.cms.ContentType; -import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.contentassets.ui.RelatedLinkPropertiesStep; -import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; - -/** - * - * @author Jens Pelzetter - */ -public class SciDepartmentPublicationsStep extends RelatedLinkPropertiesStep { - - public SciDepartmentPublicationsStep(ItemSelectionModel itemModel, - AuthoringKitWizard parent) { - super(itemModel, parent); - } - - @Override - protected void setLinkSelectionModel() { - super.setLinkSelectionModel(); - linkListName = "SciDepartmentPublications"; - contentType = ContentType.findByAssociatedObjectType( - "com.arsdigita.cms.contenttypes.Publication"); - } - - protected FormSection getEditSheet() { - return new SciDepartmentPublicationLinkPropertyForm( - getItemSelectionModel(), - getLinkSelectionModel(), - linkListName, - contentType); - } -} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPublicationLinkPropertyForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPublicationLinkPropertyForm.java deleted file mode 100644 index 08b5bc0ce..000000000 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPublicationLinkPropertyForm.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.arsdigita.cms.contenttypes.ui; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.cms.ContentItem; -import com.arsdigita.cms.ContentType; -import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.contentassets.SciProjectPublicationLink; -import com.arsdigita.cms.contentassets.ui.RelatedLinkPropertyForm; -import com.arsdigita.cms.contenttypes.Link; -import com.arsdigita.util.Assert; - -/** - * - * @author Jens Pelzetter - */ -public class SciProjectPublicationLinkPropertyForm extends RelatedLinkPropertyForm { - - public SciProjectPublicationLinkPropertyForm(ItemSelectionModel itemModel, - LinkSelectionModel linkModel, - String linkListName) { - this(itemModel, linkModel, linkListName, null); - } - - public SciProjectPublicationLinkPropertyForm(ItemSelectionModel itemModel, - LinkSelectionModel linkModel, - String linkListName, - ContentType contentType) { - super(itemModel, linkModel, linkListName, contentType); - } - - @Override - protected Link createLink(PageState state) { - ContentItem item = getContentItem(state); - Assert.exists(item, ContentItem.class); - SciProjectPublicationLink link = new SciProjectPublicationLink(); - - link.setLinkOwner(item); - - return link; - } -} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPublicationsStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPublicationsStep.java deleted file mode 100644 index 1f66526bf..000000000 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPublicationsStep.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2010 Jens Pelzetter, - * for the Center of Social Politics of the University of Bremen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.contenttypes.ui; - -import com.arsdigita.bebop.FormSection; -import com.arsdigita.cms.ContentType; -import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.contentassets.ui.RelatedLinkPropertiesStep; -import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; - -/** - * - * @author jensp - */ -public class SciProjectPublicationsStep extends RelatedLinkPropertiesStep { - - public SciProjectPublicationsStep(ItemSelectionModel itemModel, - AuthoringKitWizard parent) { - super(itemModel, parent); - } - - @Override - protected void setLinkSelectionModel() { - super.setLinkSelectionModel(); - linkListName = "SciProjectPublications"; - contentType = ContentType.findByAssociatedObjectType( - "com.arsdigita.cms.contenttypes.Publication"); - } - - @Override - protected FormSection getEditSheet() { - return new SciProjectPublicationLinkPropertyForm( - getItemSelectionModel(), - getLinkSelectionModel(), - linkListName, - contentType); - } -} diff --git a/ccm-sci-assets-organizationpublicationlink/application.xml b/ccm-sci-types-organizationwithpublications/application.xml similarity index 79% rename from ccm-sci-assets-organizationpublicationlink/application.xml rename to ccm-sci-types-organizationwithpublications/application.xml index 813df422d..5b6a0be1f 100644 --- a/ccm-sci-assets-organizationpublicationlink/application.xml +++ b/ccm-sci-types-organizationwithpublications/application.xml @@ -1,7 +1,7 @@ @@ -21,6 +21,7 @@ - Links a publication to a SciOrganization, SciDepartment or SciProject. + Extended versions of the types SciOrganization, SciDepartment and SciProject, + with an association to publications. \ No newline at end of file diff --git a/ccm-sci-assets-organizationpublicationlink/sql/ccm-sci-assets-organizationpublicationlink/postgres-create.sql b/ccm-sci-types-organizationwithpublications/sql/ccm-sci-types-organizationwithpublications/postgres-create.sql similarity index 100% rename from ccm-sci-assets-organizationpublicationlink/sql/ccm-sci-assets-organizationpublicationlink/postgres-create.sql rename to ccm-sci-types-organizationwithpublications/sql/ccm-sci-types-organizationwithpublications/postgres-create.sql diff --git a/ccm-sci-assets-organizationpublicationlink/src/ccm-sci-assets-organizationpublicationlink.config b/ccm-sci-types-organizationwithpublications/src/ccm-sci-types-organizationwithpublications.config similarity index 100% rename from ccm-sci-assets-organizationpublicationlink/src/ccm-sci-assets-organizationpublicationlink.config rename to ccm-sci-types-organizationwithpublications/src/ccm-sci-types-organizationwithpublications.config diff --git a/ccm-sci-types-organizationwithpublications/src/ccm-sci-types-organizationwithpublications.load b/ccm-sci-types-organizationwithpublications/src/ccm-sci-types-organizationwithpublications.load new file mode 100644 index 000000000..467655745 --- /dev/null +++ b/ccm-sci-types-organizationwithpublications/src/ccm-sci-types-organizationwithpublications.load @@ -0,0 +1,27 @@ + + +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciDepartmentWithPublications.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciDepartmentWithPublications.java similarity index 74% rename from ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciDepartmentWithPublications.java rename to ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciDepartmentWithPublications.java index 9f35ccc7f..bca77d447 100644 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciDepartmentWithPublications.java +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciDepartmentWithPublications.java @@ -19,11 +19,12 @@ */ package com.arsdigita.cms.contenttypes; -import com.arsdigita.cms.contentassets.SciOrganizationPublicationCollection; +import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataQuery; import com.arsdigita.persistence.OID; import com.arsdigita.persistence.SessionManager; +import com.arsdigita.util.Assert; import java.math.BigDecimal; /** @@ -31,36 +32,38 @@ import java.math.BigDecimal; * @author Jens Pelzetter */ public class SciDepartmentWithPublications extends SciDepartment { - - private GenericOrganizationalUnitWithPublications departmentWithPublications; - - private SciDepartmentWithPublications() { + + public static final String BASE_DATA_OBJECT_TYPE = + "com.arsdigita.cms.contenttypes.SciDepartmentWithPublications"; + public static final String PUBLICATIONS = "publications"; + + public SciDepartmentWithPublications() { + this(BASE_DATA_OBJECT_TYPE); } - - private SciDepartmentWithPublications(final BigDecimal id) { + + public SciDepartmentWithPublications(final BigDecimal id) { + this(new OID(BASE_DATA_OBJECT_TYPE, id)); } - - private SciDepartmentWithPublications(final OID oid) { + + public SciDepartmentWithPublications(final OID oid) { + super(oid); } - - private SciDepartmentWithPublications(final DataObject dobj) { + + public SciDepartmentWithPublications(final DataObject dobj) { + super(dobj); } - - private SciDepartmentWithPublications(final String type) { + + public SciDepartmentWithPublications(final String type) { + super(type); + } - - public SciDepartmentWithPublications(final SciDepartment department) { - super(department.getID()); - departmentWithPublications = - new GenericOrganizationalUnitWithPublications(department.getID()); - } - + public boolean hasPublications(final boolean merge) { DataQuery query = SessionManager.getSession().retrieveQuery( - "com.arsdigita.cms.contentassets.getIdsOfPublicationsOfSciOrganization"); - query.setParameter("organization", getID()); - + "com.arsdigita.cms.contentassets.getIdsOfPublicationsOfSciDepartment"); + query.setParameter("department", getID()); + if (query.size() > 0) { query.close(); return true; @@ -71,7 +74,7 @@ public class SciDepartmentWithPublications extends SciDepartment { SessionManager.getSession().retrieveQuery( "com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment"); departmentsQuery.setParameter("department", getID()); - + if (departmentsQuery.size() > 0) { BigDecimal departmentId; boolean result = false; @@ -79,12 +82,12 @@ public class SciDepartmentWithPublications extends SciDepartment { departmentId = (BigDecimal) departmentsQuery.get( "departmentId"); result = hasPublications(departmentId, merge); - + if (result) { break; } } - + departmentsQuery.close(); return result; } else { @@ -97,14 +100,14 @@ public class SciDepartmentWithPublications extends SciDepartment { } } } - + private boolean hasPublications(final BigDecimal departmentId, final boolean merge) { DataQuery query = SessionManager.getSession().retrieveQuery( "com.arsdigita.cms.contentassets.getIdsOfPublicationsOfSciDepartment"); query.setParameter("departmentId", departmentId); - + if (query.size() > 0) { query.close(); return true; @@ -115,7 +118,7 @@ public class SciDepartmentWithPublications extends SciDepartment { SessionManager.getSession().retrieveQuery( "com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment"); subDepartmentsQuery.setParameter("department", departmentId); - + if (query.size() > 0) { BigDecimal subDepartmentId; boolean result = false; @@ -123,14 +126,14 @@ public class SciDepartmentWithPublications extends SciDepartment { subDepartmentId = (BigDecimal) subDepartmentsQuery.get( "departmentId"); result = hasPublications(subDepartmentId, merge); - + if (result) { break; } } - + subDepartmentsQuery.close(); - return result; + return result; } else { subDepartmentsQuery.close(); return false; @@ -141,8 +144,23 @@ public class SciDepartmentWithPublications extends SciDepartment { } } } + + public SciDepartmentPublicationsCollection getPublications() { + return new SciDepartmentPublicationsCollection((DataCollection) get( + PUBLICATIONS)); + } - public SciOrganizationPublicationCollection getPublications() { - return departmentWithPublications.getPublications(); + public void addPublication(final Publication publication) { + Assert.exists(publication, Publication.class); + + DataObject link = add(PUBLICATIONS, publication); + link.set("publicationOrder", Integer.valueOf((int) getPublications().size())); + link.save(); + } + + public void removePublication(final Publication publication) { + Assert.exists(publication, Publication.class); + + remove(PUBLICATIONS, publication); } } diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublications.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublications.java similarity index 69% rename from ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublications.java rename to ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublications.java index 38a35ba0e..b0004fe5e 100644 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublications.java +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublications.java @@ -19,11 +19,12 @@ */ package com.arsdigita.cms.contenttypes; -import com.arsdigita.cms.contentassets.SciOrganizationPublicationCollection; +import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataQuery; import com.arsdigita.persistence.OID; import com.arsdigita.persistence.SessionManager; +import com.arsdigita.util.Assert; import java.math.BigDecimal; /** @@ -32,34 +33,37 @@ import java.math.BigDecimal; */ public class SciOrganizationWithPublications extends SciOrganization { - private GenericOrganizationalUnitWithPublications orgaWithPublications; - private static final SciOrganizationWithPublicationsConfig config = new SciOrganizationWithPublicationsConfig(); - + public static final String BASE_DATA_OBJECT_TYPE = + "com.arsdigita.cms.contenttypes.SciOrganizationWithPublications"; + public static final String PUBLICATIONS = "publications"; + public static final String PUBLICATION_ORDER = "publicationOrder"; + private static final SciOrganizationWithPublicationsConfig config = + new SciOrganizationWithPublicationsConfig(); + static { - config.load(); + config.load(); } - private SciOrganizationWithPublications() { + public SciOrganizationWithPublications() { + this(BASE_DATA_OBJECT_TYPE); } - private SciOrganizationWithPublications(final BigDecimal id) { + public SciOrganizationWithPublications(final BigDecimal id) { + this(new OID(BASE_DATA_OBJECT_TYPE, id)); } - private SciOrganizationWithPublications(final OID oid) { + public SciOrganizationWithPublications(final OID oid) { + super(oid); } - private SciOrganizationWithPublications(final DataObject dobj) { + public SciOrganizationWithPublications(final DataObject dobj) { + super(dobj); } - private SciOrganizationWithPublications(final String type) { + public SciOrganizationWithPublications(final String type) { + super(type); } - public SciOrganizationWithPublications(final SciOrganization organization) { - super(organization.getID()); - orgaWithPublications = new GenericOrganizationalUnitWithPublications( - organization.getID()); - } - public static SciOrganizationWithPublicationsConfig getConfig() { return config; } @@ -67,7 +71,7 @@ public class SciOrganizationWithPublications extends SciOrganization { public boolean hasPublications(final boolean merge) { DataQuery query = SessionManager.getSession().retrieveQuery( - "com.arsdigita.cms.contentassets.getIdsOfPublicationsOfSciOrganization"); + "com.arsdigita.cms.contenttypes.getIdsOfPublicationsOfSciOrganization"); query.setParameter("organization", getID()); if (query.size() > 0) { @@ -79,8 +83,8 @@ public class SciOrganizationWithPublications extends SciOrganization { DataQuery departmentsQuery = SessionManager.getSession().retrieveQuery( "com.arsdigita.cms.contenttypes.getIdsOfDepartmentsOfSciOrganization"); - departmentsQuery.setParameter("organization", - getID()); + departmentsQuery.setParameter("organization", + getID()); if (departmentsQuery.size() > 0) { BigDecimal departmentId; @@ -125,22 +129,22 @@ public class SciOrganizationWithPublications extends SciOrganization { SessionManager.getSession().retrieveQuery( "com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment"); subDepartmentsQuery.setParameter("department", departmentId); - + if (subDepartmentsQuery.size() > 0) { BigDecimal subDepartmentId; boolean result = false; - while(subDepartmentsQuery.next()) { + while (subDepartmentsQuery.next()) { subDepartmentId = (BigDecimal) subDepartmentsQuery.get( "departmentId"); result = hasPublications(subDepartmentId, merge); - + if (result) { break; } } - + subDepartmentsQuery.close(); - return result; + return result; } else { subDepartmentsQuery.close(); return false; @@ -151,8 +155,24 @@ public class SciOrganizationWithPublications extends SciOrganization { } } } - - public SciOrganizationPublicationCollection getPublications() { - return orgaWithPublications.getPublications(); + + public SciOrganizationPublicationsCollection getPublications() { + return new SciOrganizationPublicationsCollection((DataCollection) get( + PUBLICATIONS)); + } + + public void addPublication(final Publication publication) { + Assert.exists(publication, Publication.class); + + DataObject link = add(PUBLICATIONS, publication); + link.set(PUBLICATION_ORDER, Integer.valueOf( + (int) getPublications().size())); + link.save(); + } + + public void removePublication(final Publication publication) { + Assert.exists(publication, Publication.class); + + remove(PUBLICATIONS, publication); } } diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublicationsConfig.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublicationsConfig.java similarity index 100% rename from ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublicationsConfig.java rename to ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublicationsConfig.java diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublicationsConfig_parameter.properties b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublicationsConfig_parameter.properties similarity index 100% rename from ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublicationsConfig_parameter.properties rename to ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciOrganizationWithPublicationsConfig_parameter.properties diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciProjectWithPublications.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciProjectWithPublications.java similarity index 75% rename from ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciProjectWithPublications.java rename to ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciProjectWithPublications.java index b8b2cded4..f3c7a83f7 100644 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/SciProjectWithPublications.java +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciProjectWithPublications.java @@ -19,11 +19,12 @@ */ package com.arsdigita.cms.contenttypes; -import com.arsdigita.cms.contentassets.SciOrganizationPublicationCollection; +import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataQuery; import com.arsdigita.persistence.OID; import com.arsdigita.persistence.SessionManager; +import com.arsdigita.util.Assert; import java.math.BigDecimal; /** @@ -32,33 +33,34 @@ import java.math.BigDecimal; */ public class SciProjectWithPublications extends SciProject { - private GenericOrganizationalUnitWithPublications projectWithPublications; + public static final String BASE_DATA_OBJECT_TYPE = + "com.arsdigita.cms.contenttypes.SciProjectWithPublications"; + public static final String PUBLICATIONS = "publications"; - private SciProjectWithPublications() { + public SciProjectWithPublications() { + this(BASE_DATA_OBJECT_TYPE); } - private SciProjectWithPublications(final BigDecimal id) { + public SciProjectWithPublications(final BigDecimal id) { + this(new OID(BASE_DATA_OBJECT_TYPE, id)); } - private SciProjectWithPublications(final OID oid) { + public SciProjectWithPublications(final OID oid) { + super(oid); } - private SciProjectWithPublications(final DataObject dobj) { + public SciProjectWithPublications(final DataObject dobj) { + super(dobj); } - private SciProjectWithPublications(final String type) { - } - - public SciProjectWithPublications(final SciProject project) { - super(project.getID()); - projectWithPublications = - new GenericOrganizationalUnitWithPublications(project.getID()); + public SciProjectWithPublications(final String type) { + super(type); } public boolean hasPublications(final boolean merge) { DataQuery query = SessionManager.getSession().retrieveQuery( - "com.arsdigita.cms.contentassets.getIdsOfPublicationsOfSciOrganization"); + "com.arsdigita.cms.contentassets.getIdsOfPublicationsOfSciProject"); query.setParameter("organization", getID()); if (query.size() > 0) { @@ -141,8 +143,24 @@ public class SciProjectWithPublications extends SciProject { } } } - - public SciOrganizationPublicationCollection getPublications() { - return projectWithPublications.getPublications(); + + public SciProjectPublicationsCollection getPublications() { + return new SciProjectPublicationsCollection((DataCollection) get( + PUBLICATIONS)); + } + + public void addPublication(final Publication publication) { + Assert.exists(publication, Publication.class); + + DataObject link = add(PUBLICATIONS, publication); + link.set("publicationOrder", Integer.valueOf((int) getPublications(). + size())); + link.save(); + } + + public void removePublication(final Publication publication) { + Assert.exists(publication, Publication.class); + + remove(PUBLICATIONS, publication); } } diff --git a/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciPublicationTitleComparator.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciPublicationTitleComparator.java new file mode 100644 index 000000000..80a0ff30a --- /dev/null +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/SciPublicationTitleComparator.java @@ -0,0 +1,43 @@ +package com.arsdigita.cms.contenttypes; + +import java.util.Comparator; + +/** + * + * @author Jens Pelzetter + */ +public class SciPublicationTitleComparator implements Comparator { + + public int compare(Publication publication1, Publication publication2) { + String title1; + String title2; + if (publication1.getTitle().startsWith("\"")) { + title1 = publication1.getTitle().substring(1, + publication1.getTitle(). + length() - 1); + } else if (publication1.getTitle().startsWith("'")) { + title1 = publication1.getTitle().substring(1, + publication1.getTitle(). + length() - 1); + } else { + title1 = publication1.getTitle(); + } + + if (publication2.getTitle().startsWith("\"")) { + title2 = publication2.getTitle().substring(2, + publication2.getTitle(). + length() - 1); + } else if (publication2.getTitle().startsWith("'")) { + title2 = publication2.getTitle().substring(2, + publication2.getTitle(). + length() - 1); + } else { + title2 = publication2.getTitle(); + } + + + + return title1.compareTo(title2); + //return publication1.getTitle().compareTo(publication2.getTitle()); + } +} diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java similarity index 100% rename from ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java rename to ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/PublicationXmlHelper.java diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentsWithPublicationsPanel.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentWithPublicationsPanel.java similarity index 80% rename from ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentsWithPublicationsPanel.java rename to ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentWithPublicationsPanel.java index d2e520750..f9086a97c 100644 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentsWithPublicationsPanel.java +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentWithPublicationsPanel.java @@ -21,14 +21,14 @@ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.PageState; import com.arsdigita.cms.ContentItemXMLRenderer; -import com.arsdigita.cms.contentassets.SciOrganizationPublicationCollection; import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.contenttypes.SciDepartment; +import com.arsdigita.cms.contenttypes.SciDepartmentPublicationsCollection; import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection; import com.arsdigita.cms.contenttypes.SciDepartmentWithPublications; import com.arsdigita.cms.contenttypes.SciOrganizationWithPublications; import com.arsdigita.cms.contenttypes.SciOrganizationWithPublicationsConfig; -import com.arsdigita.cms.contenttypes.SciPublicationComparator; +import com.arsdigita.cms.contenttypes.SciPublicationTitleComparator; import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.xml.Element; import java.util.Collections; @@ -41,7 +41,7 @@ import java.util.Set; * * @author Jens Pelzetter */ -public class SciDepartmentsWithPublicationsPanel extends SciDepartmentPanel { +public class SciDepartmentWithPublicationsPanel extends SciDepartmentPanel { public static final String SHOW_PUBLICATIONS = "publications"; private boolean displayPublications = true; @@ -64,10 +64,11 @@ public class SciDepartmentsWithPublicationsPanel extends SciDepartmentPanel { SciOrganizationWithPublications. getConfig(); - SciDepartmentWithPublications dep = new SciDepartmentWithPublications( - department); + SciDepartmentWithPublications dep = + (SciDepartmentWithPublications) department; - if ((dep.hasPublications(config.getOrganizationPublicationsMerge())) + if ((dep.hasPublications( + config.getOrganizationPublicationsMerge())) && displayPublications) { element.newChildElement("publications"); } @@ -79,14 +80,21 @@ public class SciDepartmentsWithPublicationsPanel extends SciDepartmentPanel { while (subDepartments.next()) { SciDepartment dep; SciDepartmentWithPublications department; - SciOrganizationPublicationCollection departmentPublications; + SciDepartmentPublicationsCollection departmentPublications; dep = subDepartments.getSubDepartment(); - department = new SciDepartmentWithPublications(dep); + department = (SciDepartmentWithPublications) dep; departmentPublications = department.getPublications(); + Publication publication; while (departmentPublications.next()) { - publications.add(departmentPublications.getPublication()); + publication = (Publication) departmentPublications. + getPublication().getLiveVersion(); + if (publication == null) { + continue; + } else { + publications.add(publication); + } } SciDepartmentSubDepartmentsCollection subSubDepartments = dep. @@ -102,18 +110,24 @@ public class SciDepartmentsWithPublicationsPanel extends SciDepartmentPanel { final Element parent, final PageState state) { final SciDepartmentWithPublications dep = - new SciDepartmentWithPublications( - department); + (SciDepartmentWithPublications) department; if (SciOrganizationWithPublications.getConfig(). getOrganizationPublicationsMerge()) { List publications; publications = new LinkedList(); - SciOrganizationPublicationCollection departmentPublications; + SciDepartmentPublicationsCollection departmentPublications; departmentPublications = dep.getPublications(); + Publication publication; while (departmentPublications.next()) { - publications.add(departmentPublications.getPublication()); + publication = (Publication) departmentPublications. + getPublication().getLiveVersion(); + if (publication == null) { + continue; + } else { + publications.add(publication); + } } mergePublications(department.getSubDepartments(), publications); @@ -125,7 +139,7 @@ public class SciDepartmentsWithPublicationsPanel extends SciDepartmentPanel { publicationsSet); Collections.sort(publicationsWithoutDoubles, - new SciPublicationComparator()); + new SciPublicationTitleComparator()); long pageNumber = getPageNumber(state); long pageCount = getPageCount(publicationsWithoutDoubles.size()); @@ -145,11 +159,11 @@ public class SciDepartmentsWithPublicationsPanel extends SciDepartmentPanel { final ContentItemXMLRenderer renderer = new ContentItemXMLRenderer( publicationsElem); renderer.setWrapAttributes(true); - for (Publication publication : publicationsToShow) { - renderer.walk(publication, SimpleXMLGenerator.class.getName()); + for (Publication pub : publicationsToShow) { + renderer.walk(pub, SimpleXMLGenerator.class.getName()); } } else { - SciOrganizationPublicationCollection departmentPublications; + SciDepartmentPublicationsCollection departmentPublications; departmentPublications = dep.getPublications(); List publications = new LinkedList(); @@ -158,7 +172,7 @@ public class SciDepartmentsWithPublicationsPanel extends SciDepartmentPanel { publications.add(departmentPublications.getPublication()); } - Collections.sort(publications, new SciPublicationComparator()); + Collections.sort(publications, new SciPublicationTitleComparator()); long pageNumber = getPageNumber(state); long pageCount = getPageCount(publications.size()); diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationGlobalizationUtil.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsGlobalizationUtil.java similarity index 82% rename from ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationGlobalizationUtil.java rename to ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsGlobalizationUtil.java index 57df450f3..7894140f1 100644 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contentassets/ui/SciOrganizationPublicationGlobalizationUtil.java +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsGlobalizationUtil.java @@ -17,18 +17,19 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ -package com.arsdigita.cms.contentassets.ui; +package com.arsdigita.cms.contenttypes.ui; +import com.arsdigita.cms.contentassets.ui.*; import com.arsdigita.globalization.GlobalizedMessage; /** * * @author Jens Pelzetter */ -public class SciOrganizationPublicationGlobalizationUtil { +public class SciOrganizationWithPublicationsGlobalizationUtil { public static final String BUNDLE_NAME = - "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"; + "com.arsdigita.cms.contenttypes.ui.SciOrganizationWithPublicationsResources"; public static GlobalizedMessage globalize(String key) { return new GlobalizedMessage(key, BUNDLE_NAME); diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsPanel.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsPanel.java similarity index 59% rename from ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsPanel.java rename to ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsPanel.java index 4939d6876..6746549c9 100644 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsPanel.java +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsPanel.java @@ -21,24 +21,21 @@ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.PageState; import com.arsdigita.cms.ContentItemXMLRenderer; -import com.arsdigita.cms.contentassets.SciOrganizationPublicationCollection; -import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume; -import com.arsdigita.cms.contenttypes.ArticleInJournal; -import com.arsdigita.cms.contenttypes.AuthorshipCollection; -import com.arsdigita.cms.contenttypes.GenericPerson; import com.arsdigita.cms.contenttypes.Publication; -import com.arsdigita.cms.contenttypes.PublicationWithPublisher; -import com.arsdigita.cms.contenttypes.Publisher; import com.arsdigita.cms.contenttypes.SciDepartment; +import com.arsdigita.cms.contenttypes.SciDepartmentPublicationsCollection; import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection; import com.arsdigita.cms.contenttypes.SciDepartmentWithPublications; import com.arsdigita.cms.contenttypes.SciOrganization; import com.arsdigita.cms.contenttypes.SciOrganizationDepartmentsCollection; +import com.arsdigita.cms.contenttypes.SciOrganizationPublicationsCollection; import com.arsdigita.cms.contenttypes.SciOrganizationWithPublications; import com.arsdigita.cms.contenttypes.SciOrganizationWithPublicationsConfig; -import com.arsdigita.cms.contenttypes.SciPublicationComparator; +import com.arsdigita.cms.contenttypes.SciPublicationTitleComparator; import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.xml.Element; +import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.LinkedList; @@ -72,8 +69,7 @@ public class SciOrganizationWithPublicationsPanel extends SciOrganizationPanel { config = SciOrganizationWithPublications.getConfig(); SciOrganizationWithPublications orga = - new SciOrganizationWithPublications( - organization); + (SciOrganizationWithPublications) organization; long start = System.currentTimeMillis(); if ((orga.hasPublications(config.getOrganizationPublicationsMerge())) @@ -87,18 +83,30 @@ public class SciOrganizationWithPublicationsPanel extends SciOrganizationPanel { protected void mergePublications( final SciOrganizationDepartmentsCollection departments, - final List publications) { + final Collection publications) { while (departments.next()) { SciDepartment dep; SciDepartmentWithPublications department; - SciOrganizationPublicationCollection departmentPublications; + SciDepartmentPublicationsCollection departmentPublications; dep = departments.getDepartment(); - department = new SciDepartmentWithPublications(dep); + department = (SciDepartmentWithPublications) dep; departmentPublications = department.getPublications(); + if (publications instanceof ArrayList) { + ((ArrayList) publications).ensureCapacity( + publications.size() + + (int) departmentPublications.size()); + } + + Publication publication; while (departmentPublications.next()) { - publications.add(departmentPublications.getPublication()); + publication = (Publication) departmentPublications.getPublication().getLiveVersion(); + if (publication == null) { + continue; + } else { + publications.add(publication); + } } SciDepartmentSubDepartmentsCollection subDepartments; @@ -114,33 +122,51 @@ public class SciOrganizationWithPublicationsPanel extends SciOrganizationPanel { final Element parent, final PageState state) { final SciOrganizationWithPublications orga = - new SciOrganizationWithPublications( - organization); + (SciOrganizationWithPublications) organization; if (SciOrganizationWithPublications.getConfig(). getOrganizationPublicationsMerge()) { long start = System.currentTimeMillis(); List publications; - publications = new LinkedList(); - SciOrganizationPublicationCollection orgaPublications; + SciOrganizationPublicationsCollection orgaPublications; orgaPublications = orga.getPublications(); + publications = new ArrayList((int) orgaPublications. + size()); + Publication publication; while (orgaPublications.next()) { - publications.add(orgaPublications.getPublication()); + publication = (Publication) orgaPublications.getPublication().getLiveVersion(); + if (publication == null) { + continue; + } else { + publications.add(publication); + } } - mergePublications(organization.getDepartments(), - publications); + SciOrganizationDepartmentsCollection departments = organization. + getDepartments(); + long mergeStart = System.currentTimeMillis(); + mergePublications(departments, publications); + System.err.printf("Merged publications in %d ms\n", System. + currentTimeMillis() - mergeStart); + long sortStart = System.currentTimeMillis(); Set publicationsSet; List publicationWithoutDoubles; publicationsSet = new HashSet(publications); - publicationWithoutDoubles = new LinkedList( + //publicationWithoutDoubles = new LinkedList( + // publicationsSet); + publicationWithoutDoubles = new ArrayList( publicationsSet); - Collections.sort(publicationWithoutDoubles, - new SciPublicationComparator()); + Collections.sort(publicationWithoutDoubles, + new SciPublicationTitleComparator()); + System.out.printf("Sorted publications in %d ms\n", System. + currentTimeMillis() - sortStart); + + + long paginatorStart = System.currentTimeMillis(); long pageNumber = getPageNumber(state); long pageCount = getPageCount(publicationWithoutDoubles.size()); long begin = getPaginatorBegin(pageNumber); @@ -151,99 +177,28 @@ public class SciOrganizationWithPublicationsPanel extends SciOrganizationPanel { createPaginatorElement(parent, pageNumber, pageCount, begin, end, count, publicationWithoutDoubles.size()); + System.out.printf("Created paginator in %d ms", System. + currentTimeMillis() - paginatorStart); List publicationsToShow = publicationWithoutDoubles. subList((int) begin, (int) end); System.out.printf( - "\n\nCreating list of publications to show in %d ms.\n\n", + "\n\nCreated list of publications to show in %d ms.\n\n", System.currentTimeMillis() - start); start = System.currentTimeMillis(); - - //final Element publicationsElem = parent.newChildElement( - // "publications"); - - for (Publication publication : publicationsToShow) { - //Element publicationElem = parent.newChildElement( - // "publications"); - /*ContentItemXMLRenderer renderer = - new ContentItemXMLRenderer(publicationElem); - renderer.setWrapAttributes(true); - long walkStart = System.currentTimeMillis(); - renderer.walk(publication, SimpleXMLGenerator.class.getName()); - System.out.printf("\n\nRenderer walked %d ms\n\n", System.currentTimeMillis() - walkStart);*/ - - /*Element objectTypeElem = publicationElem.newChildElement("objectType"); - objectTypeElem.setText(publication.getObjectType().getQualifiedName()); - Element yearElem = publicationElem.newChildElement( - "yearOfPublication"); - yearElem.setText(publication.getYearOfPublication().toString()); - Element miscElem = publicationElem.newChildElement("misc"); - miscElem.setText(publication.getMisc()); - AuthorshipCollection authors = publication.getAuthors(); - while (authors.next()) { - Element authorsElem = publicationElem.newChildElement( - "authors"); - Element linkElem = authorsElem.newChildElement("link"); - Element editorElem = linkElem.newChildElement("editor"); - if (authors.isEditor()) { - editorElem.setText("true"); - } else { - editorElem.setText("false"); - } - Element authorOrderElem = linkElem.newChildElement( - "authorOrder"); - authorOrderElem.setText(authors.getAuthorshipOrder(). - toString()); - - GenericPerson author = authors.getAuthor(); - Element surnameElem = authorsElem.newChildElement("surname"); - surnameElem.setText(author.getSurname()); - Element givennameElem = authorsElem.newChildElement( - "givenname"); - givennameElem.setText(author.getGivenName()); - } - - Element abstractElem = publicationElem.newChildElement( - "abstract"); - abstractElem.setText(publication.getAbstract()); - - if (publication instanceof PublicationWithPublisher) { - PublicationWithPublisher pwp = - (PublicationWithPublisher) publication; - Publisher publisher = pwp.getPublisher(); - - Element publisherElem = publicationElem.newChildElement( - "publisher"); - Element publisherNameElem = publisherElem.newChildElement( - "publisherName"); - publisherNameElem.setText(publisher.getPublisherName()); - Element publisherPlaceElem = publisherElem.newChildElement( - "place"); - publisherPlaceElem.setText(publisher.getPlace()); - } - - Element titleElem = publicationElem.newChildElement("title"); - titleElem.setText(publication.getTitle()); - - if (publication instanceof ArticleInJournal) { - - } - - if (publication instanceof ArticleInCollectedVolume) { - - }*/ - + + for (Publication pub : publicationsToShow) { PublicationXmlHelper xmlHelper = new PublicationXmlHelper(parent, - publication); + pub); xmlHelper.generateXml(); } System.out.printf("\n\nGenerated publications XML in %d ms\n\n", System.currentTimeMillis() - start); } else { - SciOrganizationPublicationCollection orgaPublications; + SciOrganizationPublicationsCollection orgaPublications; orgaPublications = orga.getPublications(); List publications = new LinkedList(); @@ -252,7 +207,7 @@ public class SciOrganizationWithPublicationsPanel extends SciOrganizationPanel { publications.add(orgaPublications.getPublication()); } - Collections.sort(publications, new SciPublicationComparator()); + Collections.sort(publications, new SciPublicationTitleComparator()); long pageNumber = getPageNumber(state); long pageCount = getPageCount(publications.size()); diff --git a/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsResources.properties b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsResources.properties new file mode 100644 index 000000000..4ec4dd842 --- /dev/null +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsResources.properties @@ -0,0 +1,35 @@ + +sciorganizationpublication.ui.publicationsOfOrganization=Publications of the organization +sciorganizationpublication.ui.publicationsOfDepartment=Publications of the department +sciorganizationpublication.ui.publicationsOfProject=Publications of the project +sciorganizationpublication.ui.organizationsOfPublication=Organizations +sciorganizationpublication.ui.organization=Organization +sciorganizationpublication.ui.organization.remove=Remove orgnization +sciorganizationpublication.ui.addOrganization=Add organization +sciorganizationpublication.ui.publication=Publication +sciorganizationpublication.ui.publication.remove=Remove publication +sciorganizationpublication.ui.addPublication=Add publication +sciorganizationpublication.ui.publications.none=No publications found +sciorganizationpublication.ui.organization.publications.title=Publications +sciorganizationpublication.ui.organization.publications.description=Publications +sciorganizationpublication.ui.department.publications.title=Publications +sciorganizationpublication.ui.department.publications.description=Publications +sciorganizationpublication.ui.project.publications.title=Publications +sciorganizationpublication.ui.project.publications.description=Publications +sciorganizationpublication.ui.publication.projects.title=Lists of publications (Projects) +sciorganizationpublication.ui.publication.projects.description=Lists of publications (Projects) +sciorganizationpublication.ui.publication.organization.title=Lists of publications (Organizations) +sciorganizationpublication.ui.publication.organization.description=Lists of publications (Organizations) +sciorganizationpublication.ui.publication.departments.title=Lists of publications (Departments) +sciorganizationpublication.ui.publication.departments.description=Lists of publications (Departments) +sciorganization.ui.selectPublication=Select publication +sciorganizationpublication.ui.publiction.remove=Remove publication +sciorganizationpublication.ui.organizations.none=This publication is not part of any publication list of a organization +sciorganization.ui.selectOrganization=Select organization +sciorganization.ui.addPublication=Add publication +sciorganizationpublication.ui.departments.none=This publication is not part of any publication list of a department +sciorganizationpublication.ui.addDepartment=Add publication to publication list of a department +sciorganization.ui.selectDepartment=Select department +sciorganizationpublication.ui.projects.none=This publication is not part of any publication list of a project +sciorganizationpublication.ui.project.addPublication=Add publication to publication list of a project +sciorganization.ui.selectProject=Select project diff --git a/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsResources_de.properties b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsResources_de.properties new file mode 100644 index 000000000..3b047dff7 --- /dev/null +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationWithPublicationsResources_de.properties @@ -0,0 +1,35 @@ + +sciorganizationpublication.ui.publicationsOfOrganization=Publikationen der Organisation +sciorganizationpublication.ui.publicationsOfDepartment=Publikationen der Abteilung +sciorganizationpublication.ui.publicationsOfProject=Publikationen des Projektes +sciorganizationpublication.ui.organizationsOfPublication=Beteiligte Organizationen +sciorganizationpublication.ui.organization=Organisation +sciorganizationpublication.ui.organization.remove=Organisation entfernen +sciorganizationpublication.ui.addOrganization=Organisation hinzuf\u00fcgen +sciorganizationpublication.ui.publication=Publikation +sciorganizationpublication.ui.publication.remove=Publikation entfernen +sciorganizationpublication.ui.addPublication=Publikation hinzuf\u00fcgen +sciorganizationpublication.ui.publications.none=Keine Publikationen gefunden +sciorganizationpublication.ui.organization.publications.title=Publikationen +sciorganizationpublication.ui.organization.publications.description=Publikationen +sciorganizationpublication.ui.department.publications.title=Publikationen +sciorganizationpublication.ui.department.publications.description=Publikationen +sciorganizationpublication.ui.project.publications.title=Publikationen +sciorganizationpublication.ui.project.publications.description=Publikationen +sciorganizationpublication.ui.publication.projects.title=Publikationslisten (Projekte) +sciorganizationpublication.ui.publication.projects.description=Publikationslisten (Projekte) +sciorganizationpublication.ui.publication.organization.title=Publikationslisten (Organisationen) +sciorganizationpublication.ui.publication.organization.description=Publikationslisten (Organisationen) +sciorganizationpublication.ui.publication.departments.title=Publikationslisten (Abteilungen) +sciorganizationpublication.ui.publication.departments.description=Publikationslisten (Abteilungen) +sciorganization.ui.selectPublication=Publikation w\u00e4hlen +sciorganizationpublication.ui.publiction.remove=Publikation entfernen +sciorganizationpublication.ui.organizations.none=Diese Publikation ist nicht Teil einer Publikationsliste einer Organisation +sciorganization.ui.selectOrganization=Organisation w\u00e4hlen +sciorganization.ui.addPublication=Publikation hinzuf\u00fcgen +sciorganizationpublication.ui.departments.none=Diese Publikation ist nicht Teil einer Publikationsliste einer Abteilung +sciorganizationpublication.ui.addDepartment=Publikation der Publikationsliste einer Abteilung hinzuf\u00fcgen +sciorganization.ui.selectDepartment=Abteilung w\u00e4hlen +sciorganizationpublication.ui.projects.none=Diese Publikation ist nicht Teil einer Publikationsliste eines Projektes +sciorganizationpublication.ui.project.addPublication=Publikation der Publikationsliste eines Projektes hinzuf\u00fcgen +sciorganization.ui.selectProject=Projekt w\u00e4hlen diff --git a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/SciProjectWithPublicationsPanel.java b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciProjectWithPublicationsPanel.java similarity index 82% rename from ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/SciProjectWithPublicationsPanel.java rename to ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciProjectWithPublicationsPanel.java index e2de9b88f..199ca8e43 100644 --- a/ccm-sci-assets-organizationpublicationlink/src/com/arsdigita/cms/contenttypes/ui/SciProjectWithPublicationsPanel.java +++ b/ccm-sci-types-organizationwithpublications/src/com/arsdigita/cms/contenttypes/ui/SciProjectWithPublicationsPanel.java @@ -21,14 +21,14 @@ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.PageState; import com.arsdigita.cms.ContentItemXMLRenderer; -import com.arsdigita.cms.contentassets.SciOrganizationPublicationCollection; import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.contenttypes.SciOrganizationWithPublications; import com.arsdigita.cms.contenttypes.SciOrganizationWithPublicationsConfig; import com.arsdigita.cms.contenttypes.SciProject; +import com.arsdigita.cms.contenttypes.SciProjectPublicationsCollection; import com.arsdigita.cms.contenttypes.SciProjectSubProjectsCollection; import com.arsdigita.cms.contenttypes.SciProjectWithPublications; -import com.arsdigita.cms.contenttypes.SciPublicationComparator; +import com.arsdigita.cms.contenttypes.SciPublicationTitleComparator; import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.xml.Element; import java.util.Collections; @@ -65,7 +65,7 @@ public class SciProjectWithPublicationsPanel extends SciProjectPanel { getConfig(); SciProjectWithPublications proj = - new SciProjectWithPublications(project); + (SciProjectWithPublications) project; if ((proj.hasPublications(config.getOrganizationPublicationsMerge())) && displayPublications) { @@ -79,14 +79,21 @@ public class SciProjectWithPublicationsPanel extends SciProjectPanel { while (subProjects.next()) { SciProject proj; SciProjectWithPublications project; - SciOrganizationPublicationCollection projectPublications; + SciProjectPublicationsCollection projectPublications; proj = subProjects.getSubProject(); - project = new SciProjectWithPublications(proj); + project = (SciProjectWithPublications) proj; projectPublications = project.getPublications(); + Publication publication; while (projectPublications.next()) { - publications.add(projectPublications.getPublication()); + publication = (Publication) projectPublications.getPublication(). + getLiveVersion(); + if (publication == null) { + continue; + } else { + publications.add(publication); + } } SciProjectSubProjectsCollection subSubProjects = @@ -101,17 +108,24 @@ public class SciProjectWithPublicationsPanel extends SciProjectPanel { protected void generatePublicationsXml(final SciProject project, final Element parent, final PageState state) { - final SciProjectWithPublications proj = new SciProjectWithPublications( - project); + final SciProjectWithPublications proj = + (SciProjectWithPublications) project; if (SciOrganizationWithPublications.getConfig(). getOrganizationPublicationsMerge()) { List publications = new LinkedList(); - SciOrganizationPublicationCollection projectPublications = proj. + SciProjectPublicationsCollection projectPublications = proj. getPublications(); + Publication publication; while (projectPublications.next()) { - publications.add(projectPublications.getPublication()); + publication = (Publication) projectPublications.getPublication(). + getLiveVersion(); + if (publication == null) { + continue; + } else { + publications.add(publication); + } } mergePublications(project.getSubProjects(), publications); @@ -122,7 +136,7 @@ public class SciProjectWithPublicationsPanel extends SciProjectPanel { publicationsWithoutDoubles = new LinkedList( publicationsSet); Collections.sort(publicationsWithoutDoubles, - new SciPublicationComparator()); + new SciPublicationTitleComparator()); long pageNumber = getPageNumber(state); long pageCount = getPageCount(publicationsWithoutDoubles.size()); @@ -142,11 +156,11 @@ public class SciProjectWithPublicationsPanel extends SciProjectPanel { final ContentItemXMLRenderer renderer = new ContentItemXMLRenderer( publicationsElem); renderer.setWrapAttributes(true); - for (Publication publication : publicationsToShow) { - renderer.walk(publication, SimpleXMLGenerator.class.getName()); + for (Publication pub : publicationsToShow) { + renderer.walk(pub, SimpleXMLGenerator.class.getName()); } } else { - SciOrganizationPublicationCollection projectPublications = proj. + SciProjectPublicationsCollection projectPublications = proj. getPublications(); List publications = new LinkedList(); @@ -155,7 +169,7 @@ public class SciProjectWithPublicationsPanel extends SciProjectPanel { publications.add(projectPublications.getPublication()); } - Collections.sort(publications, new SciPublicationComparator()); + Collections.sort(publications, new SciPublicationTitleComparator()); long pageNumber = getPageNumber(state); long pageCount = getPageCount(publications.size()); @@ -185,7 +199,7 @@ public class SciProjectWithPublicationsPanel extends SciProjectPanel { final Element element, final PageState state) { String show = getShowParam(state); - + if (SHOW_PUBLICATIONS.equals(show)) { generatePublicationsXml(project, element, state); } else {