Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.jasig.portal.layout.simple
Class SimpleUserLayoutManager

    java.lang.Object
      org.jasig.portal.layout.simple.SimpleUserLayoutManager

All Implemented Interfaces:
  IUserLayoutManager

    public class SimpleUserLayoutManager

extends java.lang.Object
implements IUserLayoutManager

An implementation of a user layout manager that uses 2.0-release store implementations. Prior to uPortal 2.5, this class existed in the org.jasig.portal.layout package. It was moved to its present package to reflect that it is part of the Simple Layout Management implementation.

Version:
  $Revision: 1.1 $
Author:
  Peter Kharchenko

Field Summary
`private static java.lang.String` | `ADD_COMMAND`
`protected java.lang.String` | `cacheKey`
`private boolean` | `dirtyState`
`protected java.util.Set` | `listeners`
`private static org.apache.commons.logging.Log` | `log`
`protected org.w3c.dom.Document` | `markedUserLayout`
`private static java.lang.String` | `MARKING_XSLT_URI`
`private java.lang.String` | `markingMode`
`private java.lang.String` | `markingNode`
`private static java.lang.String` | `MOVE_COMMAND`
`protected IPerson` | `owner`
`protected UserProfile` | `profile`
`protected static java.util.Random` | `rnd`
`protected java.lang.String` | `rootNodeId`
`protected IUserLayoutStore` | `store`
`protected IUserLayout` | `userLayout`
`protected org.w3c.dom.Document` | `userLayoutDocument`

Constructor Summary
`SimpleUserLayoutManager(IPerson owner, UserProfile profile, IUserLayoutStore store)`

Method Summary
`boolean` | `addLayoutEventListener(LayoutEventListener l)` Register a layout event listener
`IUserLayoutNodeDescription` | `addNode(IUserLayoutNodeDescription node, java.lang.String parentId, java.lang.String nextSiblingId)` Add a new node to a current user layout.
`protected boolean` | `canAddNode(IUserLayoutNodeDescription node, IUserLayoutNodeDescription parent, java.lang.String nextSiblingId)`
`boolean` | `canAddNode(IUserLayoutNodeDescription node, java.lang.String parentId, java.lang.String nextSiblingId)` Test if a particular node can be added at a given location.
`protected boolean` | `canDeleteNode(IUserLayoutNodeDescription node)`
`boolean` | `canDeleteNode(java.lang.String nodeId)` Tests if a particular node can be deleted.
`protected boolean` | `canMoveNode(IUserLayoutNodeDescription node, IUserLayoutNodeDescription parent, java.lang.String nextSiblingId)`
`boolean` | `canMoveNode(java.lang.String nodeId, java.lang.String parentId, java.lang.String nextSiblingId)` Test if a particular node can be moved to a given location.
`boolean` | `canUpdateNode(IUserLayoutNodeDescription node)` Test if a certain node can be updated.
`boolean` | `canUpdateNode(java.lang.String nodeId)`
`private void` | `clearDirtyFlag()`
`void` | `clearMarkings()`
`IUserLayoutNodeDescription` | `createNodeDescription(int nodeType)` A factory method to create an empty `IUserLayoutNodeDescription` instance
`boolean` | `deleteNode(java.lang.String nodeId)` Delete a node (folder or a channel) from a user layout.
`java.lang.String` | `getCacheKey()` Return a cache key, uniqly corresponding to the composition and the structure of the user layout.
`java.util.Enumeration` | `getChildIds(java.lang.String nodeId)` Returns a list of child node Ids for a given node.
`int` | `getDepth(java.lang.String nodeId)` Returns the depth of a node in the layout tree.
`int` | `getLayoutId()` Returns a layout Id associated with this manager/
`protected IUserLayoutStore` | `getLayoutStore()`
`java.lang.String` | `getNextSiblingId(java.lang.String nodeId)` Determine an Id of a next sibling node.
`IUserLayoutNodeDescription` | `getNode(java.lang.String nodeId)` Obtain a description of a node (channel or a folder) in a given user layout.
`java.lang.String` | `getParentId(java.lang.String nodeId)` Returns an Id of a parent user layout node.
`java.lang.String` | `getPreviousSiblingId(java.lang.String nodeId)` Determine an Id of a previous sibling node.
`java.lang.String` | `getRootFolderId()` Returns an id of the root folder.
`java.lang.String` | `getSubscribeId(java.lang.String fname)` Returns a subscription id given a functional name.
`IUserLayout` | `getUserLayout()` Gets a user layout (with appropriate markings).
`void` | `getUserLayout(org.xml.sax.ContentHandler ch)` Output user layout (with appropriate markings) into a `ContentHandler`
`protected void` | `getUserLayout(org.w3c.dom.Node n, org.xml.sax.ContentHandler ch)`
`void` | `getUserLayout(java.lang.String nodeId, org.xml.sax.ContentHandler ch)` Output subtree of a user layout (with appropriate markings) defined by a particular node into a `ContentHandler`
`org.w3c.dom.Document` | `getUserLayoutDOM()`
`protected boolean` | `isLayoutDirty()`
`void` | `loadUserLayout()` Signal manager to load a user layout from a database
`void` | `markAddTargets(IUserLayoutNodeDescription node)` Ask manager to output markings at the locations where a given node can be added.
`private void` | `markLayoutDirty()`
`void` | `markMoveTargets(java.lang.String nodeId)` Ask manager to output markings at the locations where a given node can be moved.
`boolean` | `moveNode(java.lang.String nodeId, java.lang.String parentId, java.lang.String nextSiblingId)` Move a node (channel or folder) from one location to another.
`boolean` | `removeLayoutEventListener(LayoutEventListener l)` Remove a registered layout event listener.
`void` | `saveUserLayout()` Signal manager to persist user layout to a database
`void` | `setLayoutStore(IUserLayoutStore store)` Set a user layout store implementation.
`void` | `setUserLayout(IUserLayout userLayout)` Sets a user layout (with appropriate markings).
`private void` | `setUserLayoutDOM(org.w3c.dom.Document doc)`
`private void` | `updateCacheKey()` This is outright cheating ! We're supposed to analyze the user layout tree and return a key that corresponds uniqly to the composition and the sturcture of the tree.
`boolean` | `updateNode(IUserLayoutNodeDescription node)` Update a given node.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### log

    private static final org.apache.commons.logging.Log log

