public static SelectListDescriptor<SUserMembership> getUserMembershipsByRole(final long roleId, final int startIndex, final int maxResults) { final Map<String, Object> parameters = Collections.singletonMap("roleId", (Object) roleId); return new SelectListDescriptor<SUserMembership>("getUserMembershipsByRole", parameters, SUserMembership.class, new QueryOptions(startIndex, maxResults)); }
public static QueryOptions getNextPage(final QueryOptions queryOptions) { return new QueryOptions(queryOptions.getFromIndex() + queryOptions.getNumberOfResults(), queryOptions.getNumberOfResults(), queryOptions.getOrderByOptions(), queryOptions.getFilters(), queryOptions.getMultipleFilter()); }
public List<SMappedDocument> getAllDocumentOfTheList(final long processInstanceId, final String name) throws SBonitaReadException { QueryOptions queryOptions = new QueryOptions(0, 100); List<SMappedDocument> mappedDocuments; final List<SMappedDocument> result = new ArrayList<SMappedDocument>(); do { mappedDocuments = documentService.getDocumentList(name, processInstanceId, queryOptions.getFromIndex(), queryOptions.getNumberOfResults()); result.addAll(mappedDocuments); queryOptions = QueryOptions.getNextPage(queryOptions); } while (mappedDocuments.size() == 100); return result; }
@Override public void execute() throws SBonitaException { result = flowNodeInstanceService.searchFlowNodeInstances(entityClass, queryOptions); final QueryOptions countOptions = new QueryOptions(0, 1, Collections.<OrderByOption> emptyList(), queryOptions.getFilters(), queryOptions.getMultipleFilter()); count = flowNodeInstanceService.getNumberOfFlowNodeInstances(entityClass, countOptions); }
@Override public void beforeServicesStart(final PlatformServiceAccessor platformServiceAccessor, final TenantServiceAccessor tenantServiceAccessor) throws RestartException { try { final long tenantId = tenantServiceAccessor.getTenantId(); final TechnicalLoggerService logger = tenantServiceAccessor.getTechnicalLoggerService(); final ArrayList<Long> flownodesToRestart = new ArrayList<>(); flownodesToRestartByTenant.put(tenantId, flownodesToRestart); final FlowNodeInstanceService flowNodeInstanceService = tenantServiceAccessor.getActivityInstanceService(); // using a to low page size (100) causes too many access to the database and causes timeout exception if there are lot of elements. // As we retrieve only the id we can use a greater page size QueryOptions queryOptions = new QueryOptions(0, 50000); List<Long> ids; logInfo(logger, "Restarting flow nodes..."); do { ids = flowNodeInstanceService.getFlowNodeInstanceIdsToRestart(queryOptions); flownodesToRestart.addAll(ids); queryOptions = QueryOptions.getNextPage(queryOptions); } while (ids.size() == queryOptions.getNumberOfResults()); logInfo(logger, "Found " + flownodesToRestart.size() + " flow nodes to restart on tenant " + tenantId); } catch (final SBonitaReadException e) { throw new RestartException("unable to flag elements as to be restarted", e); } }
@Override public void deleteAll() throws SPlatformCommandDeletionException { if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.TRACE)) { logger.log(this.getClass(), TechnicalLogSeverity.TRACE, LogUtil.getLogBeforeMethod(this.getClass(), "deleteAll")); } final QueryOptions queryOptions = new QueryOptions(0, 100, SPlatformCommand.class, "id", OrderByType.ASC); List<SPlatformCommand> sPlatformCommands = null; do { try { sPlatformCommands = getPlatformCommands(queryOptions); } catch (final SPlatformCommandGettingException e) { if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.TRACE)) { logger.log(this.getClass(), TechnicalLogSeverity.TRACE, LogUtil.getLogOnExceptionMethod(this.getClass(), "deleteAll", e)); } throw new SPlatformCommandDeletionException(e); } for (final SPlatformCommand sPlatformCommand : sPlatformCommands) { deletePlatformCommand(sPlatformCommand); } } while (sPlatformCommands.size() == queryOptions.getNumberOfResults()); if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.TRACE)) { logger.log(this.getClass(), TechnicalLogSeverity.TRACE, LogUtil.getLogAfterMethod(this.getClass(), "deleteAll")); } }
@Override public void deleteArchivedDocuments(List<Long> processInstanceIds) throws SBonitaReadException, SRecorderException { List<SAMappedDocument> archivedMappedDocuments = persistenceService.selectList(new SelectListDescriptor<>("getArchiveMappingsOfProcessInstances", Collections.singletonMap("processInstanceIds", processInstanceIds), SAMappedDocument.class, QueryOptions.countQueryOptions())); if (archivedMappedDocuments.isEmpty()) { //no documents to delete return; } List<Long> documentIds = new ArrayList<>(); List<Long> documentMappingIds = new ArrayList<>(); for (SAMappedDocument mappedDocument : archivedMappedDocuments) { documentIds.add(mappedDocument.getDocumentId()); documentMappingIds.add(mappedDocument.getId()); } archiveService.deleteFromQuery("deleteArchiveDocumentsByIds", Collections.singletonMap("ids", documentIds)); archiveService.deleteFromQuery("deleteArchiveMappingsByIds", Collections.singletonMap("ids", documentMappingIds)); }
final QueryOptions queryOptions = selectDescriptor.getQueryOptions(); final boolean enableWordSearch = isWordSearchEnabled(selectDescriptor.getEntityType()); queryBuilder.appendFilters(queryOptions.getFilters(), queryOptions.getMultipleFilter(), enableWordSearch); queryBuilder.appendOrderByClause(selectDescriptor.getQueryOptions().getOrderByOptions(), selectDescriptor.getEntityType());
@Override public List<SHumanTaskInstance> searchAssignedTasksSupervisedBy(final long supervisorId, final QueryOptions queryOptions) throws SBonitaReadException { final Map<String, Object> parameters = Collections.singletonMap("supervisorId", supervisorId); queryOptions.getFilters().add(new FilterOption(SHumanTaskInstance.class, "assigneeId", 0, FilterOperationType.GREATER)); return getPersistenceService().searchEntity(SHumanTaskInstance.class, SUPERVISED_BY, queryOptions, parameters); }
public int getPageSize() { return queryOptions.getNumberOfResults(); }
public int getStartIndex() { return queryOptions.getFromIndex(); }
public List<SMappedDocument> getAllDocumentOfTheList(final long processInstanceId, final String name) throws SBonitaReadException { QueryOptions queryOptions = new QueryOptions(0, 100); List<SMappedDocument> mappedDocuments; final List<SMappedDocument> result = new ArrayList<SMappedDocument>(); do { mappedDocuments = documentService.getDocumentList(name, processInstanceId, queryOptions.getFromIndex(), queryOptions.getNumberOfResults()); result.addAll(mappedDocuments); queryOptions = QueryOptions.getNextPage(queryOptions); } while (mappedDocuments.size() == 100); return result; }
@Override public void beforeServicesStart(final PlatformServiceAccessor platformServiceAccessor, final TenantServiceAccessor tenantServiceAccessor) throws RestartException { try { final long tenantId = tenantServiceAccessor.getTenantId(); final TechnicalLoggerService logger = tenantServiceAccessor.getTechnicalLoggerService(); final ArrayList<Long> flownodesToRestart = new ArrayList<>(); flownodesToRestartByTenant.put(tenantId, flownodesToRestart); final FlowNodeInstanceService flowNodeInstanceService = tenantServiceAccessor.getActivityInstanceService(); // using a to low page size (100) causes too many access to the database and causes timeout exception if there are lot of elements. // As we retrieve only the id we can use a greater page size QueryOptions queryOptions = new QueryOptions(0, 50000); List<Long> ids; logInfo(logger, "Restarting flow nodes..."); do { ids = flowNodeInstanceService.getFlowNodeInstanceIdsToRestart(queryOptions); flownodesToRestart.addAll(ids); queryOptions = QueryOptions.getNextPage(queryOptions); } while (ids.size() == queryOptions.getNumberOfResults()); logInfo(logger, "Found " + flownodesToRestart.size() + " flow nodes to restart on tenant " + tenantId); } catch (final SBonitaReadException e) { throw new RestartException("unable to flag elements as to be restarted", e); } }
@Override public void execute() throws SBonitaException { result = flowNodeInstanceService.searchFlowNodeInstances(entityClass, queryOptions); final QueryOptions countOptions = new QueryOptions(0, 1, Collections.<OrderByOption> emptyList(), queryOptions.getFilters(), queryOptions.getMultipleFilter()); count = flowNodeInstanceService.getNumberOfFlowNodeInstances(entityClass, countOptions); }
@Override public void deleteAll() throws SPlatformCommandDeletionException { if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.TRACE)) { logger.log(this.getClass(), TechnicalLogSeverity.TRACE, LogUtil.getLogBeforeMethod(this.getClass(), "deleteAll")); } final QueryOptions queryOptions = new QueryOptions(0, 100, SPlatformCommand.class, "id", OrderByType.ASC); List<SPlatformCommand> sPlatformCommands = null; do { try { sPlatformCommands = getPlatformCommands(queryOptions); } catch (final SPlatformCommandGettingException e) { if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.TRACE)) { logger.log(this.getClass(), TechnicalLogSeverity.TRACE, LogUtil.getLogOnExceptionMethod(this.getClass(), "deleteAll", e)); } throw new SPlatformCommandDeletionException(e); } for (final SPlatformCommand sPlatformCommand : sPlatformCommands) { deletePlatformCommand(sPlatformCommand); } } while (sPlatformCommands.size() == queryOptions.getNumberOfResults()); if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.TRACE)) { logger.log(this.getClass(), TechnicalLogSeverity.TRACE, LogUtil.getLogAfterMethod(this.getClass(), "deleteAll")); } }
@Override public Set<Long> getSourceObjectIdsOfArchivedFlowNodeInstances(List<Long> sourceProcessInstanceIds) throws SBonitaReadException { return new HashSet<>(getPersistenceService().selectList(new SelectListDescriptor<Long>("getSourceObjectIdsOfArchivedFlowNodeInstances", Collections.<String, Object>singletonMap("sourceProcessInstanceIds", sourceProcessInstanceIds), SAFlowNodeInstance.class, QueryOptions.countQueryOptions()))); }
final QueryOptions queryOptions = selectDescriptor.getQueryOptions(); final boolean enableWordSearch = isWordSearchEnabled(selectDescriptor.getEntityType()); queryBuilder.appendFilters(queryOptions.getFilters(), queryOptions.getMultipleFilter(), enableWordSearch); queryBuilder.appendOrderByClause(selectDescriptor.getQueryOptions().getOrderByOptions(), selectDescriptor.getEntityType());
@Override public long getNumberOfAssignedTasksSupervisedBy(final long supervisorId, final QueryOptions queryOptions) throws SBonitaReadException { final Map<String, Object> parameters = Collections.singletonMap("supervisorId", supervisorId); queryOptions.getFilters().add(new FilterOption(SHumanTaskInstance.class, "assigneeId", 0, FilterOperationType.GREATER)); return getPersistenceService().getNumberOfEntities(SHumanTaskInstance.class, SUPERVISED_BY, queryOptions, parameters); }
public int getPageSize() { return queryOptions.getNumberOfResults(); }
public int getStartIndex() { return queryOptions.getFromIndex(); }