Author: mbooth Date: 2004-12-05 11:42:49 +0100 (Sun, 05 Dec 2004) New Revision: 141 Added: ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/oracle-se-1.4.3-1.4.4.sql ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/postgres-1.4.3-1.4.4.sql Modified: ccm-ldn-navigation/trunk/application.xml ccm-ldn-navigation/trunk/pdl/com/arsdigita/london/navigation/portlet/ObjectListPortlet.pdl ccm-ldn-navigation/trunk/src/ccm-ldn-navigation.upgrade ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/portlet/ObjectListPortlet.java ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletEditor.java ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletRenderer.java Log: Add properties to ObjectListPortletEditor Modified: ccm-ldn-navigation/trunk/application.xml =================================================================== --- ccm-ldn-navigation/trunk/application.xml 2004-12-05 10:40:38 UTC (rev 140) +++ ccm-ldn-navigation/trunk/application.xml 2004-12-05 10:42:49 UTC (rev 141) @@ -2,8 +2,8 @@ <ccm:application name="ccm-ldn-navigation" prettyName="Navigation" - version="1.4.3" - release="9" + version="1.4.4" + release="1" webapp="ROOT" xmlns:ccm="http://ccm.redhat.com/ccm-project"> Modified: ccm-ldn-navigation/trunk/pdl/com/arsdigita/london/navigation/portlet/ObjectListPortlet.pdl =================================================================== --- ccm-ldn-navigation/trunk/pdl/com/arsdigita/london/navigation/portlet/ObjectListPortlet.pdl 2004-12-05 10:40:38 UTC (rev 140) +++ ccm-ldn-navigation/trunk/pdl/com/arsdigita/london/navigation/portlet/ObjectListPortlet.pdl 2004-12-05 10:42:49 UTC (rev 141) @@ -27,6 +27,7 @@ String[1..1] ordering = portlet_object_list.ordering VARCHAR(200); String[0..1] xmlAttributes = portlet_object_list.xml_attributes VARCHAR(200); + String[0..1] dcProperties = portlet_object_list.dc_properties VARCHAR(200); Integer[1..1] count = portlet_object_list.count INTEGER; Added: ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/oracle-se-1.4.3-1.4.4.sql =================================================================== --- ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/oracle-se-1.4.3-1.4.4.sql 2004-12-05 10:40:38 UTC (rev 140) +++ ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/oracle-se-1.4.3-1.4.4.sql 2004-12-05 10:42:49 UTC (rev 141) @@ -0,0 +1 @@ +alter table portlet_object_list add dc_properties VARCHAR(200); Added: ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/postgres-1.4.3-1.4.4.sql =================================================================== --- ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/postgres-1.4.3-1.4.4.sql 2004-12-05 10:40:38 UTC (rev 140) +++ ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/postgres-1.4.3-1.4.4.sql 2004-12-05 10:42:49 UTC (rev 141) @@ -0,0 +1 @@ +alter table portlet_object_list add dc_properties VARCHAR(200); Modified: ccm-ldn-navigation/trunk/src/ccm-ldn-navigation.upgrade =================================================================== --- ccm-ldn-navigation/trunk/src/ccm-ldn-navigation.upgrade 2004-12-05 10:40:38 UTC (rev 140) +++ ccm-ldn-navigation/trunk/src/ccm-ldn-navigation.upgrade 2004-12-05 10:42:49 UTC (rev 141) @@ -6,4 +6,7 @@ <version from="1.4.2" to="1.4.3"> <script sql="ccm-ldn-navigation/upgrade/::database::-1.4.2-1.4.3.sql"/> </version> + <version from="1.4.3" to="1.4.4"> + <script sql="ccm-ldn-navigation/upgrade/::database::-1.4.3-1.4.4.sql"/> + </version> </upgrade> Modified: ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/portlet/ObjectListPortlet.java =================================================================== --- ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/portlet/ObjectListPortlet.java 2004-12-05 10:40:38 UTC (rev 140) +++ ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/portlet/ObjectListPortlet.java 2004-12-05 10:42:49 UTC (rev 141) @@ -26,15 +26,27 @@ import com.arsdigita.kernel.ACSObject; import com.arsdigita.categorization.Category; import com.arsdigita.categorization.CategoryCollection; + +import com.arsdigita.london.navigation.AbstractNavigationModel; import com.arsdigita.london.navigation.DataCollectionDefinition; +import com.arsdigita.london.navigation.DataCollectionProperty; +import com.arsdigita.london.navigation.DataCollectionPropertyRenderer; import com.arsdigita.london.navigation.NavigationModel; -import com.arsdigita.london.navigation.AbstractNavigationModel; import com.arsdigita.london.navigation.ui.portlet.ObjectListPortletRenderer; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; -import java.util.ArrayList; +import java.util.Map; +import java.util.StringTokenizer; +import org.apache.log4j.Logger; + public class ObjectListPortlet extends Portlet { + private static final Logger s_log = + Logger.getLogger( ObjectListPortlet.class ); public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.london.navigation.portlet.ObjectListPortlet"; @@ -43,6 +55,7 @@ public static final String SPECIFIC_OBJECT_TYPE = "specificObjectType"; public static final String ORDERING = "ordering"; public static final String ATTRIBUTES = "xmlAttributes"; + public static final String PROPERTIES = "dcProperties"; public static final String COUNT = "count"; public static final String FILTER_CATEGORY = "filterCategory"; @@ -51,10 +64,42 @@ public static final String DESCEND_CATEGORIES = "descendCategories"; public static final String EXCLUDE_INDEX_OBJECTS = "excludeIndexObjects"; + private static final Map s_properties = + Collections.synchronizedMap( new HashMap() ); public ObjectListPortlet(DataObject dobj) { super(dobj); } + + public static void addProperty( String key, String title, + DataCollectionProperty property, + DataCollectionPropertyRenderer renderer ) { + s_properties.put( key, new Object[] { title, property, renderer } ); + } + + public static Iterator getRegisteredProperties() { + return s_properties.entrySet().iterator(); + } + + public static DataCollectionProperty getDCProperty( String key ) { + Object[] entry = (Object[]) s_properties.get( key ); + if( null == entry ) { + s_log.error( "dcProperty request for non-existent key: " + key ); + return null; + } + + return (DataCollectionProperty) entry[1]; + } + + public static DataCollectionPropertyRenderer getDCPropertyRenderer( String key ) { + Object[] entry = (Object[]) s_properties.get( key ); + if( null == entry ) { + s_log.error( "dcPropertyRenderer request for non-existent key: " + key ); + return null; + } + + return (DataCollectionPropertyRenderer) entry[2]; + } public void initialize() { super.initialize(); @@ -138,6 +183,36 @@ public boolean isExludingIndexObjects() { return ((Boolean)get(EXCLUDE_INDEX_OBJECTS)).booleanValue(); } + + public void setProperties( Object[] properties ) { + StringBuffer buf = new StringBuffer(); + + if( null != properties ) { + for( int i = 0; i < properties.length; i++ ) { + buf.append( properties[i].toString() ); + + if( i != properties.length - 1 ) { + buf.append( ',' ); + } + } + } + + set( PROPERTIES, buf.toString() ); + } + + public String[] getProperties() { + String properties = (String) get( PROPERTIES ); + if( null == properties ) return new String[] { }; + + StringTokenizer tok = new StringTokenizer( properties, "," ); + String[] result = new String[ tok.countTokens() ]; + + for( int i = 0; i < result.length; i++ ) { + result[i] = tok.nextToken(); + } + + return result; + } protected DataCollectionDefinition newDataCollectionDefinition() { return new DataCollectionDefinition(); @@ -156,6 +231,12 @@ def.setCheckPermissions(isCheckingPermissions()); def.setExcludeIndexObjects(isExludingIndexObjects()); + String[] properties = getProperties(); + for( int i = 0; i < properties.length; i++ ) { + DataCollectionProperty dcp = getDCProperty( properties[i] ); + def.addProperty( dcp ); + } + return def; } Modified: ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletEditor.java =================================================================== --- ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletEditor.java 2004-12-05 10:40:38 UTC (rev 140) +++ ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletEditor.java 2004-12-05 10:42:49 UTC (rev 141) @@ -18,29 +18,30 @@ package com.arsdigita.london.navigation.ui.portlet; -import com.arsdigita.bebop.form.Widget; -import com.arsdigita.bebop.form.SingleSelect; -import com.arsdigita.bebop.form.RadioGroup; +import com.arsdigita.london.navigation.portlet.ObjectListPortlet; + +import com.arsdigita.bebop.ColumnPanel; +import com.arsdigita.bebop.FormProcessException; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.RequestLocal; +import com.arsdigita.bebop.event.PrintEvent; +import com.arsdigita.bebop.event.PrintListener; +import com.arsdigita.bebop.form.MultipleSelect; import com.arsdigita.bebop.form.Option; import com.arsdigita.bebop.form.OptionGroup; +import com.arsdigita.bebop.form.RadioGroup; import com.arsdigita.bebop.form.SingleSelect; import com.arsdigita.bebop.form.TextField; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.ColumnPanel; -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.parameters.ParameterModel; -import com.arsdigita.bebop.parameters.StringParameter; +import com.arsdigita.bebop.form.Widget; +import com.arsdigita.bebop.parameters.ArrayParameter; import com.arsdigita.bebop.parameters.BooleanParameter; import com.arsdigita.bebop.parameters.IntegerParameter; import com.arsdigita.bebop.parameters.NotNullValidationListener; -import com.arsdigita.bebop.RequestLocal; - +import com.arsdigita.bebop.parameters.ParameterModel; +import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.bebop.portal.PortletConfigFormSection; -import com.arsdigita.bebop.event.PrintEvent; -import com.arsdigita.bebop.event.PrintListener; - import com.arsdigita.categorization.Category; import com.arsdigita.portal.Portlet; import com.arsdigita.kernel.ACSObject; @@ -52,15 +53,15 @@ import com.arsdigita.util.StringUtils; import com.arsdigita.kernel.ResourceType; -import com.arsdigita.london.navigation.portlet.ObjectListPortlet; import com.arsdigita.london.util.ui.CategoryPicker; import com.arsdigita.london.util.ui.ApplicationCategoryPicker; import com.redhat.persistence.metadata.Root; import com.redhat.persistence.common.Path; +import java.util.Iterator; +import java.util.Map; import java.util.TooManyListenersException; -import java.util.Iterator; public class ObjectListPortletEditor extends PortletConfigFormSection { @@ -72,6 +73,7 @@ private OptionGroup m_descendCategories; private OptionGroup m_checkPermissions; private OptionGroup m_excludeIndexObjects; + private OptionGroup m_properties; private Widget m_count; private Widget m_order; @@ -142,6 +144,10 @@ m_attributes = buildAttributesWidget(new StringParameter("attributes")); add(new Label("Output attributes:", Label.BOLD), ColumnPanel.RIGHT); add(m_attributes); + + m_properties = new MultipleSelect( "properties" ); + add( new Label( "Output properties:", Label.BOLD ), ColumnPanel.RIGHT ); + add( m_properties ); } protected Widget buildBaseObjectTypeWidget(ParameterModel param) { @@ -197,6 +203,15 @@ Portlet portlet) throws FormProcessException { super.initWidgets(state, portlet); + + Iterator properties = ObjectListPortlet.getRegisteredProperties(); + while( properties.hasNext() ) { + Map.Entry entry = (Map.Entry) properties.next(); + String key = entry.getKey().toString(); + String title = ((Object[]) entry.getValue())[0].toString(); + + m_properties.addOption( new Option( key, title ), state ); + } if (portlet != null) { ObjectListPortlet myportlet = (ObjectListPortlet)portlet; @@ -216,6 +231,7 @@ m_checkPermissions.setValue(state, new Boolean(myportlet.isCheckingPermissions())); m_excludeIndexObjects.setValue(state, new Boolean(myportlet.isExludingIndexObjects())); + m_properties.setValue( state, myportlet.getProperties() ); } else { m_baseObjectType.setValue(state, null); m_restrictedObjectType.setValue(state, null); @@ -329,7 +345,6 @@ myportlet.setDescendCategories(((Boolean)m_descendCategories.getValue(state)).booleanValue()); myportlet.setCheckPermissions(((Boolean)m_checkPermissions.getValue(state)).booleanValue()); myportlet.setExcludeIndexObjects(((Boolean)m_excludeIndexObjects.getValue(state)).booleanValue()); + myportlet.setProperties( (Object[]) m_properties.getValue( state ) ); } - - } Modified: ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletRenderer.java =================================================================== --- ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletRenderer.java 2004-12-05 10:40:38 UTC (rev 140) +++ ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletRenderer.java 2004-12-05 10:42:49 UTC (rev 141) @@ -26,6 +26,8 @@ import com.arsdigita.london.navigation.Navigation; import com.arsdigita.london.navigation.DataCollectionRenderer; +import com.arsdigita.london.navigation.DataCollectionProperty; +import com.arsdigita.london.navigation.DataCollectionPropertyRenderer; import com.arsdigita.london.navigation.portlet.ObjectListPortlet; public class ObjectListPortletRenderer extends AbstractPortletRenderer { @@ -43,6 +45,13 @@ Element parent) { DataCollectionRenderer renderer = newDataCollectionRenderer(); renderer.setPageSize(m_portlet.getCount()); + + String[] dcProperties = m_portlet.getProperties(); + for( int i = 0; i < dcProperties.length; i++ ) { + DataCollectionPropertyRenderer dcpr = + ObjectListPortlet.getDCPropertyRenderer( dcProperties[i] ); + renderer.addProperty( dcpr ); + } String attributes = m_portlet.getAttributes(); if (attributes != null) { |