Class DataSourceUserDatabase

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.concurrent.ConcurrentHashMap<java.lang.String,​Group> createdGroups  
      protected java.util.concurrent.ConcurrentHashMap<java.lang.String,​Role> createdRoles  
      protected java.util.concurrent.ConcurrentHashMap<java.lang.String,​User> createdUsers  
      protected javax.sql.DataSource dataSource
      DataSource to use.
      protected java.lang.String dataSourceName
      The name of the JNDI JDBC DataSource
      protected java.lang.String groupNameCol
      The column in the user group table that names a group
      protected java.lang.String groupRoleTable
      The table that holds the relation between groups and roles
      protected java.lang.String groupTable
      The table that holds user data.
      protected java.lang.String id
      The unique global identifier of this user database.
      protected java.util.concurrent.ConcurrentHashMap<java.lang.String,​Group> modifiedGroups  
      protected java.util.concurrent.ConcurrentHashMap<java.lang.String,​Role> modifiedRoles  
      protected java.util.concurrent.ConcurrentHashMap<java.lang.String,​User> modifiedUsers  
      protected boolean readonly
      A flag, indicating if the user database is read only.
      protected java.util.concurrent.ConcurrentHashMap<java.lang.String,​Group> removedGroups  
      protected java.util.concurrent.ConcurrentHashMap<java.lang.String,​Role> removedRoles  
      protected java.util.concurrent.ConcurrentHashMap<java.lang.String,​User> removedUsers  
      protected java.lang.String roleAndGroupDescriptionCol
      The column in the role and group tables for the decription
      protected java.lang.String roleNameCol
      The column in the user role table that names a role
      protected java.lang.String roleTable
      The table that holds user data.
      protected java.lang.String userCredCol
      The column in the user table that holds the user's credentials
      protected java.lang.String userFullNameCol
      The column in the user table that holds the user's full name
      protected java.lang.String userGroupTable
      The table that holds the relation between users and groups
      protected java.lang.String userNameCol
      The column in the user table that holds the user's name
      protected java.lang.String userRoleTable
      The table that holds the relation between users and roles
      protected java.lang.String userTable
      The table that holds user data.
    • Constructor Summary

      Constructors 
      Constructor Description
      DataSourceUserDatabase​(javax.sql.DataSource dataSource, java.lang.String id)  
    • Field Detail

      • dataSource

        protected final javax.sql.DataSource dataSource
        DataSource to use.
      • id

        protected final java.lang.String id
        The unique global identifier of this user database.
      • createdUsers

        protected final java.util.concurrent.ConcurrentHashMap<java.lang.String,​User> createdUsers
      • modifiedUsers

        protected final java.util.concurrent.ConcurrentHashMap<java.lang.String,​User> modifiedUsers
      • removedUsers

        protected final java.util.concurrent.ConcurrentHashMap<java.lang.String,​User> removedUsers
      • createdGroups

        protected final java.util.concurrent.ConcurrentHashMap<java.lang.String,​Group> createdGroups
      • modifiedGroups

        protected final java.util.concurrent.ConcurrentHashMap<java.lang.String,​Group> modifiedGroups
      • removedGroups

        protected final java.util.concurrent.ConcurrentHashMap<java.lang.String,​Group> removedGroups
      • createdRoles

        protected final java.util.concurrent.ConcurrentHashMap<java.lang.String,​Role> createdRoles
      • modifiedRoles

        protected final java.util.concurrent.ConcurrentHashMap<java.lang.String,​Role> modifiedRoles
      • removedRoles

        protected final java.util.concurrent.ConcurrentHashMap<java.lang.String,​Role> removedRoles
      • dataSourceName

        protected java.lang.String dataSourceName
        The name of the JNDI JDBC DataSource
      • roleNameCol

        protected java.lang.String roleNameCol
        The column in the user role table that names a role
      • roleAndGroupDescriptionCol

        protected java.lang.String roleAndGroupDescriptionCol
        The column in the role and group tables for the decription
      • groupNameCol

        protected java.lang.String groupNameCol
        The column in the user group table that names a group
      • userCredCol

        protected java.lang.String userCredCol
        The column in the user table that holds the user's credentials
      • userFullNameCol

        protected java.lang.String userFullNameCol
        The column in the user table that holds the user's full name
      • userNameCol

        protected java.lang.String userNameCol
        The column in the user table that holds the user's name
      • userRoleTable

        protected java.lang.String userRoleTable
        The table that holds the relation between users and roles
      • userGroupTable

        protected java.lang.String userGroupTable
        The table that holds the relation between users and groups
      • groupRoleTable

        protected java.lang.String groupRoleTable
        The table that holds the relation between groups and roles
      • userTable

        protected java.lang.String userTable
        The table that holds user data.
      • groupTable

        protected java.lang.String groupTable
        The table that holds user data.
      • roleTable

        protected java.lang.String roleTable
        The table that holds user data.
      • readonly

        protected boolean readonly
        A flag, indicating if the user database is read only.
    • Constructor Detail

      • DataSourceUserDatabase

        public DataSourceUserDatabase​(javax.sql.DataSource dataSource,
                                      java.lang.String id)
    • Method Detail

      • getDataSourceName

        public java.lang.String getDataSourceName()
        Returns:
        the name of the JNDI JDBC DataSource.
      • setDataSourceName

        public void setDataSourceName​(java.lang.String dataSourceName)
        Set the name of the JNDI JDBC DataSource.
        Parameters:
        dataSourceName - the name of the JNDI JDBC DataSource
      • getRoleNameCol

        public java.lang.String getRoleNameCol()
        Returns:
        the column in the user role table that names a role.
      • setRoleNameCol

        public void setRoleNameCol​(java.lang.String roleNameCol)
        Set the column in the user role table that names a role.
        Parameters:
        roleNameCol - The column name
      • getUserCredCol

        public java.lang.String getUserCredCol()
        Returns:
        the column in the user table that holds the user's credentials.
      • setUserCredCol

        public void setUserCredCol​(java.lang.String userCredCol)
        Set the column in the user table that holds the user's credentials.
        Parameters:
        userCredCol - The column name
      • getUserNameCol

        public java.lang.String getUserNameCol()
        Returns:
        the column in the user table that holds the user's name.
      • setUserNameCol

        public void setUserNameCol​(java.lang.String userNameCol)
        Set the column in the user table that holds the user's name.
        Parameters:
        userNameCol - The column name
      • getUserRoleTable

        public java.lang.String getUserRoleTable()
        Returns:
        the table that holds the relation between user's and roles.
      • setUserRoleTable

        public void setUserRoleTable​(java.lang.String userRoleTable)
        Set the table that holds the relation between user's and roles.
        Parameters:
        userRoleTable - The table name
      • getUserTable

        public java.lang.String getUserTable()
        Returns:
        the table that holds user data..
      • setUserTable

        public void setUserTable​(java.lang.String userTable)
        Set the table that holds user data.
        Parameters:
        userTable - The table name
      • getRoleAndGroupDescriptionCol

        public java.lang.String getRoleAndGroupDescriptionCol()
        Returns:
        the roleAndGroupDescriptionCol
      • setRoleAndGroupDescriptionCol

        public void setRoleAndGroupDescriptionCol​(java.lang.String roleAndGroupDescriptionCol)
        Parameters:
        roleAndGroupDescriptionCol - the roleAndGroupDescriptionCol to set
      • getGroupNameCol

        public java.lang.String getGroupNameCol()
        Returns:
        the groupNameCol
      • setGroupNameCol

        public void setGroupNameCol​(java.lang.String groupNameCol)
        Parameters:
        groupNameCol - the groupNameCol to set
      • getUserFullNameCol

        public java.lang.String getUserFullNameCol()
        Returns:
        the userFullNameCol
      • setUserFullNameCol

        public void setUserFullNameCol​(java.lang.String userFullNameCol)
        Parameters:
        userFullNameCol - the userFullNameCol to set
      • getUserGroupTable

        public java.lang.String getUserGroupTable()
        Returns:
        the userGroupTable
      • setUserGroupTable

        public void setUserGroupTable​(java.lang.String userGroupTable)
        Parameters:
        userGroupTable - the userGroupTable to set
      • getGroupRoleTable

        public java.lang.String getGroupRoleTable()
        Returns:
        the groupRoleTable
      • setGroupRoleTable

        public void setGroupRoleTable​(java.lang.String groupRoleTable)
        Parameters:
        groupRoleTable - the groupRoleTable to set
      • getGroupTable

        public java.lang.String getGroupTable()
        Returns:
        the groupTable
      • setGroupTable

        public void setGroupTable​(java.lang.String groupTable)
        Parameters:
        groupTable - the groupTable to set
      • getRoleTable

        public java.lang.String getRoleTable()
        Returns:
        the roleTable
      • setRoleTable

        public void setRoleTable​(java.lang.String roleTable)
        Parameters:
        roleTable - the roleTable to set
      • getReadonly

        public boolean getReadonly()
        Returns:
        the readonly
      • setReadonly

        public void setReadonly​(boolean readonly)
        Parameters:
        readonly - the readonly to set
      • getId

        public java.lang.String getId()
        Returns:
        the unique global identifier of this user database.
      • getGroups

        public java.util.Iterator<Group> getGroups()
        Returns:
        the set of Groups defined in this user database.
      • getRoles

        public java.util.Iterator<Role> getRoles()
        Returns:
        the set of Roles defined in this user database.
      • getUsers

        public java.util.Iterator<User> getUsers()
        Returns:
        the set of Users defined in this user database.
      • close

        public void close()
                   throws java.lang.Exception
        Description copied from interface: UserDatabase
        Finalize access to this user database.
        Throws:
        java.lang.Exception - if any exception is thrown during closing
      • createGroup

        public Group createGroup​(java.lang.String groupname,
                                 java.lang.String description)
        Description copied from interface: UserDatabase
        Create and return a new Group defined in this user database.
        Parameters:
        groupname - The group name of the new group (must be unique)
        description - The description of this group
        Returns:
        The new group
      • createRole

        public Role createRole​(java.lang.String rolename,
                               java.lang.String description)
        Description copied from interface: UserDatabase
        Create and return a new Role defined in this user database.
        Parameters:
        rolename - The role name of the new role (must be unique)
        description - The description of this role
        Returns:
        The new role
      • createUser

        public User createUser​(java.lang.String username,
                               java.lang.String password,
                               java.lang.String fullName)
        Description copied from interface: UserDatabase
        Create and return a new User defined in this user database.
        Parameters:
        username - The logon username of the new user (must be unique)
        password - The logon password of the new user
        fullName - The full name of the new user
        Returns:
        The new user
      • findGroup

        public Group findGroup​(java.lang.String groupname)
        Parameters:
        groupname - Name of the group to return
        Returns:
        the Group with the specified group name, if any; otherwise return null.
      • findGroupInternal

        public Group findGroupInternal​(java.sql.Connection dbConnection,
                                       java.lang.String groupName)
      • findRole

        public Role findRole​(java.lang.String rolename)
        Parameters:
        rolename - Name of the role to return
        Returns:
        the Role with the specified role name, if any; otherwise return null.
      • findRoleInternal

        public Role findRoleInternal​(java.sql.Connection dbConnection,
                                     java.lang.String roleName)
      • findUser

        public User findUser​(java.lang.String username)
        Parameters:
        username - Name of the user to return
        Returns:
        the User with the specified user name, if any; otherwise return null.
      • findUserInternal

        public User findUserInternal​(java.sql.Connection dbConnection,
                                     java.lang.String userName)
      • modifiedGroup

        public void modifiedGroup​(Group group)
        Description copied from interface: UserDatabase
        Signal the specified Group from this user database has been modified.
        Parameters:
        group - The group that has been modified
      • modifiedRole

        public void modifiedRole​(Role role)
        Description copied from interface: UserDatabase
        Signal the specified Role from this user database has been modified.
        Parameters:
        role - The role that has been modified
      • modifiedUser

        public void modifiedUser​(User user)
        Description copied from interface: UserDatabase
        Signal the specified User from this user database has been modified.
        Parameters:
        user - The user that has been modified
      • open

        public void open()
                  throws java.lang.Exception
        Description copied from interface: UserDatabase
        Initialize access to this user database.
        Throws:
        java.lang.Exception - if any exception is thrown during opening
      • removeGroup

        public void removeGroup​(Group group)
        Description copied from interface: UserDatabase
        Remove the specified Group from this user database.
        Parameters:
        group - The group to be removed
      • removeRole

        public void removeRole​(Role role)
        Description copied from interface: UserDatabase
        Remove the specified Role from this user database.
        Parameters:
        role - The role to be removed
      • removeUser

        public void removeUser​(User user)
        Description copied from interface: UserDatabase
        Remove the specified User from this user database.
        Parameters:
        user - The user to be removed
      • save

        public void save()
                  throws java.lang.Exception
        Description copied from interface: UserDatabase
        Save any updated information to the persistent storage location for this user database.
        Throws:
        java.lang.Exception - if any exception is thrown during saving
      • saveInternal

        protected void saveInternal​(java.sql.Connection dbConnection)
      • isAvailable

        public boolean isAvailable()
        Description copied from interface: UserDatabase
        Is the database available.
        Returns:
        true
      • isGroupStoreDefined

        protected boolean isGroupStoreDefined()
        Only use groups if the tables are fully defined.
        Returns:
        true when groups are used
      • isRoleStoreDefined

        protected boolean isRoleStoreDefined()
        Only use roles if the tables are fully defined.
        Returns:
        true when roles are used
      • openConnection

        protected java.sql.Connection openConnection()
        Open the specified database connection.
        Returns:
        Connection to the database
      • closeConnection

        protected void closeConnection​(java.sql.Connection dbConnection)
        Close the specified database connection.
        Parameters:
        dbConnection - The connection to be closed