Package com.logicaldoc.core.security

# Interface DeviceDAO

All Superinterfaces:
  `PersistentObjectDAO<Device>`

All Known Implementing Classes:
  `HibernateDeviceDAO`

public interface DeviceDAO extends PersistentObjectDAO<Device>
A DAO to handle the devices

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.
`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
`static DeviceDAO`
`get()`
Gets the object available in the application context
`boolean`
`isTrustedDevice(String username, jakarta.servlet.http.HttpServletRequest request)`
Checks if the current request's device is trusted by the user
`Device`
`trustDevice(User user, Device device)`
Trusts a device for a user

### 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, store`

## Method Details

### get

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

Returns:
  the instance of this object in the application context

### findByDeviceId

Device findByDeviceId(String deviceId)
Gets the device by it's alternate key: `Device.getDeviceId()`

Parameters:
  `deviceId` - identifier of the device
Returns:
  the found device

### findByDevice

Device findByDevice(Device device)
Finds the device that corresponds to the given one

Parameters:
  `device` - the device to take as model
Returns:
  the found device

### findByUserId

List<Device> findByUserId(long userId)
Finds the devices of a specific user

Parameters:
  `userId` - identifier of the user
Returns:
  the list of devices ordered by descending last login date

### findTrustedDevices

List<Device> findTrustedDevices(long userId)
Retrieves all the devices trusted by a given user

Parameters:
  `userId` - the user to consider
Returns:
  the list of devices ordered by descending last login date

### isTrustedDevice

boolean isTrustedDevice(String username, jakarta.servlet.http.HttpServletRequest request) throws PersistenceException
Checks if the current request's device is trusted by the user

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

### trustDevice

Device trustDevice(User user, Device device) throws PersistenceException
Trusts a device for a user

Parameters:
  `user` - the current user
  `device` - the device to trust
Returns:
  the trusted device
Throws:
  `PersistenceException` - an error happened in the database

### cleanOldDevices

void cleanOldDevices(int ttl)
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.

Parameters:
  `ttl` - The maximum number of days over which the device is considered old