### owner

    protected final IPerson owner

### profile

    protected final UserProfile profile

### store

    protected IUserLayoutStore store

### listeners

    protected java.util.Set listeners

### userLayout

    protected IUserLayout userLayout

### userLayoutDocument

    protected org.w3c.dom.Document userLayoutDocument

### markedUserLayout

    protected org.w3c.dom.Document markedUserLayout

### rnd

    protected static java.util.Random rnd

### cacheKey

    protected java.lang.String cacheKey

### rootNodeId

    protected java.lang.String rootNodeId

### dirtyState

    private boolean dirtyState

### markingMode

    private java.lang.String markingMode

### markingNode

    private java.lang.String markingNode

### ADD_COMMAND

    private static final java.lang.String ADD_COMMAND

See Also:
  Constant Field Values

### MOVE_COMMAND

    private static final java.lang.String MOVE_COMMAND

See Also:
  Constant Field Values

### MARKING_XSLT_URI

    private static final java.lang.String MARKING_XSLT_URI

See Also:
  Constant Field Values

Constructor Detail

### SimpleUserLayoutManager

    public SimpleUserLayoutManager(IPerson owner,
                                   UserProfile profile,
                                   IUserLayoutStore store)
                            throws PortalException

Throws:
  `PortalException`

Method Detail

### getUserLayout

    public IUserLayout getUserLayout()
                              throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Gets a user layout (with appropriate markings).

  Specified by:
    `getUserLayout` in interface `IUserLayoutManager`
  Returns:
    the user layout
  Throws:
    `PortalException` - if an error occurs

### setUserLayout

    public void setUserLayout(IUserLayout userLayout)
                       throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Sets a user layout (with appropriate markings).

  Specified by:
    `setUserLayout` in interface `IUserLayoutManager`
  Parameters:
    `userLayout` - the user layout
  Throws:
    `PortalException` - if an error occurs

### setUserLayoutDOM

    private void setUserLayoutDOM(org.w3c.dom.Document doc)

