From e672128cbec889a2e0b3cd024a2f61ac8521b233 Mon Sep 17 00:00:00 2001 From: jensp Date: Fri, 25 Oct 2013 12:07:46 +0000 Subject: [PATCH] =?UTF-8?q?Im=20SummaryTab=20f=C3=BCr=20SciDepartment=20we?= =?UTF-8?q?rden=20jetzt=20zus=C3=A4tzlich=20die=20stellvertretende=20Abtei?= =?UTF-8?q?lungsleitung=20und=20das=20Sekretriat=20im=20XML=20ausgegeben.?= =?UTF-8?q?=20Notwendig=20f=C3=BCr=20Ticket=20#1894.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@2384 8810af33-2d31-482b-a856-94f89814c4df --- .../ui/GenericOrgaUnitExtraXmlGenerator.java | 14 +- .../ui/SciDepartmentExtraXmlGenerator.java | 10 +- .../ui/SciDepartmentSummaryTab.java | 210 ++++++++++-------- .../ui/SciDepartmentSummaryTabConfig.java | 85 +++++-- ...tmentSummaryTabConfig_parameter.properties | 30 ++- 5 files changed, 227 insertions(+), 122 deletions(-) diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrgaUnitExtraXmlGenerator.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrgaUnitExtraXmlGenerator.java index 115866fc9..e81511e62 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrgaUnitExtraXmlGenerator.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrgaUnitExtraXmlGenerator.java @@ -35,17 +35,17 @@ import org.apache.log4j.Logger; public abstract class GenericOrgaUnitExtraXmlGenerator implements ExtraXMLGenerator { - private final static Logger logger = + private final static Logger LOGGER = Logger.getLogger( GenericOrgaUnitExtraXmlGenerator.class); private boolean listMode = false; private final static String SELECTED_TAB_PARAM = "selectedTab"; private String showOnly; + @Override public void generateXML(final ContentItem item, final Element element, final PageState state) { - final long start = System.currentTimeMillis(); if (!(item instanceof GenericOrganizationalUnit)) { throw new IllegalArgumentException( "This ExtraXMLGenerator supports " @@ -85,7 +85,7 @@ public abstract class GenericOrgaUnitExtraXmlGenerator } } } - logger.debug(String.format( + LOGGER.debug(String.format( "Created available tabs XML for " + "GenericOrganizationalUnit '%s' in %d ms.", orgaunit.getName(), @@ -102,12 +102,6 @@ public abstract class GenericOrgaUnitExtraXmlGenerator } else { orgaUnitTabsElem.newChildElement("selectedTabNotAvailable"); } - - - logger.debug(String.format("Generated XML for GenericOrganizationalUnit " - + "'%s' in %d ms", - orgaunit.getName(), - System.currentTimeMillis() - start)); } /** @@ -158,7 +152,7 @@ public abstract class GenericOrgaUnitExtraXmlGenerator processTabConfigToken(tabs, token); } - logger.debug(String.format("Processed tab config in %d ms", + LOGGER.debug(String.format("Processed tab config in %d ms", System.currentTimeMillis() - start)); return tabs; } diff --git a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentExtraXmlGenerator.java b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentExtraXmlGenerator.java index 62de36ed8..285d2d56a 100644 --- a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentExtraXmlGenerator.java +++ b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentExtraXmlGenerator.java @@ -5,17 +5,17 @@ import com.arsdigita.cms.contenttypes.SciDepartmentConfig; /** * - * @author Jens Pelzetter + * @author Jens Pelzetter * @version $Id$ */ -public class SciDepartmentExtraXmlGenerator -extends GenericOrgaUnitExtraXmlGenerator { +public class SciDepartmentExtraXmlGenerator + extends GenericOrgaUnitExtraXmlGenerator { @Override public String getTabConfig() { final SciDepartmentConfig config = SciDepartment.getConfig(); - + return config.getTabs(); } - + } diff --git a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTab.java b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTab.java index 0adb0cbe5..e60be606a 100644 --- a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTab.java +++ b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTab.java @@ -18,17 +18,17 @@ import org.apache.log4j.Logger; /** * - * @author Jens Pelzetter + * @author Jens Pelzetter * @version $Id$ */ public class SciDepartmentSummaryTab implements GenericOrgaUnitTab { - private final Logger logger = Logger.getLogger(SciDepartmentSummaryTab.class); - private final static SciDepartmentSummaryTabConfig config = new SciDepartmentSummaryTabConfig(); + private static final Logger LOGGER = Logger.getLogger(SciDepartmentSummaryTab.class); + private final static SciDepartmentSummaryTabConfig CONFIG = new SciDepartmentSummaryTabConfig(); private String key; static { - config.load(); + CONFIG.load(); } @Override @@ -59,7 +59,6 @@ public class SciDepartmentSummaryTab implements GenericOrgaUnitTab { orgaunit.getClass().getName())); } - final long start = System.currentTimeMillis(); final SciDepartment department = (SciDepartment) orgaunit; final Element departmentSummaryElem = parent.newChildElement( @@ -67,94 +66,149 @@ public class SciDepartmentSummaryTab implements GenericOrgaUnitTab { generateShortDescXml(department, departmentSummaryElem); - if (config.isShowingHead()) { + if (CONFIG.isShowingHead()) { generateHeadOfDepartmentXml(department, departmentSummaryElem, state); } - if (config.isShowingSubDepartment()) { + if (CONFIG.isShowingViceHead()) { + generateViceHeadOfDepartmentXml(department, departmentSummaryElem, state); + } + + if (CONFIG.isShowingSecretriat()) { + generateSecretariatOfDepartmentXml(department, departmentSummaryElem, state); + } + + if (CONFIG.isShowingSubDepartment()) { generateSubDepartmentsXml(department, departmentSummaryElem, state); } - if (config.isShowingContacts()) { + if (CONFIG.isShowingContacts()) { generateContactsXml(department, departmentSummaryElem, state); } - - logger.debug(String.format("Generated XML for summary tab of department " - + "'%s' in %d ms.", - orgaunit.getName(), - System.currentTimeMillis() - start)); } protected void generateShortDescXml(final SciDepartment department, final Element parent) { - final long start = System.currentTimeMillis(); - if ((department != null) && (department.getDepartmentShortDescription() != null) && !department.getDepartmentShortDescription().trim().isEmpty()) { final Element shortDescElem = parent.newChildElement("shortDesc"); shortDescElem.setText(department.getDepartmentShortDescription()); } - - logger.debug(String.format("Generated short desc XML for department '%s' " - + "in %d ms", - department.getName(), - System.currentTimeMillis() - start)); } - protected void generateHeadOfDepartmentXml(final SciDepartment department, - final Element parent, - final PageState state) { - final long start = System.currentTimeMillis(); - final String headRoleStr = config.getHeadRole(); - final String activeStatusStr = config.getActiveStatus(); - - final String[] headRoles = headRoleStr.split(","); + protected void generateSpecialRolesOfDepartmentXml(final SciDepartment department, + final Element parent, + final PageState state, + final String role, + final String elemName) { + final String activeStatusStr = CONFIG.getActiveStatus(); + final String[] roles = role.split(","); final String[] activeStatuses = activeStatusStr.split(","); final StringBuffer roleFilter = new StringBuffer(); - for (String headRole : headRoles) { + for (String currentRole : roles) { if (roleFilter.length() > 0) { roleFilter.append(','); } roleFilter.append(String.format("%s = '%s'", GenericOrganizationalUnitPersonCollection.LINK_PERSON_ROLE, - headRole)); + currentRole)); } final StringBuffer statusFilter = new StringBuffer(); for (String activeStatus : activeStatuses) { if (statusFilter.length() > 0) { - statusFilter.append(","); + statusFilter.append(','); } statusFilter.append(String.format("%s = '%s'", GenericOrganizationalUnitPersonCollection.LINK_STATUS, activeStatus)); } - final Element headsElem = parent.newChildElement("heads"); + final Element elem = parent.newChildElement(elemName); - final GenericOrganizationalUnitPersonCollection heads = department. - getPersons(); - heads.addFilter(roleFilter.toString()); - heads.addFilter(statusFilter.toString()); - heads.addOrder("name"); + final GenericOrganizationalUnitPersonCollection persons = department.getPersons(); + persons.addFilter(roleFilter.toString()); + persons.addFilter(statusFilter.toString()); + persons.addOrder("name"); - while (heads.next()) { - generateHeadXml(heads.getPerson(), headsElem, state); + while (persons.next()) { + generateSpecialRoleXml(persons.getPerson(), elem, state, "head"); } - logger.debug(String.format("Generated head of department XML for department '%s' " - + "in %d ms", - department.getName(), - System.currentTimeMillis() - start)); + } + + protected void generateHeadOfDepartmentXml(final SciDepartment department, + final Element parent, + final PageState state) { + generateSpecialRolesOfDepartmentXml(department, + parent, + state, + CONFIG.getHeadRole(), + "heads"); + +// final String headRoleStr = config.getHeadRole(); +// final String activeStatusStr = config.getActiveStatus(); +// final String[] headRoles = headRoleStr.split(","); +// final String[] activeStatuses = activeStatusStr.split(","); +// +// final StringBuffer roleFilter = new StringBuffer(); +// for (String headRole : headRoles) { +// if (roleFilter.length() > 0) { +// roleFilter.append(','); +// } +// roleFilter.append(String.format("%s = '%s'", +// GenericOrganizationalUnitPersonCollection.LINK_PERSON_ROLE, +// headRole)); +// } +// +// final StringBuffer statusFilter = new StringBuffer(); +// for (String activeStatus : activeStatuses) { +// if (statusFilter.length() > 0) { +// statusFilter.append(","); +// } +// statusFilter.append(String.format("%s = '%s'", +// GenericOrganizationalUnitPersonCollection.LINK_STATUS, +// activeStatus)); +// } +// +// final Element headsElem = parent.newChildElement("heads"); +// +// final GenericOrganizationalUnitPersonCollection heads = department. +// getPersons(); +// heads.addFilter(roleFilter.toString()); +// heads.addFilter(statusFilter.toString()); +// heads.addOrder("name"); +// +// while (heads.next()) { +// generateHeadXml(heads.getPerson(), headsElem, state); +// } + } + + protected void generateViceHeadOfDepartmentXml(final SciDepartment department, + final Element parent, + final PageState state) { + generateSpecialRolesOfDepartmentXml(department, + parent, + state, + CONFIG.getViceHeadRole(), + "viceheads"); + } + + protected void generateSecretariatOfDepartmentXml(final SciDepartment department, + final Element parent, + final PageState state) { + generateSpecialRolesOfDepartmentXml(department, + parent, + state, + CONFIG.getSecretariatRole(), + "secretariat"); } protected void generateSubDepartmentsXml(final SciDepartment department, final Element parent, final PageState state) { - final long start = System.currentTimeMillis(); - final GenericOrganizationalUnitSubordinateCollection subDepartments = department. getSubordinateOrgaUnits(); subDepartments.addFilter( @@ -170,19 +224,12 @@ public class SciDepartmentSummaryTab implements GenericOrgaUnitTab { subDepsElem, state); } - - logger.debug(String.format("Generated sub departments XML for department '%s' " - + "in %d ms", - department.getName(), - System.currentTimeMillis() - start)); } protected void generateSubDepartmentXml( final GenericOrganizationalUnit orgaunit, final Element parent, final PageState state) { - final long start = System.currentTimeMillis(); - if (!(orgaunit instanceof SciDepartment)) { throw new IllegalArgumentException(String.format( "Can't process " @@ -201,42 +248,39 @@ public class SciDepartmentSummaryTab implements GenericOrgaUnitTab { nameElem.setText(subDepartment.getTitle()); generateHeadOfDepartmentXml(subDepartment, subDepElem, state); - - logger.debug(String.format("Generated XML for sub department '%s' " - + "in %d ms", - orgaunit.getName(), - System.currentTimeMillis() - start)); } - protected void generateHeadXml(final BigDecimal memberId, - final Element parent, - final PageState state) { - final long start = System.currentTimeMillis(); - final GenericPerson member = new GenericPerson(memberId); - logger.debug(String.format("Got domain object for member '%s' " - + "in %d ms.", - member.getFullName(), - System.currentTimeMillis() - start)); - generateHeadXml(member, parent, state); - } - - protected void generateHeadXml(final GenericPerson member, - final Element parent, - final PageState state) { - final long start = System.currentTimeMillis(); +// protected void generateHeadXml(final BigDecimal memberId, +// final Element parent, +// final PageState state) { +// final GenericPerson member = new GenericPerson(memberId); +// generateHeadXml(member, parent, state); +// } + protected void generateSpecialRoleXml(final GenericPerson member, + final Element parent, + final PageState state, + final String elemName) { final XmlGenerator generator = new XmlGenerator(member); - generator.setUseExtraXml(false); - generator.setItemElemName("head", ""); + if (CONFIG.isShowingRoleContacts()) { + generator.setUseExtraXml(true); + } else { + generator.setUseExtraXml(false); + } + generator.setItemElemName(elemName, ""); generator.generateXML(state, parent, ""); - logger.debug(String.format("Generated XML for member '%s' in %d ms.", - member.getFullName(), - System.currentTimeMillis() - start)); } +// protected void generateHeadXml(final GenericPerson member, +// final Element parent, +// final PageState state) { +// final XmlGenerator generator = new XmlGenerator(member); +// generator.setUseExtraXml(false); +// generator.setItemElemName("head", ""); +// generator.generateXML(state, parent, ""); +// } protected void generateContactsXml(final SciDepartment department, final Element parent, final PageState state) { - final long start = System.currentTimeMillis(); final GenericOrganizationalUnitContactCollection contacts = department. getContacts(); @@ -252,26 +296,18 @@ public class SciDepartmentSummaryTab implements GenericOrgaUnitTab { contactsElem, state); } - logger.debug(String.format("Generated XML for contacts of project '%s'" - + " in %d ms.", - department.getName(), - System.currentTimeMillis() - start)); } protected void generateContactXml(final GenericContact contact, final String contactType, final Element parent, final PageState state) { - final long start = System.currentTimeMillis(); final XmlGenerator generator = new XmlGenerator(contact); generator.setUseExtraXml(false); generator.setItemElemName("contact", ""); generator.addItemAttribute("contactType", getContactTypeName(contactType)); generator.generateXML(state, parent, ""); - logger.debug(String.format("Generated XML for contact '%s' in %d ms.", - contact.getName(), - System.currentTimeMillis() - start)); } private String getContactTypeName(final String contactTypeKey) { diff --git a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTabConfig.java b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTabConfig.java index c188e99f7..285e6a8c5 100644 --- a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTabConfig.java +++ b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTabConfig.java @@ -7,72 +7,127 @@ import com.arsdigita.util.parameter.StringParameter; /** * - * @author Jens Pelzetter + * @author Jens Pelzetter * @version $Id$ */ public class SciDepartmentSummaryTabConfig extends AbstractConfig { private final Parameter showHeads; private final Parameter headRole; + private final Parameter showViceHeads; + private final Parameter viceHeadRole; + private final Parameter showSecretariat; + private final Parameter secretariatRole; + private final Parameter showRoleContacts; private final Parameter activeStatus; private final Parameter showSubDepartments; private final Parameter showContacts; public SciDepartmentSummaryTabConfig() { + super(); - showHeads = - new BooleanParameter( + showHeads = new BooleanParameter( "com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.show", Parameter.REQUIRED, true); - - headRole = - new StringParameter( + + headRole = new StringParameter( "com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.role", Parameter.REQUIRED, "head"); - + + showViceHeads = new BooleanParameter( + "com.arsdigita.cms.contenttypes.scidepartment.summarytab.viceheads.show", + Parameter.REQUIRED, + true); + + viceHeadRole = new StringParameter( + "com.arsdigita.cms.contenttypes.scidepartment.summarytab.viceheads.role", + Parameter.REQUIRED, + "vicehead"); + + showSecretariat = new BooleanParameter( + "com.arsdigita.cms.contenttypes.scidepartment.summarytab.secretariat.show", + Parameter.REQUIRED, + true); + + secretariatRole = new StringParameter( + "com.arsdigita.cms.contenttypes.scidepartment.summarytab.secretariat.role", + Parameter.REQUIRED, + "secretariat"); + + showRoleContacts = new BooleanParameter( + "com.arsdigita.cms.contenttypes.scidepartment.summarytab.role_contacts.show", + Parameter.REQUIRED, + true); + activeStatus = new StringParameter( - "com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.status.active", + "com.arsdigita.cms.contenttypes.scidepartment.summarytab.status.active", Parameter.REQUIRED, "active"); - + showSubDepartments = new BooleanParameter( "com.arsdigita.cms.contenttypes.scidepartment.summarytab.subdepartments.show", Parameter.REQUIRED, true); - + showContacts = new BooleanParameter( "com.arsdigita.cms.contenttypes.scidepartment.summarytab.contacts.show", Parameter.REQUIRED, true); - + register(showHeads); register(headRole); + register(showViceHeads); + register(viceHeadRole); + register(showSecretariat); + register(secretariatRole); + register(showRoleContacts); register(activeStatus); register(showSubDepartments); register(showContacts); loadInfo(); } - + public final boolean isShowingHead() { return (Boolean) get(showHeads); } - + public final String getHeadRole() { return (String) get(headRole); } + + public final boolean isShowingViceHead() { + return (Boolean) get(showViceHeads); + } + + public final String getViceHeadRole() { + return (String) get(viceHeadRole); + } + + public final boolean isShowingSecretriat() { + return (Boolean) get(showSecretariat); + } + + public final String getSecretariatRole() { + return (String) get(secretariatRole); + } + public final boolean isShowingRoleContacts() { + return (Boolean) get(showRoleContacts); + } + public final String getActiveStatus() { return (String) get(activeStatus); } - + public final boolean isShowingSubDepartment() { return (Boolean) get(showSubDepartments); } - + public final boolean isShowingContacts() { return (Boolean) get(showContacts); } + } diff --git a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTabConfig_parameter.properties b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTabConfig_parameter.properties index f5d37a724..a6edd7e7d 100644 --- a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTabConfig_parameter.properties +++ b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSummaryTabConfig_parameter.properties @@ -5,13 +5,33 @@ com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.show.format = [Boo com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.role.title = Role of the heads of the department com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.role.purpose = Role of the heads of the department. This is an attribute of the association between GenericOrganizationalUnit and GenericPerson. This value may contains more than value, separated by ','. -com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.role.example = active,heading +com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.role.example = head com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.role.format = [String] -com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.status.active.title = Status of active members -com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.status.active.purpose = Status of the active members of the department. Used to filter out former heads. This is an attribute of the association between GenericOrganizationalUnit and GenericPerson. This value may contains more than value, separated by ','. -com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.status.active.example = former,formerHead -com.arsdigita.cms.contenttypes.scidepartment.summarytab.heads.status.active.format = [String] +com.arsdigita.cms.contenttypes.scidepartment.summarytab.viceheads.show.title = Show vice heads of department in summary tab? +com.arsdigita.cms.contenttypes.scidepartment.summarytab.viceheads.show.purpose = Show vice heads of department in summary tab? +com.arsdigita.cms.contenttypes.scidepartment.summarytab.viceheads.show.example = true +com.arsdigita.cms.contenttypes.scidepartment.summarytab.viceheads.show.format = [Boolean] + +com.arsdigita.cms.contenttypes.scidepartment.summarytab.viceheads.role.title = Role of the vice heads of the department +com.arsdigita.cms.contenttypes.scidepartment.summarytab.viceheads.role.purpose = Role of the vice heads of the department. This is an attribute of the association between GenericOrganizationalUnit and GenericPerson. This value may contains more than value, separated by ','. +com.arsdigita.cms.contenttypes.scidepartment.summarytab.viceheads.role.example = vicehead +com.arsdigita.cms.contenttypes.scidepartment.summarytab.viceheads.role.format = [String] + +com.arsdigita.cms.contenttypes.scidepartment.summarytab.secretariat.show.title = Show secretariat of department in summary tab? +com.arsdigita.cms.contenttypes.scidepartment.summarytab.secretariat.show.purpose = Show secretariat of department in summary tab? +com.arsdigita.cms.contenttypes.scidepartment.summarytab.secretariat.show.example = true +com.arsdigita.cms.contenttypes.scidepartment.summarytab.secretariat.show.format = [Boolean] + +com.arsdigita.cms.contenttypes.scidepartment.summarytab.secretariat.role.title = Role of secretaries of the department +com.arsdigita.cms.contenttypes.scidepartment.summarytab.secretariat.role.purpose = Role of secretaries of the department. This is an attribute of the association between GenericOrganizationalUnit and GenericPerson. This value may contains more than value, separated by ','. +com.arsdigita.cms.contenttypes.scidepartment.summarytab.secretariat.role.example = secretariat +com.arsdigita.cms.contenttypes.scidepartment.summarytab.secretariat.role.format = [String] + +com.arsdigita.cms.contenttypes.scidepartment.summarytab.status.active.title = Status of active members +com.arsdigita.cms.contenttypes.scidepartment.summarytab.status.active.purpose = Status of the active members of the department. Used to filter out former heads. This is an attribute of the association between GenericOrganizationalUnit and GenericPerson. This value may contains more than value, separated by ','. +com.arsdigita.cms.contenttypes.scidepartment.summarytab.status.active.example = former,formerHead +com.arsdigita.cms.contenttypes.scidepartment.summarytab.status.active.format = [String] com.arsdigita.cms.contenttypes.scidepartment.summarytab.contacts.show.title = Show contact? com.arsdigita.cms.contenttypes.scidepartment.summarytab.contacts.show.purpose = Show contact?