org.jasig.portal.layout.dlm
Class RDBMDistributedLayoutStore

java.lang.Object
  extended by org.jasig.portal.layout.simple.RDBMUserLayoutStore
      extended by org.jasig.portal.layout.dlm.RDBMDistributedLayoutStore
All Implemented Interfaces:
IUserLayoutStore

public class RDBMDistributedLayoutStore
extends RDBMUserLayoutStore

This class extends RDBMUserLayoutStore and implements instantiating and storing layouts that conform to the design of the distribute layout management system. These layouts consist of two types: layout fragments that are the layouts owned by a user specified in dlm.xml, and composite view layouts which represent regular users with zero or more UI elements incorporated from layout fragments. Only a user's personal layout fragment is

Since:
uPortal 2.5
Version:
$Revision: 1.14.2.6 $ $Date: 2006/01/26 19:51:04 $

Field Summary
private  FragmentActivator activator
           
private  LayoutDecorator decorator
           
(package private) static java.lang.String DECORATOR_PROPERTY
           
private  FragmentDefinition[] definitions
           
private  java.lang.Object initializationLock
           
private  boolean initialized
           
private static org.apache.commons.logging.Log LOG
           
private  java.util.Map mLocks
          Map of read/writer lock objects; one per unique person.
private  java.util.Properties properties
           
static java.lang.String RCS_ID
           
private static SmartCache ssdCache
           
private static int STRUCT
           
private  java.lang.String systemDefaultUser
           
private  boolean systemDefaultUserLoaded
           
(package private) static java.lang.String TEMPLATE_USER_NAME
           
private static int THEME
           
private static SmartCache tsdCache
           
 
Fields inherited from class org.jasig.portal.layout.simple.RDBMUserLayoutStore
channelPrefix, crs, csdb, DEBUG, folderPrefix, localeAware, log
 
Constructor Summary
RDBMDistributedLayoutStore()
           
 
Method Summary
 StructureStylesheetUserPreferences _getStructureStylesheetUserPreferences(IPerson person, int profileId, int stylesheetId)
           
private  org.w3c.dom.Document _getUserLayout(IPerson person, UserProfile profile)
          Returns the layout for a user.
private  org.w3c.dom.Document _safeGetUserLayout(IPerson person, UserProfile profile)
          Handles locking and identifying proper root and namespaces that used to take place in super class.
private  void acquireReadLock(IPerson person)
           
(package private)  void activationFinished()
          Called by fragment activation after loading of all fragment layouts is complete to allow other threads requesting layouts via getUserLayout to continue.
 java.lang.Integer addStructureStylesheetDescription(StructureStylesheetDescription ssd)
          Registers a NEW structure stylesheet with the database.
 java.lang.Integer addThemeStylesheetDescription(ThemeStylesheetDescription tsd)
          Registers a NEW theme stylesheet with the database.
private  org.w3c.dom.Document getCompositeLayout(IPerson person, UserProfile profile)
          This method passed through the set of ordered fragments asking each one if it is applicable to this user.
(package private)  FragmentDefinition[] getDefinitions()
          Gets the configured dlm fragment definitions.
(package private)  DistributedUserPreferences getDistributedSSUP(IPerson person, int profileId, int stylesheetId)
           
(package private)  DistributedUserPreferences getDistributedTSUP(IPerson person, int profileId, int stylesheetId)
           
(package private)  org.w3c.dom.Document getFragmentLayout(IPerson person, UserProfile profile)
          Convenience method for fragment activator to obtain raw layouts for fragments during initialization.
 double getFragmentPrecedence(int index)
          Returns a double value indicating the precedence value declared for a fragment in the dlm.xml.
 java.lang.String getNextStructDirectiveId(IPerson person)
          Generates a new struct id for directive elements that dlm places in the PLF version of the layout tree.
private  FragmentDefinition getOwnedFragment(IPerson person)
          Returns the fragment owned by this user if any.
private  java.lang.String getPlfId(org.w3c.dom.Document PLF, java.lang.String incdId)
          When user preferences are stored in the database for changes made to an incorporated node the node id can not be used because it does not represent a row in the up_layout_struct table for the user.
 java.lang.String getProperty(java.lang.String name)
          Returns the specified property loaded from dlm.xml or null if not found.
 int getPropertyCount()
          Returns the number of properties loaded from the dlm.xml file.
 java.util.Enumeration getPropertyNames()
          Returns an enumerator of the property names loaded from dlm.xml.