### getUserLayoutDOM

    public org.w3c.dom.Document getUserLayoutDOM()

  Specified by:
    `getUserLayoutDOM` in interface `IUserLayoutManager`

### getUserLayout

    public void getUserLayout(org.xml.sax.ContentHandler ch)
                       throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Output user layout (with appropriate markings) into a `ContentHandler`

  Specified by:
    `getUserLayout` in interface `IUserLayoutManager`
  Parameters:
    `ch` - a `ContentHandler` value
  Throws:
    `PortalException` - if an error occurs

### getUserLayout

    public void getUserLayout(java.lang.String nodeId,
                              org.xml.sax.ContentHandler ch)
                       throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Output subtree of a user layout (with appropriate markings) defined by a particular node into a `ContentHandler`

  Specified by:
    `getUserLayout` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` a node determining a user layout subtree.
    `ch` - a `ContentHandler` value
  Throws:
    `PortalException` - if an error occurs

### getUserLayout

    protected void getUserLayout(org.w3c.dom.Node n,
                                 org.xml.sax.ContentHandler ch)
                          throws PortalException

  Throws:
    `PortalException`

### setLayoutStore

    public void setLayoutStore(IUserLayoutStore store)

  Description copied from interface: `IUserLayoutManager`
  Set a user layout store implementation.

  Specified by:
    `setLayoutStore` in interface `IUserLayoutManager`
  Parameters:
    `store` - an `IUserLayoutStore` value

### getLayoutStore

    protected IUserLayoutStore getLayoutStore()

### loadUserLayout

    public void loadUserLayout()
                        throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Signal manager to load a user layout from a database

  Specified by:
    `loadUserLayout` in interface `IUserLayoutManager`
  Throws:
    `PortalException` - if an error occurs

### saveUserLayout

    public void saveUserLayout()
                        throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Signal manager to persist user layout to a database

  Specified by:
    `saveUserLayout` in interface `IUserLayoutManager`
  Throws:
    `PortalException` - if an error occurs

### getNode

    public IUserLayoutNodeDescription getNode(java.lang.String nodeId)
                                       throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Obtain a description of a node (channel or a folder) in a given user layout.

  Specified by:
    `getNode` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` channel subscribe id or folder id.
  Returns:
    an `UserLayoutNodeDescription` value
  Throws:
    `PortalException` - if an error occurs

### getDepth

    public int getDepth(java.lang.String nodeId)
                 throws PortalException

  Returns the depth of a node in the layout tree.

  Specified by:
    `getDepth` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` value
  Returns:
    a depth value
  Throws:
    `PortalException` - if an error occurs

### addNode

    public IUserLayoutNodeDescription addNode(IUserLayoutNodeDescription node,
                                              java.lang.String parentId,
                                              java.lang.String nextSiblingId)
                                       throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Add a new node to a current user layout.

  Specified by:
    `addNode` in interface `IUserLayoutManager`
  Parameters:
    `node` - an `UserLayoutNodeDescription` value of a node to be added (Id doesn't have to be set)
    `parentId` - a `String` id of a folder to which the new node (channel or folder) should be added.
    `nextSiblingId` - a `String` an id of a sibling node (channel or folder) prior to which the new node should be inserted.
  Returns:
    an `UserLayoutNodeDescription` value with a newly determined Id.
  Throws:
    `PortalException` - if an error occurs

### clearMarkings

    public void clearMarkings()

### moveNode

    public boolean moveNode(java.lang.String nodeId,
                            java.lang.String parentId,
                            java.lang.String nextSiblingId)
                     throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Move a node (channel or folder) from one location to another.

  Specified by:
    `moveNode` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` value of a node Id.
    `parentId` - a `String` id of a folder to which the node should be moved.
    `nextSiblingId` - a `String` id of a sibling node (folder or channel) prior to which the node should be placed. (`null` to append at the end)
  Returns:
    a `boolean` value noting if the operation was successful
  Throws:
    `PortalException` - if an error occurs

