diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/DBFLoaderApplication.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/DBFLoaderApplication.java
index 88029b92d..c90405d5f 100644
--- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/DBFLoaderApplication.java
+++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/DBFLoaderApplication.java
@@ -10,7 +10,7 @@ public class DBFLoaderApplication {
try {
SpringApplicationBuilder builder = new SpringApplicationBuilder(DBFLoaderApplication.class);
builder.run(args);
- } catch (Throwable e) {
+ } catch (Exception e) {
LoggerFactory.getLogger(DBFLoaderApplication.class).error("DBF-Loader start failed: {} -> {}", e.getClass().getSimpleName(), e.getMessage());
System.exit(-1);
}
diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/DBStructureDBF.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/DBStructureDBF.java
index 32a2bfbf3..7f487ee9c 100644
--- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/DBStructureDBF.java
+++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/DBStructureDBF.java
@@ -2,11 +2,11 @@ package ru.spcex.clearing.dbf.importer.logic.data;
import ru.spcex.clearing.dbf.importer.logic.data.enums.Table;
-import java.util.HashMap;
+import java.util.EnumMap;
import java.util.Map;
public class DBStructureDBF {
- private Map
tables = new HashMap<>();
+ private Map tables = new EnumMap<>(Table.class);
public Map getTables() {
return tables;
diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java
index a384fc9ee..b0d494996 100644
--- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java
+++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java
@@ -75,32 +75,27 @@ public class ImportToDB extends Stage {
if (batchIdx == batchCount && batchRem == 0) continue;
final Integer currentBatchIdx = batchIdx;
- try {
- int[] rowsInserted = dbfJdbcTemplate.batchUpdate(
- "insert into " + currTable.name() +
- " (" + String.join(",", columnNames) + ")" +
- " values (" + String.join(",", Collections.nCopies(columnCount, "?")) + ")",
- new BatchPreparedStatementSetter() {
- @Override
- public void setValues(PreparedStatement ps, int i) throws SQLException {
- Object[] currValuesRow = values.get(currentBatchIdx * maxBatchSize + i);
- int parameterIndex = 1;
- for (Object object : currValuesRow) {
- ps.setObject(parameterIndex, object, columnTypes.get(parameterIndex - 1));
- parameterIndex++;
- }
+ int[] rowsInserted = dbfJdbcTemplate.batchUpdate(
+ "insert into " + currTable.name() +
+ " (" + String.join(",", columnNames) + ")" +
+ " values (" + String.join(",", Collections.nCopies(columnCount, "?")) + ")",
+ new BatchPreparedStatementSetter() {
+ @Override
+ public void setValues(PreparedStatement ps, int i) throws SQLException {
+ Object[] currValuesRow = values.get(currentBatchIdx * maxBatchSize + i);
+ int parameterIndex = 1;
+ for (Object object : currValuesRow) {
+ ps.setObject(parameterIndex, object, columnTypes.get(parameterIndex - 1));
+ parameterIndex++;
}
+ }
- @Override
- public int getBatchSize() {
- return currentBatchIdx == batchCount ? batchRem : maxBatchSize;
- }
- });
- log.info("uuid {}. Imported records: {}", resultContainer.getUuid(), rowsInserted.length);
- } catch (DataAccessException e) {
- log.error(String.format("uuid %s. Can't insert records", resultContainer.getUuid()), e);
- return StageResult.ERROR;
- }
+ @Override
+ public int getBatchSize() {
+ return currentBatchIdx == batchCount ? batchRem : maxBatchSize;
+ }
+ });
+ log.info("uuid {}. Imported records: {}", resultContainer.getUuid(), rowsInserted.length);
}
} catch (IOException e) {
@@ -108,6 +103,9 @@ public class ImportToDB extends Stage {
resultContainer.getUuid(),
resultContainer.getDbfFile().getName()), e);
return StageResult.ERROR;
+ } catch (DataAccessException e) {
+ log.error(String.format("uuid %s. Can't insert records", resultContainer.getUuid()), e);
+ return StageResult.ERROR;
}
diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/LoadFileFromDisk.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/LoadFileFromDisk.java
index 04434fac9..78f9865c7 100644
--- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/LoadFileFromDisk.java
+++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/LoadFileFromDisk.java
@@ -9,6 +9,7 @@ import ru.spcex.clearing.dbf.importer.properties.AProperties;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
+import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Objects;
import java.util.UUID;
@@ -32,13 +33,7 @@ public class LoadFileFromDisk extends Stage {
log.debug("uuid {}. Read all bytes from source file {}", taskUuid, resultContainer.getDbfFile().getName());
fileBytes = Files.readAllBytes(Paths.get(dbfFile.getAbsolutePath()));
if (fileBytes.length == 0) throw new IOException("Empty file");
- if (properties.deleteSrcFiles()) {
- boolean deleteOk = dbfFile.delete();
- if (!deleteOk) {
- log.warn("uuid {}. Can't remove source file {}.", taskUuid, dbfFile.getPath());
- return StageResult.ERROR;
- }
- }
+ if (properties.deleteSrcFiles()) Files.delete(Path.of(dbfFile.getPath()));
} catch (IOException e) {
log.error(String.format("uuid %s. Can't read file %s", taskUuid, resultContainer.getDbfFile().getName()), e);
return StageResult.ERROR;
diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ValidateFields.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ValidateFields.java
index e58438773..c902aa725 100644
--- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ValidateFields.java
+++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ValidateFields.java
@@ -95,7 +95,7 @@ public class ValidateFields extends Stage implements InitializingBean {
taskUuid,
currFieldName,
currTable,
- dbfDataType.name(),
+ dbfDataType != null ? dbfDataType.name() : "null",
currColumnStructure.getType());
valid = false;
continue;
diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java
index d5001fdba..b1a8e0859 100644
--- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java
+++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java
@@ -8,7 +8,6 @@ import org.springframework.stereotype.Service;
import ru.spcex.clearing.dbf.importer.logic.data.ResultContainer;
import ru.spcex.clearing.dbf.importer.logic.data.enums.Table;
import ru.spcex.clearing.dbf.importer.logic.stages.Processor;
-import ru.spcex.clearing.dbf.importer.properties.AProperties;
import java.io.File;
import java.util.List;
@@ -21,8 +20,7 @@ public class DBFImporterService {
private final ThreadPoolTaskExecutor executorService;
private final Processor processor;
- public DBFImporterService(AProperties properties,
- @Qualifier("fileChecker") FileChecker messageListener,
+ public DBFImporterService(@Qualifier("fileChecker") FileChecker messageListener,
@Qualifier("executor") ThreadPoolTaskExecutor executorService,
@Qualifier("processor") Processor processor) {
this.fileChecker = messageListener;
diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java
index e3a9f803a..c7e7ddd9c 100644
--- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java
+++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java
@@ -1,7 +1,5 @@
package ru.spcex.clearing.dbf.importer.services;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import ru.spcex.clearing.dbf.importer.logic.data.enums.Table;
import ru.spcex.clearing.dbf.importer.properties.AProperties;
@@ -11,7 +9,6 @@ import java.util.*;
@Service("fileChecker")
public class FileChecker {
- private final Logger log = LoggerFactory.getLogger(getClass());
private final AProperties properties;
public FileChecker(AProperties properties) {
@@ -19,7 +16,7 @@ public class FileChecker {
}
public Map> checkNewFiles() {
- Map> newFiles = new HashMap<>();
+ Map> newFiles = new EnumMap<>(Table.class);
String srcDir = properties.getSrcDir();
List dbfFiles = lsDBF(srcDir);
@@ -31,11 +28,8 @@ public class FileChecker {
Table currTable = Table.getTableForFilename(dbfFile.getName());
if (currTable == null) continue;
-
-
List currList = newFiles.computeIfAbsent(currTable, list -> new LinkedList<>());
currList.add(dbfFile);
-
}
return newFiles;