private  EDU.oswego.cs.dl.util.concurrent.ReadWriteLock getReadWriteLock(IPerson person)
           
protected  org.w3c.dom.Element getStructure(org.w3c.dom.Document document, LayoutStructure ls)
           
 StructureStylesheetDescription getStructureStylesheetDescription(int stylesheetId)
          Obtain structure stylesheet description object for a given structure stylesheet id.
 StructureStylesheetUserPreferences getStructureStylesheetUserPreferences(IPerson person, int profileId, int stylesheetId)
          Obtain structure stylesheet user preferences
 ThemeStylesheetDescription getThemeStylesheetDescription(int stylesheetId)
          Obtain theme stylesheet description object for a given theme stylesheet id.
 ThemeStylesheetUserPreferences getThemeStylesheetUserPreferences(IPerson person, int profileId, int stylesheetId)
          Obtain theme stylesheet user preferences
 org.w3c.dom.Document getUserLayout(IPerson person, UserProfile profile)
          Returns the layout for a user decorated with any specified decorator.
private  void initializeFragmentCleaner()
          Starts a Thread that is responsible for cleaning out the layout fragments periodically.
private  boolean isLayoutOwnerDefault(IPerson person)
          Returns true is the user is the owner of a layout which is copied as the default for any fragment when first created.
private  void loadIncorporatedPreferences(IPerson person, int which, DistributedUserPreferences userPrefs, DistributedUserPreferences incdPrefs)
           
private  void releaseReadLock(IPerson person)
           
 void removeStructureStylesheetDescription(int stylesheetId)
          Removes a structure stylesheet description object for a given structure stylesheet id.
 void removeThemeStylesheetDescription(int stylesheetId)
          Removes a theme stylesheet description object for a given theme stylesheet id.
protected  int saveStructure(org.w3c.dom.Node node, java.sql.PreparedStatement structStmt, java.sql.PreparedStatement parmStmt)
           
(package private)  void setDefinitions(FragmentDefinition[] frags)
          Sets the dlm fragment definitions.
(package private)  void setProperties(java.util.Properties props)
          Sets the dlm propertys.
 void setStructureStylesheetUserPreferences(IPerson person, int profileId, StructureStylesheetUserPreferences ssup)
          Save structure stylesheet user pferences
 void setThemeStylesheetUserPreferences(IPerson person, int profileId, ThemeStylesheetUserPreferences tsup)
          Save theme stylesheet user preferences
 void setUserLayout(IPerson person, UserProfile profile, org.w3c.dom.Document layoutXML, boolean channelsAdded)
          This method overrides the same method in the super class to persist only layout information stored in the user's person layout fragment or PLF.
(package private)  void setUserLayout(IPerson person, UserProfile profile, org.w3c.dom.Document layoutXML, boolean channelsAdded, boolean updateFragmentCache)
          This method overrides the same method in the super class to persist only layout information stored in the user's person layout fragment or PLF.
private  java.lang.String showChannelAttribs(ThemeStylesheetUserPreferences tsup)
           
private  java.lang.String showFolderAttribs(StructureStylesheetUserPreferences ssup)
           
private  void updateCachedLayout(org.w3c.dom.Document layout, UserProfile profile, FragmentDefinition fragment)
          Replaces the layout Document stored on a fragment definition with a new version.
private  void updateFragmentSSUP(IPerson person, DistributedUserPreferences ssup)
          If the passed in user represents a layout owner then replace the cached structure stylesheet user preferences with the passed in one after modifying it for incorporation.
 void updateStructureStylesheetDescription(StructureStylesheetDescription ssd)
          Updates an existing structure stylesheet description with a new one.
 void updateThemeStylesheetDescription(ThemeStylesheetDescription tsd)
          Updates an existing structure stylesheet description with a new one.
 
Methods inherited from class org.jasig.portal.layout.simple.RDBMUserLayoutStore
addStructureStylesheetDescription, addSystemProfile, addThemeStylesheetDescription, addUserProfile, channelApproved, createLayout, deleteSystemProfile, deleteUserProfile, dumpDoc, generateNewChannelSubscribeId, generateNewFolderId, getLayoutID, getMimeTypeList, getNextStructId, getStructId, getStructureStylesheetId, getStructureStylesheetList, getStructureStylesheetList, getSystemProfile, getSystemProfileById, getSystemProfileList, getThemeStylesheetId, getThemeStylesheetList, getThemeStylesheetList, getUserPreferences, getUserPreferences, getUserProfile, getUserProfileById, getUserProfileList, putUserPreferences, setSystemBrowserMapping, setUserBrowserMapping, updateStructureStylesheetDescription, updateSystemProfile, updateThemeStylesheetDescription, updateUserProfile, xmlBool
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RCS_ID