### deleteNode

    public boolean deleteNode(java.lang.String nodeId)
                       throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Delete a node (folder or a channel) from a user layout.

  Specified by:
    `deleteNode` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` id (channel subscribe id or folder id)
  Returns:
    a `boolean` value noting if the operation was successful
  Throws:
    `PortalException` - if an error occurs

### getRootFolderId

    public java.lang.String getRootFolderId()

  Description copied from interface: `IUserLayoutManager`
  Returns an id of the root folder.

  Specified by:
    `getRootFolderId` in interface `IUserLayoutManager`
  Returns:
    a `String` value

### updateNode

    public boolean updateNode(IUserLayoutNodeDescription node)
                       throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Update a given node.

  Specified by:
    `updateNode` in interface `IUserLayoutManager`
  Parameters:
    `node` - an `UserLayoutNodeDescription` value with a valid id.
  Returns:
    a `boolean` value noting if the operation was successful
  Throws:
    `PortalException` - if an error occurs

### canAddNode

    public boolean canAddNode(IUserLayoutNodeDescription node,
                              java.lang.String parentId,
                              java.lang.String nextSiblingId)
                       throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Test if a particular node can be added at a given location.

  Specified by:
    `canAddNode` in interface `IUserLayoutManager`
  Parameters:
    `node` - an `UserLayoutNodeDescription` value describing the node to be added.
    `parentId` - a `String` id of a parent to which the node to be added.
    `nextSiblingId` - a `String` id of a sibling prior to which the node to be inserted. (`null` to append at the end)
  Returns:
    a `boolean` value
  Throws:
    `PortalException` - if an error occurs

### canAddNode

    protected boolean canAddNode(IUserLayoutNodeDescription node,
                                 IUserLayoutNodeDescription parent,
                                 java.lang.String nextSiblingId)
                          throws PortalException

  Throws:
    `PortalException`

### canMoveNode

    public boolean canMoveNode(java.lang.String nodeId,
                               java.lang.String parentId,
                               java.lang.String nextSiblingId)
                        throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Test if a particular node can be moved to a given location.

  Specified by:
    `canMoveNode` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` id of a node to be moved.
    `parentId` - a `String` id of a parent to which the node to be moved.
    `nextSiblingId` - a `String` id of a sibling prior to which the node is to be inserted (`null` to append at the end)
  Returns:
    a `boolean` value
  Throws:
    `PortalException` - if an error occurs

### canMoveNode

    protected boolean canMoveNode(IUserLayoutNodeDescription node,
                                  IUserLayoutNodeDescription parent,
                                  java.lang.String nextSiblingId)
                           throws PortalException

  Throws:
    `PortalException`

### canDeleteNode

    public boolean canDeleteNode(java.lang.String nodeId)
                          throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Tests if a particular node can be deleted.

  Specified by:
    `canDeleteNode` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` node id.
  Returns:
    a `boolean` value
  Throws:
    `PortalException` - if an error occurs

### canDeleteNode

    protected boolean canDeleteNode(IUserLayoutNodeDescription node)
                             throws PortalException

  Throws:
    `PortalException`

### canUpdateNode

    public boolean canUpdateNode(java.lang.String nodeId)
                          throws PortalException

  Throws:
    `PortalException`

### canUpdateNode

    public boolean canUpdateNode(IUserLayoutNodeDescription node)

  Description copied from interface: `IUserLayoutManager`
  Test if a certain node can be updated.

  Specified by:
    `canUpdateNode` in interface `IUserLayoutManager`
  Parameters:
    `node` - a `IUserLayoutNodeDescription` node id.
  Returns:
    a `boolean` value

### markAddTargets

    public void markAddTargets(IUserLayoutNodeDescription node)
                        throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Ask manager to output markings at the locations where a given node can be added. The marks will appear next time `getUserLayout` method is called.

  Specified by:
    `markAddTargets` in interface `IUserLayoutManager`
  Parameters:
    `node` - an `UserLayoutNodeDescription` value or `null` to stop outputting add markings.
  Throws:
    `PortalException` - if an error occurs

### markMoveTargets

    public void markMoveTargets(java.lang.String nodeId)
                         throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Ask manager to output markings at the locations where a given node can be moved. The marks will appear next time `getUserLayout` method is called.

  Specified by:
    `markMoveTargets` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` value or `null` to stop outputting move markings.
  Throws:
    `PortalException` - if an error occurs

