From d6839274b0a457cddeaaad89477c250ec68f0ce5 Mon Sep 17 00:00:00 2001 From: jensp Date: Mon, 2 Apr 2012 15:53:29 +0000 Subject: [PATCH] =?UTF-8?q?Weitere=20Assoziation=20(GenericOrganizationalU?= =?UTF-8?q?nit=20<->=20GenericOrganizationalUnit,=20Ticket=20#1114)=20umge?= =?UTF-8?q?stellt=20(Sprachunh=C3=A4ngigkeit),=20sowie=20Publizierenvorgan?= =?UTF-8?q?g=20f=C3=BCr=20diese=20Assoziation=20optimiert.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@1566 8810af33-2d31-482b-a856-94f89814c4df --- .../GenericOrganizationalUnit.pdl | 8 +- .../GenericOrganizationalUnit.java | 62 +++--- .../GenericOrganizationalUnitBundle.java | 185 +++++++++++++++++- ...ganizationalUnitSubordinateCollection.java | 20 +- ...cOrganizationalUnitSuperiorCollection.java | 23 ++- .../ui/GenericOrganizationalUnitCreate.java | 10 +- ...anizationalUnitSuperiorOrgaUnitsTable.java | 10 +- .../arsdigita/content-types/SciDepartment.pdl | 4 + .../cms/contenttypes/SciDepartment.xml | 2 +- .../cms/contenttypes/SciDepartmentBundle.java | 48 +++++ .../contenttypes/ui/SciDepartmentCreate.java | 26 +++ .../ui/SciDepartmentProjectsStep.java | 2 +- .../ui/SciDepartmentSubDepartmentsStep.java | 2 +- .../ui/SciDepartmentSuperDepartmentsStep.java | 2 +- .../ui/SciProjectDepartmentsStep.java | 2 +- .../arsdigita/content-types/SciInstitute.pdl | 4 + .../cms/contenttypes/SciInstitute.xml | 2 +- .../cms/contenttypes/SciInstituteBundle.java | 47 +++++ .../ui/SciDepartmentInstitutesStep.java | 2 +- .../contenttypes/ui/SciInstituteCreate.java | 26 +++ .../ui/SciInstituteDepartmentsStep.java | 2 +- .../arsdigita/content-types/SciProject.pdl | 3 + .../cms/contenttypes/SciProjectBundle.java | 49 +++++ .../cms/contenttypes/ui/SciProjectCreate.java | 26 +++ .../ui/SciProjectSubProjectsStep.java | 2 +- .../ui/SciProjectSuperProjectsStep.java | 2 +- 26 files changed, 497 insertions(+), 74 deletions(-) create mode 100644 ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/SciDepartmentBundle.java create mode 100644 ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentCreate.java create mode 100644 ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/SciInstituteBundle.java create mode 100644 ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstituteCreate.java create mode 100644 ccm-sci-types-project/src/com/arsdigita/cms/contenttypes/SciProjectBundle.java create mode 100644 ccm-sci-types-project/src/com/arsdigita/cms/contenttypes/ui/SciProjectCreate.java diff --git a/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl b/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl index c9be9e2b3..26bf6ff75 100644 --- a/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl +++ b/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl @@ -75,15 +75,15 @@ association { //Used build hierarchies of organizational units association { - GenericOrganizationalUnit[0..n] superiorOrgaunits = join cms_organizationalunits.organizationalunit_id + GenericOrganizationalUnitBundle[0..n] superiorOrgaunits = join cms_orgaunit_bundles.bundle_id to cms_organizationalunits_hierarchy_map.subordinate_orgaunit_id, join cms_organizationalunits_hierarchy_map.superior_orgaunit_id - to cms_organizationalunits.organizationalunit_id; + to cms_orgaunit_bundles.bundle_id; - GenericOrganizationalUnit[0..n] subordinateOrgaunits = join cms_organizationalunits.organizationalunit_id + GenericOrganizationalUnitBundle[0..n] subordinateOrgaunits = join cms_orgaunit_bundles.bundle_id to cms_organizationalunits_hierarchy_map.superior_orgaunit_id, join cms_organizationalunits_hierarchy_map.subordinate_orgaunit_id - to cms_organizationalunits.organizationalunit_id; + to cms_orgaunit_bundles.bundle_id; //Additonal attributes for the assoication //Optional string for *internal* data diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnit.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnit.java index 2ebb217e8..500ff9f13 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnit.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnit.java @@ -172,14 +172,15 @@ public class GenericOrganizationalUnit extends ContentPage { } public GenericOrganizationalUnitSuperiorCollection getSuperiorOrgaUnits() { - final DataCollection dataCollection = (DataCollection) get( - SUPERIOR_ORGAUNITS); - return new GenericOrganizationalUnitSuperiorCollection(dataCollection); + //final DataCollection dataCollection = (DataCollection) get( + // SUPERIOR_ORGAUNITS); + //return new GenericOrganizationalUnitSuperiorCollection(dataCollection); + return getGenericOrganizationalUnitBundle().getSuperiorOrgaUnits(); } public void addSuperiorOrgaUnit(final GenericOrganizationalUnit orgaunit, final String assocType) { - Assert.exists(orgaunit, GenericOrganizationalUnit.class); + /*Assert.exists(orgaunit, GenericOrganizationalUnit.class); final DataObject link = add(SUPERIOR_ORGAUNITS, orgaunit); link.set(GenericOrganizationalUnitSuperiorCollection.ASSOCTYPE, @@ -190,7 +191,9 @@ public class GenericOrganizationalUnit extends ContentPage { link.set( GenericOrganizationalUnitSubordinateCollection.SUBORDINATE_ORGAUNIT_ORDER, ((int) getSubordinateOrgaUnits().size()) + 1); - link.save(); + link.save();*/ + getGenericOrganizationalUnitBundle().addSuperiorOrgaUnit(orgaunit, + assocType); } public void addSuperiorOrgaUnit(final GenericOrganizationalUnit orgaunit) { @@ -199,41 +202,26 @@ public class GenericOrganizationalUnit extends ContentPage { public void removeSuperiorOrgaUnit( final GenericOrganizationalUnit orgaunit) { - Assert.exists(orgaunit, GenericOrganizationalUnit.class); - remove(SUPERIOR_ORGAUNITS, orgaunit); + //Assert.exists(orgaunit, GenericOrganizationalUnit.class); + //remove(SUPERIOR_ORGAUNITS, orgaunit); + getGenericOrganizationalUnitBundle().removeSuperiorOrgaUnit(orgaunit); } public boolean hasSuperiorOrgaUnits() { - return !getSuperiorOrgaUnits().isEmpty(); + //return !getSuperiorOrgaUnits().isEmpty(); + return getGenericOrganizationalUnitBundle().hasSuperiorOrgaUnits(); } - - /** - * Gets a collection of subordinate organizational units. Note that their - * is no authoring step registered for this property. The {@code ccm-cms} - * module provides only a form for adding subordinate organizational units - * and a table for showing them. Subtypes of - * {@code GenericOrganizationalUnit} may add these components to their - * authoring steps via a new authoring step which contains the form - * and the table. These authoring steps should be registered by using - * {@link AuthoringKitWizard#registerAssetStep(java.lang.String, java.lang.Class, com.arsdigita.globalization.GlobalizedMessage, com.arsdigita.globalization.GlobalizedMessage, int) } - * in the initalizer of the content type. Some aspects of the form and - * table, for example the labels, can be configured using implementations - * of two interfaces. Please refer to the documentation of - * {@link GenericOrganizationalUnitSubordinateOrgaUnitsTable} and - * {@link GenericOrganizationalUnitSubordinateOrgaUnitAddForm} - * for more information about customizing the table and the form. - * - * @return A collection of subordinate organizational units. - */ + public GenericOrganizationalUnitSubordinateCollection getSubordinateOrgaUnits() { - final DataCollection dataCollection = (DataCollection) get( - SUBORDINATE_ORGAUNITS); - return new GenericOrganizationalUnitSubordinateCollection(dataCollection); + //final DataCollection dataCollection = (DataCollection) get( + // SUBORDINATE_ORGAUNITS); + //return new GenericOrganizationalUnitSubordinateCollection(dataCollection); + return getGenericOrganizationalUnitBundle().getSubordinateOrgaUnits(); } public void addSubordinateOrgaUnit(final GenericOrganizationalUnit orgaunit, final String assocType) { - Assert.exists(orgaunit, GenericOrganizationalUnit.class); + /*Assert.exists(orgaunit, GenericOrganizationalUnit.class); final DataObject link = add(SUBORDINATE_ORGAUNITS, orgaunit); link.set(GenericOrganizationalUnitSubordinateCollection.ASSOCTYPE, @@ -244,7 +232,9 @@ public class GenericOrganizationalUnit extends ContentPage { link.set( GenericOrganizationalUnitSuperiorCollection.SUPERIOR_ORGAUNIT_ORDER, ((int) getSuperiorOrgaUnits().size()) + 1); - link.save(); + link.save();*/ + getGenericOrganizationalUnitBundle().addSubordinateOrgaUnit(orgaunit, + assocType); } public void addSubordinateOrgaUnit(final GenericOrganizationalUnit orgaunit) { @@ -253,12 +243,14 @@ public class GenericOrganizationalUnit extends ContentPage { public void removeSubordinateOrgaUnit( final GenericOrganizationalUnit orgaunit) { - Assert.exists(orgaunit, GenericOrganizationalUnit.class); - remove(SUBORDINATE_ORGAUNITS, orgaunit); + //Assert.exists(orgaunit, GenericOrganizationalUnit.class); + //remove(SUBORDINATE_ORGAUNITS, orgaunit); + getGenericOrganizationalUnitBundle().removeSubordinateOrgaUnit(orgaunit); } public boolean hasSubordinateOrgaUnits() { - return !getSubordinateOrgaUnits().isEmpty(); + //return !getSubordinateOrgaUnits().isEmpty(); + return getGenericOrganizationalUnitBundle().hasSubordinateOrgaUnits(); } @Override diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitBundle.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitBundle.java index bd02fff4e..f774b2a09 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitBundle.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitBundle.java @@ -26,6 +26,8 @@ public class GenericOrganizationalUnitBundle extends ContentBundle { public static final String PERSONS = "persons"; public static final String ORGAUNITS = "organizationalunits"; public final static String CONTACTS = "contacts"; + public final static String SUPERIOR_ORGAUNITS = "superiorOrgaunits"; + public final static String SUBORDINATE_ORGAUNITS = "subordinateOrgaunits"; public GenericOrganizationalUnitBundle(final ContentItem primary) { super(BASE_DATA_OBJECT_TYPE); @@ -111,13 +113,109 @@ public class GenericOrganizationalUnitBundle extends ContentBundle { return !this.getContacts().isEmpty(); } + public GenericOrganizationalUnitSuperiorCollection getSuperiorOrgaUnits() { + return new GenericOrganizationalUnitSuperiorCollection((DataCollection) get( + SUPERIOR_ORGAUNITS)); + } + + public void addSuperiorOrgaUnit(final GenericOrganizationalUnit orgaunit, + final String assocType) { + Assert.exists(orgaunit, GenericOrganizationalUnit.class); + + final DataObject link = + add(SUPERIOR_ORGAUNITS, + orgaunit.getGenericOrganizationalUnitBundle()); + link.set(GenericOrganizationalUnitSuperiorCollection.ASSOCTYPE, + assocType); + link.set( + GenericOrganizationalUnitSuperiorCollection.SUPERIOR_ORGAUNIT_ORDER, + (int) getSuperiorOrgaUnits().size()); + link.set( + GenericOrganizationalUnitSubordinateCollection.SUBORDINATE_ORGAUNIT_ORDER, + (int) getSubordinateOrgaUnits().size() + 1); + + link.save(); + } + + public void addSuperiorOrgaUnit(final GenericOrganizationalUnit orgaunit) { + addSuperiorOrgaUnit(orgaunit, ""); + } + + public void removeSuperiorOrgaUnit( + final GenericOrganizationalUnit orgaunit) { + Assert.exists(orgaunit, GenericOrganizationalUnit.class); + remove(SUPERIOR_ORGAUNITS, orgaunit.getGenericOrganizationalUnitBundle()); + } + + public boolean hasSuperiorOrgaUnits() { + return !getSuperiorOrgaUnits().isEmpty(); + } + + /** + * Gets a collection of subordinate organizational units. Note that their + * is no authoring step registered for this property. The {@code ccm-cms} + * module provides only a form for adding subordinate organizational units + * and a table for showing them. Subtypes of + * {@code GenericOrganizationalUnit} may add these components to their + * authoring steps via a new authoring step which contains the form + * and the table. These authoring steps should be registered by using + * {@link AuthoringKitWizard#registerAssetStep(java.lang.String, java.lang.Class, com.arsdigita.globalization.GlobalizedMessage, com.arsdigita.globalization.GlobalizedMessage, int) } + * in the initalizer of the content type. Some aspects of the form and + * table, for example the labels, can be configured using implementations + * of two interfaces. Please refer to the documentation of + * {@link GenericOrganizationalUnitSubordinateOrgaUnitsTable} and + * {@link GenericOrganizationalUnitSubordinateOrgaUnitAddForm} + * for more information about customizing the table and the form. + * + * @return A collection of subordinate organizational units. + */ + public GenericOrganizationalUnitSubordinateCollection getSubordinateOrgaUnits() { + final DataCollection dataCollection = (DataCollection) get( + SUBORDINATE_ORGAUNITS); + return new GenericOrganizationalUnitSubordinateCollection(dataCollection); + } + + public void addSubordinateOrgaUnit(final GenericOrganizationalUnit orgaunit, + final String assocType) { + Assert.exists(orgaunit, GenericOrganizationalUnit.class); + + final DataObject link = + add(SUBORDINATE_ORGAUNITS, + orgaunit.getGenericOrganizationalUnitBundle()); + link.set(GenericOrganizationalUnitSubordinateCollection.ASSOCTYPE, + assocType); + link.set( + GenericOrganizationalUnitSubordinateCollection.SUBORDINATE_ORGAUNIT_ORDER, + (int) getSubordinateOrgaUnits().size()); + link.set( + GenericOrganizationalUnitSuperiorCollection.SUPERIOR_ORGAUNIT_ORDER, + ((int) getSuperiorOrgaUnits().size()) + 1); + link.save(); + } + + public void addSubordinateOrgaUnit(final GenericOrganizationalUnit orgaunit) { + addSubordinateOrgaUnit(orgaunit, ""); + } + + public void removeSubordinateOrgaUnit( + final GenericOrganizationalUnit orgaunit) { + Assert.exists(orgaunit, GenericOrganizationalUnit.class); + remove(SUBORDINATE_ORGAUNITS, + orgaunit.getGenericOrganizationalUnitBundle()); + } + + public boolean hasSubordinateOrgaUnits() { + return !getSubordinateOrgaUnits().isEmpty(); + } + @Override public boolean copyProperty(final CustomCopy source, final Property property, final ItemCopier copier) { final String attribute = property.getName(); if (copier.getCopyType() == ItemCopier.VERSION_COPY) { - final GenericOrganizationalUnitBundle orgaBundle = (GenericOrganizationalUnitBundle) source; + final GenericOrganizationalUnitBundle orgaBundle = + (GenericOrganizationalUnitBundle) source; if (CONTACTS.equals(attribute)) { final DataCollection contacts = (DataCollection) orgaBundle.get( @@ -136,6 +234,25 @@ public class GenericOrganizationalUnitBundle extends ContentBundle { createPersonAssoc(persons); } + return true; + } else if (SUPERIOR_ORGAUNITS.equals(attribute)) { + final DataCollection superOrgaUnits = + (DataCollection) orgaBundle.get( + SUPERIOR_ORGAUNITS); + + while (superOrgaUnits.next()) { + createSuperiorAssoc(superOrgaUnits); + } + + return true; + } else if (SUBORDINATE_ORGAUNITS.equals(attribute)) { + final DataCollection subOrgaUnits = (DataCollection) orgaBundle. + get(SUBORDINATE_ORGAUNITS); + + while (subOrgaUnits.next()) { + createSubordinateAssoc(subOrgaUnits); + } + return true; } else { return super.copyProperty(source, property, copier); @@ -146,9 +263,11 @@ public class GenericOrganizationalUnitBundle extends ContentBundle { } private void createContactAssoc(final DataCollection contacts) { - final GenericContactBundle draftContact = (GenericContactBundle) DomainObjectFactory. + final GenericContactBundle draftContact = + (GenericContactBundle) DomainObjectFactory. newInstance(contacts.getDataObject()); - final GenericContactBundle liveContact = (GenericContactBundle) draftContact. + final GenericContactBundle liveContact = + (GenericContactBundle) draftContact. getLiveVersion(); if (liveContact != null) { @@ -166,9 +285,11 @@ public class GenericOrganizationalUnitBundle extends ContentBundle { } private void createPersonAssoc(final DataCollection persons) { - final GenericPersonBundle draftPerson = (GenericPersonBundle) DomainObjectFactory. + final GenericPersonBundle draftPerson = + (GenericPersonBundle) DomainObjectFactory. newInstance(persons.getDataObject()); - final GenericPersonBundle livePerson = (GenericPersonBundle) draftPerson. + final GenericPersonBundle livePerson = + (GenericPersonBundle) draftPerson. getLiveVersion(); if (livePerson != null) { @@ -183,6 +304,60 @@ public class GenericOrganizationalUnitBundle extends ContentBundle { link.save(); } + } + + private void createSuperiorAssoc(final DataCollection superOrgaUnits) { + final GenericOrganizationalUnitBundle draftOrga = + (GenericOrganizationalUnitBundle) DomainObjectFactory. + newInstance(superOrgaUnits.getDataObject()); + final GenericOrganizationalUnitBundle liveOrga = + (GenericOrganizationalUnitBundle) draftOrga. + getLiveVersion(); + + if (liveOrga != null) { + final DataObject link = add(SUPERIOR_ORGAUNITS, liveOrga); + + link.set(GenericOrganizationalUnitSuperiorCollection.ASSOCTYPE, + superOrgaUnits.get( + GenericOrganizationalUnitSuperiorCollection.LINK_ASSOCTYPE)); + link.set( + GenericOrganizationalUnitSuperiorCollection.SUPERIOR_ORGAUNIT_ORDER, + superOrgaUnits.get( + GenericOrganizationalUnitSuperiorCollection.LINK_SUPERIOR_ORGAUNIT_ORDER)); + link.set( + GenericOrganizationalUnitSubordinateCollection.SUBORDINATE_ORGAUNIT_ORDER, + superOrgaUnits.get( + GenericOrganizationalUnitSubordinateCollection.LINK_SUBORDINATE_ORGAUNIT_ORDER)); + + link.save(); + } } + + private void createSubordinateAssoc(final DataCollection subOrgaUnits) { + final GenericOrganizationalUnitBundle draftOrga = + (GenericOrganizationalUnitBundle) DomainObjectFactory. + newInstance(subOrgaUnits.getDataObject()); + final GenericOrganizationalUnitBundle liveOrga = + (GenericOrganizationalUnitBundle) draftOrga. + getLiveVersion(); + + if (liveOrga != null) { + final DataObject link = add(SUBORDINATE_ORGAUNITS, liveOrga); + + link.set(GenericOrganizationalUnitSubordinateCollection.ASSOCTYPE, + subOrgaUnits.get( + GenericOrganizationalUnitSubordinateCollection.LINK_ASSOCTYPE)); + link.set( + GenericOrganizationalUnitSubordinateCollection.SUBORDINATE_ORGAUNIT_ORDER, + subOrgaUnits.get( + GenericOrganizationalUnitSubordinateCollection.LINK_SUBORDINATE_ORGAUNIT_ORDER)); + link.set( + GenericOrganizationalUnitSuperiorCollection.SUPERIOR_ORGAUNIT_ORDER, + subOrgaUnits.get( + GenericOrganizationalUnitSuperiorCollection.SUPERIOR_ORGAUNIT_ORDER)); + + link.save(); + } + } } diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitSubordinateCollection.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitSubordinateCollection.java index e59a8f056..43fc42dce 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitSubordinateCollection.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitSubordinateCollection.java @@ -1,5 +1,6 @@ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ContentBundle; import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentPage; import com.arsdigita.domain.DomainCollection; @@ -87,7 +88,7 @@ public class GenericOrganizationalUnitSubordinateCollection extends DomainCollec next(); setSubordinateOrder(currentIndex); rewind(); - + normalizeOrder(); } @@ -130,7 +131,7 @@ public class GenericOrganizationalUnitSubordinateCollection extends DomainCollec next(); setSubordinateOrder(previousIndex); rewind(); - + normalizeOrder(); } @@ -145,9 +146,16 @@ public class GenericOrganizationalUnitSubordinateCollection extends DomainCollec this.rewind(); } + public GenericOrganizationalUnitBundle getGenericOrganizationalUnitBundle() { + return (GenericOrganizationalUnitBundle) DomainObjectFactory.newInstance( + m_dataCollection.getDataObject()); + } + public GenericOrganizationalUnit getGenericOrganizationalUnit() { - return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(m_dataCollection. - getDataObject()); + final ContentBundle bundle = (ContentBundle) DomainObjectFactory. + newInstance(m_dataCollection.getDataObject()); + + return (GenericOrganizationalUnit) bundle.getPrimaryInstance(); } public BigDecimal getId() { @@ -163,10 +171,10 @@ public class GenericOrganizationalUnitSubordinateCollection extends DomainCollec } public String getTitle() { - return (String) m_dataCollection.get(ContentPage.TITLE); + return getGenericOrganizationalUnit().getTitle(); } public String getAddendum() { - return (String) m_dataCollection.get(GenericOrganizationalUnit.ADDENDUM); + return getGenericOrganizationalUnit().getAddendum(); } } diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitSuperiorCollection.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitSuperiorCollection.java index be2998412..163a71f3d 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitSuperiorCollection.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitSuperiorCollection.java @@ -1,5 +1,6 @@ package com.arsdigita.cms.contenttypes; +import com.arsdigita.cms.ContentBundle; import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentPage; import com.arsdigita.domain.DomainCollection; @@ -83,7 +84,7 @@ public class GenericOrganizationalUnitSuperiorCollection extends DomainCollectio next(); setSuperiorOrder(currentIndex); rewind(); - + normalizeOrder(); } @@ -126,11 +127,11 @@ public class GenericOrganizationalUnitSuperiorCollection extends DomainCollectio next(); setSuperiorOrder(previousIndex); rewind(); - + normalizeOrder(); } - - private void normalizeOrder() { + + private void normalizeOrder() { this.rewind(); int i = 1; @@ -141,9 +142,15 @@ public class GenericOrganizationalUnitSuperiorCollection extends DomainCollectio this.rewind(); } + public GenericOrganizationalUnitBundle getGenericOrganizationalUnitBundle() { + return (GenericOrganizationalUnitBundle) DomainObjectFactory.newInstance( + m_dataCollection.getDataObject()); + } + public GenericOrganizationalUnit getGenericOrganizationalUnit() { - return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(m_dataCollection. - getDataObject()); + final ContentBundle bundle = (ContentBundle) DomainObjectFactory. + newInstance(m_dataCollection.getDataObject()); + return (GenericOrganizationalUnit) bundle.getPrimaryInstance(); } public OID getOID() { @@ -155,10 +162,10 @@ public class GenericOrganizationalUnitSuperiorCollection extends DomainCollectio } public String getTitle() { - return (String) m_dataCollection.get(ContentPage.TITLE); + return getGenericOrganizationalUnit().getTitle(); } public String getAddendum() { - return (String) m_dataCollection.get(GenericOrganizationalUnit.ADDENDUM); + return getGenericOrganizationalUnit().getAddendum(); } } diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitCreate.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitCreate.java index 17314dcd3..d6788f050 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitCreate.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitCreate.java @@ -4,6 +4,7 @@ import com.arsdigita.bebop.FormData; import com.arsdigita.bebop.FormProcessException; import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentPage; import com.arsdigita.cms.ContentSection; import com.arsdigita.cms.Folder; @@ -40,8 +41,8 @@ public class GenericOrganizationalUnitCreate extends PageCreate { item.setLaunchDate((Date) data.get(LAUNCH_DATE)); } - final GenericOrganizationalUnitBundle bundle = new GenericOrganizationalUnitBundle( - item); + final GenericOrganizationalUnitBundle bundle = createBundle(item); + //new GenericOrganizationalUnitBundle(item); bundle.setParent(folder); bundle.setContentSection(section); bundle.save(); @@ -51,4 +52,9 @@ public class GenericOrganizationalUnitCreate extends PageCreate { m_parent.editItem(state, item); } + protected GenericOrganizationalUnitBundle createBundle( + final ContentItem primary) { + return new GenericOrganizationalUnitBundle(primary); + } + } diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitSuperiorOrgaUnitsTable.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitSuperiorOrgaUnitsTable.java index fb99172d6..c31969901 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitSuperiorOrgaUnitsTable.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitSuperiorOrgaUnitsTable.java @@ -17,6 +17,7 @@ import com.arsdigita.cms.CMS; import com.arsdigita.cms.ContentSection; import com.arsdigita.cms.ItemSelectionModel; import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitBundle; import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitSuperiorCollection; import com.arsdigita.cms.dispatcher.ItemResolver; import com.arsdigita.cms.dispatcher.Utilities; @@ -170,11 +171,12 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table { final Object key, final int row, final int column) { - final com.arsdigita.cms.SecurityManager securityManager = Utilities. + final com.arsdigita.cms.SecurityManager securityManager = CMS. getSecurityManager(state); - final GenericOrganizationalUnit superiorOrgaUnit = - (GenericOrganizationalUnit) DomainObjectFactory. + final GenericOrganizationalUnitBundle superiorOrgaUnitBundle = + (GenericOrganizationalUnitBundle) DomainObjectFactory. newInstance((OID) key); + final GenericOrganizationalUnit superiorOrgaUnit = (GenericOrganizationalUnit) superiorOrgaUnitBundle.getPrimaryInstance(); final boolean canEdit = securityManager.canAccess( state.getRequest(), @@ -186,7 +188,7 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table { getContentSection(); final ItemResolver resolver = section.getItemResolver(); final Link link = new Link( - String.format("%s (%s)", + String.format("%s", value.toString(), superiorOrgaUnit.getLanguage()), resolver.generateItemURL(state, diff --git a/ccm-sci-types-department/pdl/com/arsdigita/content-types/SciDepartment.pdl b/ccm-sci-types-department/pdl/com/arsdigita/content-types/SciDepartment.pdl index dc4047c30..98016890b 100644 --- a/ccm-sci-types-department/pdl/com/arsdigita/content-types/SciDepartment.pdl +++ b/ccm-sci-types-department/pdl/com/arsdigita/content-types/SciDepartment.pdl @@ -10,6 +10,10 @@ object type SciDepartment extends GenericOrganizationalUnit { reference key ( ct_sci_departments.department_id ); } +object type SciDepartmentBundle extends GenericOrganizationalUnitBundle { + reference key (ct_sci_department_bundles.bundle_id); +} + query getIdsOfContactsOfSciDepartment { BigDecimal contactId; diff --git a/ccm-sci-types-department/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciDepartment.xml b/ccm-sci-types-department/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciDepartment.xml index aca8470b3..e9f8a06eb 100644 --- a/ccm-sci-types-department/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciDepartment.xml +++ b/ccm-sci-types-department/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciDepartment.xml @@ -10,7 +10,7 @@ objectType="com.arsdigita.cms.contenttypes.SciDepartment" classname="com.arsdigita.cms.contenttypes.SciDepartment"> - + - +