public static final java.lang.String RCS_ID
See Also:
Constant Field Values

LOG

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

systemDefaultUser

private java.lang.String systemDefaultUser

systemDefaultUserLoaded

private boolean systemDefaultUserLoaded

properties

private java.util.Properties properties

definitions

private FragmentDefinition[] definitions

decorator

private LayoutDecorator decorator

activator

private FragmentActivator activator

initializationLock

private java.lang.Object initializationLock

initialized

private boolean initialized

TEMPLATE_USER_NAME

static final java.lang.String TEMPLATE_USER_NAME
See Also:
Constant Field Values

DECORATOR_PROPERTY

static final java.lang.String DECORATOR_PROPERTY
See Also:
Constant Field Values

THEME

private static final int THEME
See Also:
Constant Field Values

STRUCT

private static final int STRUCT
See Also:
Constant Field Values

tsdCache

private static SmartCache tsdCache

ssdCache

private static SmartCache ssdCache

mLocks

private java.util.Map mLocks
Map of read/writer lock objects; one per unique person.

Constructor Detail

RDBMDistributedLayoutStore

public RDBMDistributedLayoutStore()
                           throws java.lang.Exception
Throws:
java.lang.Exception
Method Detail

getReadWriteLock

private final EDU.oswego.cs.dl.util.concurrent.ReadWriteLock getReadWriteLock(IPerson person)

acquireReadLock

private void acquireReadLock(IPerson person)
                      throws java.lang.InterruptedException
Throws:
java.lang.InterruptedException

releaseReadLock

private void releaseReadLock(IPerson person)

addStructureStylesheetDescription

public java.lang.Integer addStructureStylesheetDescription(StructureStylesheetDescription ssd)
                                                    throws java.lang.Exception
Registers a NEW structure stylesheet with the database. This overloads the version in the parent to add caching of stylesheets.

Overrides:
addStructureStylesheetDescription in class RDBMUserLayoutStore
Parameters:
tsd - Stylesheet description object
Returns:
an Integer id for the registered Stylesheet description object
Throws:
java.lang.Exception

addThemeStylesheetDescription

public java.lang.Integer addThemeStylesheetDescription(ThemeStylesheetDescription tsd)
                                                throws java.lang.Exception
Registers a NEW theme stylesheet with the database. This overloads the version in the parent to add caching of stylesheets.

Overrides:
addThemeStylesheetDescription in class RDBMUserLayoutStore
Parameters:
tsd - Stylesheet description object
Returns:
an Integer id of the registered Theme Stylesheet if successful; null otherwise.
Throws:
java.lang.Exception

getStructureStylesheetDescription

public StructureStylesheetDescription getStructureStylesheetDescription(int stylesheetId)
                                                                 throws java.lang.Exception
Obtain structure stylesheet description object for a given structure stylesheet id. Overloads parent version to add caching of stylesheets.

Specified by:
getStructureStylesheetDescription in interface IUserLayoutStore
Overrides:
getStructureStylesheetDescription in class RDBMUserLayoutStore
Parameters:
stylesheetId - the id of the structure stylesheet
Returns:
structure stylesheet description
Throws:
java.lang.Exception

getThemeStylesheetDescription

public ThemeStylesheetDescription getThemeStylesheetDescription(int stylesheetId)
                                                         throws java.lang.Exception
Obtain theme stylesheet description object for a given theme stylesheet id. Overloads a parent version to add caching.

Specified by:
getThemeStylesheetDescription in interface IUserLayoutStore
Overrides:
getThemeStylesheetDescription in class RDBMUserLayoutStore
Parameters:
stylesheetId - the id of the theme stylesheet
Returns:
theme stylesheet description
Throws:
java.lang.Exception

removeStructureStylesheetDescription

public void removeStructureStylesheetDescription(int stylesheetId)
                                          throws java.lang.Exception
Removes a structure stylesheet description object for a given structure stylesheet id. Overloads a parent version for cache handling.

Specified by:
removeStructureStylesheetDescription in interface IUserLayoutStore
Overrides:
removeStructureStylesheetDescription in class RDBMUserLayoutStore
Parameters:
stylesheetId - id of the stylesheet
Throws:
java.lang.Exception