### getParentId

    public java.lang.String getParentId(java.lang.String nodeId)
                                 throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Returns an Id of a parent user layout node. The user layout root node always has ID= `IUserLayout.ROOT_NODE_NAME`

  Specified by:
    `getParentId` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` value
  Returns:
    a `String` value
  Throws:
    `PortalException` - if an error occurs

### getNextSiblingId

    public java.lang.String getNextSiblingId(java.lang.String nodeId)
                                      throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Determine an Id of a next sibling node.

  Specified by:
    `getNextSiblingId` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` value
  Returns:
    a `String` Id value of a next sibling node, or `null` if this is the last sibling.
  Throws:
    `PortalException` - if an error occurs

### getPreviousSiblingId

    public java.lang.String getPreviousSiblingId(java.lang.String nodeId)
                                          throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Determine an Id of a previous sibling node.

  Specified by:
    `getPreviousSiblingId` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` value
  Returns:
    a `String` Id value of a previous sibling node, or `null` if this is the first sibling.
  Throws:
    `PortalException` - if an error occurs

### getChildIds

    public java.util.Enumeration getChildIds(java.lang.String nodeId)
                                      throws PortalException

  Description copied from interface: `IUserLayoutManager`
  Returns a list of child node Ids for a given node.

  Specified by:
    `getChildIds` in interface `IUserLayoutManager`
  Parameters:
    `nodeId` - a `String` value
  Returns:
    a `List` of `String` child node Ids.
  Throws:
    `PortalException` - if an error occurs

### getCacheKey

    public java.lang.String getCacheKey()

  Description copied from interface: `IUserLayoutManager`
  Return a cache key, uniqly corresponding to the composition and the structure of the user layout.

  Specified by:
    `getCacheKey` in interface `IUserLayoutManager`
  Returns:
    a `String` value

### updateCacheKey

    private void updateCacheKey()

  This is outright cheating ! We're supposed to analyze the user layout tree and return a key that corresponds uniqly to the composition and the sturcture of the tree. Here we just return a different key wheneever anything changes. So if one was to move a node back and forth, the key would always never (almost) come back to the original value, even though the changes to the user layout are cyclic.

### getLayoutId

    public int getLayoutId()

  Description copied from interface: `IUserLayoutManager`
  Returns a layout Id associated with this manager/

  Specified by:
    `getLayoutId` in interface `IUserLayoutManager`
  Returns:
    an `int` layout Id value;

### getSubscribeId

    public java.lang.String getSubscribeId(java.lang.String fname)
                                    throws PortalException

  Returns a subscription id given a functional name.

  Specified by:
    `getSubscribeId` in interface `IUserLayoutManager`
  Parameters:
    `fname` - the functional name to lookup.
  Returns:
    a `String` subscription id.
  Throws:
    `PortalException`

### addLayoutEventListener

    public boolean addLayoutEventListener(LayoutEventListener l)

  Description copied from interface: `IUserLayoutManager`
  Register a layout event listener

  Specified by:
    `addLayoutEventListener` in interface `IUserLayoutManager`
  Parameters:
    `l` - a `LayoutEventListener` object
  Returns:
    a `boolean` success status

### removeLayoutEventListener

    public boolean removeLayoutEventListener(LayoutEventListener l)

  Description copied from interface: `IUserLayoutManager`
  Remove a registered layout event listener.

  Specified by:
    `removeLayoutEventListener` in interface `IUserLayoutManager`
  Parameters:
    `l` - a `LayoutEventListener` object
  Returns:
    a `boolean` success status

### createNodeDescription

    public IUserLayoutNodeDescription createNodeDescription(int nodeType)
                                                     throws PortalException

  A factory method to create an empty `IUserLayoutNodeDescription` instance

  Specified by:
    `createNodeDescription` in interface `IUserLayoutManager`
  Parameters:
    `nodeType` - a node type value
  Returns:
    an `IUserLayoutNodeDescription` instance
  Throws:
    `PortalException` - if the error occurs.

### isLayoutDirty

    protected boolean isLayoutDirty()

### markLayoutDirty

    private void markLayoutDirty()

### clearDirtyFlag

    private void clearDirtyFlag()

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD