Add success messages, modify s3 handler, update csv generator
This commit is contained in:
parent
adf30c5bf8
commit
7ceed04db1
3 changed files with 63 additions and 11 deletions
|
|
@ -35,7 +35,7 @@ public class ApiController {
|
||||||
logger.debug("Starting block process for ids: {}", ids);
|
logger.debug("Starting block process for ids: {}", ids);
|
||||||
apiService.process("block", ids);
|
apiService.process("block", ids);
|
||||||
logger.debug("Finished block process for ids: {}", ids);
|
logger.debug("Finished block process for ids: {}", ids);
|
||||||
return ResponseEntity.ok("");
|
return ResponseEntity.ok("Операция \"Блокировка\" завершена успешно.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/unblock")
|
@PostMapping("/unblock")
|
||||||
|
|
@ -43,7 +43,7 @@ public class ApiController {
|
||||||
logger.debug("Starting unblock process for ids: {}", ids);
|
logger.debug("Starting unblock process for ids: {}", ids);
|
||||||
apiService.process("unblock", ids);
|
apiService.process("unblock", ids);
|
||||||
logger.debug("Finished unblock process for ids: {}", ids);
|
logger.debug("Finished unblock process for ids: {}", ids);
|
||||||
return ResponseEntity.ok("");
|
return ResponseEntity.ok("Операция \"Разблокировка\" завершена успешно.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/removeFromSystem")
|
@PostMapping("/removeFromSystem")
|
||||||
|
|
@ -52,7 +52,7 @@ public class ApiController {
|
||||||
logger.debug("Starting removeFromSystem process for ids: {}", ids);
|
logger.debug("Starting removeFromSystem process for ids: {}", ids);
|
||||||
apiService.process("removeFromSystem", ids);
|
apiService.process("removeFromSystem", ids);
|
||||||
logger.debug("Finished removeFromSystem process for ids: {}", ids);
|
logger.debug("Finished removeFromSystem process for ids: {}", ids);
|
||||||
return ResponseEntity.ok("");
|
return ResponseEntity.ok("Операция \"Удаление данных по гражданину\" завершена успешно.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/removeFromCallList")
|
@PostMapping("/removeFromCallList")
|
||||||
|
|
@ -61,7 +61,7 @@ public class ApiController {
|
||||||
logger.debug("Starting removeFromCallList process for ids: {}", ids);
|
logger.debug("Starting removeFromCallList process for ids: {}", ids);
|
||||||
apiService.process("removeFromCallList", ids);
|
apiService.process("removeFromCallList", ids);
|
||||||
logger.debug("Finished removeFromCallList process for ids: {}", ids);
|
logger.debug("Finished removeFromCallList process for ids: {}", ids);
|
||||||
return ResponseEntity.ok("");
|
return ResponseEntity.ok("Операция \"Удаление из списков на вызов\" завершена успешно.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/downloadCSV")
|
@PostMapping("/downloadCSV")
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,8 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.*;
|
||||||
import java.io.IOException;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.io.PrintWriter;
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
|
@ -41,14 +40,19 @@ public class DownloadService {
|
||||||
|
|
||||||
File csvFile = File.createTempFile("download-", ".csv");
|
File csvFile = File.createTempFile("download-", ".csv");
|
||||||
|
|
||||||
try (PrintWriter writer = new PrintWriter(csvFile)) {
|
try (PrintWriter writer = new PrintWriter(
|
||||||
|
new OutputStreamWriter(new FileOutputStream(csvFile), StandardCharsets.UTF_8))) {
|
||||||
|
String lineSeparator = "\r\n";
|
||||||
|
|
||||||
for (String[] row : results) {
|
for (String[] row : results) {
|
||||||
writer.println(String.join(",", row));
|
writer.print(formatCsvRow(row));
|
||||||
|
writer.print(lineSeparator);
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.error("Failed to write to CSV file", e);
|
logger.error("Failed to write to CSV file", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return csvFile;
|
return csvFile;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -58,6 +62,29 @@ public class DownloadService {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String formatCsvRow(String[] row) {
|
||||||
|
StringBuilder formattedRow = new StringBuilder();
|
||||||
|
|
||||||
|
for (int i = 0; i < row.length; i++) {
|
||||||
|
if (i > 0) {
|
||||||
|
formattedRow.append(",");
|
||||||
|
}
|
||||||
|
|
||||||
|
formattedRow.append("\"");
|
||||||
|
formattedRow.append(escapeCsvField(row[i]));
|
||||||
|
formattedRow.append("\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
return formattedRow.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String escapeCsvField(String field) {
|
||||||
|
if (field == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return field.replace("\"", "\"\"");
|
||||||
|
}
|
||||||
|
|
||||||
private Map<String, Object> buildSqlQuery(DownloadRequest request, List<String> ids, LocalDate startDate, LocalDate endDate) {
|
private Map<String, Object> buildSqlQuery(DownloadRequest request, List<String> ids, LocalDate startDate, LocalDate endDate) {
|
||||||
Map<String, Object> resultMap = new HashMap<>();
|
Map<String, Object> resultMap = new HashMap<>();
|
||||||
String endpointArguments;
|
String endpointArguments;
|
||||||
|
|
@ -105,7 +132,6 @@ public class DownloadService {
|
||||||
}
|
}
|
||||||
catch (SQLException e) {
|
catch (SQLException e) {
|
||||||
logger.error("Failed to execute query for RequestArgument", e);
|
logger.error("Failed to execute query for RequestArgument", e);
|
||||||
throw new RuntimeException("Error executing database query: " + argument.getRequestArgumentURL(), e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,8 @@ public class RequestService {
|
||||||
for (RequestArgument argument : request.getRequestArguments()) {
|
for (RequestArgument argument : request.getRequestArguments()) {
|
||||||
try (Connection connection = DatabaseConnection.getConnection(
|
try (Connection connection = DatabaseConnection.getConnection(
|
||||||
argument.getRequestArgumentConnectionParams())) {
|
argument.getRequestArgumentConnectionParams())) {
|
||||||
Map<String, Object> query = buildSqlQuery(request, ids);
|
|
||||||
|
Map<String, Object> query = buildSqlQueryForS3(request.getRequestURL(), ids);
|
||||||
logger.debug("Starting fetching paths from database for S3 request");
|
logger.debug("Starting fetching paths from database for S3 request");
|
||||||
long startExecTime = System.currentTimeMillis();
|
long startExecTime = System.currentTimeMillis();
|
||||||
|
|
||||||
|
|
@ -161,6 +162,31 @@ public class RequestService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Map<String, Object> buildSqlQueryForS3(String requestURL, List<String> ids) {
|
||||||
|
logger.debug("Starting building SQL query for request: {}", requestURL);
|
||||||
|
long startExecTime = System.currentTimeMillis();
|
||||||
|
Map<String, Object> resultMap = new HashMap<>();
|
||||||
|
String endpointArguments;
|
||||||
|
|
||||||
|
if (requestURL.contains(":=")) {
|
||||||
|
endpointArguments = "'{" + ids.stream()
|
||||||
|
.map(String::trim)
|
||||||
|
.collect(Collectors.joining(", ")) + "}'";
|
||||||
|
} else {
|
||||||
|
endpointArguments = "(" + ids.stream()
|
||||||
|
.map(s -> "'" + s.trim() + "'")
|
||||||
|
.collect(Collectors.joining(", ")) + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
resultMap.put("requestURL", requestURL
|
||||||
|
.replace("${endpointArguments}", endpointArguments));
|
||||||
|
|
||||||
|
long endExecTime = System.currentTimeMillis();
|
||||||
|
logger.debug("SQL query for S3 built in {} ms", endExecTime - startExecTime);
|
||||||
|
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
|
|
||||||
private Map<String, Object> buildSqlQuery(BaseRequest request, List<String> ids) {
|
private Map<String, Object> buildSqlQuery(BaseRequest request, List<String> ids) {
|
||||||
logger.debug("Starting building SQL query for request: {}", request.getRequestURL());
|
logger.debug("Starting building SQL query for request: {}", request.getRequestURL());
|
||||||
long startExecTime = System.currentTimeMillis();
|
long startExecTime = System.currentTimeMillis();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue