Package com.logicaldoc.core.security

# Class HibernateDeviceDAO

java.lang.Object
com.logicaldoc.core.HibernatePersistentObjectDAO<Device>
com.logicaldoc.core.security.HibernateDeviceDAO

All Implemented Interfaces:
  `PersistentObjectDAO<Device>`, `DeviceDAO`

@Repository("deviceDAO") public class HibernateDeviceDAO extends HibernatePersistentObjectDAO<Device> implements DeviceDAO
An Hibernate based implementation of `DeviceDAO`

Since:
  8.5.3
Author:
  Marco Meschieri - LogicalDOC

## Field Summary

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

`ENTITY`

## Method Summary

Modifier and Type
Method
Description
`void`
`cleanOldDevices(int ttl)`
This method deletes all the devices lastly used before the given days since now.
`void`
`delete(long deviceId, int code)`
This method deletes an entity and you can give a deletion code
`Device`
`findByDevice(Device device)`
Finds the device that corresponds to the given one
`Device`
`findByDeviceId(String deviceId)`
Gets the device by it's alternate key: `Device.getDeviceId()`
`List<Device>`
`findByUserId(long userId)`
Finds the devices of a specific user
`List<Device>`
`findTrustedDevices(long userId)`
Retrieves all the devices trusted by a given user
`boolean`
`isTrustedDevice(String username, jakarta.servlet.http.HttpServletRequest request)`
Checks if the current request's device is trusted by the user
`void`
`setUserDAO(UserDAO userDAO)`
`void`
`store(Device entity)`
This method persists the entity object
`Device`
`trustDevice(User user, Device requestDevice)`
Trusts a device for a user

### Methods inherited from class com.logicaldoc.core.HibernatePersistentObjectDAO

`bulkUpdate, count, deleteAll, evict, evict, findById, findByObjectQuery, findByQuery, findByQuery, findByWhere, findIdsByWhere, getDatabaseMetadata, initialize, jdbcUpdate, jdbcUpdate, query, queryForDouble, queryForDouble, queryForInt, queryForInt, queryForList, queryForList, queryForList, queryForLong, queryForLong, queryForObject, queryForObject, queryForResultSet, queryForString, queryForString, setSessionFactory`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

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

`bulkUpdate, count, count, count, 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

### findByDeviceId

public Device findByDeviceId(String deviceId)
Description copied from interface: `DeviceDAO`
Gets the device by it's alternate key: `Device.getDeviceId()`

Specified by:
  `findByDeviceId` in interface `DeviceDAO`
Parameters:
  `deviceId` - identifier of the device
Returns:
  the found device

### findTrustedDevices

public List<Device> findTrustedDevices(long userId)
Description copied from interface: `DeviceDAO`
Retrieves all the devices trusted by a given user

Specified by:
  `findTrustedDevices` in interface `DeviceDAO`
Parameters:
  `userId` - the user to consider
Returns:
  the list of devices ordered by descending last login date

### findByUserId

public List<Device> findByUserId(long userId)
Description copied from interface: `DeviceDAO`
Finds the devices of a specific user

Specified by:
  `findByUserId` in interface `DeviceDAO`
Parameters:
  `userId` - identifier of the user
Returns:
  the list of devices ordered by descending last login date

### trustDevice

public Device trustDevice(User user, Device requestDevice) throws PersistenceException
Description copied from interface: `DeviceDAO`
Trusts a device for a user

Specified by:
  `trustDevice` in interface `DeviceDAO`
Parameters:
  `user` - the current user
  `requestDevice` - the device to trust
Returns:
  the trusted device
Throws:
  `PersistenceException` - an error happened in the database

### cleanOldDevices

public void cleanOldDevices(int ttl)
Description copied from interface: `DeviceDAO`
This method deletes all the devices lastly used before the given days since now. If `ttl` is 0 or -1, the cancellation is not made.

Specified by:
  `cleanOldDevices` in interface `DeviceDAO`
Parameters:
  `ttl` - The maximum number of days over which the device is considered old

### store

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

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

### isTrustedDevice

public boolean isTrustedDevice(String username, jakarta.servlet.http.HttpServletRequest request) throws PersistenceException
Description copied from interface: `DeviceDAO`
Checks if the current request's device is trusted by the user

Specified by:
  `isTrustedDevice` in interface `DeviceDAO`
Parameters:
  `username` - username of the current user
  `request` - the current request
Returns:
  true only if the request's device is trusted by the user
Throws:
  `PersistenceException` - Error in the data layer

### findByDevice

public Device findByDevice(Device device)
Description copied from interface: `DeviceDAO`
Finds the device that corresponds to the given one

Specified by:
  `findByDevice` in interface `DeviceDAO`
Parameters:
  `device` - the device to take as model
Returns:
  the found device

### delete

public void delete(long deviceId, int code) throws PersistenceException
Description copied from interface: `PersistentObjectDAO`
This method deletes an entity and you can give a deletion code

Specified by:
  `delete` in interface `PersistentObjectDAO<Device>`
Overrides:
  `delete` in class `HibernatePersistentObjectDAO<Device>`
Parameters:
  `deviceId` - ID of the entity which should be deleted
  `code` - Deletion code
Throws:
  `PersistenceException` - raised in case of errors in the database

### setUserDAO

public void setUserDAO(UserDAO userDAO)