removeThemeStylesheetDescription

public void removeThemeStylesheetDescription(int stylesheetId)
                                      throws java.lang.Exception
Removes a theme stylesheet description object for a given theme stylesheet id. Overloads a parent version for cache handling.

Specified by:
removeThemeStylesheetDescription in interface IUserLayoutStore
Overrides:
removeThemeStylesheetDescription in class RDBMUserLayoutStore
Parameters:
stylesheetId - id of the stylesheet
Throws:
java.lang.Exception

updateStructureStylesheetDescription

public void updateStructureStylesheetDescription(StructureStylesheetDescription ssd)
                                          throws java.lang.Exception
Updates an existing structure stylesheet description with a new one. Old stylesheet description is found based on the Id provided in the parameter structure. Overloads version in parent to add cache support.

Overrides:
updateStructureStylesheetDescription in class RDBMUserLayoutStore
Parameters:
ssd - new stylesheet description
Throws:
java.lang.Exception

updateThemeStylesheetDescription

public void updateThemeStylesheetDescription(ThemeStylesheetDescription tsd)
                                      throws java.lang.Exception
Updates an existing structure stylesheet description with a new one. Old stylesheet description is found based on the Id provided in the parameter structure. Overloads version in parent to add cache support.

Overrides:
updateThemeStylesheetDescription in class RDBMUserLayoutStore
Parameters:
ssd - new stylesheet description
Throws:
java.lang.Exception

initializeFragmentCleaner

private void initializeFragmentCleaner()
Starts a Thread that is responsible for cleaning out the layout fragments periodically. This is done so that changes made to the channels within a layout are visible to the users who have that layout incorporated into their own. The interval at which this thread runs is set in the dlm.xml file as 'org.jasig.portal.layout.dlm.RDBMDistributedLayoutStore.fragment_cache_refresh', specified in minutes.


getFragmentPrecedence

public double getFragmentPrecedence(int index)
Returns a double value indicating the precedence value declared for a fragment in the dlm.xml. Precedence is actually based on two elements in a fragment definition: the precedence and the index of the fragment definition in the dlm.xml file. If two fragments are given equal precedence then the index if relied upon to resolve conflicts with UI elements.


getUserLayout

public org.w3c.dom.Document getUserLayout(IPerson person,
                                          UserProfile profile)
                                   throws java.lang.Exception
Returns the layout for a user decorated with any specified decorator. The layout returned is a composite layout for non fragment owners and a regular layout for layout owners. A composite layout is made up of layout pieces from potentially multiple incorporated layouts. If no layouts are defined then the composite layout will be the same as the user's personal layout fragment or PLF, the one holding only those UI elements that they own or incorporated elements that they have been allowed to changed.

Specified by:
getUserLayout in interface IUserLayoutStore
Overrides:
getUserLayout in class RDBMUserLayoutStore
Parameters:
person - an IPerson object specifying the user
profile - a user profile
Returns:
a Document containing user layout (conforms to userLayout.dtd)
Throws:
java.lang.Exception - if an error occurs

_safeGetUserLayout

private org.w3c.dom.Document _safeGetUserLayout(IPerson person,
                                                UserProfile profile)
                                         throws java.lang.Exception
Handles locking and identifying proper root and namespaces that used to take place in super class.

Parameters:
person -
profile -
Returns:
Throws:
java.lang.Exception

_getUserLayout

private org.w3c.dom.Document _getUserLayout(IPerson person,
                                            UserProfile profile)
                                     throws java.lang.Exception
Returns the layout for a user. This method overrides the same method in the superclass to return a composite layout for non fragment owners and a regular layout for layout owners. A composite layout is made up of layout pieces from potentially multiple incorporated layouts. If no layouts are defined then the composite layout will be the same as the user's personal layout fragment or PLF, the one holding only those UI elements that they own or incorporated elements that they have been allowed to changed.

Throws:
java.lang.Exception

getFragmentLayout

org.w3c.dom.Document getFragmentLayout(IPerson person,
                                       UserProfile profile)
                                 throws java.lang.Exception
Convenience method for fragment activator to obtain raw layouts for fragments during initialization.

Throws:
java.lang.Exception

activationFinished

void activationFinished()
Called by fragment activation after loading of all fragment layouts is complete to allow other threads requesting layouts via getUserLayout to continue.


getNextStructDirectiveId

