Sichern des aktuellen Stands der neuen Sci-Typen

git-svn-id: https://svn.libreccm.org/ccm/trunk@1267 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-11-18 19:35:01 +00:00
parent 469ec4ab1e
commit acc72a0b5c
22 changed files with 273 additions and 79 deletions

View File

@ -9,6 +9,7 @@ import com.arsdigita.bebop.PageFactory;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.ParameterSingleSelectionModel; import com.arsdigita.bebop.ParameterSingleSelectionModel;
import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ContentSection; import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ReusableImageAsset; import com.arsdigita.cms.ReusableImageAsset;
@ -368,11 +369,14 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
links.close(); links.close();
final ContentItem item = final ContentItem item =
link.getTargetItem(); link.getTargetItem();
final Element contentPanelElem = root.
newChildElement("cms:contentPanel",
CMS.CMS_XML_NS);
final PublicPersonalProfileXmlGenerator generator = final PublicPersonalProfileXmlGenerator generator =
new PublicPersonalProfileXmlGenerator( new PublicPersonalProfileXmlGenerator(
item); item);
generator.generateXML(state, generator.generateXML(state,
root, contentPanelElem,
""); "");
} }
@ -390,10 +394,16 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
(ContentItem) DomainObjectFactory. (ContentItem) DomainObjectFactory.
newInstance(itemOid); newInstance(itemOid);
final Element contentPanelElem = root.
newChildElement("cms:contentPanel",
CMS.CMS_XML_NS);
final PublicPersonalProfileXmlGenerator generator = final PublicPersonalProfileXmlGenerator generator =
new PublicPersonalProfileXmlGenerator( new PublicPersonalProfileXmlGenerator(
item); item);
generator.generateXML(state, root, ""); generator.generateXML(state,
contentPanelElem,
"");
} catch (DataObjectNotFoundException ex) { } catch (DataObjectNotFoundException ex) {
logger.error(String.format( logger.error(String.format(

View File

@ -162,10 +162,22 @@ query getIdsOfMembersOfOrgaUnits {
String roleName; String roleName;
String status; String status;
options {
WRAP_QUERIES = false;
}
do { do {
select distinct on (cms_persons.person_id) cms_persons.person_id, cms_persons.surname, cms_persons.givenname, cms_organizationalunits_person_map.organizationalunit_id, cms_organizationalunits_person_map.role_name, cms_organizationalunits_person_map.status select distinct on (cms_persons.person_id)
cms_persons.person_id,
cms_persons.surname,
cms_persons.givenname,
cms_organizationalunits_person_map.organizationalunit_id,
cms_organizationalunits_person_map.role_name,
cms_organizationalunits_person_map.status
from cms_persons from cms_persons
join cms_organizationalunits_person_map on cms_persons.person_id = cms_organizationalunits_person_map.person_id join cms_organizationalunits_person_map on cms_persons.person_id = cms_organizationalunits_person_map.person_id
where cms_organizationalunits_person_map.organizationalunit_id in :orgaunitIds
} map { } map {
memberId = cms_persons.person_id; memberId = cms_persons.person_id;
orgaunitId = cms_organizationalunits_person_map.organizationalunit_id; orgaunitId = cms_organizationalunits_person_map.organizationalunit_id;
@ -175,3 +187,4 @@ query getIdsOfMembersOfOrgaUnits {
status = cms_organizationalunits_person_map.status; status = cms_organizationalunits_person_map.status;
} }
} }
//select distinct on (cms_persons.person_id)

View File

@ -117,6 +117,8 @@ public class ContentItemXMLRenderer extends DomainObjectXMLRenderer {
relationAttributeCollection.next(); relationAttributeCollection.next();
Element element = newElement(m_element, m_keyName); Element element = newElement(m_element, m_keyName);
element.setText(relationAttributeCollection.getName()); element.setText(relationAttributeCollection.getName());
Element elementId = newElement(m_element, m_keyName + "Id");
elementId.setText(relationAttributeCollection.getKey());
relationAttributeCollection.close(); relationAttributeCollection.close();
} }
return; return;

View File

@ -144,8 +144,14 @@ public class GenericOrganizationalUnitContactAddForm
if (selectedContact == null) { if (selectedContact == null) {
GenericContact contact = (GenericContact) data.get(ITEM_SEARCH); GenericContact contact = (GenericContact) data.get(ITEM_SEARCH);
if (orgaunit.getLanguage().equals(
GlobalizationHelper.LANG_INDEPENDENT)) {
contact = (GenericContact) contact.getContentBundle().
getPrimaryInstance();
} else {
contact = (GenericContact) contact.getContentBundle(). contact = (GenericContact) contact.getContentBundle().
getInstance(orgaunit.getLanguage()); getInstance(orgaunit.getLanguage());
}
orgaunit.addContact(contact, orgaunit.addContact(contact,
(String) data.get( (String) data.get(
@ -203,7 +209,10 @@ public class GenericOrganizationalUnitContactAddForm
GenericContact contact = (GenericContact) data.get(ITEM_SEARCH); GenericContact contact = (GenericContact) data.get(ITEM_SEARCH);
if (!(contact.getContentBundle().hasInstance(orgaunit.getLanguage(), if (!(orgaunit.getLanguage().equals(
GlobalizationHelper.LANG_INDEPENDENT))) {
if (!(contact.getContentBundle().hasInstance(orgaunit.
getLanguage(),
Kernel.getConfig(). Kernel.getConfig().
languageIndependentItems()))) { languageIndependentItems()))) {
data.addError( data.addError(
@ -212,9 +221,17 @@ public class GenericOrganizationalUnitContactAddForm
return; return;
} }
}
contact = (GenericContact) contact.getContentBundle().getInstance(orgaunit.
getLanguage()); if (orgaunit.getLanguage().equals(
GlobalizationHelper.LANG_INDEPENDENT)) {
contact = (GenericContact) contact.getContentBundle().
getPrimaryInstance();
} else {
contact = (GenericContact) contact.getContentBundle().
getInstance(orgaunit.getLanguage());
}
GenericOrganizationalUnitContactCollection contacts = orgaunit. GenericOrganizationalUnitContactCollection contacts = orgaunit.
getContacts(); getContacts();

View File

@ -89,11 +89,11 @@ public class Paginator {
logger.debug(String.format("Applying limits: %d, %d", logger.debug(String.format("Applying limits: %d, %d",
getBegin(), getBegin(),
getEnd())); getEnd()));
if (getBegin() == getEnd()) { /*if (getBegin() == getEnd()) {
query.setRange(getBegin(), getEnd() + 1); query.setRange(getBegin(), getEnd() + 1);
} else { } else {*/
query.setRange(getBegin(), getEnd()); query.setRange(getBegin(), getEnd() + 1);
} //}
} }
public int getPageCount() { public int getPageCount() {

View File

@ -45,6 +45,8 @@ import com.arsdigita.xml.Element;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
/** /**
* <p>The default <tt>XMLGenerator</tt> implementation.</p> * <p>The default <tt>XMLGenerator</tt> implementation.</p>
@ -67,6 +69,11 @@ public class SimpleXMLGenerator implements XMLGenerator {
* your generator. * your generator.
*/ */
private boolean useExtraXml = true; private boolean useExtraXml = true;
/**
* Extra attributes for the cms:item element.
*/
private Map<String, String> itemAttributes =
new LinkedHashMap<String, String>();
/** /**
* Allows to overwrite the name and the namespace of the XML element * Allows to overwrite the name and the namespace of the XML element
* used to wrap the rendered item. * used to wrap the rendered item.
@ -96,14 +103,17 @@ public class SimpleXMLGenerator implements XMLGenerator {
this.useExtraXml = useExtraXml; this.useExtraXml = useExtraXml;
} }
public void addItemAttribute(final String name,
final String value) {
itemAttributes.put(name, value);
}
public void setItemElemName(final String itemElemName, public void setItemElemName(final String itemElemName,
final String itemElemNs) { final String itemElemNs) {
this.itemElemName = itemElemName; this.itemElemName = itemElemName;
this.itemElemNs = itemElemNs; this.itemElemNs = itemElemNs;
} }
/** /**
* Generates the XML to render the content panel. * Generates the XML to render the content panel.
* *
@ -266,6 +276,11 @@ public class SimpleXMLGenerator implements XMLGenerator {
if (useContext != null) { if (useContext != null) {
element.addAttribute("useContext", useContext); element.addAttribute("useContext", useContext);
} }
for (Map.Entry<String, String> attr : itemAttributes.entrySet()) {
element.addAttribute(attr.getKey(), attr.getValue());
}
return element; return element;
} }

View File

@ -0,0 +1,75 @@
package com.arsdigita.bundle.ui;
import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.ui.GenericOrgaUnitTab;
import com.arsdigita.dispatcher.DispatcherHelper;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.navigation.ui.AbstractComponent;
import com.arsdigita.persistence.OID;
import com.arsdigita.util.UncheckedWrapperException;
import com.arsdigita.xml.Element;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* A wrapper around {@link GenericOrgaUnitTab} which allows it to use the
* output of an implementation of {@link GenericOrgaUnitTab} independently from
* a {@link GenericOrganizationalUnit} item. This allows it to create an
* special JSP and the show a tab as a navigation point.
*
* @author Jens Pelzetter
* @version $Id$
*/
public class GenericOrgaUnitTabComponent extends AbstractComponent {
private Page page;
private OID orgaunitOid;
private GenericOrgaUnitTab tab;
public void setPage(final Page page) {
this.page = page;
}
/**
* The OID of the orga unit to use. Use the OID of the master version (can
* be found in the overview tab in the content-center in the stable link)
* here
* @param oid
*/
public void setOrgaUnit(final String oid) {
this.orgaunitOid = OID.valueOf(oid);
}
public void setOrgaUnitTab(final GenericOrgaUnitTab tab) {
this.tab = tab;
}
public Element generateXML(final HttpServletRequest request,
final HttpServletResponse response) {
final PageState state;
try {
state = new PageState(page, request, response);
} catch (ServletException ex) {
throw new UncheckedWrapperException(ex);
}
GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) DomainObjectFactory.
newInstance(orgaunitOid);
if (!DispatcherHelper.getDispatcherPrefix(request).equals("preview")) {
orgaunit = (GenericOrganizationalUnit) orgaunit.getLiveVersion();
}
final Element tabsElem = new Element("orgaUnitTabs");
final Element selectedTabElem = tabsElem.newChildElement("selectedTab");
if (orgaunit != null) {
tab.generateXml(orgaunit, selectedTabElem, state);
}
return tabsElem;
}
}

View File

@ -251,7 +251,7 @@ public class PersonalPublications implements ContentGenerator {
if (typeToken.endsWith("_reviewed")) { if (typeToken.endsWith("_reviewed")) {
return String.format("(objectType = '%s' and reviewed = 'true')", return String.format("(objectType = '%s' and reviewed = 'true')",
typeToken.substring(0, typeToken.length() - 9)); typeToken.substring(0, typeToken.length() - 9));
} else if (typeToken.endsWith("notreviewed")) { } else if (typeToken.endsWith("_notreviewed")) {
return String.format( return String.format(
"(objectType = '%s' and (reviewed = 'false' or reviewed is null))", "(objectType = '%s' and (reviewed = 'false' or reviewed is null))",
typeToken.substring(0, typeToken.length() - 12)); typeToken.substring(0, typeToken.length() - 12));

View File

@ -61,9 +61,7 @@ public class PersonalPublicationsConfig extends AbstractConfig {
* be used here. * be used here.
*/ */
private final Parameter defaultGroup; private final Parameter defaultGroup;
private final Parameter pageSize; private final Parameter pageSize;
private final Parameter order; private final Parameter order;
public PersonalPublicationsConfig() { public PersonalPublicationsConfig() {
@ -73,8 +71,8 @@ public class PersonalPublicationsConfig extends AbstractConfig {
Parameter.REQUIRED, Parameter.REQUIRED,
"monographs:com.arsdigita.cms.contenttypes.Monograph;" "monographs:com.arsdigita.cms.contenttypes.Monograph;"
+ "collectedVolumeArticles:com.arsdigita.cms.contenttypes.ArticleInCollectedVolume;" + "collectedVolumeArticles:com.arsdigita.cms.contenttypes.ArticleInCollectedVolume;"
+ "journalArticles:com.arsdigita.cms.contenttypes.ArticleInJournal;"
+ "journalArticlesReviewed:com.arsdigita.cms.contenttypes.ArticleInJournal_reviewed;" + "journalArticlesReviewed:com.arsdigita.cms.contenttypes.ArticleInJournal_reviewed;"
+ "journalArticles:com.arsdigita.cms.contenttypes.ArticleInJournal_notreviewed;"
+ "collectedVolumes:com.arsdigita.cms.contenttypes.CollectedVolume"); + "collectedVolumes:com.arsdigita.cms.contenttypes.CollectedVolume");
groupSplit = new IntegerParameter( groupSplit = new IntegerParameter(
@ -82,7 +80,8 @@ public class PersonalPublicationsConfig extends AbstractConfig {
Parameter.REQUIRED, Parameter.REQUIRED,
12); 12);
defaultGroup = new StringParameter( defaultGroup =
new StringParameter(
"com.arsdigita.cms.publicpersonalprofile.publications.defaultGroup", "com.arsdigita.cms.publicpersonalprofile.publications.defaultGroup",
Parameter.REQUIRED, Parameter.REQUIRED,
"monographs,journalArticlesReviewed,journalArticles,misc"); "monographs,journalArticlesReviewed,journalArticles,misc");

View File

@ -0,0 +1,9 @@
-- Add column for authors property in ct_publications table
alter table ct_publications add column authors varchar(2048);
-- Fill the authors property for existing publications
update ct_publications set authors = (array_to_string(array(select cms_persons.surname || ', ' || cms_persons.givenname
from cms_persons
join ct_publications_authorship on cms_persons.person_id = ct_publications_authorship.person_id
where ct_publications_authorship.publication_id = ct_publications.publication_id
order by ct_publications_authorship.authorship_order), '; '));

View File

@ -0,0 +1,4 @@
-- Add columns
alter table ct_internet_article add column url varchar(2048);
alter table ct_internet_article add column urn varchar(2048);
alter table ct_internet_article add column doi varchar(2048);

View File

@ -0,0 +1,8 @@
\echo 'Scientific CMS Publications module 6.6.1 -> 6.6.2 Upgrade Script (PostgreSQL)'
begin;
\i ../default/upgrade/6.6.1-6.6.2/add-authors-field.sql
\i ../default/upgrade/6.6.1-6.6.2/add-internet-articles-properties.sql
commit;

View File

@ -10,10 +10,10 @@
<xrd:attributes rule="exclude"> <xrd:attributes rule="exclude">
<xrd:property name="/object/departmentDescription"/> <xrd:property name="/object/departmentDescription"/>
</xrd:attributes> </xrd:attributes>
<xrd:associations rule="include"> <!--<xrd:associations rule="include">
<xrd:property name="/object/contacts"/> <xrd:property name="/object/contacts"/>
<xrd:property name="/object/persons"/> <xrd:property name="/object/persons"/>
</xrd:associations> </xrd:associations>-->
</xrd:adapter> </xrd:adapter>
</xrd:context> </xrd:context>

View File

@ -70,7 +70,7 @@ public class SciDepartmentConfig extends AbstractConfig {
new StringParameter( new StringParameter(
"com.arsdigita.cms.contenttypes.sciproject.tabs", "com.arsdigita.cms.contenttypes.sciproject.tabs",
Parameter.REQUIRED, Parameter.REQUIRED,
"summary:com.arsdigita.cms.contenttypes.ui.SciDepartmentSummaryTab"); "summary:com.arsdigita.cms.contenttypes.ui.SciDepartmentSummaryTab;desc:com.arsdigita.cms.contenttypes.ui.SciDepartmentDescTab;members:com.arsdigita.cms.contenttypes.ui.SciDepartmentMembersTab");
register(enableSubDepartmentsStep); register(enableSubDepartmentsStep);
register(enableSuperDepartmentsStep); register(enableSuperDepartmentsStep);

View File

@ -42,14 +42,16 @@ public class SciDepartmentDescTab implements GenericOrgaUnitTab {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final Desc desc = getData(orgaunit); final Desc desc = getData(orgaunit);
final Element descTabElem = parent.newChildElement("departmentDescription");
if ((desc.getShortDesc() != null) if ((desc.getShortDesc() != null)
&& !desc.getShortDesc().trim().isEmpty()) { && !desc.getShortDesc().trim().isEmpty()) {
final Element shortDescElem = parent.newChildElement( final Element shortDescElem = descTabElem.newChildElement(
"shortDescription"); "shortDescription");
shortDescElem.setText(desc.getShortDesc()); shortDescElem.setText(desc.getShortDesc());
} }
final Element descElem = parent.newChildElement("description"); final Element descElem = descTabElem.newChildElement("description");
descElem.setText(desc.getDesc()); descElem.setText(desc.getDesc());
logger.debug(String.format("Generated XML for description tab of " logger.debug(String.format("Generated XML for description tab of "

View File

@ -3,7 +3,6 @@ package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
import com.arsdigita.cms.contenttypes.GenericPerson; import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciDepartment; import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.ui.panels.CompareFilter; import com.arsdigita.cms.contenttypes.ui.panels.CompareFilter;
@ -14,6 +13,9 @@ import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.SessionManager; import com.arsdigita.persistence.SessionManager;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -24,14 +26,15 @@ import org.apache.log4j.Logger;
*/ */
public class SciDepartmentMembersTab implements GenericOrgaUnitTab { public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
private final Logger logger = Logger.getLogger(SciDepartmentMembersTab.class); private final Logger logger =
Logger.getLogger(SciDepartmentMembersTab.class);
private static final SciDepartmentMembersTabConfig config = private static final SciDepartmentMembersTabConfig config =
new SciDepartmentMembersTabConfig(); new SciDepartmentMembersTabConfig();
private static final String STATUS_PARAM = "memberStatus"; private static final String STATUS_PARAM = "memberStatus";
private static final String SURNAME_PARAM = "memberSurname"; private static final String SURNAME_PARAM = "memberSurname";
private final CompareFilter statusFilter = new CompareFilter( private final CompareFilter statusFilter = new CompareFilter(
STATUS_PARAM, STATUS_PARAM,
GenericOrganizationalUnitPersonCollection.LINK_STATUS, "status",
false, false,
false, false,
false); false);
@ -79,12 +82,24 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
final Element filtersElem = depMembersElem.newChildElement("filters"); final Element filtersElem = depMembersElem.newChildElement("filters");
statusFilter.generateXml(filtersElem);
if (persons.isEmpty()) {
if ((surnameFilter != null)
&& (surnameFilter.getFilter() != null)
&& !(surnameFilter.getFilter().trim().isEmpty())) {
surnameFilter.generateXml(filtersElem);
}
depMembersElem.newChildElement("noMembers");
return;
}
final Paginator paginator = new Paginator(request, final Paginator paginator = new Paginator(request,
(int) persons.size(), (int) persons.size(),
config.getPageSize()); config.getPageSize());
statusFilter.generateXml(filtersElem); if ((paginator.getPageCount() > config.getEnableSearchLimit())
if (paginator.getPageCount() > config.getEnableSearchLimit()) { || !(surnameFilter.getFilter().trim().isEmpty())) {
surnameFilter.generateXml(filtersElem); surnameFilter.generateXml(filtersElem);
} }
@ -118,6 +133,7 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
retrieveQuery( retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfMembersOfOrgaUnits"); "com.arsdigita.cms.contenttypes.getIdsOfMembersOfOrgaUnits");
final StringBuffer personsFilter = new StringBuffer(); final StringBuffer personsFilter = new StringBuffer();
final List<String> orgaUnitIds = new ArrayList<String>();
if (config.isMergingMembers()) { if (config.isMergingMembers()) {
final DataQuery subDepartmentsQuery = final DataQuery subDepartmentsQuery =
@ -135,13 +151,17 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
personsFilter.append(String.format("orgaunitId = %s", personsFilter.append(String.format("orgaunitId = %s",
subDepartmentsQuery.get( subDepartmentsQuery.get(
"orgaunitId").toString())); "orgaunitId").toString()));
orgaUnitIds.add(subDepartmentsQuery.get(
"orgaunitId").toString());
} }
} else { } else {
personsFilter.append(String.format("orgaunitId = %s", personsFilter.append(String.format("orgaunitId = %s",
orgaunit.getID().toString())); orgaunit.getID().toString()));
orgaUnitIds.add(orgaunit.getID().toString());
} }
personsQuery.addFilter(personsFilter.toString()); //personsQuery.addFilter(personsFilter.toString());
personsQuery.setParameter("orgaunitIds", orgaUnitIds);
personsQuery.addOrder(GenericPerson.SURNAME); personsQuery.addOrder(GenericPerson.SURNAME);
personsQuery.addOrder(GenericPerson.GIVENNAME); personsQuery.addOrder(GenericPerson.GIVENNAME);
@ -162,8 +182,11 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
statusFilter.setValue(statusValue); statusFilter.setValue(statusValue);
} }
String filter = statusFilter.getFilter();
if ((filter != null) && !(filter.trim().isEmpty())) {
persons.addFilter(statusFilter.getFilter()); persons.addFilter(statusFilter.getFilter());
} }
}
private void applySurnameFilter(final DataQuery persons, private void applySurnameFilter(final DataQuery persons,
final HttpServletRequest request) { final HttpServletRequest request) {
@ -172,7 +195,10 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
surnameFilter.setValue(surnameValue); surnameFilter.setValue(surnameValue);
} }
persons.addFilter(surnameFilter.getFilter()); final String filter = surnameFilter.getFilter();
if ((filter != null) && !(filter.trim().isEmpty())) {
persons.addFilter(filter);
}
} }
protected void generateMemberXml(final BigDecimal memberId, protected void generateMemberXml(final BigDecimal memberId,
@ -193,6 +219,7 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final XmlGenerator generator = new XmlGenerator(member); final XmlGenerator generator = new XmlGenerator(member);
generator.setUseExtraXml(false); generator.setUseExtraXml(false);
generator.setItemElemName("member", "");
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
logger.debug(String.format("Generated XML for member '%s' in %d ms.", logger.debug(String.format("Generated XML for member '%s' in %d ms.",
member.getFullName(), member.getFullName(),

View File

@ -27,7 +27,7 @@ public class SciDepartmentMembersTabConfig extends AbstractConfig {
pageSize = pageSize =
new IntegerParameter( new IntegerParameter(
"com.arsdigita.cms.contenttypes.scidepartment.tabs.embers.page_size", "com.arsdigita.cms.contenttypes.scidepartment.tabs.members.page_size",
Parameter.REQUIRED, Parameter.REQUIRED,
30); 30);
@ -35,7 +35,7 @@ public class SciDepartmentMembersTabConfig extends AbstractConfig {
new IntegerParameter( new IntegerParameter(
"com.arsdigita.cms.contenttypes.scidepartment.tabs.members.enable_search_limit", "com.arsdigita.cms.contenttypes.scidepartment.tabs.members.enable_search_limit",
Parameter.REQUIRED, Parameter.REQUIRED,
2); 0);
mergeMembers = mergeMembers =
new BooleanParameter( new BooleanParameter(

View File

@ -3,10 +3,10 @@ com.arsdigita.cms.contenttypes.scidepartment.tabs.members.status_values.purpose
com.arsdigita.cms.contenttypes.scidepartment.tabs.members.status_values.example = active,associated,former com.arsdigita.cms.contenttypes.scidepartment.tabs.members.status_values.example = active,associated,former
com.arsdigita.cms.contenttypes.scidepartment.tabs.members.status_values.format = [String] com.arsdigita.cms.contenttypes.scidepartment.tabs.members.status_values.format = [String]
com.arsdigita.cms.contenttypes.scidepartment.tabs.embers.page_size.title = Page size com.arsdigita.cms.contenttypes.scidepartment.tabs.members.page_size.title = Page size
com.arsdigita.cms.contenttypes.scidepartment.tabs.embers.page_size.purpose = Maximum number of members per page com.arsdigita.cms.contenttypes.scidepartment.tabs.members.page_size.purpose = Maximum number of members per page
com.arsdigita.cms.contenttypes.scidepartment.tabs.embers.page_size.example = 30 com.arsdigita.cms.contenttypes.scidepartment.tabs.members.page_size.example = 30
com.arsdigita.cms.contenttypes.scidepartment.tabs.embers.page_size.format = [Integer] com.arsdigita.cms.contenttypes.scidepartment.tabs.members.page_size.format = [Integer]
com.arsdigita.cms.contenttypes.scidepartment.tabs.members.enable_search_limit.title = Enable search limit com.arsdigita.cms.contenttypes.scidepartment.tabs.members.enable_search_limit.title = Enable search limit
com.arsdigita.cms.contenttypes.scidepartment.tabs.members.enable_search_limit.purpose = Number of result pages when to activate the search. Set to 1 or 0 to show the search on every time. com.arsdigita.cms.contenttypes.scidepartment.tabs.members.enable_search_limit.purpose = Number of result pages when to activate the search. Set to 1 or 0 to show the search on every time.

View File

@ -121,7 +121,7 @@ public class SciDepartmentSummaryTab implements GenericOrgaUnitTab {
heads.addOrder("givenname"); heads.addOrder("givenname");
while (heads.next()) { while (heads.next()) {
generateMemberXml(heads.getPerson(), headsElem, state); generateHeadXml(heads.getPerson(), headsElem, state);
} }
logger.debug(String.format("Generated head of department XML for department '%s' " logger.debug(String.format("Generated head of department XML for department '%s' "
@ -139,7 +139,7 @@ public class SciDepartmentSummaryTab implements GenericOrgaUnitTab {
department. department.
getSubordinateOrgaUnits(); getSubordinateOrgaUnits();
subDepartments.addFilter( subDepartments.addFilter(
String.format("%s = '%s", String.format("%s = '%s'",
GenericOrganizationalUnitSubordinateCollection.LINK_ASSOCTYPE, GenericOrganizationalUnitSubordinateCollection.LINK_ASSOCTYPE,
SciDepartmentSubDepartmentsStep.ASSOC_TYPE)); SciDepartmentSubDepartmentsStep.ASSOC_TYPE));
@ -187,7 +187,7 @@ public class SciDepartmentSummaryTab implements GenericOrgaUnitTab {
System.currentTimeMillis() - start)); System.currentTimeMillis() - start));
} }
protected void generateMemberXml(final BigDecimal memberId, protected void generateHeadXml(final BigDecimal memberId,
final Element parent, final Element parent,
final PageState state) { final PageState state) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
@ -196,15 +196,16 @@ public class SciDepartmentSummaryTab implements GenericOrgaUnitTab {
+ "in %d ms.", + "in %d ms.",
member.getFullName(), member.getFullName(),
System.currentTimeMillis() - start)); System.currentTimeMillis() - start));
generateMemberXml(member, parent, state); generateHeadXml(member, parent, state);
} }
protected void generateMemberXml(final GenericPerson member, protected void generateHeadXml(final GenericPerson member,
final Element parent, final Element parent,
final PageState state) { final PageState state) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final XmlGenerator generator = new XmlGenerator(member); final XmlGenerator generator = new XmlGenerator(member);
generator.setUseExtraXml(false); generator.setUseExtraXml(false);
generator.setItemElemName("head", "");
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
logger.debug(String.format("Generated XML for member '%s' in %d ms.", logger.debug(String.format("Generated XML for member '%s' in %d ms.",
member.getFullName(), member.getFullName(),

View File

@ -9,10 +9,12 @@
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.SciProject" extends="com.arsdigita.cms.ContentPage"> <xrd:adapter objectType="com.arsdigita.cms.contenttypes.SciProject" extends="com.arsdigita.cms.ContentPage">
<xrd:attributes rule="exclude"> <xrd:attributes rule="exclude">
<xrd:property name="/object/projectDescription"/> <xrd:property name="/object/projectDescription"/>
<xrd:property name="/object/funding"/>
<xrd:property name="/object/fundingVolume"/>
</xrd:attributes> </xrd:attributes>
<xrd:associations rule="include"> <xrd:associations rule="include">
<xrd:property name="/object/contacts"/> <!-- <xrd:property name="/object/contacts"/>
<xrd:property name="/object/persons"/> <xrd:property name="/object/persons"/> -->
</xrd:associations> </xrd:associations>
</xrd:adapter> </xrd:adapter>
</xrd:context> </xrd:context>

View File

@ -39,24 +39,26 @@ public class SciProjectDescTab implements GenericOrgaUnitTab {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final Desc desc = getData(orgaunit); final Desc desc = getData(orgaunit);
final Element descTabElem = parent.newChildElement("projectDescription");
if ((desc.getShortDesc() != null) if ((desc.getShortDesc() != null)
&& !desc.getShortDesc().trim().isEmpty()) { && !desc.getShortDesc().trim().isEmpty()) {
final Element shortDescElem = parent.newChildElement("shortDescription"); final Element shortDescElem = descTabElem.newChildElement("shortDescription");
shortDescElem.setText(desc.getShortDesc()); shortDescElem.setText(desc.getShortDesc());
} }
final Element descElem = parent.newChildElement("description"); final Element descElem = descTabElem.newChildElement("description");
descElem.setText(desc.getDesc()); descElem.setText(desc.getDesc());
if ((desc.getFunding() != null) if ((desc.getFunding() != null)
&& !desc.getFunding().trim().isEmpty()) { && !desc.getFunding().trim().isEmpty()) {
final Element fundingElem = parent.newChildElement("funding"); final Element fundingElem = descTabElem.newChildElement("funding");
fundingElem.setText(desc.getFunding()); fundingElem.setText(desc.getFunding());
} }
if ((desc.getFundingVolume() != null) if ((desc.getFundingVolume() != null)
&& !desc.getFundingVolume().trim().isEmpty()) { && !desc.getFundingVolume().trim().isEmpty()) {
final Element volumeElem = parent.newChildElement("fundingVolume"); final Element volumeElem = descTabElem.newChildElement("fundingVolume");
volumeElem.setText(desc.getFundingVolume()); volumeElem.setText(desc.getFundingVolume());
} }

View File

@ -17,7 +17,6 @@ import com.arsdigita.persistence.SessionManager;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.Locale; import java.util.Locale;
@ -214,6 +213,7 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
while (personsQuery.next()) { while (personsQuery.next()) {
generateMemberXml((BigDecimal) personsQuery.get("memberId"), generateMemberXml((BigDecimal) personsQuery.get("memberId"),
membersElem, membersElem,
(String) personsQuery.get("roleName"),
state); state);
} }
} else { } else {
@ -224,7 +224,10 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
members.addOrder("givenname"); members.addOrder("givenname");
while (members.next()) { while (members.next()) {
generateMemberXml(members.getPerson(), membersElem, state); generateMemberXml(members.getPerson(),
membersElem,
members.getRoleName(),
state);
} }
} }
@ -237,6 +240,7 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
protected void generateMemberXml(final BigDecimal memberId, protected void generateMemberXml(final BigDecimal memberId,
final Element parent, final Element parent,
final String role,
final PageState state) { final PageState state) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final GenericPerson member = new GenericPerson(memberId); final GenericPerson member = new GenericPerson(memberId);
@ -244,15 +248,18 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
+ "in %d ms.", + "in %d ms.",
member.getFullName(), member.getFullName(),
System.currentTimeMillis() - start)); System.currentTimeMillis() - start));
generateMemberXml(member, parent, state); generateMemberXml(member, parent, role, state);
} }
protected void generateMemberXml(final GenericPerson member, protected void generateMemberXml(final GenericPerson member,
final Element parent, final Element parent,
final String role,
final PageState state) { final PageState state) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final XmlGenerator generator = new XmlGenerator(member); final XmlGenerator generator = new XmlGenerator(member);
generator.setUseExtraXml(false); generator.setUseExtraXml(false);
generator.setItemElemName("member", "");
generator.addItemAttribute("role", role);
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
logger.debug(String.format("Generated XML for member '%s' in %d ms.", logger.debug(String.format("Generated XML for member '%s' in %d ms.",
member.getFullName(), member.getFullName(),
@ -287,6 +294,7 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final XmlGenerator generator = new XmlGenerator(contact); final XmlGenerator generator = new XmlGenerator(contact);
generator.setUseExtraXml(false); generator.setUseExtraXml(false);
generator.setItemElemName("contact", "");
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
logger.debug(String.format("Generated XML for contact '%s' in %d ms.", logger.debug(String.format("Generated XML for contact '%s' in %d ms.",
contact.getName(), contact.getName(),