Sun Java System Portal Server 7.1 Developer's Guide

ProcedureTo Develop the CustomTableContainerProvider

  1. Extend JSPTableContainerProvider and develop the provider class file.

    For CustomTableContainerProvider, the CustomTableContainerProvider class is implemented by extending the JSPTableContainerProvider class as shown in Example 1: Developing CustomTableContainerProvider.


    package custom;
    
    import com.sun.portal.providers.containers.jsp.table.JSPTableContainerProvider;
    import com.sun.portal.providers.ProviderException;
    
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Calendar;
    
    public class CustomTableContainerProvider extends JSPTableContainerProvider {
    	private Calendar rightNow = Calendar.getInstance();
    		public List getSelectedChannels() throws ProviderException {
    		List selectedChannels = super.getSelectedChannels();
    		List<String> newList = new ArrayList<String>();
    		if (rightNow.AM_PM == rightNow.AM) {
    			List amList = (List)getListProperty("amList");
    			for (int i = 0; i < amList.size(); i++) {
    				String channel = (String)amList.get(i);
    				if (selectedChannels.contains(channel)) {
    					newList.add(channel);
    				}
    			}
                return newList;
            } else {
    			List pmList = (List)getListProperty("pmList");
    			for (int i = 0; i < pmList.size(); i++) {
    				String channel = (String)pmList.get(i);
    				if (selectedChannels.contains(channel)) {
    					newList.add(channel);
    				}
    			}
    			return newList;
    		}
    	}
    }
  2. Compile the class and put it in the provider class base directory.

    The default directory for the class file is PortalServer-DataDir/portals/portal-ID/desktop/classes. That is, build the JAR and copy the JAR into the provider class base directory. Or, just copy the class as a file into the provider class base directory. To compile the CustomTableContainerProvider.java file, enter:


    javac -d PortalServer-DataDir/portals/portal-ID/
    desktop/classes -classpath PortalServer-base/sdk/desktop/desktopsdk.jar:
    AccessManager-base/lib/servlet.jar CustomTableContainerProvider.java
  3. Develop the display profile XML fragments for this provider and this provider’s channel.

    The display profile fragment for the CustomTableContainerProvider’s provider is saved in CustomTCProvider.xml file and the display profile fragment for the CustomTableContainerProvider’s channel is saved in CustomTCChannel.xml file.

    CustomTCProvider.xml File


    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <!DOCTYPE DisplayProfile SYSTEM "jar://resources/psdp.dtd">
    
    <Provider name="CustomTableContainerProvider" class="
    custom.CustomTableContainerProvider">
        <Properties>
            <String name="contentPage" value="toptable.jsp"/>
            <Integer name="timeout" value ="1800"/>
            <Integer name="layout" value="1"/>
            <Boolean name="showExceptions" value="false"/>
            <Boolean name="parallelChannelsInit" value="false"/>
            <String name="title" value="Table Container Provider"/>
            <String name="description" value="DESCRIPTION"/>
            <String name="refreshTime" value="0"/>
            <String name="width" value="thin"/>
            <String name="fontFace1" value="Sans-serif"/>
            <String name="Desktop-fontFace1" value="Sans-serif"/>
            <String name="productName" value="Sun Java System Portal Server"/>
            <String name="presetThemeChannel" value="JSPPresetThemeContainer"/>
            <String name="customThemeChannel" value="JSPCustomThemeContainer"/>
            <Boolean name="refreshParentContainerOnly" value="false" advanced="true"/>
            <Boolean name="isEditable" value="true"/>
            <String name="editType" value="edit_complete"/>
            <String name="editContainerName" value="JSPEditContainer"/>
            <Integer name="thin_popup_height" value="200"/>
            <Integer name="thin_popup_width" value="500"/>
            <Integer name="thick_popup_height" value="300"/>
            <Integer name="thick_popup_width" value="600"/>
            <Integer name="fullwidth_popup_height" value="500"/>
            <Integer name="fullwidth_popup_width" value="600"/>
            <Collection name="categories">
                <String value="Personal Channels"/>
                <String value="Sample Channels"/>
                <String value="News Channels"/>
                <String value="Search Channels"/>
            </Collection>
            <Collection name="Personal Channels">
                <String value="UserInfo"/>
                <String value="MailCheck"/>
                <String value="Bookmark"/>
                <String value="App"/>
            </Collection>
            <Collection name="Sample Channels">
                <String value="SampleSimpleWebService"/>
                <String value="SampleJSP"/>
                <String value="SampleXML"/>
                <String value="SampleURLScraper"/>
            </Collection>
            <Collection name="News Channels">
                <String value="SampleRSS"/>
                <String value="Postit"/>
            </Collection>
            <Collection name="Search Channels">
                <String value="Search"/>
            </Collection>
            <Boolean name="defaultChannelIsMinimizable" value="true"/>
            <Boolean name="defaultChannelIsMinimized" value="false" 
    			advanced="true"/>
            <Boolean name="defaultChannelIsDetached" value="false" 
    			advanced="true"/>
            <Boolean name="defaultChannelIsDetachable" value="true"/>
            <Boolean name="defaultChannelIsRemovable" value="true"/>
            <Boolean name="defaultChannelHasFrame" value="true" 
    			advanced="true"/>
            <Boolean name="defaultChannelIsMovable" value="true"/>
            <Boolean name="defaultBorderlessChannel" value="false" 
    			advanced="true"/>
            <String name="defaultChannelColumn" value="1" advanced="true"/>
            <String name="defaultChannelRow" value="1" advanced="true"/>
            <Collection name="channelsIsMinimized" advanced="true"/>
            <Collection name="channelsIsDetached" advanced="true"/>
            <Collection name="channelsHasFrame" advanced="true"/>
            <Collection name="channelsIsMinimizable"/>
            <Collection name="channelsRow" advanced="true"/>
            <Collection name="channelsColumn" advanced="true"/>
            <Collection name="channelsIsMovable"/>
            <Collection name="channelsIsDetachable"/>
            <Collection name="channelsIsRemovable"/>
            <Collection name="borderlessChannels"/>
        </Properties>
    </Provider>

    CustomTCChannel.xml File


    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <!DOCTYPE DisplayProfile SYSTEM "jar://resources/psdp.dtd">
    
    <Container name="CustomTableContainer" provider="CustomTableContainerProvider">
        <Properties>
            <String name="title" value="Front Table Container Channel"/>
            <String name="contentPage" value="toptable.jsp"/>
            <String name="description" value="This is a test for front table containers" />
            <String name="Desktop-fontFace1" value="Sans-serif"/>
            <Collection name="categories">
                <String value="Personal Channels"/>
                <String value="Sample Channels"/>
                <String value="News Channels"/>
            </Collection>
            <Collection name="Personal Channels">
                <String value="UserInfo"/>
                <String value="MailCheck"/>
                <String value="Bookmark"/>
                <String value="App"/>
            </Collection>
            <Collection name="Sample Channels">
                <String value="SampleJSP"/>
                <String value="SampleXML"/>
            </Collection>
            <Collection name="News Channels">
                <String value="SampleRSS"/>
            </Collection>
            <Collection name="channelsRow" advanced="true">
                <String name="MailCheck" value="4"/>
                <String name="App" value="5"/>
                <String name="Bookmark" value="3"/>
                <String name="SampleRSS" value="2"/>
                <String name="SampleXML" value="2"/>
            </Collection>
            <Collection name="channelsIsRemovable" >
                <Boolean name="UserInfo" value="false"/>
            </Collection>
            <Collection name="amList">
                <String value="UserInfo"/>
                <String value="MailCheck"/>
                <String value="App"/>
                <String value="Bookmark"/>
            </Collection>
            <Collection name="pmList">
                <String value="MyFrontPageTabPanelContainer/Bookmark2"/>
                <String value="MailCheck"/>
                <String value="SampleXML"/>
                <String value="SampleRSS"/>
            </Collection>
        </Properties>
        <Available>
            <Reference value="UserInfo"/>
            <Reference value="MailCheck"/>
            <Reference value="App"/>
            <Reference value="Bookmark"/>
            <Reference value="MyFrontPageTabPanelContainer/Bookmark2"/>
            <Reference value="SampleJSP"/>
            <Reference value="SampleRSS"/>
            <Reference value="SampleXML"/>
        </Available>
        <Selected>
            <Reference value="UserInfo"/>
            <Reference value="MailCheck"/>
            <Reference value="App"/>
            <Reference value="Bookmark"/>
            <Reference value="MyFrontPageTabPanelContainer/Bookmark2"/>
            <Reference value="SampleJSP"/>
            <Reference value="SampleRSS"/>
            <Reference value="SampleXML"/>
        </Selected>
        <Channels>
        </Channels>
    </Container>
  4. Use the psadmin command to upload the display profile fragments for this provider.

    For CustomTableContainerProvider, use the psadmin add-display-profile sub command to upload the CustomTCProvider.xml file and CustomTCChannel.xml file fragments in the display profile. See the Sun Java System Portal Server 7.1 Command Line Reference for more information on this sub command.

  5. Create a new directory for the provider in PortalServer-DataDir/portals/portal—ID/desktop/desktoptype directory. The directory for the provider is typically named after the channel.

    For the sample CustomTableContainerProvider, create a directory called CustomTableContainer in PortalServer-DataDir/portals/portal—ID/desktop/desktoptype directory.

  6. Develop and copy the JSP files for the provider in the newly created directory.

    For CustomTableContainerProvider, copy files from PortalServer-DataDir/portals/portal—ID/desktop/default/JSPTableContainerProvider to the PortalServer-DataDir/portals/portal—ID/desktop/desktoptype/CustomTableContainer directory.

  7. Copy the resource file for the provider into PortalServer-DataDir/portals/portal—ID/desktop/classes directory.

    For example, for the CustomTableContainerProvider:

    1. Change directories to PortalServer-DataDir/portals/portal—ID/desktop/classes directory.

    2. Type the following command.


      cp JSPTableContainerProvider.properties PortalServer-DataDir
      /portals/portal—ID/desktop/classes/CustomTableContainerProvider.properties
  8. Login to the Desktop and specify the URL in your browser to access CustomTableContainerProvider.


    http://hostname:port/portal-ID/dt?provider=CustomTableContainer