Package org.cyclos.impl.sql.postgresql
Class PostgresqlQueryHandlerImpl
- java.lang.Object
-
- org.cyclos.impl.sql.BaseNativeQueryHandlerImpl
-
- org.cyclos.impl.sql.postgresql.PostgresqlQueryHandlerImpl
-
- All Implemented Interfaces:
CustomBean,NativeQueryHandler
public class PostgresqlQueryHandlerImpl extends BaseNativeQueryHandlerImpl
Postgresql implementation for native queries
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classPostgresqlQueryHandlerImpl.CustomTemplatesCustom templates for Querydsl queriesprotected static classPostgresqlQueryHandlerImpl.NativeAccountStatusWithAccount-
Nested classes/interfaces inherited from class org.cyclos.impl.sql.BaseNativeQueryHandlerImpl
BaseNativeQueryHandlerImpl.DatabaseInfoImpl
-
Nested classes/interfaces inherited from interface org.cyclos.impl.sql.NativeQueryHandler
NativeQueryHandler.DatabaseInfo
-
-
Field Summary
-
Fields inherited from class org.cyclos.impl.sql.BaseNativeQueryHandlerImpl
applicationContext, jdbcTemplate, rawDataSourceProvider, rawEntityManagerHandler
-
-
Constructor Summary
Constructors Constructor Description PostgresqlQueryHandlerImpl()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description longcloseAccountBalances()Closes the account balances, returning the number of balances closedlongcopyLargeObject(long sourceOid)Makes a copy of the large object with the specified oid and returns the oid of the copy.List<Pair<String,Long>>countUsersByUrl()Groups all non removed nor purged members and brokers (not admins) by each root URL defined in the configurations.voiddeleteLargeObject(long oid)Deletes the large object with the specified oid.voiddestroy()List<InconsistentBalance>fixInconsistentAccountBalances(List<Long> accountIds)Fixes any wrong account balances, returning the account ids that were wrongstatic com.querydsl.sql.SQLQuery<?>from(Connection connection, com.querydsl.sql.RelationalPathBase<?>... from)List<BalanceEntryVO>getAccountBalanceHistory(Long accountId, List<Date> timepoints)Returns the account balance on each of the given timepoints, plus the current status as the last resultMap<Account,NativeAccountStatus>getAccountStatuses(Collection<Account> accounts, Date date)Returns the native account statuses of the given accounts at a given dateNativeQueryHandler.DatabaseInfogetDatabaseInfo()Returns information about the underlying databasecom.querydsl.jpa.JPQLTemplatesgetJpaQueryTemplates()Returns the templates used for jpa queriesLonggetNextTransactionNumber()Returns the number used to generate the next transaction numberLonggetObjectId(long soredFileId)Returns the oid associated to the specified stored file id.DategetRunningVacuumStart()Returns the date when the vacuum started if there is a running vacuum.SearchHandlergetSearchHandler()Returns a handler to search on the databaseDatabaseVacuumInformationgetVacuumInfo()Returns information about the last vacuum/analyze executionscom.querydsl.sql.dml.SQLInsertClauseinsert(Connection connection, com.querydsl.sql.RelationalPath<?> alias)longinsertArchiveAccountFees()Inserts theBackgroundTaskExecutions for each account fee log older thanCyclosProperties.getArchiveAccountFeesDays()longinsertArchiveBulkActions()Inserts theBackgroundTaskExecutions for each bulk action older thanCyclosProperties.getArchiveBulkActionsDays()longinsertBackgroundTaskExecution(BaseBackgroundTaskScheduling<?> scheduling)Insert or updates a background task execution for the given type and context.longinsertEntityNotificationProcessingBackgroundTasks(NotificationProcessingEntityType<?> type, int batchSize)Inserts n executions ofEntityNotificationProcessingBackgroundTaskfor a given entity type returning the number of affected entities associated to the type.longinsertReindexBackgroundTasks(Class<? extends SimpleEntity> entityClass, String indexName, int batchSize)Inserts n executions ofIndexEntitiesBackgroundTaskfor a given entity, returning the number of inserted tasksvoidinsertTransferInitialStatus(TransferType transferType, TransferStatus status)Inserts the relation for current status and a log for each transfer of the given typelonginsertUserAccountFeeLogs(AccountFeeLog log)Inserts into the users_account_fee_logs table, for each users that should be charged (has a product that enables the given fee)voidinsertUserIncomingMessages(SendMessageDTO sendMessage, MessageOwner messageOwner, User sendingUser, OutgoingMessage outgoing)Inserts incoming messages for users for a given outgoing messagelonginsertUsersForBulkAction(Long bulkActionId, UserQuery params)Inserts a record ofBulkActionUserfor each returned user of the given queryprotected PostgresqlLockHandlerImplinstantiateDbLockHandler()com.mysema.commons.lang.CloseableIterator<Record>iterateRecords(RecordQuery params)Iterates record entities according to the given query parameterscom.mysema.commons.lang.CloseableIterator<Long>iterateUserIds(UserQuery params)Iterates user ids according to the given query parameterscom.mysema.commons.lang.CloseableIterator<UserWithFieldsVO>iterateUsers(UserQuery params)Iterates user entities according to the given query parametersList<Long>nextAccountIdsToClose(int maxCount, Date limit)Returns up to the maximum count of account ids to close balance.InputStreamopenLargeObject(long oid)Opens the large object associated to the specified oid.
NOTE: After read, the input stream must be closed (the large object will be closed in turn).Pair<Set<String>,Set<Long>>purgeRemovedBuiltinLanguages()Removes all languages that were pointing toBuiltinLanguages that no longer exist, returning both the language templates that no longer exist and the ids of languages that were removedstatic com.querydsl.sql.SQLQuery<?>query()static com.querydsl.sql.SQLQuery<?>query(Connection connection)longrebuildClosedAccountBalances()Rebuilds all closed account balances from the beginningvoidsetObjectId(long storedFileId, long oid)Sets the oid to the specified stored file id.booleansupportsBlobsInReadOnlyTransactions()Returns whether the underlying database supports accessing BLOBs from pure read-only transactionsbooleantryLock(LockKey key)Attempt to acquire an exclusive lock with a given key.booleantryLock(JdbcTemplate jdbc, LockKey key)Attempt to acquire an exclusive lock with a given key using the givenJdbcTemplate.com.querydsl.sql.dml.SQLUpdateClauseupdate(Connection connection, com.querydsl.sql.RelationalPath<?> alias)List<AccountStatusUpdateResult>updateAccountStatuses(Collection<AccountStatusUpdateParams> updates)Updates a set of account statuses.Map<UserAccountType,IUserAccount>userAccounts(User user, Collection<UserAccountType> accountTypes, boolean withNumberOnly, Integer limit)Returns either all accounts (when accountType is null / empty) or filtered by type, both physical and pending user accounts, for a specific user.voidvacuum()Performs a vacuum and then an analyze for the database.longwriteLargeObject(InputStream in)Creates a new large object reading the content from the stream and returns its oid.
NOTE: The input stream parameter won't be closed it is responsibility of the client code.-
Methods inherited from class org.cyclos.impl.sql.BaseNativeQueryHandlerImpl
getDbLockHandler, getRawDataSource, getSessionData, initialize, shutdownDbLockHandler
-
-
-
-
Method Detail
-
from
public static com.querydsl.sql.SQLQuery<?> from(Connection connection, com.querydsl.sql.RelationalPathBase<?>... from)
-
query
public static com.querydsl.sql.SQLQuery<?> query()
-
query
public static com.querydsl.sql.SQLQuery<?> query(Connection connection)
-
closeAccountBalances
public long closeAccountBalances()
Description copied from interface:NativeQueryHandlerCloses the account balances, returning the number of balances closed
-
copyLargeObject
public long copyLargeObject(long sourceOid) throws IOExceptionDescription copied from interface:NativeQueryHandlerMakes a copy of the large object with the specified oid and returns the oid of the copy.- Throws:
IOException
-
countUsersByUrl
public List<Pair<String,Long>> countUsersByUrl()
Description copied from interface:NativeQueryHandlerGroups all non removed nor purged members and brokers (not admins) by each root URL defined in the configurations.- Returns:
-
deleteLargeObject
public void deleteLargeObject(long oid)
Description copied from interface:NativeQueryHandlerDeletes the large object with the specified oid.
-
destroy
@PreDestroy public void destroy()
-
fixInconsistentAccountBalances
public List<InconsistentBalance> fixInconsistentAccountBalances(List<Long> accountIds)
Description copied from interface:NativeQueryHandlerFixes any wrong account balances, returning the account ids that were wrong
-
getAccountBalanceHistory
public List<BalanceEntryVO> getAccountBalanceHistory(Long accountId, List<Date> timepoints)
Description copied from interface:NativeQueryHandlerReturns the account balance on each of the given timepoints, plus the current status as the last result
-
getAccountStatuses
public Map<Account,NativeAccountStatus> getAccountStatuses(Collection<Account> accounts, Date date)
Description copied from interface:NativeQueryHandlerReturns the native account statuses of the given accounts at a given date
-
getDatabaseInfo
public NativeQueryHandler.DatabaseInfo getDatabaseInfo()
Description copied from interface:NativeQueryHandlerReturns information about the underlying database
-
getJpaQueryTemplates
public com.querydsl.jpa.JPQLTemplates getJpaQueryTemplates()
Description copied from interface:NativeQueryHandlerReturns the templates used for jpa queries
-
getNextTransactionNumber
public Long getNextTransactionNumber()
Description copied from interface:NativeQueryHandlerReturns the number used to generate the next transaction number
-
getObjectId
public Long getObjectId(long soredFileId)
Description copied from interface:NativeQueryHandlerReturns the oid associated to the specified stored file id. Returns null if the stored file doesn't have any associated content.
-
getRunningVacuumStart
public Date getRunningVacuumStart()
Description copied from interface:NativeQueryHandlerReturns the date when the vacuum started if there is a running vacuum. Otherwise it returns null.
-
getSearchHandler
public SearchHandler getSearchHandler()
Description copied from interface:NativeQueryHandlerReturns a handler to search on the database
-
getVacuumInfo
public DatabaseVacuumInformation getVacuumInfo()
Description copied from interface:NativeQueryHandlerReturns information about the last vacuum/analyze executions
-
insert
public com.querydsl.sql.dml.SQLInsertClause insert(Connection connection, com.querydsl.sql.RelationalPath<?> alias)
-
insertArchiveAccountFees
public long insertArchiveAccountFees()
Description copied from interface:NativeQueryHandlerInserts theBackgroundTaskExecutions for each account fee log older thanCyclosProperties.getArchiveAccountFeesDays()
-
insertArchiveBulkActions
public long insertArchiveBulkActions()
Description copied from interface:NativeQueryHandlerInserts theBackgroundTaskExecutions for each bulk action older thanCyclosProperties.getArchiveBulkActionsDays()
-
insertBackgroundTaskExecution
public long insertBackgroundTaskExecution(BaseBackgroundTaskScheduling<?> scheduling)
Description copied from interface:NativeQueryHandlerInsert or updates a background task execution for the given type and context. Returns the id of the created / updated background task execution.
-
insertEntityNotificationProcessingBackgroundTasks
public long insertEntityNotificationProcessingBackgroundTasks(NotificationProcessingEntityType<?> type, int batchSize)
Description copied from interface:NativeQueryHandlerInserts n executions ofEntityNotificationProcessingBackgroundTaskfor a given entity type returning the number of affected entities associated to the type.
-
insertReindexBackgroundTasks
public long insertReindexBackgroundTasks(Class<? extends SimpleEntity> entityClass, String indexName, int batchSize)
Description copied from interface:NativeQueryHandlerInserts n executions ofIndexEntitiesBackgroundTaskfor a given entity, returning the number of inserted tasks
-
insertTransferInitialStatus
public void insertTransferInitialStatus(TransferType transferType, TransferStatus status)
Description copied from interface:NativeQueryHandlerInserts the relation for current status and a log for each transfer of the given type
-
insertUserAccountFeeLogs
public long insertUserAccountFeeLogs(AccountFeeLog log)
Description copied from interface:NativeQueryHandlerInserts into the users_account_fee_logs table, for each users that should be charged (has a product that enables the given fee)
-
insertUserIncomingMessages
public void insertUserIncomingMessages(SendMessageDTO sendMessage, MessageOwner messageOwner, User sendingUser, OutgoingMessage outgoing)
Description copied from interface:NativeQueryHandlerInserts incoming messages for users for a given outgoing message
-
insertUsersForBulkAction
public long insertUsersForBulkAction(Long bulkActionId, UserQuery params)
Description copied from interface:NativeQueryHandlerInserts a record ofBulkActionUserfor each returned user of the given query
-
iterateRecords
public com.mysema.commons.lang.CloseableIterator<Record> iterateRecords(RecordQuery params)
Description copied from interface:NativeQueryHandlerIterates record entities according to the given query parameters
-
iterateUserIds
public com.mysema.commons.lang.CloseableIterator<Long> iterateUserIds(UserQuery params)
Description copied from interface:NativeQueryHandlerIterates user ids according to the given query parameters
-
iterateUsers
public com.mysema.commons.lang.CloseableIterator<UserWithFieldsVO> iterateUsers(UserQuery params)
Description copied from interface:NativeQueryHandlerIterates user entities according to the given query parameters
-
nextAccountIdsToClose
public List<Long> nextAccountIdsToClose(int maxCount, Date limit)
Description copied from interface:NativeQueryHandlerReturns up to the maximum count of account ids to close balance. Accounts that are returned:- Accounts that have never been closed yet
- Accounts whose last closing was before the given limit and the current account balance's date is newer than the last closing
-
openLargeObject
public InputStream openLargeObject(long oid)
Description copied from interface:NativeQueryHandlerOpens the large object associated to the specified oid.
NOTE: After read, the input stream must be closed (the large object will be closed in turn).
-
purgeRemovedBuiltinLanguages
public Pair<Set<String>,Set<Long>> purgeRemovedBuiltinLanguages()
Description copied from interface:NativeQueryHandlerRemoves all languages that were pointing toBuiltinLanguages that no longer exist, returning both the language templates that no longer exist and the ids of languages that were removed
-
rebuildClosedAccountBalances
public long rebuildClosedAccountBalances()
Description copied from interface:NativeQueryHandlerRebuilds all closed account balances from the beginning
-
setObjectId
public void setObjectId(long storedFileId, long oid)Description copied from interface:NativeQueryHandlerSets the oid to the specified stored file id.
-
supportsBlobsInReadOnlyTransactions
public boolean supportsBlobsInReadOnlyTransactions()
Description copied from interface:NativeQueryHandlerReturns whether the underlying database supports accessing BLOBs from pure read-only transactions
-
tryLock
public boolean tryLock(JdbcTemplate jdbc, LockKey key)
Description copied from interface:NativeQueryHandlerAttempt to acquire an exclusive lock with a given key using the givenJdbcTemplate.
-
tryLock
public boolean tryLock(LockKey key)
Description copied from interface:NativeQueryHandlerAttempt to acquire an exclusive lock with a given key. The lock will be bound to the current transaction, and will be automatically unlocked when the transaction ends.
-
update
public com.querydsl.sql.dml.SQLUpdateClause update(Connection connection, com.querydsl.sql.RelationalPath<?> alias)
-
updateAccountStatuses
public List<AccountStatusUpdateResult> updateAccountStatuses(Collection<AccountStatusUpdateParams> updates)
Description copied from interface:NativeQueryHandlerUpdates a set of account statuses. Must be called only after acquiring the lock on the affected accounts.
-
userAccounts
public Map<UserAccountType,IUserAccount> userAccounts(User user, Collection<UserAccountType> accountTypes, boolean withNumberOnly, Integer limit)
Description copied from interface:NativeQueryHandlerReturns either all accounts (when accountType is null / empty) or filtered by type, both physical and pending user accounts, for a specific user. May also only return accounts with numbers, and optionally limits the number of results. IMPORTANT: the entities contained in the resulting map are not attached to the persisted context, be aware if you need to modify some of them.
-
vacuum
public void vacuum()
Description copied from interface:NativeQueryHandlerPerforms a vacuum and then an analyze for the database.
-
writeLargeObject
public long writeLargeObject(InputStream in) throws IOException
Description copied from interface:NativeQueryHandlerCreates a new large object reading the content from the stream and returns its oid.
NOTE: The input stream parameter won't be closed it is responsibility of the client code.- Throws:
IOException
-
instantiateDbLockHandler
protected PostgresqlLockHandlerImpl instantiateDbLockHandler()
- Specified by:
instantiateDbLockHandlerin classBaseNativeQueryHandlerImpl
-
-