public java.lang.String getNextStructDirectiveId(IPerson person)
                                          throws java.lang.Exception
Generates a new struct id for directive elements that dlm places in the PLF version of the layout tree. These elements are atifacts of the dlm storage model and used during merge but do not appear in the user's composite view.

Throws:
java.lang.Exception

updateCachedLayout

private void updateCachedLayout(org.w3c.dom.Document layout,
                                UserProfile profile,
                                FragmentDefinition fragment)
Replaces the layout Document stored on a fragment definition with a new version. This is called when a fragment owner updates their layout.


isLayoutOwnerDefault

private boolean isLayoutOwnerDefault(IPerson person)
Returns true is the user is the owner of a layout which is copied as the default for any fragment when first created.


getOwnedFragment

private FragmentDefinition getOwnedFragment(IPerson person)
Returns the fragment owned by this user if any. If this user is not a fragment owner then null is returned.


getCompositeLayout

private org.w3c.dom.Document getCompositeLayout(IPerson person,
                                                UserProfile profile)
                                         throws java.lang.Exception
This method passed through the set of ordered fragments asking each one if it is applicable to this user. If so then it is included in a list of applicable layout fragments. These are then combined into an ILF, incorporated layouts fragment, and finally the user's PLF, personal layout fragment, is merged in and the composite layout returned.

Throws:
java.lang.Exception

setUserLayout

public void setUserLayout(IPerson person,
                          UserProfile profile,
                          org.w3c.dom.Document layoutXML,
                          boolean channelsAdded)
                   throws java.lang.Exception
This method overrides the same method in the super class to persist only layout information stored in the user's person layout fragment or PLF. If this person is a layout owner then their changes are pushed into the appropriate layout fragment.

Specified by:
setUserLayout in interface IUserLayoutStore
Overrides:
setUserLayout in class RDBMUserLayoutStore
Parameters:
person - an IPerson object specifying the user
profile - a user profile for which the layout is being stored
layoutXML - a Document containing user layout (conforming to userLayout.dtd)
channelsAdded - a boolean flag specifying if new channels have been added to the current user layout (for performance optimization purposes)
Throws:
java.lang.Exception - if an error occurs

setUserLayout

void setUserLayout(IPerson person,
                   UserProfile profile,
                   org.w3c.dom.Document layoutXML,
                   boolean channelsAdded,
                   boolean updateFragmentCache)
             throws java.lang.Exception
This method overrides the same method in the super class to persist only layout information stored in the user's person layout fragment or PLF. If fragment cache update is requested then it checks to see if this person is a layout owner and if so then their changes are pushed into the appropriate layout fragment.

Throws:
java.lang.Exception

getPropertyCount

public int getPropertyCount()
Returns the number of properties loaded from the dlm.xml file.


getPropertyNames

public java.util.Enumeration getPropertyNames()
Returns an enumerator of the property names loaded from dlm.xml.


getProperty

public java.lang.String getProperty(java.lang.String name)
Returns the specified property loaded from dlm.xml or null if not found.


setProperties

void setProperties(java.util.Properties props)
Sets the dlm propertys. Called by ConfigurationLoaded.


setDefinitions

void setDefinitions(FragmentDefinition[] frags)
Sets the dlm fragment definitions. Called by ConfigurationLoader.


getDefinitions

FragmentDefinition[] getDefinitions()
Gets the configured dlm fragment definitions.


getDistributedSSUP

DistributedUserPreferences getDistributedSSUP(IPerson person,
                                              int profileId,
                                              int stylesheetId)
                                        throws java.lang.Exception
Throws:
java.lang.Exception

getDistributedTSUP

DistributedUserPreferences getDistributedTSUP(IPerson person,
                                              int profileId,
                                              int stylesheetId)
                                        throws java.lang.Exception
Throws:
java.lang.Exception

_getStructureStylesheetUserPreferences

public StructureStylesheetUserPreferences _getStructureStylesheetUserPreferences(IPerson person,
                                                                                 int profileId,
                                                                                 int stylesheetId)
                                                                          throws java.lang.Exception
Throws:
java.lang.Exception

getStructureStylesheetUserPreferences

public StructureStylesheetUserPreferences getStructureStylesheetUserPreferences(IPerson person,
                                                                                int profileId,
                                                                                int stylesheetId)
                                                                         throws java.lang.Exception
Description copied from interface: IUserLayoutStore
Obtain structure stylesheet user preferences

