fix limit
This commit is contained in:
parent
a504cd251c
commit
cbab80fac3
1 changed files with 16 additions and 10 deletions
|
|
@ -35,6 +35,7 @@ public class DownloadService {
|
|||
|
||||
private static final Logger logger = LoggerFactory.getLogger(DownloadService.class);
|
||||
private static final String REQUEST_WITH_ADDITIONAL_ID = "requestWithAdditionalId";
|
||||
private static final int limit = 600000;
|
||||
|
||||
public File download(BaseDownloadRequest selectedRequest, List<String> ids, RequestParameters parameters, Map<String, Boolean> validationResults) throws SQLException {
|
||||
LocalDate startDate = parameters.getStartDate();
|
||||
|
|
@ -72,7 +73,12 @@ public class DownloadService {
|
|||
// );
|
||||
// }
|
||||
|
||||
return writeResultsToCsv(entities, request.getAqlDownloadLimit());
|
||||
int arangoLimit = limit;
|
||||
if (request.getAqlDownloadLimit() != null) {
|
||||
arangoLimit = request.getAqlDownloadLimit();
|
||||
}
|
||||
|
||||
return writeResultsToCsv(entities, arangoLimit);
|
||||
|
||||
} catch (ArangoDBException e) {
|
||||
logger.error("Error connecting to ArangoDB or executing AQL query: {}", e.getMessage(), e);
|
||||
|
|
@ -115,23 +121,23 @@ public class DownloadService {
|
|||
List<File> allFiles = new ArrayList<>();
|
||||
int offset = 0;
|
||||
int pageIndex = 1;
|
||||
int limit = 600000;
|
||||
int postgresLimit = limit;
|
||||
if (request.getRequestArgumentLimit() != null) {
|
||||
limit = request.getRequestArgumentLimit();
|
||||
postgresLimit = request.getRequestArgumentLimit();
|
||||
}
|
||||
List<String[]> results = new ArrayList<>();
|
||||
try (Connection connection = DatabaseConnection.getConnection(
|
||||
request.getSqlConnectionParams())) {
|
||||
Map<String, Object> query = buildSqlQuery(request, ids, startDate, endDate,
|
||||
validationResults, limit, offset
|
||||
validationResults, postgresLimit, offset
|
||||
);
|
||||
if (query.get(REQUEST_WITH_ADDITIONAL_ID) != null) {
|
||||
pageIndex--;
|
||||
SqlDownloadBuildQueryResponse response = (SqlDownloadBuildQueryResponse) query.get(REQUEST_WITH_ADDITIONAL_ID);
|
||||
String url = response.getSql();
|
||||
String paramName = response.getParamName();
|
||||
Collection<List<String>> pages = partitionList(response.getParams(), limit);
|
||||
url = url.replaceAll(";(?=[^;]*$)", " ") + " LIMIT " + limit + " OFFSET "
|
||||
Collection<List<String>> pages = partitionList(response.getParams(), postgresLimit);
|
||||
url = url.replaceAll(";(?=[^;]*$)", " ") + " LIMIT " + postgresLimit + " OFFSET "
|
||||
+ offset + ";";
|
||||
for (List<String> page : pages) {
|
||||
pageIndex++;
|
||||
|
|
@ -151,11 +157,11 @@ public class DownloadService {
|
|||
}
|
||||
File file = writeSingleSqlCsvFile(results, "download-part" + pageIndex + "-", ".csv");
|
||||
allFiles.add(file);
|
||||
if (results.size() - 1 < limit) {
|
||||
if (results.size() - 1 < postgresLimit) {
|
||||
break;
|
||||
}
|
||||
String oldPagination = " OFFSET " + newOffset + ";";
|
||||
newOffset += limit;
|
||||
newOffset += postgresLimit;
|
||||
String newPagination = " OFFSET " + newOffset + ";";
|
||||
newUrl = newUrl.replace(oldPagination, newPagination);
|
||||
pageIndex++;
|
||||
|
|
@ -171,11 +177,11 @@ public class DownloadService {
|
|||
}
|
||||
File file = writeSingleSqlCsvFile(results, "download-part" + pageIndex + "-", ".csv");
|
||||
allFiles.add(file);
|
||||
if (results.size() - 1 < limit) {
|
||||
if (results.size() - 1 < postgresLimit) {
|
||||
break;
|
||||
}
|
||||
String oldPagination = " OFFSET " + offset + ";";
|
||||
offset += limit;
|
||||
offset += postgresLimit;
|
||||
String newPagination = " OFFSET " + offset + ";";
|
||||
requestURL = requestURL.replace(oldPagination, newPagination);
|
||||
pageIndex++;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue