Package com.logicaldoc.core.security.user

# Interface UserDAO

All Superinterfaces:
  `PersistentObjectDAO<User>`

All Known Implementing Classes:
  `HibernateUserDAO`

public interface UserDAO extends PersistentObjectDAO<User>
This class is a DAO-service for User-objects.

Version:
  1.0
Author:
  Michael Scholz, Marco Meschieri

## Field Summary

### Fields inherited from interface com.logicaldoc.core.PersistentObjectDAO

`ENTITY`

## Method Summary

Modifier and Type
Method
Description
`void`
`checkPasswordCompliance(User user)`
Checks if the user's password complies the current quality criteria
`long`
`countGuests(Long tenantId)`
Counts the total number of guest users
`long`
`countRegulars(Long tenantId)`
Counts the total number of regular users
`void`
`delete(long userId, UserHistory transaction)`
This method deletes the user object and insert a new user history entry.
`User`
`findAdminUser(String tenantName)`
Retrieve the administrator for the given tenant.
`Set<User>`
`findByGroup(long groupId)`
Retrieves the users belonging to a given group.
`List<User>`
`findByLikeUsername(String username)`
This method finds an User by username.
`List<User>`
`findByName(String name)`
This method finds an User by name.
`User`
`findByUsername(String username)`
This method finds an User by its username.
`List<User>`
`findByUsernameAndName(String username, String name)`
This method finds an User by username and name.
`User`
`findByUsernameIgnoreCase(String username)`
This method finds an User by its username.
`Map<String,Generic>`
`findUserSettings(long userId, String namePrefix)`
Retrieves the settings for a user.
`static UserDAO`
`get()`
Gets the object available in the application context
`User`
`getUser(String username)`
Depending on the global setting, it invokes findByUsername or findByUsernameIgnoreCase
`boolean`
`isInactive(String username)`
Checks if a user is inactive, that is a user without interactions in the last X days after it has last enabled.
`boolean`
`isPasswordExpired(String username)`
Is password expired.
`void`
`store(User user)`
This method persists the entity object
`void`
`store(User user, UserHistory transaction)`
This method persists the user object and insert a new user history entry.

### Methods inherited from interface com.logicaldoc.core.PersistentObjectDAO

`bulkUpdate, count, count, count, delete, delete, deleteAll, deleteAll, evict, evict, findAll, findAll, findAllIds, findAllIds, findById, findById, findByObjectQuery, findByQuery, findByQuery, findByWhere, findByWhere, findIdsByWhere, findIdsByWhere, getDatabaseMetadata, getDbms, initialize, initialize, isMariaDB, isMySQL, isOracle, isPostgreSQL, isSQLServer, jdbcUpdate, jdbcUpdate, query, query, queryForDouble, queryForDouble, queryForInt, queryForInt, queryForList, queryForList, queryForList, queryForLong, queryForLong, queryForObject, queryForObject, queryForResultSet, queryForString, queryForString`

## Method Details

### get

static UserDAO get()
Gets the object available in the application context

Returns:
  the instance of this object in the application context

### countRegulars

long countRegulars(Long tenantId) throws PersistenceException
Counts the total number of regular users

Parameters:
  `tenantId` - identifier of the tenant
Returns:
  total number of regular users
Throws:
  `PersistenceException` - Error in the database

### countGuests

long countGuests(Long tenantId) throws PersistenceException
Counts the total number of guest users

Parameters:
  `tenantId` - identifier of the tenant
Returns:
  total number of guest users
Throws:
  `PersistenceException` - Error in the database

### findByUsername

User findByUsername(String username) throws PersistenceException
This method finds an User by its username. The search is case sensitive.

Parameters:
  `username` - username of wanted User.
Returns:
  Wanted User or null if user doesn't exist.
Throws:
  `PersistenceException` - Error in the data layer

### findByUsernameIgnoreCase

User findByUsernameIgnoreCase(String username) throws PersistenceException
This method finds an User by its username. The search is case insensitive.