Specified by:
getStructureStylesheetUserPreferences in interface IUserLayoutStore
Overrides:
getStructureStylesheetUserPreferences in class RDBMUserLayoutStore
Parameters:
person - User
profileId - profile id
stylesheetId - structure stylesheet id
Returns:
structure stylesheet user preferences. null is returned only if userId, profileId or stylesheet with an appropriate name do not exist. If all of the parameters are valid, but the user does not have any user preference settings associated with this stylesheet, return contains stylesheet preference object filled in with the defaults defined in stylesheet description.
Throws:
java.lang.Exception

getThemeStylesheetUserPreferences

public ThemeStylesheetUserPreferences getThemeStylesheetUserPreferences(IPerson person,
                                                                        int profileId,
                                                                        int stylesheetId)
                                                                 throws java.lang.Exception
Description copied from interface: IUserLayoutStore
Obtain theme stylesheet user preferences

Specified by:
getThemeStylesheetUserPreferences in interface IUserLayoutStore
Overrides:
getThemeStylesheetUserPreferences in class RDBMUserLayoutStore
Parameters:
person - User
profileId - profile id
stylesheetId - theme stylesheet id
Returns:
theme stylesheet user preferences. null is returned only if userId, profileId or stylesheet with an appropriate name do not exist. If all of the parameters are valid, but the user does not have any user preference settings associated with this stylesheet, return contains stylesheet preference object filled in with the defaults defined in stylesheet description.
Throws:
java.lang.Exception

loadIncorporatedPreferences

private void loadIncorporatedPreferences(IPerson person,
                                         int which,
                                         DistributedUserPreferences userPrefs,
                                         DistributedUserPreferences incdPrefs)

showFolderAttribs

private java.lang.String showFolderAttribs(StructureStylesheetUserPreferences ssup)

showChannelAttribs

private java.lang.String showChannelAttribs(ThemeStylesheetUserPreferences tsup)

updateFragmentSSUP

private void updateFragmentSSUP(IPerson person,
                                DistributedUserPreferences ssup)
If the passed in user represents a layout owner then replace the cached structure stylesheet user preferences with the passed in one after modifying it for incorporation.


getPlfId

private java.lang.String getPlfId(org.w3c.dom.Document PLF,
                                  java.lang.String incdId)
When user preferences are stored in the database for changes made to an incorporated node the node id can not be used because it does not represent a row in the up_layout_struct table for the user. The plfid must be used. Null will never be returned unless the layout or processing has really been screwed up. This is because changes made to the user prefs calls UserPrefsHandler which generates a shadow node in the db and sets the plfid of that node into the corresponding node in the PLF prior to the call to update the user prefs in the db.


getStructure

protected org.w3c.dom.Element getStructure(org.w3c.dom.Document document,
                                           LayoutStructure ls)
                                    throws java.lang.Exception
Overrides:
getStructure in class RDBMUserLayoutStore
Throws:
java.lang.Exception

saveStructure

protected int saveStructure(org.w3c.dom.Node node,
                            java.sql.PreparedStatement structStmt,
                            java.sql.PreparedStatement parmStmt)
                     throws java.sql.SQLException
Overrides:
saveStructure in class RDBMUserLayoutStore
Throws:
java.sql.SQLException

setStructureStylesheetUserPreferences

public void setStructureStylesheetUserPreferences(IPerson person,
                                                  int profileId,
                                                  StructureStylesheetUserPreferences ssup)
                                           throws java.lang.Exception
Description copied from interface: IUserLayoutStore
Save structure stylesheet user pferences

Specified by:
setStructureStylesheetUserPreferences in interface IUserLayoutStore
Overrides:
setStructureStylesheetUserPreferences in class RDBMUserLayoutStore
Parameters:
person - User
profileId - profile id
ssup - structure stylesheet user preferences
Throws:
java.lang.Exception

setThemeStylesheetUserPreferences

public void setThemeStylesheetUserPreferences(IPerson person,
                                              int profileId,
                                              ThemeStylesheetUserPreferences tsup)
                                       throws java.lang.Exception
Description copied from interface: IUserLayoutStore
Save theme stylesheet user preferences

Specified by:
setThemeStylesheetUserPreferences in interface IUserLayoutStore
Overrides:
setThemeStylesheetUserPreferences in class RDBMUserLayoutStore
Parameters:
person - User
profileId - profile id
tsup - structure stylesheet user preferneces
Throws:
java.lang.Exception