trunk/ccm-ldn-util/src/com/arsdigita/london/util/cmd/ReloadAuthoringSteps.java:

Kleines Tool, um die AuthoringSteps eines Content-Typs neu einzulesen
trunk/ccm-sci-assets-organizationpublicationlink:
	Zweiter Teil für die Verknüpfung von Publikationen und SciOrganization. Content-Center bereits funktionsfähig, Ansicht auf Webseite noch nicht getestet.
trunk/ccm-sci-types-organization:
	- Methoden zum Anzeigen verknüpfter Publikationen über RelatedLink entfernt
	- Anzeige-Panels für Vererbung optimiert
Weiteres:
	Formatierungen


git-svn-id: https://svn.libreccm.org/ccm/trunk@950 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-06-02 16:46:05 +00:00
parent 4b4198dccc
commit 644868eeea
33 changed files with 1569 additions and 379 deletions

View File

@ -71,6 +71,8 @@ public abstract class ContentAssetInitializer extends CompoundInitializer {
*/ */
@Override @Override
public void init(DomainInitEvent evt) { public void init(DomainInitEvent evt) {
System.err.println("ContentAssetInitializer init running...");
super.init(evt); super.init(evt);
final String traversal = getTraversalXML(); final String traversal = getTraversalXML();

View File

@ -57,23 +57,26 @@ import org.apache.log4j.Logger;
* @version $Revision: #13 $ $Date: 2004/08/16 $ * @version $Revision: #13 $ $Date: 2004/08/16 $
* @version $Id: Loader.java 736 2005-09-01 10:46:05Z sskracic $ * @version $Id: Loader.java 736 2005-09-01 10:46:05Z sskracic $
**/ **/
class Loader { class Loader {
private static final Logger s_log = Logger.getLogger(Loader.class); private static final Logger s_log = Logger.getLogger(Loader.class);
private static final String INIT = "com.arsdigita.runtime.Initializer"; private static final String INIT = "com.arsdigita.runtime.Initializer";
public static Loader get(String pkg) { public static Loader get(String pkg) {
ClassLoader ldr = Loader.class.getClassLoader(); ClassLoader ldr = Loader.class.getClassLoader();
InputStream is = ldr.getResourceAsStream(pkg + ".load"); InputStream is = ldr.getResourceAsStream(pkg + ".load");
if (is == null) { return null; } if (is == null) {
s_log.error(String.format("Failed to find '%s.load'.", pkg));
return null;
}
LoaderInfo info = new LoaderInfo(is); LoaderInfo info = new LoaderInfo(is);
try { is.close(); } try {
catch (IOException e) { throw new UncheckedWrapperException(e); } is.close();
} catch (IOException e) {
throw new UncheckedWrapperException(e);
}
return new Loader(pkg, info, Checklist.get(pkg)); return new Loader(pkg, info, Checklist.get(pkg));
} }
private String m_key; private String m_key;
private LoaderInfo m_info; private LoaderInfo m_info;
private Checklist m_checks; private Checklist m_checks;
@ -85,7 +88,7 @@ class Loader {
m_checks = checks; m_checks = checks;
m_scripts = new ArrayList(); m_scripts = new ArrayList();
for (Iterator it = m_info.getDataScripts().iterator(); for (Iterator it = m_info.getDataScripts().iterator();
it.hasNext(); ) { it.hasNext();) {
String script = (String) it.next(); String script = (String) it.next();
m_scripts.add(Classes.newInstance(script)); m_scripts.add(Classes.newInstance(script));
} }
@ -107,8 +110,7 @@ class Loader {
if (m_checks == null) { if (m_checks == null) {
return true; return true;
} else { } else {
return m_checks.run return m_checks.run(Checklist.SCHEMA, new ScriptContext(null, null));
(Checklist.SCHEMA, new ScriptContext(null, null));
} }
} }
@ -116,7 +118,7 @@ class Loader {
int db = DbHelper.getDatabase(conn); int db = DbHelper.getDatabase(conn);
String dir = DbHelper.getDatabaseDirectory(db); String dir = DbHelper.getDatabaseDirectory(db);
List scripts = m_info.getSchemaScripts(); List scripts = m_info.getSchemaScripts();
for (Iterator it = scripts.iterator(); it.hasNext(); ) { for (Iterator it = scripts.iterator(); it.hasNext();) {
String script = (String) it.next(); String script = (String) it.next();
s_log.info("Loading schema for " + script); s_log.info("Loading schema for " + script);
PackageLoader.load(conn, script + "/" + dir + "-create.sql"); PackageLoader.load(conn, script + "/" + dir + "-create.sql");
@ -131,13 +133,12 @@ class Loader {
} }
} }
// deprecated: // deprecated:
// public void loadData(Session ssn, ParameterLoader loader) { // public void loadData(Session ssn, ParameterLoader loader) {
public void loadData(Session ssn, ParameterReader prd) { public void loadData(Session ssn, ParameterReader prd) {
final List inits = m_info.getProvidedInitializers(); final List inits = m_info.getProvidedInitializers();
CompoundInitializer ini = new CompoundInitializer(); CompoundInitializer ini = new CompoundInitializer();
for (Iterator it = inits.iterator(); it.hasNext(); ) { for (Iterator it = inits.iterator(); it.hasNext();) {
String init = (String) it.next(); String init = (String) it.next();
s_log.info("Running initializer " + init); s_log.info("Running initializer " + init);
ini.add((Initializer) Classes.newInstance(init)); ini.add((Initializer) Classes.newInstance(init));
@ -150,11 +151,13 @@ class Loader {
// final ScriptContext ctx = new ScriptContext(ssn, loader); // final ScriptContext ctx = new ScriptContext(ssn, loader);
final ScriptContext ctx = new ScriptContext(ssn, prd); final ScriptContext ctx = new ScriptContext(ssn, prd);
new KernelExcursion() { new KernelExcursion() {
protected void excurse() { protected void excurse() {
setEffectiveParty(Kernel.getSystemParty()); setEffectiveParty(Kernel.getSystemParty());
for (Iterator it = m_scripts.iterator(); it.hasNext(); ) { for (Iterator it = m_scripts.iterator(); it.hasNext();) {
Script script = (Script) it.next(); Script script = (Script) it.next();
s_log.info("Running data loader " + script.getClass().getName()); s_log.info("Running data loader " + script.getClass().
getName());
script.run(ctx); script.run(ctx);
} }
} }
@ -171,11 +174,12 @@ class Loader {
final List inits = m_info.getProvidedInitializers(); final List inits = m_info.getProvidedInitializers();
final List required = m_info.getRequiredInitializers(); final List required = m_info.getRequiredInitializers();
for (Iterator it = inits.iterator(); it.hasNext(); ) { for (Iterator it = inits.iterator(); it.hasNext();) {
String init = (String) it.next(); String init = (String) it.next();
DataObject dataobject = ssn.create(new OID(INIT, init)); DataObject dataobject = ssn.create(new OID(INIT, init));
DataAssociation da = (DataAssociation)dataobject.get("requirements"); DataAssociation da =
for (Iterator reqit = required.iterator(); reqit.hasNext(); ) { (DataAssociation) dataobject.get("requirements");
for (Iterator reqit = required.iterator(); reqit.hasNext();) {
String reqinit = (String) reqit.next(); String reqinit = (String) reqit.next();
da.add(ssn.retrieve(new OID(INIT, reqinit))); da.add(ssn.retrieve(new OID(INIT, reqinit)));
} }
@ -206,5 +210,4 @@ class Loader {
public String toString() { public String toString() {
return "<loader for " + m_key + ">"; return "<loader for " + m_key + ">";
} }
} }

View File

@ -0,0 +1,63 @@
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;
/**
*
* @author Jens Pelzetter
*/
public class ReloadAuthoringSteps extends Program {
public ReloadAuthoringSteps() {
super("ReloadAuthoringSteps",
"1.0.0",
"");
}
@Override
protected void doRun(CommandLine cmdLine) {
String[] args = cmdLine.getArgs();
if (args.length < 1) {
System.out.println(
"Usage ReloadAuthoringSteps pathToAuthoringStepDefinition");
System.out.println("");
System.out.println(
"The path to the definition file has usally the form");
System.out.println("");
System.out.println(
"/WEB-INF/content-types/com/arsdigita/contenttypes/ContentType.xml");
System.out.println("");
System.out.println(
"Replace 'ContentType.xml' with the name of the ContentType which AuthoringSteps should be reloaded.");
System.exit(-1);
}
final String defToReload = args[0];
System.out.printf("Reloading AuthoringSteps from '%s'...", defToReload);
new Transaction() {
@Override
protected void doRun() {
XMLContentTypeHandler handler = new XMLContentTypeHandler();
XML.parseResource(defToReload, handler);
}
}.run();
System.out.printf("Reloaded AuthoringSteps from '%s'.", defToReload);
}
}

View File

@ -2,15 +2,17 @@ model com.arsdigita.cms.contentassets;
import com.arsdigita.kernel.ACSObject; import com.arsdigita.kernel.ACSObject;
import com.arsdigita.cms.*; import com.arsdigita.cms.*;
import com.arsdigita.cms.contenttypes.Publication;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
association { association {
GenericOrganizationalUnit[0..n] organizations = join ct_publications.publication_id GenericOrganizationalUnit[0..n] organizations = join ct_publications.publication_id
to cms_organization_publication_map.publication_id, to cms_organization_publication_map.publication_id,
join cms_organization_publication_map.organization_id join cms_organization_publication_map.organization_id
to cms_organizationalunit.organizationalunit_id; to cms_organizationalunits.organizationalunit_id;
Publication[0..n] publications = join cms_organizationalunit.organizationalunit_id Publication[0..n] publications = join cms_organizationalunits.organizationalunit_id
to cms_organization_publication_link.organization_id, to cms_organization_publication_map.organization_id,
join cms_organization_publication_link.publication_id join cms_organization_publication_map.publication_id
to ct_publication.publication_id; to ct_publications.publication_id;
} }

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<xrd:adapters xmlns:xrd="http://xmlns.redhat.com/schemas/waf/xml-renderer-rules"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://rhea.redhat.com/schemas/waf/xml-renderer-rules xml-renderer-rules.xsd">
<xrd:context name="com.arsdigita.cms.dispatcher.SimpleXMLGenerator">
</xrd:context>
</xrd:adapters>

View File

@ -3,13 +3,15 @@
<table name="inits"/> <table name="inits"/>
<table name="acs_objects"/> <table name="acs_objects"/>
<table name="cms_items"/> <table name="cms_items"/>
<table name="ct_publications"/>
<initalizer class="com.arsdigita.cms.Initializer"/> <initalizer class="com.arsdigita.cms.Initializer"/>
<initalizer class="com.arsdigita.cms.contenttypes.PublicationInitializer"/>
</requires> </requires>
<provides> <provides>
<initializer class="com.arsdigita.cms.contentassets.SciOrganizationPublicationInitializer"/> <initializer class="com.arsdigita.cms.contentassets.SciOrganizationPublicationInitializer"/>
</provides> </provides>
<scripts> <scripts>
<schema directory="ccm-sci-assets-sciorganizationpublication"/> <schema directory="ccm-sci-assets-organizationpublicationlink"/>
<data class="com.arsdigita.cms.contentassets.SciOrganizationPublicationLoader"/> <data class="com.arsdigita.cms.contentassets.SciOrganizationPublicationLoader"/>
</scripts> </scripts>
</load> </load>

View File

@ -47,53 +47,69 @@ public class SciOrganizationPublicationInitializer extends CompoundInitializer {
final String url = RuntimeConfig.getConfig().getJDBCURL(); final String url = RuntimeConfig.getConfig().getJDBCURL();
final int database = DbHelper.getDatabaseFromURL(url); final int database = DbHelper.getDatabaseFromURL(url);
System.err.println("Creating SciOrganizationPublicationInitializer...");
add(new PDLInitializer( add(new PDLInitializer(
new ManifestSource( new ManifestSource(
"ccm-sci-assets-sciorganiationpublication.pdl.mf", "ccm-sci-assets-organizationpublicationlink.pdl.mf",
new NameFilter(DbHelper.getDatabaseSuffix(database), "pdl")))); new NameFilter(DbHelper.getDatabaseSuffix(database), "pdl"))));
System.err.println("Constructor of SciOrganizationPublicationInitializer finished...");
} }
@Override @Override
public void init(DomainInitEvent event) { public void init(DomainInitEvent event) {
System.out.println("Beginning init of SciOrganizationPublicationInitializer...");
System.out.println("Calling super.init()");
super.init(event); super.init(event);
System.out.println("Creating traversal handler...");
final String traversal = getTraversalXML(); final String traversal = getTraversalXML();
XML.parseResource(traversal, XML.parseResource(traversal,
new ContentAssetTraversalHandler(getProperty())); new ContentAssetTraversalHandler(getProperty()));
System.out.println("Registering authoring step for publications of an organization...");
AuthoringKitWizard.registerAssetStep( AuthoringKitWizard.registerAssetStep(
SciOrganization.BASE_DATA_OBJECT_TYPE, SciOrganization.BASE_DATA_OBJECT_TYPE,
SciOrganizationPublicationStep.class, SciOrganizationPublicationStep.class,
new GlobalizedMessage("sciorganization.ui.publications", new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfOrganization",
"com.arsdigita.cms.contentassets.ui.SciOrganizationPublication"), "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"),
new GlobalizedMessage("sciorganization.ui.publications", new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfOrganization",
"com.arsdigita.cms.contentassets.ui.SciOrganizationPublication"), "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"),
1); 99);
System.out.println("Registering authoring step for publications of a department..");
AuthoringKitWizard.registerAssetStep( AuthoringKitWizard.registerAssetStep(
SciDepartment.BASE_DATA_OBJECT_TYPE, SciDepartment.BASE_DATA_OBJECT_TYPE,
SciOrganizationPublicationStep.class, SciOrganizationPublicationStep.class,
new GlobalizedMessage("sciorganization.ui.publications", new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfDepartment",
"com.arsdigita.cms.contentassets.ui.SciOrganizationPublication"), "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"),
new GlobalizedMessage("sciorganization.ui.publications", new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfDepartment",
"com.arsdigita.cms.contentassets.ui.SciOrganizationPublication"), "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"),
1); 99);
System.out.println("Registering authoring step for publications of a project...");
AuthoringKitWizard.registerAssetStep( AuthoringKitWizard.registerAssetStep(
SciProject.BASE_DATA_OBJECT_TYPE, SciProject.BASE_DATA_OBJECT_TYPE,
SciOrganizationPublicationStep.class, SciOrganizationPublicationStep.class,
new GlobalizedMessage("sciorganization.ui.publications", new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfProject",
"com.arsdigita.cms.contentassets.ui.SciOrganizationPublication"), "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"),
new GlobalizedMessage("sciorganization.ui.publications", new GlobalizedMessage("sciorganizationpublication.ui.publicationsOfProject",
"com.arsdigita.cms.contentassets.ui.SciOrganizationPublication"), "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"),
1); 1);
System.out.println("Registering authoring step of organization of a publication...");
AuthoringKitWizard.registerAssetStep( AuthoringKitWizard.registerAssetStep(
Publication.BASE_DATA_OBJECT_TYPE, Publication.BASE_DATA_OBJECT_TYPE,
PublicationSciOrganizationStep.class, PublicationSciOrganizationStep.class,
new GlobalizedMessage("sciorganization.ui.organizations", new GlobalizedMessage("sciorganizationpublication.ui.organizationsOfPublication",
"com.arsdigita.cms.contentassets.ui.SciOrganizationPublication"), "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"),
new GlobalizedMessage("sciorganization.ui.organizations", new GlobalizedMessage("ssciorganizationpublication.ui.organizationsOfPublication",
"com.arsdigita.cms.contentassets.ui.SciOrganizationPublication"), "com.arsdigita.cms.contentassets.ui.SciOrganizationPublicationResources"),
1); 1);
System.err.println("Finished init of SciOrganizationPublicationInitializer.");
} }
/** /**

View File

@ -46,12 +46,9 @@ public class PublicationSciOrganizationAddForm
private ItemSearchWidget itemSearch; private ItemSearchWidget itemSearch;
private final String ITEM_SEARCH = "organizations"; private final String ITEM_SEARCH = "organizations";
private String orgaClassName;
public PublicationSciOrganizationAddForm(ItemSelectionModel itemModel, public PublicationSciOrganizationAddForm(ItemSelectionModel itemModel) {
String orgaClassName) {
super("OrganizationsAddForm", itemModel); super("OrganizationsAddForm", itemModel);
this.orgaClassName = orgaClassName;
} }
@Override @Override
@ -59,7 +56,8 @@ public class PublicationSciOrganizationAddForm
add(new Label((String) SciOrganizationPublicationGlobalizationUtil. add(new Label((String) SciOrganizationPublicationGlobalizationUtil.
globalize("sciorganization.ui.selectOrganization").localize())); globalize("sciorganization.ui.selectOrganization").localize()));
itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType. itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType.
findByAssociatedObjectType(orgaClassName)); findByAssociatedObjectType(GenericOrganizationalUnit.class.
getName()));
add(itemSearch); add(itemSearch);
} }

View File

@ -46,8 +46,7 @@ public class PublicationSciOrganizationStep extends SimpleEditStep {
super(itemModel, parent, prefix); super(itemModel, parent, prefix);
BasicItemForm addOrganizationSheet = BasicItemForm addOrganizationSheet =
new PublicationSciOrganizationAddForm(itemModel, new PublicationSciOrganizationAddForm(itemModel);
getOrganizationClassName());
add(ADD_ORGANIZATION_SHEET_NAME, add(ADD_ORGANIZATION_SHEET_NAME,
(String) SciOrganizationPublicationGlobalizationUtil.globalize( (String) SciOrganizationPublicationGlobalizationUtil.globalize(
"sciorganizationpublication.ui.addOrganization").localize(), "sciorganizationpublication.ui.addOrganization").localize(),
@ -59,8 +58,4 @@ public class PublicationSciOrganizationStep extends SimpleEditStep {
itemModel); itemModel);
setDisplayComponent(organizationTable); setDisplayComponent(organizationTable);
} }
private String getOrganizationClassName() {
return GenericOrganizationalUnit.class.getName();
}
} }

View File

@ -33,7 +33,6 @@ import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitWithPublications;
import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.contenttypes.Publication;
import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm; import com.arsdigita.cms.ui.authoring.BasicItemForm;
import java.math.BigDecimal;
/** /**
* *

View File

@ -0,0 +1,5 @@
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

View File

@ -0,0 +1,5 @@
sciorganizationpublication.ui.publicationsOfOrganization=Publikationen der Organisation
sciorganizationpublication.ui.publicationsOfDepartment=Publikationen der Abteilung
sciorganizationpublication.ui.publicationsOfProject=Publikationen des Projektes
sciorganizationpublication.ui.organizationsOfPublication=Beteiligte Organizationen

View File

@ -41,21 +41,21 @@ public class GenericOrganizationalUnitWithPublications extends GenericOrganizati
this(BASE_DATA_OBJECT_TYPE); this(BASE_DATA_OBJECT_TYPE);
} }
public GenericOrganizationalUnitWithPublications(BigDecimal id) public GenericOrganizationalUnitWithPublications(final BigDecimal id)
throws DataObjectNotFoundException { throws DataObjectNotFoundException {
this(new OID(BASE_DATA_OBJECT_TYPE, id)); this(new OID(BASE_DATA_OBJECT_TYPE, id));
} }
public GenericOrganizationalUnitWithPublications(OID oid) public GenericOrganizationalUnitWithPublications(final OID oid)
throws DataObjectNotFoundException { throws DataObjectNotFoundException {
super(oid); super(oid);
} }
public GenericOrganizationalUnitWithPublications(DataObject dobj) { public GenericOrganizationalUnitWithPublications(final DataObject dobj) {
super(dobj); super(dobj);
} }
private GenericOrganizationalUnitWithPublications(String type) { private GenericOrganizationalUnitWithPublications(final String type) {
super(type); super(type);
} }

View File

@ -0,0 +1,147 @@
/*
* 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.persistence.DataObject;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
import java.math.BigDecimal;
/**
*
* @author Jens Pelzetter
*/
public class SciDepartmentWithPublications extends SciDepartment {
private GenericOrganizationalUnitWithPublications departmentWithPublications;
private SciDepartmentWithPublications() {
}
private SciDepartmentWithPublications(final BigDecimal id) {
}
private SciDepartmentWithPublications(final OID oid) {
}
private SciDepartmentWithPublications(final DataObject dobj) {
}
private SciDepartmentWithPublications(final String type) {
}
public SciDepartmentWithPublications(final SciDepartment department) {
departmentWithPublications =
new GenericOrganizationalUnitWithPublications(department.getID());
}
public boolean hasPublications(final boolean merge) {
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contentassets.getIdsOfPublicationsOfSciDepartment");
query.setParameter("departmentId", getID());
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery departmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment");
departmentsQuery.setParameter("department", getID());
if (departmentsQuery.size() > 0) {
BigDecimal departmentId;
boolean result = false;
while (departmentsQuery.next()) {
departmentId = (BigDecimal) departmentsQuery.get(
"departmentId");
result = hasPublications(departmentId, merge);
if (result) {
break;
}
}
departmentsQuery.close();
return result;
} else {
departmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
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;
} else {
if (merge) {
query.close();
DataQuery subDepartmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment");
subDepartmentsQuery.setParameter("department", departmentId);
if (query.size() > 0) {
BigDecimal subDepartmentId;
boolean result = false;
while (subDepartmentsQuery.next()) {
subDepartmentId = (BigDecimal) subDepartmentsQuery.get(
"departmentId");
result = hasPublications(subDepartmentId, merge);
if (result) {
break;
}
}
subDepartmentsQuery.close();
return result;
} else {
subDepartmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
public SciOrganizationPublicationCollection getPublications() {
return departmentWithPublications.getPublications();
}
}

View File

@ -0,0 +1,156 @@
/*
* 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.persistence.DataObject;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
import java.math.BigDecimal;
/**
*
* @author Jens Pelzetter
*/
public class SciOrganizationWithPublications extends SciOrganization {
private GenericOrganizationalUnitWithPublications orgaWithPublications;
private static final SciOrganizationWithPublicationsConfig config = new SciOrganizationWithPublicationsConfig();
static {
config.load();
}
private SciOrganizationWithPublications() {
}
private SciOrganizationWithPublications(final BigDecimal id) {
}
private SciOrganizationWithPublications(final OID oid) {
}
private SciOrganizationWithPublications(final DataObject dobj) {
}
private SciOrganizationWithPublications(final String type) {
}
public SciOrganizationWithPublications(final SciOrganization organization) {
orgaWithPublications = new GenericOrganizationalUnitWithPublications(
organization.getID());
}
public static SciOrganizationWithPublicationsConfig getConfig() {
return config;
}
public boolean hasPublications(final boolean merge) {
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contentassets.getIdsOfPublicationsOfSciOrganization");
query.setParameter("organization", getID());
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery departmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfDepartmentsOfSciOrganization");
departmentsQuery.setParameter("organization", getID());
if (query.size() > 0) {
BigDecimal departmentId;
boolean result = false;
while (departmentsQuery.next()) {
departmentId = (BigDecimal) departmentsQuery.get(
"departmentsId");
result = hasPublications(departmentId, merge);
if (result) {
break;
}
}
departmentsQuery.close();
return result;
} else {
departmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
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;
} else {
if (merge) {
query.close();
DataQuery subDepartmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment");
subDepartmentsQuery.setParameter("department", departmentId);
if (query.size() > 0) {
BigDecimal subDepartmentId;
boolean result = false;
while(subDepartmentsQuery.next()) {
subDepartmentId = (BigDecimal) subDepartmentsQuery.get(
"departmentId");
result = hasPublications(subDepartmentId, merge);
if (result) {
break;
}
}
subDepartmentsQuery.close();
return result;
} else {
subDepartmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
public SciOrganizationPublicationCollection getPublications() {
return orgaWithPublications.getPublications();
}
}

View File

@ -0,0 +1,31 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.util.parameter.BooleanParameter;
import com.arsdigita.util.parameter.Parameter;
/**
*
* @author Jens Pelzetter
*/
public class SciOrganizationWithPublicationsConfig extends SciOrganizationConfig {
private final Parameter m_organizationPublicationsMerge;
public SciOrganizationWithPublicationsConfig() {
super();
m_organizationPublicationsMerge =
new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciorganization.publications_merge",
Parameter.REQUIRED,
Boolean.TRUE);
register(m_organizationPublicationsMerge);
loadInfo();
}
public final boolean getOrganizationPublicationsMerge() {
return (Boolean) get(m_organizationPublicationsMerge);
}
}

View File

@ -0,0 +1,6 @@
com.arsdigita.cms.contenttypes.sciorganization.publications_merge.title = Merge publications
com.arsdigita.cms.contenttypes.sciorganization.publications_merge.purpose = Merge publications from sub organizations into one list.
com.arsdigita.cms.contenttypes.sciorganization.publications_merge.example = true
com.arsdigita.cms.contenttypes.sciorganization.publications_merge.format = [boolean]

View File

@ -0,0 +1,147 @@
/*
* 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.persistence.DataObject;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
import java.math.BigDecimal;
/**
*
* @author Jens Pelzetter
*/
public class SciProjectWithPublications extends SciProject {
private GenericOrganizationalUnitWithPublications projectWithPublications;
private SciProjectWithPublications() {
}
private SciProjectWithPublications(final BigDecimal id) {
}
private SciProjectWithPublications(final OID oid) {
}
private SciProjectWithPublications(final DataObject dobj) {
}
private SciProjectWithPublications(final String type) {
}
public SciProjectWithPublications(final SciProject project) {
projectWithPublications =
new GenericOrganizationalUnitWithPublications(project.getID());
}
public boolean hasPublications(final boolean merge) {
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contentassets.getIdsOfPublicationsOfSciProject");
query.setParameter("projectId", getID());
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery subProjectsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubProjectsOfSciProject");
subProjectsQuery.setParameter("project", getID());
if (subProjectsQuery.size() > 0) {
BigDecimal subProjectId;
boolean result = false;
while (subProjectsQuery.next()) {
subProjectId = (BigDecimal) subProjectsQuery.get(
"projectId");
result = hasPublications(subProjectId, merge);
if (result) {
break;
}
}
subProjectsQuery.close();
return result;
} else {
subProjectsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
private boolean hasPublications(final BigDecimal projectId,
final boolean merge) {
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contentassets.getIdsOfPublicationsOfSciProject");
query.setParameter("projectId", projectId);
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery subProjectsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubProjectsOfSciProject");
subProjectsQuery.setParameter("project", projectId);
if (subProjectsQuery.size() > 0) {
BigDecimal subProjectId;
boolean result = false;
while (subProjectsQuery.next()) {
subProjectId = (BigDecimal) subProjectsQuery.get(
"projectId");
result = hasPublications(subProjectId, merge);
if (result) {
break;
}
}
subProjectsQuery.close();
return result;
} else {
subProjectsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
public SciOrganizationPublicationCollection getPublications() {
return projectWithPublications.getPublications();
}
}

View File

@ -0,0 +1,17 @@
package com.arsdigita.cms.contenttypes;
import java.util.Comparator;
/**
*
* @author Jens Pelzetter
*/
public class SciPublicationComparator implements Comparator<Publication> {
public int compare(Publication publication1, Publication publication2) {
return publication1.getTitle().compareTo(publication2.getTitle());
}
}

View File

@ -0,0 +1,198 @@
/*
* 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.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.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.dispatcher.SimpleXMLGenerator;
import com.arsdigita.xml.Element;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
/**
*
* @author Jens Pelzetter
*/
public class SciDepartmentsWithPublicationsPanel extends SciDepartmentPanel {
public static final String SHOW_PUBLICATIONS = "publications";
private boolean displayPublications = true;
public boolean isDisplayPublications() {
return displayPublications;
}
public void setDisplayPublications(final boolean displayPublications) {
this.displayPublications = displayPublications;
}
@Override
protected void generateAvailableDataXml(final SciDepartment department,
final Element element,
final PageState state) {
super.generateAvailableDataXml(department, element, state);
SciOrganizationWithPublicationsConfig config =
SciOrganizationWithPublications.
getConfig();
SciDepartmentWithPublications dep = new SciDepartmentWithPublications(
department);
if ((dep.hasPublications(config.getOrganizationPublicationsMerge()))
&& displayPublications) {
element.newChildElement("publications");
}
}
protected void mergePublications(
final SciDepartmentSubDepartmentsCollection subDepartments,
final List<Publication> publications) {
while (subDepartments.next()) {
SciDepartment dep;
SciDepartmentWithPublications department;
SciOrganizationPublicationCollection departmentPublications;
dep = subDepartments.getSubDepartment();
department = new SciDepartmentWithPublications(dep);
departmentPublications = department.getPublications();
while (departmentPublications.next()) {
publications.add(departmentPublications.getPublication());
}
SciDepartmentSubDepartmentsCollection subSubDepartments = dep.
getSubDepartments();
if ((subSubDepartments != null) && subSubDepartments.size() > 0) {
mergePublications(subDepartments, publications);
}
}
}
protected void generatePublicationsXml(final SciDepartment department,
final Element parent,
final PageState state) {
final SciDepartmentWithPublications dep =
new SciDepartmentWithPublications(
department);
if (SciOrganizationWithPublications.getConfig().
getOrganizationPublicationsMerge()) {
List<Publication> publications;
publications = new LinkedList<Publication>();
SciOrganizationPublicationCollection departmentPublications;
departmentPublications = dep.getPublications();
while (departmentPublications.next()) {
publications.add(departmentPublications.getPublication());
}
mergePublications(department.getSubDepartments(), publications);
Set<Publication> publicationsSet;
List<Publication> publicationsWithoutDoubles;
publicationsSet = new HashSet<Publication>(publications);
publicationsWithoutDoubles = new LinkedList<Publication>(
publicationsSet);
Collections.sort(publicationsWithoutDoubles,
new SciPublicationComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(publicationsWithoutDoubles.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, publicationsWithoutDoubles.
size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(parent, pageNumber, pageCount, begin, end,
count, publicationsWithoutDoubles.size());
List<Publication> publicationsToShow = publicationsWithoutDoubles.
subList((int) begin, (int) end);
final Element publicationsElem = parent.newChildElement(
"publications");
final ContentItemXMLRenderer renderer = new ContentItemXMLRenderer(
publicationsElem);
renderer.setWrapAttributes(true);
for (Publication publication : publicationsToShow) {
renderer.walk(publication, SimpleXMLGenerator.class.getName());
}
} else {
SciOrganizationPublicationCollection departmentPublications;
departmentPublications = dep.getPublications();
List<Publication> publications = new LinkedList<Publication>();
while (departmentPublications.next()) {
publications.add(departmentPublications.getPublication());
}
Collections.sort(publications, new SciPublicationComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(publications.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, publications.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(parent, pageNumber, pageCount, begin, end,
count, publications.size());
List<Publication> publicationsToShow = publications.subList(
(int) begin, (int) end);
final Element publicationsElem = parent.newChildElement(
"publications");
final ContentItemXMLRenderer renderer = new ContentItemXMLRenderer(
publicationsElem);
renderer.setWrapAttributes(true);
for (Publication publication : publicationsToShow) {
renderer.walk(publication, SimpleXMLGenerator.class.getName());
}
}
}
@Override
public void generateDataXml(final SciDepartment department,
final Element element,
final PageState state) {
String show = getShowParam(state);
if (SHOW_PUBLICATIONS.equals(show)) {
generatePublicationsXml(department, element, state);
} else {
super.generateDataXml(department, element, state);
}
}
}

View File

@ -0,0 +1,203 @@
/*
* 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.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.SciDepartmentSubDepartmentsCollection;
import com.arsdigita.cms.contenttypes.SciDepartmentWithPublications;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.SciOrganizationDepartmentsCollection;
import com.arsdigita.cms.contenttypes.SciOrganizationWithPublications;
import com.arsdigita.cms.contenttypes.SciOrganizationWithPublicationsConfig;
import com.arsdigita.cms.contenttypes.SciPublicationComparator;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.xml.Element;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
/**
*
* @author Jens Pelzetter
*/
public class SciOrganizationWithPublicationsPanel extends SciOrganizationPanel {
public static final String SHOW_PUBLICATIONS = "publications";
private boolean displayPublications = true;
public boolean isDisplayPublications() {
return displayPublications;
}
public void setDisplayPublications(final boolean displayPublications) {
this.displayPublications = displayPublications;
}
@Override
protected void generateAvailableDataXml(final SciOrganization organization,
final Element element,
final PageState state) {
super.generateAvailableDataXml(organization, element, state);
SciOrganizationWithPublicationsConfig config;
config = SciOrganizationWithPublications.getConfig();
SciOrganizationWithPublications orga =
new SciOrganizationWithPublications(
organization);
if ((orga.hasPublications(config.getOrganizationPublicationsMerge()))
&& displayPublications) {
element.newChildElement("publications");
}
}
protected void mergePublications(
final SciOrganizationDepartmentsCollection departments,
final List<Publication> publications) {
while (departments.next()) {
SciDepartment dep;
SciDepartmentWithPublications department;
SciOrganizationPublicationCollection departmentPublications;
dep = departments.getDepartment();
department = new SciDepartmentWithPublications(dep);
departmentPublications = department.getPublications();
while (departmentPublications.next()) {
publications.add(departmentPublications.getPublication());
}
SciDepartmentSubDepartmentsCollection subDepartments;
subDepartments = dep.getSubDepartments();
if ((subDepartments != null) && subDepartments.size() > 0) {
mergePublications(departments, publications);
}
}
}
protected void generatePublicationsXml(final SciOrganization organization,
final Element parent,
final PageState state) {
final SciOrganizationWithPublications orga =
new SciOrganizationWithPublications(
organization);
if (SciOrganizationWithPublications.getConfig().
getOrganizationPublicationsMerge()) {
List<Publication> publications;
publications = new LinkedList<Publication>();
SciOrganizationPublicationCollection orgaPublications;
orgaPublications = orga.getPublications();
while (orgaPublications.next()) {
publications.add(orgaPublications.getPublication());
}
mergePublications(organization.getDepartments(),
publications);
Set<Publication> publicationsSet;
List<Publication> publicationWithoutDoubles;
publicationsSet = new HashSet<Publication>(publications);
publicationWithoutDoubles = new LinkedList<Publication>(
publicationsSet);
Collections.sort(publicationWithoutDoubles,
new SciPublicationComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(publicationWithoutDoubles.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin,
publicationWithoutDoubles.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(parent, pageNumber, pageCount, begin, end,
count, publicationWithoutDoubles.size());
List<Publication> publicationsToShow = publicationWithoutDoubles.
subList((int) begin, (int) end);
final Element publicationsElem = parent.newChildElement(
"publications");
final ContentItemXMLRenderer renderer =
new ContentItemXMLRenderer(
publicationsElem);
renderer.setWrapAttributes(true);
for (Publication publication : publicationsToShow) {
renderer.walk(publication, SimpleXMLGenerator.class.getName());
}
} else {
SciOrganizationPublicationCollection orgaPublications;
orgaPublications = orga.getPublications();
List<Publication> publications = new LinkedList<Publication>();
while (orgaPublications.next()) {
publications.add(orgaPublications.getPublication());
}
Collections.sort(publications, new SciPublicationComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(publications.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, publications.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(parent, pageNumber, pageCount, begin, end,
count, publications.size());
List<Publication> publicationsToShow = publications.subList(
(int) begin, (int) end);
final Element publicationsElem = parent.newChildElement(
"publications");
final ContentItemXMLRenderer renderer =
new ContentItemXMLRenderer(
publicationsElem);
renderer.setWrapAttributes(true);
for (Publication publication : publicationsToShow) {
renderer.walk(publication, SimpleXMLGenerator.class.getName());
}
}
}
@Override
protected void generateDataXml(final SciOrganization organization,
final Element element,
final PageState state) {
String show = getShowParam(state);
if (SHOW_PUBLICATIONS.equals(show)) {
generatePublicationsXml(organization, element, state);
} else {
super.generateDataXml(organization, element, state);
}
}
}

View File

@ -0,0 +1,195 @@
/*
* 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.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.SciProjectSubProjectsCollection;
import com.arsdigita.cms.contenttypes.SciProjectWithPublications;
import com.arsdigita.cms.contenttypes.SciPublicationComparator;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.xml.Element;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
/**
*
* @author Jens Pelzetter
*/
public class SciProjectWithPublicationsPanel extends SciProjectPanel {
public static final String SHOW_PUBLICATIONS = "publications";
private boolean displayPublications = true;
public boolean isDisplayPublications() {
return displayPublications;
}
public void setDisplayPublications(final boolean displayPublications) {
this.displayPublications = displayPublications;
}
@Override
public void generateAvailableDataXml(final SciProject project,
final Element element,
final PageState state) {
super.generateAvailableDataXml(project, element, state);
SciOrganizationWithPublicationsConfig config =
SciOrganizationWithPublications.
getConfig();
SciProjectWithPublications proj =
new SciProjectWithPublications(project);
if ((proj.hasPublications(config.getOrganizationPublicationsMerge()))
&& displayPublications) {
element.newChildElement("publications");
}
}
protected void mergePublications(
final SciProjectSubProjectsCollection subProjects,
final List<Publication> publications) {
while (subProjects.next()) {
SciProject proj;
SciProjectWithPublications project;
SciOrganizationPublicationCollection projectPublications;
proj = subProjects.getSubProject();
project = new SciProjectWithPublications(proj);
projectPublications = project.getPublications();
while (projectPublications.next()) {
publications.add(projectPublications.getPublication());
}
SciProjectSubProjectsCollection subSubProjects =
proj.getSubProjects();
if ((subSubProjects != null) && subSubProjects.size() > 0) {
mergePublications(subSubProjects, publications);
}
}
}
protected void generatePublicationsXml(final SciProject project,
final Element parent,
final PageState state) {
final SciProjectWithPublications proj = new SciProjectWithPublications(
project);
if (SciOrganizationWithPublications.getConfig().
getOrganizationPublicationsMerge()) {
List<Publication> publications = new LinkedList<Publication>();
SciOrganizationPublicationCollection projectPublications = proj.
getPublications();
while (projectPublications.next()) {
publications.add(projectPublications.getPublication());
}
mergePublications(project.getSubProjects(), publications);
Set<Publication> publicationsSet;
List<Publication> publicationsWithoutDoubles;
publicationsSet = new HashSet<Publication>(publications);
publicationsWithoutDoubles = new LinkedList<Publication>(
publicationsSet);
Collections.sort(publicationsWithoutDoubles,
new SciPublicationComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(publicationsWithoutDoubles.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, publicationsWithoutDoubles.
size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(parent, pageNumber, pageCount, begin, end,
count, publicationsWithoutDoubles.size());
List<Publication> publicationsToShow = publicationsWithoutDoubles.
subList((int) begin, (int) end);
final Element publicationsElem = parent.newChildElement(
"publications");
final ContentItemXMLRenderer renderer = new ContentItemXMLRenderer(
publicationsElem);
renderer.setWrapAttributes(true);
for (Publication publication : publicationsToShow) {
renderer.walk(publication, SimpleXMLGenerator.class.getName());
}
} else {
SciOrganizationPublicationCollection projectPublications = proj.
getPublications();
List<Publication> publications = new LinkedList<Publication>();
while (projectPublications.next()) {
publications.add(projectPublications.getPublication());
}
Collections.sort(publications, new SciPublicationComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(publications.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, publications.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(parent, pageNumber, pageCount, begin, end,
count, publications.size());
List<Publication> publicationsToShow = publications.subList(
(int) begin, (int) end);
final Element publicationsElem = parent.newChildElement(
"publications");
final ContentItemXMLRenderer renderer = new ContentItemXMLRenderer(
publicationsElem);
renderer.setWrapAttributes(true);
for (Publication publication : publicationsToShow) {
renderer.walk(publication, SimpleXMLGenerator.class.getName());
}
}
}
@Override
public void generateDataXml(final SciProject project,
final Element element,
final PageState state) {
String show = getShowParam(state);
if (SHOW_PUBLICATIONS.equals(show)) {
generatePublicationsXml(project, element, state);
} else {
super.generateDataXml(project, element, state);
}
}
}

View File

@ -41,19 +41,19 @@
component="com.arsdigita.cms.contenttypes.ui.SciDepartmentProjectsStep" component="com.arsdigita.cms.contenttypes.ui.SciDepartmentProjectsStep"
ordering="4"/> ordering="4"/>
<ctd:authoring-step <!--<ctd:authoring-step
labelKey="sciorganization.ui.department.publications" labelKey="sciorganization.ui.department.publications"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources" labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.department.publications.description.title" descriptionKey="sciorganization.ui.department.publications.description.title"
component="com.arsdigita.cms.contenttypes.ui.SciDepartmentPublicationsStep" component="com.arsdigita.cms.contenttypes.ui.SciDepartmentPublicationsStep"
ordering="5"/> ordering="5"/> -->
<ctd:authoring-step <ctd:authoring-step
labelKey="sciorganization.ui.department.description.title" labelKey="sciorganization.ui.department.description.title"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources" labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.department.description.title" descriptionKey="sciorganization.ui.department.description.title"
component="com.arsdigita.cms.contenttypes.ui.SciDepartmentDescriptionStep" component="com.arsdigita.cms.contenttypes.ui.SciDepartmentDescriptionStep"
ordering="6"/> ordering="5"/>
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/> <ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>

View File

@ -42,19 +42,19 @@
ordering="4"/> ordering="4"/>
<ctd:authoring-step <!--<ctd:authoring-step
labelKey="sciorganization.ui.project.publications" labelKey="sciorganization.ui.project.publications"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources" labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.project.publications" descriptionKey="sciorganization.ui.project.publications"
component="com.arsdigita.cms.contenttypes.ui.SciProjectPublicationsStep" component="com.arsdigita.cms.contenttypes.ui.SciProjectPublicationsStep"
ordering="5"/> ordering="5"/> -->
<ctd:authoring-step <ctd:authoring-step
labelKey="sciorganization.ui.project_description.title" labelKey="sciorganization.ui.project_description.title"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources" labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.project_description.title" descriptionKey="sciorganization.ui.project_description.title"
component="com.arsdigita.cms.contenttypes.ui.SciProjectDescriptionStep" component="com.arsdigita.cms.contenttypes.ui.SciProjectDescriptionStep"
ordering="6"/> ordering="5"/>
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/> <ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>

View File

@ -501,7 +501,7 @@ public class SciDepartment extends GenericOrganizationalUnit {
"com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment"); "com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment");
departmentsQuery.setParameter("department", getID()); departmentsQuery.setParameter("department", getID());
if (query.size() > 0) { if (departmentsQuery.size() > 0) {
BigDecimal departmentId; BigDecimal departmentId;
boolean result = false; boolean result = false;
while (departmentsQuery.next()) { while (departmentsQuery.next()) {
@ -551,7 +551,7 @@ public class SciDepartment extends GenericOrganizationalUnit {
} }
DataQuery query = SessionManager.getSession().retrieveQuery(queryName); DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("department", getID()); query.setParameter("department", departmentId);
if (status != ProjectStatus.ALL) { if (status != ProjectStatus.ALL) {
Calendar today = new GregorianCalendar(); Calendar today = new GregorianCalendar();
query.setParameter("today", query.setParameter("today",

View File

@ -407,7 +407,7 @@ public class SciOrganization extends GenericOrganizationalUnit {
} }
DataQuery query = SessionManager.getSession().retrieveQuery(queryName); DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("department", getID()); query.setParameter("department", departmentId);
if (status != ProjectStatus.ALL) { if (status != ProjectStatus.ALL) {
Calendar today = new GregorianCalendar(); Calendar today = new GregorianCalendar();
query.setParameter("today", query.setParameter("today",
@ -455,7 +455,7 @@ public class SciOrganization extends GenericOrganizationalUnit {
} }
} }
public boolean hasPublications() { /*public boolean hasPublications() {
boolean result = false; boolean result = false;
DataQuery query = DataQuery query =
@ -472,7 +472,7 @@ public class SciOrganization extends GenericOrganizationalUnit {
query.close(); query.close();
return result; return result;
} }*/
public void setOrganizationDescription(String description) { public void setOrganizationDescription(String description) {
set(ORGANIZATION_DESCRIPTION, description); set(ORGANIZATION_DESCRIPTION, description);

View File

@ -475,7 +475,7 @@ public class SciProject extends GenericOrganizationalUnit {
} }
} }
public boolean hasPublications() { /*public boolean hasPublications() {
boolean result = false; boolean result = false;
DataQuery query = DataQuery query =
@ -492,5 +492,5 @@ public class SciProject extends GenericOrganizationalUnit {
query.close(); query.close();
return result; return result;
} }*/
} }

View File

@ -28,6 +28,7 @@ import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciDepartment; import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciDepartmentProjectsCollection; import com.arsdigita.cms.contenttypes.SciDepartmentProjectsCollection;
import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection; import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.SciOrganizationConfig; import com.arsdigita.cms.contenttypes.SciOrganizationConfig;
import com.arsdigita.cms.contenttypes.SciProject; import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
@ -54,7 +55,6 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel {
public static final String SHOW_PROJECTS = "projects"; public static final String SHOW_PROJECTS = "projects";
public static final String SHOW_PROJECTS_ONGOING = "projectsOngoing"; public static final String SHOW_PROJECTS_ONGOING = "projectsOngoing";
public static final String SHOW_PROJECTS_FINISHED = "projectsFinished"; public static final String SHOW_PROJECTS_FINISHED = "projectsFinished";
public static final String SHOW_PUBLICATIONS = "publications";
private boolean displayDescription = true; private boolean displayDescription = true;
private boolean displaySubDepartments = true; private boolean displaySubDepartments = true;
private boolean displayProjects = true; private boolean displayProjects = true;
@ -86,14 +86,6 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel {
this.displayProjects = displayProjects; this.displayProjects = displayProjects;
} }
public boolean isDisplayPublications() {
return displayPublications;
}
public void setDisplayPublications(boolean displayPublications) {
this.displayPublications = displayPublications;
}
public boolean isDisplaySubDepartments() { public boolean isDisplaySubDepartments() {
return displaySubDepartments; return displaySubDepartments;
} }
@ -374,8 +366,9 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel {
end, end,
count, count,
projectsWithoutDoubles.size()); projectsWithoutDoubles.size());
List<SciProject> projectsToShow = projectsWithoutDoubles.subList((int) begin, List<SciProject> projectsToShow =
(int) end); projectsWithoutDoubles.subList((int) begin,
(int) end);
Element projectsElem = parent.newChildElement("projects"); Element projectsElem = parent.newChildElement("projects");
for (SciProject project : projectsToShow) { for (SciProject project : projectsToShow) {
@ -420,6 +413,99 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel {
} }
} }
protected void generateAvailableDataXml(final SciDepartment department,
final Element element,
final PageState state) {
final SciOrganizationConfig config = SciOrganization.getConfig();
if ((department.getDepartmentDescription() != null)
&& !department.getDepartmentDescription().isEmpty()
&& displayDescription) {
element.newChildElement("description");
}
if (department.hasContacts()
&& isDisplayContacts()) {
element.newChildElement("contacts");
}
if (department.hasSubDepartments()
&& displaySubDepartments) {
element.newChildElement("subDepartments");
}
if (config.getOrganizationMembersAllInOne()) {
if (hasMembers(department)
&& isDisplayMembers()) {
element.newChildElement("members");
}
} else {
if (hasActiveMembers(department)
&& isDisplayMembers()) {
element.newChildElement("membersActive");
}
if (hasAssociatedMembers(department)
&& isDisplayMembers()) {
element.newChildElement("membersAssociated");
}
if (hasFormerMembers(department)
&& isDisplayMembers()) {
element.newChildElement("membersFormer");
}
}
if (config.getOrganizationProjectsAllInOne()) {
if (hasProjects(department)
&& displayProjects) {
element.newChildElement("projects");
}
} else {
if (hasOngoingProjects(department)
&& displayProjects) {
element.newChildElement("projectsOngoing");
}
if (hasFinishedProjects(department)
&& displayProjects) {
element.newChildElement("projectsFinished");
}
}
}
protected void generateDataXml(SciDepartment department,
Element element,
PageState state) {
String show = getShowParam(state);
if (SHOW_DESCRIPTION.equals(show)) {
String desc;
desc = department.getDepartmentDescription();
Element description = element.newChildElement("description");
description.setText(desc);
} else if (SHOW_CONTACTS.equals(show)) {
generateContactsXML(department, element, state);
} else if (SHOW_MEMBERS.equals(show)) {
generateMembersXML(department, element, state,
new LinkedList<String>());
} else if (SHOW_MEMBERS_ACTIVE.equals(show)) {
generateMembersXML(department, element, state,
getFiltersForActiveMembers());
} else if (SHOW_MEMBERS_ASSOCIATED.equals(show)) {
generateMembersXML(department, element, state,
getFiltersForAssociatedMembers());
} else if (SHOW_MEMBERS_FORMER.equals(show)) {
generateMembersXML(department, element, state,
getFiltersForFormerMembers());
} else if (SHOW_PROJECTS.equals(show)) {
generateProjectsXML(department, element, state,
new LinkedList<String>());
} else if (SHOW_PROJECTS_ONGOING.equals(show)) {
generateProjectsXML(department, element, state,
getFiltersForOngoingProjects());
} else if (SHOW_PROJECTS_FINISHED.equals(show)) {
generateProjectsXML(department, element, state,
getFiltersForFinishedProjects());
} else if (SHOW_SUBDEPARTMENTS.equals(show)) {
generateSubDepartmentsXML(department, element, state);
}
}
@Override @Override
public void generateXML(ContentItem item, public void generateXML(ContentItem item,
Element element, Element element,
@ -430,99 +516,8 @@ public class SciDepartmentPanel extends SciOrganizationBasePanel {
SciDepartment department = (SciDepartment) item; SciDepartment department = (SciDepartment) item;
SciOrganizationConfig config = SciDepartment.getConfig(); generateAvailableDataXml(department, availableData, state);
if ((department.getDepartmentDescription() != null) generateDataXml(department, content, state);
&& !department.getDepartmentDescription().isEmpty()
&& displayDescription) {
availableData.newChildElement("description");
}
if (department.hasContacts()
&& isDisplayContacts()) {
availableData.newChildElement("contacts");
}
if (department.hasSubDepartments()
&& displaySubDepartments) {
availableData.newChildElement("subDepartments");
}
if (config.getOrganizationMembersAllInOne()) {
if (hasMembers(department)
&& isDisplayMembers()) {
availableData.newChildElement("members");
}
} else {
if (hasActiveMembers(department)
&& isDisplayMembers()) {
availableData.newChildElement("membersActive");
}
if (hasAssociatedMembers(department)
&& isDisplayMembers()) {
availableData.newChildElement("membersAssociated");
}
if (hasFormerMembers(department)
&& isDisplayMembers()) {
availableData.newChildElement("membersFormer");
}
}
if (config.getOrganizationProjectsAllInOne()) {
if (hasProjects(department)
&& displayProjects) {
availableData.newChildElement("projects");
}
} else {
if (hasOngoingProjects(department)
&& displayProjects) {
availableData.newChildElement("projectsOngoing");
}
if (hasFinishedProjects(department)
&& displayProjects) {
availableData.newChildElement("projectsFinished");
}
}
if (department.hasPublications()
&& displayPublications) {
availableData.newChildElement("publications");
}
String show = getShowParam(state);
if (SHOW_DESCRIPTION.equals(show)) {
String desc;
desc = department.getDepartmentDescription();
Element description = content.newChildElement("description");
description.setText(desc);
} else if (SHOW_CONTACTS.equals(show)) {
generateContactsXML(department, content, state);
} else if (SHOW_MEMBERS.equals(show)) {
generateMembersXML(department, content, state,
new LinkedList<String>());
} else if (SHOW_MEMBERS_ACTIVE.equals(show)) {
generateMembersXML(department, content, state,
getFiltersForActiveMembers());
} else if (SHOW_MEMBERS_ASSOCIATED.equals(show)) {
generateMembersXML(department, content, state,
getFiltersForAssociatedMembers());
} else if (SHOW_MEMBERS_FORMER.equals(show)) {
generateMembersXML(department, content, state,
getFiltersForFormerMembers());
} else if (SHOW_PROJECTS.equals(show)) {
generateProjectsXML(department, content, state,
new LinkedList<String>());
} else if (SHOW_PROJECTS_ONGOING.equals(show)) {
generateProjectsXML(department, content, state,
getFiltersForOngoingProjects());
} else if (SHOW_PROJECTS_FINISHED.equals(show)) {
generateProjectsXML(department, content, state,
getFiltersForFinishedProjects());
} else if (SHOW_SUBDEPARTMENTS.equals(show)) {
generateSubDepartmentsXML(department, content, state);
} else if (SHOW_PUBLICATIONS.equals(show)) {
generatePublicationsXML(
RelatedLink.getRelatedLinks(item,
"SciDepartmentPublications"),
content,
state);
}
} }
} }

View File

@ -479,7 +479,7 @@ public abstract class SciOrganizationBasePanel
* @param parent The parent XML element for the XML created by this method * @param parent The parent XML element for the XML created by this method
* @param state The current page state. * @param state The current page state.
*/ */
protected void generatePublicationsXML(final DataCollection links, /* protected void generatePublicationsXML(final DataCollection links,
final Element parent, final Element parent,
final PageState state) { final PageState state) {
RelatedLink link; RelatedLink link;
@ -561,5 +561,5 @@ public abstract class SciOrganizationBasePanel
renderer.setWrapAttributes(true); renderer.setWrapAttributes(true);
renderer.walk(publication, SimpleXMLGenerator.class.getName()); renderer.walk(publication, SimpleXMLGenerator.class.getName());
} }*/
} }

View File

@ -21,7 +21,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.contentassets.RelatedLink;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection; import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection; import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
import com.arsdigita.cms.contenttypes.GenericPerson; import com.arsdigita.cms.contenttypes.GenericPerson;
@ -59,11 +58,10 @@ public class SciOrganizationPanel extends SciOrganizationBasePanel {
public static final String SHOW_PROJECTS = "projects"; public static final String SHOW_PROJECTS = "projects";
public static final String SHOW_PROJECTS_ONGOING = "projectsOngoing"; public static final String SHOW_PROJECTS_ONGOING = "projectsOngoing";
public static final String SHOW_PROJECTS_FINISHED = "projectsFinished"; public static final String SHOW_PROJECTS_FINISHED = "projectsFinished";
public static final String SHOW_PUBLICATIONS = "publications";
private boolean displayDescription = true; private boolean displayDescription = true;
private boolean displayDepartments = true; private boolean displayDepartments = true;
private boolean displayProjects = true; private boolean displayProjects = true;
private boolean displayPublications = true; //private boolean displayPublications = true;
@Override @Override
protected String getDefaultForShowParam() { protected String getDefaultForShowParam() {
@ -121,13 +119,13 @@ public class SciOrganizationPanel extends SciOrganizationBasePanel {
SciOrganization.ProjectStatus.ALL); SciOrganization.ProjectStatus.ALL);
} }
protected boolean hasOngoingProjects(final SciOrganization orga) { protected boolean hasOngoingProjects(final SciOrganization orga) {
return orga.hasProjects(SciOrganization.getConfig(). return orga.hasProjects(SciOrganization.getConfig().
getOrganizationProjectsMerge(), getOrganizationProjectsMerge(),
SciOrganization.ProjectStatus.ONGOING); SciOrganization.ProjectStatus.ONGOING);
} }
protected boolean hasFinishedProjects(final SciOrganization orga) { protected boolean hasFinishedProjects(final SciOrganization orga) {
return orga.hasProjects(SciOrganization.getConfig(). return orga.hasProjects(SciOrganization.getConfig().
getOrganizationProjectsMerge(), getOrganizationProjectsMerge(),
SciOrganization.ProjectStatus.FINISHED); SciOrganization.ProjectStatus.FINISHED);
@ -418,108 +416,112 @@ public class SciOrganizationPanel extends SciOrganizationBasePanel {
} }
} }
protected void generateAvailableDataXml(final SciOrganization organization,
final Element element,
final PageState state) {
SciOrganizationConfig config;
config = SciOrganization.getConfig();
if ((organization.getOrganizationDescription() != null)
&& !(organization.getOrganizationDescription().isEmpty())
&& displayDescription) {
element.newChildElement("description");
}
if (organization.hasContacts()
&& isDisplayContacts()) {
element.newChildElement("contacts");
}
if (organization.hasDepartments()
&& displayDepartments) {
element.newChildElement("departments");
}
if (config.getOrganizationMembersAllInOne()) {
if (hasMembers(organization)
&& isDisplayMembers()) {
element.newChildElement("members");
}
} else {
if (hasActiveMembers(organization)
&& isDisplayMembers()) {
element.newChildElement("membersActive");
}
if (hasAssociatedMembers(organization)
&& isDisplayMembers()) {
element.newChildElement("membersAssociated");
}
if (hasFormerMembers(organization)
&& isDisplayMembers()) {
element.newChildElement("membersFormer");
}
}
if (config.getOrganizationProjectsAllInOne()) {
if (hasProjects(organization)
&& displayProjects) {
element.newChildElement("projects");
}
} else {
if (hasOngoingProjects(organization)
&& displayProjects) {
element.newChildElement("projectsOngoing");
}
if (hasFinishedProjects(organization)
&& displayProjects) {
element.newChildElement("projectsFinished");
}
}
}
protected void generateDataXml(SciOrganization organization,
Element element,
PageState state) {
String show = getShowParam(state);
if (SHOW_DESCRIPTION.equals(show)) {
String desc;
desc = organization.getOrganizationDescription();
Element description = element.newChildElement("description");
description.setText(desc);
} else if (SHOW_CONTACTS.equals(show)) {
generateContactsXML(organization, element, state);
} else if (SHOW_DEPARTMENTS.equals(show)) {
generateDepartmentsXML(organization, element, state);
} else if (SHOW_MEMBERS.equals(show)) {
generateMembersXML(organization, element, state,
new LinkedList<String>());
} else if (SHOW_MEMBERS_ACTIVE.equals(show)) {
generateMembersXML(organization, element, state,
getFiltersForActiveMembers());
} else if (SHOW_MEMBERS_ASSOCIATED.equals(show)) {
generateMembersXML(organization, element, state,
getFiltersForAssociatedMembers());
} else if (SHOW_MEMBERS_FORMER.equals(show)) {
generateMembersXML(organization, element, state,
getFiltersForFormerMembers());
} else if (SHOW_PROJECTS.equals(show)) {
generateProjectsXML(organization, element, state,
new LinkedList<String>());
} else if (SHOW_PROJECTS_ONGOING.equals(show)) {
generateProjectsXML(
organization, element, state, getFiltersForOngoingProjects());
} else if (SHOW_PROJECTS_FINISHED.equals(show)) {
generateProjectsXML(
organization, element, state,
getFiltersForFinishedProjects());
}
}
@Override @Override
public void generateXML(ContentItem item, public void generateXML(ContentItem item,
Element element, Element element,
PageState state) { PageState state) {
Element content = generateBaseXML(item, element, state); Element content = generateBaseXML(item, element, state);
Element availableData = content.newChildElement("availableData");
SciOrganization orga = (SciOrganization) item; SciOrganization orga = (SciOrganization) item;
Element availableData = element.newChildElement("availableData");
SciOrganizationConfig config; generateAvailableDataXml(orga, availableData, state);
config = SciOrganization.getConfig();
if ((orga.getOrganizationDescription() != null) generateDataXml(orga, content, state);
&& !(orga.getOrganizationDescription().isEmpty())
&& displayDescription) {
availableData.newChildElement("description");
}
if (orga.hasContacts()
&& isDisplayContacts()) {
availableData.newChildElement("contacts");
}
if (orga.hasDepartments()
&& displayDepartments) {
availableData.newChildElement("departments");
}
if (config.getOrganizationMembersAllInOne()) {
if (hasMembers(orga)
&& isDisplayMembers()) {
availableData.newChildElement("members");
}
} else {
if (hasActiveMembers(orga)
&& isDisplayMembers()) {
availableData.newChildElement("membersActive");
}
if (hasAssociatedMembers(orga)
&& isDisplayMembers()) {
availableData.newChildElement("membersAssociated");
}
if (hasFormerMembers(orga)
&& isDisplayMembers()) {
availableData.newChildElement("membersFormer");
}
}
if (config.getOrganizationProjectsAllInOne()) {
if (hasProjects(orga)
&& displayProjects) {
availableData.newChildElement("projects");
}
} else {
if (hasOngoingProjects(orga)
&& displayProjects) {
availableData.newChildElement("projectsOngoing");
}
if (hasFinishedProjects(orga)
&& displayProjects) {
availableData.newChildElement("projectsFinished");
}
}
if (orga.hasPublications()
&& displayPublications) {
availableData.newChildElement("publications");
}
String show = getShowParam(state);
if (SHOW_DESCRIPTION.equals(show)) {
String desc;
desc = orga.getOrganizationDescription();
Element description = content.newChildElement("description");
description.setText(desc);
} else if (SHOW_CONTACTS.equals(show)) {
generateContactsXML(orga, content, state);
} else if (SHOW_DEPARTMENTS.equals(show)) {
generateDepartmentsXML(orga, content, state);
} else if (SHOW_MEMBERS.equals(show)) {
generateMembersXML(orga, content, state, new LinkedList<String>());
} else if (SHOW_MEMBERS_ACTIVE.equals(show)) {
generateMembersXML(orga, content, state,
getFiltersForActiveMembers());
} else if (SHOW_MEMBERS_ASSOCIATED.equals(show)) {
generateMembersXML(orga, content, state,
getFiltersForAssociatedMembers());
} else if (SHOW_MEMBERS_FORMER.equals(show)) {
generateMembersXML(orga, content, state,
getFiltersForFormerMembers());
} else if (SHOW_PROJECTS.equals(show)) {
generateProjectsXML(orga, content, state, new LinkedList<String>());
} else if (SHOW_PROJECTS_ONGOING.equals(show)) {
generateProjectsXML(
orga, content, state, getFiltersForOngoingProjects());
} else if (SHOW_PROJECTS_FINISHED.equals(show)) {
generateProjectsXML(
orga, content, state, getFiltersForFinishedProjects());
} else if (SHOW_PUBLICATIONS.equals(show)) {
generatePublicationsXML(
RelatedLink.getRelatedLinks(item,
"SciOrganizationPublications"),
content,
state);
}
} }
} }

View File

@ -21,12 +21,10 @@ 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.contentassets.RelatedLink;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection; import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
import com.arsdigita.cms.contenttypes.SciOrganizationConfig; import com.arsdigita.cms.contenttypes.SciOrganizationConfig;
import com.arsdigita.cms.contenttypes.SciProject; import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.contenttypes.SciProjectSubProjectsCollection; import com.arsdigita.cms.contenttypes.SciProjectSubProjectsCollection;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -43,7 +41,6 @@ public class SciProjectPanel extends SciOrganizationBasePanel {
public static final String SHOW_SUBPROJECTS = "subprojects"; public static final String SHOW_SUBPROJECTS = "subprojects";
public static final String SHOW_SUBPROJECTS_ONGOING = "subprojectsOngoing"; public static final String SHOW_SUBPROJECTS_ONGOING = "subprojectsOngoing";
public static final String SHOW_SUBPROJECTS_FINISHED = "subprojectsFinished"; public static final String SHOW_SUBPROJECTS_FINISHED = "subprojectsFinished";
public static final String SHOW_PUBLICATIONS = "publications";
private boolean displayDescription = true; private boolean displayDescription = true;
private boolean displaySubProjects = true; private boolean displaySubProjects = true;
private boolean displayPublications = true; private boolean displayPublications = true;
@ -66,14 +63,6 @@ public class SciProjectPanel extends SciOrganizationBasePanel {
this.displayDescription = displayDescription; this.displayDescription = displayDescription;
} }
public boolean isDisplayPublications() {
return displayPublications;
}
public void setDisplayPublications(boolean displayPublications) {
this.displayPublications = displayPublications;
}
public boolean isDisplaySubProjects() { public boolean isDisplaySubProjects() {
return displaySubProjects; return displaySubProjects;
} }
@ -200,6 +189,74 @@ public class SciProjectPanel extends SciOrganizationBasePanel {
generateMembersListXML(members, parent, state); generateMembersListXML(members, parent, state);
} }
protected void generateAvailableDataXml(final SciProject project,
final Element element,
final PageState state) {
SciOrganizationConfig config = SciProject.getConfig();
if ((project.getProjectDescription() != null)
&& !project.getProjectDescription().isEmpty()
&& displayDescription) {
element.newChildElement("description");
}
if (project.hasContacts()
&& isDisplayContacts()) {
element.newChildElement("contacts");
}
if (hasSubProjects(project)
&& displaySubProjects) {
element.newChildElement("subProjects");
}
if (config.getProjectMembersAllInOne()) {
if (hasMembers(project)
&& isDisplayMembers()) {
element.newChildElement("members");
}
} else {
if (hasActiveMembers(project)
&& isDisplayMembers()) {
element.newChildElement("activeMembers");
}
if (hasAssociatedMembers(project)
&& isDisplayMembers()) {
element.newChildElement("associatedMembers");
}
if (hasFormerMembers(project)
&& isDisplayMembers()) {
element.newChildElement("formerMembers");
}
}
}
protected void generateDataXml(final SciProject project,
final Element element,
final PageState state) {
String show = getShowParam(state);
if (SHOW_DESCRIPTION.equals(show)) {
Element description = element.newChildElement("description");
description.setText(project.getProjectDescription());
Element funding = element.newChildElement("funding");
funding.setText(project.getFunding());
} else if (SHOW_CONTACTS.equals(show)) {
generateContactsXML(project, element, state);
} else if (SHOW_SUBPROJECTS.equals(show)) {
generateSubProjectsXML(project, element, state,
new LinkedList<String>());
} else if (SHOW_SUBPROJECTS_ONGOING.equals(show)) {
generateSubProjectsXML(project, element, state,
getFiltersForOngoingProjects());
} else if (SHOW_SUBPROJECTS_FINISHED.equals(show)) {
generateSubProjectsXML(project, element, state,
getFiltersForFinishedProjects());
} else if (SHOW_MEMBERS.equals(show)) {
generateMembersXML(project, element, state, true, true, true);
}
}
@Override @Override
public void generateXML(ContentItem item, public void generateXML(ContentItem item,
Element element, Element element,
@ -210,72 +267,9 @@ public class SciProjectPanel extends SciOrganizationBasePanel {
SciProject project = (SciProject) item; SciProject project = (SciProject) item;
SciOrganizationConfig config = SciProject.getConfig(); generateAvailableDataXml(project, element, state);
if ((project.getProjectDescription() != null) generateDataXml(project, element, state);
&& !project.getProjectDescription().isEmpty()
&& displayDescription) {
availableData.newChildElement("description");
}
if (project.hasContacts()
&& isDisplayContacts()) {
availableData.newChildElement("contacts");
}
if (hasSubProjects(project)
&& displaySubProjects) {
availableData.newChildElement("subProjects");
}
if (config.getProjectMembersAllInOne()) {
if (hasMembers(project)
&& isDisplayMembers()) {
availableData.newChildElement("members");
}
} else {
if (hasActiveMembers(project)
&& isDisplayMembers()) {
availableData.newChildElement("activeMembers");
}
if (hasAssociatedMembers(project)
&& isDisplayMembers()) {
availableData.newChildElement("associatedMembers");
}
if (hasFormerMembers(project)
&& isDisplayMembers()) {
availableData.newChildElement("formerMembers");
}
}
if (project.hasPublications()
&& displayPublications) {
availableData.newChildElement("publications");
}
String show = getShowParam(state);
if (SHOW_DESCRIPTION.equals(show)) {
Element description = content.newChildElement("description");
description.setText(project.getProjectDescription());
Element funding = content.newChildElement("funding");
funding.setText(project.getFunding());
} else if (SHOW_CONTACTS.equals(show)) {
generateContactsXML(project, content, state);
} else if (SHOW_SUBPROJECTS.equals(show)) {
generateSubProjectsXML(project, content, state,
new LinkedList<String>());
} else if (SHOW_SUBPROJECTS_ONGOING.equals(show)) {
generateSubProjectsXML(project, content, state,
getFiltersForOngoingProjects());
} else if (SHOW_SUBPROJECTS_FINISHED.equals(show)) {
generateSubProjectsXML(project, content, state,
getFiltersForFinishedProjects());
} else if (SHOW_MEMBERS.equals(show)) {
generateMembersXML(project, content, state, true, true, true);
} else if (SHOW_PUBLICATIONS.equals(show)) {
generatePublicationsXML(
RelatedLink.getRelatedLinks(item,
"SciProjectPublications"),
content,
state);
}
} }
} }