Parameters:
  `username` - username of wanted User.
Returns:
  Wanted User or null if user doesn't exist.
Throws:
  `PersistenceException` - Error in the data layer

### getUser

User getUser(String username) throws PersistenceException
Depending on the global setting, it invokes findByUsername or findByUsernameIgnoreCase

Parameters:
  `username` - The username of the user
Returns:
  The found user
Throws:
  `PersistenceException` - Error in the data layer

### findByLikeUsername

List<User> findByLikeUsername(String username) throws PersistenceException
This method finds an User by username.

Parameters:
  `username` - The username of wanted User.
Returns:
  Collection of selected users.
Throws:
  `PersistenceException` - Error in the database

### findByName

List<User> findByName(String name) throws PersistenceException
This method finds an User by name.

Parameters:
  `name` - The name of wanted User.
Returns:
  Collection of selected users.
Throws:
  `PersistenceException` - Error in the database

### findByUsernameAndName

List<User> findByUsernameAndName(String username, String name) throws PersistenceException
This method finds an User by username and name.

Parameters:
  `username` - The username of wanted user
  `name` - The name of wanted user
Returns:
  Collection of selected users
Throws:
  `PersistenceException` - Error in the database

### isPasswordExpired

boolean isPasswordExpired(String username)
Is password expired.

Parameters:
  `username` - Username of the User to be validated.
Returns:
  True if the password is expired

### isInactive

boolean isInactive(String username) throws PersistenceException
Checks if a user is inactive, that is a user without interactions in the last X days after it has last enabled. We look at the `User.getMaxInactivity()` first and then we fallback to the general parameter security.user.maxinactivity

Parameters:
  `username` - identifier of the user
Returns:
  the last interaction time
Throws:
  `PersistenceException` - Error in the database

### delete

void delete(long userId, UserHistory transaction) throws PersistenceException
This method deletes the user object and insert a new user history entry.

Parameters:
  `userId` - The id of the user to delete
  `transaction` - entry to log the event
Throws:
  `PersistenceException` - error at database level

### store

void store(User user, UserHistory transaction) throws PersistenceException
This method persists the user object and insert a new user history entry.

Parameters:
  `user` - the user to store
  `transaction` - entry to log the event
Throws:
  `PersistenceException` - error at database level

### store

void store(User user) throws PersistenceException
Description copied from interface: `PersistentObjectDAO`
This method persists the entity object

Specified by:
  `store` in interface `PersistentObjectDAO<User>`
Parameters:
  `user` - entity to be stored
Throws:
  `PersistenceException` - raised in case of errors in the database

### findUserSettings

Map<String,Generic> findUserSettings(long userId, String namePrefix) throws PersistenceException
Retrieves the settings for a user. The settings are stored as Generics of type usersetting.

Parameters:
  `userId` - Identifier of the user
  `namePrefix` - Name prefix of the property (optional)
Returns:
  The map setting_name-generic
Throws:
  `PersistenceException` - Error in the database

### findAdminUser

User findAdminUser(String tenantName) throws PersistenceException
Retrieve the administrator for the given tenant. The general rule is that the administrator's username is:

1. admin if the tenant is default
2. adminTenantname in all other cases

Parameters:
  `tenantName` - name of the tenant
Returns:
  the user to administrate the tenant
Throws:
  `PersistenceException` - Error in the database

### findByGroup

Set<User> findByGroup(long groupId) throws PersistenceException
Retrieves the users belonging to a given group.

Parameters:
  `groupId` - Identifier of the group
Returns:
  the set of groups
Throws:
  `PersistenceException` - Error in the database

### checkPasswordCompliance

void checkPasswordCompliance(User user) throws PasswordWeakException, PersistenceException
Checks if the user's password complies the current quality criteria

Parameters:
  `user` - The user to check
Throws:
  `PasswordWeakException` - Raised when the password does not comply with the quality criteria
  `PersistenceException` - Error in the database