dbf-importer added error directory

This commit is contained in:
ialbert 2022-12-19 13:26:04 +03:00
parent b25d9de2bd
commit c4149935a0
6 changed files with 49 additions and 8 deletions

View file

@ -4,6 +4,7 @@ public class Store {
private String srcDir; private String srcDir;
private String outDir; private String outDir;
private String outDirError;
private boolean deleteSrcFiles = true; private boolean deleteSrcFiles = true;
public String getSrcDir() { public String getSrcDir() {
@ -29,4 +30,12 @@ public class Store {
public void setDeleteSrcFiles(boolean deleteSrcFiles) { public void setDeleteSrcFiles(boolean deleteSrcFiles) {
this.deleteSrcFiles = deleteSrcFiles; this.deleteSrcFiles = deleteSrcFiles;
} }
public String getOutDirError() {
return outDirError;
}
public void setOutDirError(String outDirError) {
this.outDirError = outDirError;
}
} }

View file

@ -22,18 +22,21 @@ public class Processor {
public void process(ResultContainer task) { public void process(ResultContainer task) {
log.info("uuid {}. Task started", task.getUuid()); log.info("uuid {}. Task started", task.getUuid());
StageResult result = null;
long startMills = System.currentTimeMillis(); long startMills = System.currentTimeMillis();
for (Stage currStage : pipeline) { for (Stage currStage : pipeline) {
if (statusIsFinal(task.getLastStageStatus()) && currStage.skipCompleted()) {continue;}
log.info("uuid {}. Stage: {}", task.getUuid(), currStage.getClass().getSimpleName()); log.info("uuid {}. Stage: {}", task.getUuid(), currStage.getClass().getSimpleName());
result = currStage.process(task); task.setLastStageStatus(currStage.process(task));
log.info("uuid {}. Stage {} finished", task.getUuid(), currStage.getClass().getSimpleName()); log.info("uuid {}. Stage {} finished with status {}", task.getUuid(), currStage.getClass().getSimpleName(), task.getLastStageStatus());
if (Arrays.asList(StageResult.ERROR, StageResult.COMPLETE).contains(result)) break;
} }
long endMills = System.currentTimeMillis(); long endMills = System.currentTimeMillis();
log.info("uuid {}. Task completed, result: {}, time working: {} ms", log.info("uuid {}. Task completed, result: {}, time working: {} ms",
task.getUuid(), task.getUuid(),
result, task,
endMills - startMills); endMills - startMills);
} }
private boolean statusIsFinal(StageResult previousStageStatus) {
return Arrays.asList(StageResult.ERROR, StageResult.COMPLETE).contains(previousStageStatus);
}
} }

View file

@ -1,6 +1,7 @@
package ru.spcex.clearing.dbf.importer.logic.data; package ru.spcex.clearing.dbf.importer.logic.data;
import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable;
import ru.spcex.clearing.dbf.importer.logic.data.enums.StageResult;
import java.io.File; import java.io.File;
import java.util.UUID; import java.util.UUID;
@ -12,6 +13,7 @@ public class ResultContainer {
private UUID uuid; private UUID uuid;
private ETable dbfTable; private ETable dbfTable;
private File dbfFile; private File dbfFile;
private StageResult lastStageStatus;
private byte[] dbfSource; private byte[] dbfSource;
@ -57,4 +59,12 @@ public class ResultContainer {
public void setUuid(UUID uuid) { public void setUuid(UUID uuid) {
this.uuid = uuid; this.uuid = uuid;
} }
public StageResult getLastStageStatus() {
return lastStageStatus;
}
public void setLastStageStatus(StageResult lastStageRes) {
this.lastStageStatus = lastStageRes;
}
} }

View file

@ -27,11 +27,21 @@ public class ChangeDirOfFileStage extends Stage {
this.settings = settings; this.settings = settings;
} }
@Override
public boolean skipCompleted() {
return false;
}
@Override @Override
public StageResult process(ResultContainer resultContainer) { public StageResult process(ResultContainer resultContainer) {
File srcDir = new File(settings.getStore().getSrcDir()); File srcDir = new File(settings.getStore().getSrcDir());
File outDir = new File(settings.getStore().getOutDir()); File outDir;
if (resultContainer.getLastStageStatus().equals(StageResult.ERROR)) {
outDir = new File(settings.getStore().getOutDirError());
} else {
outDir = new File(settings.getStore().getOutDir());
}
File dbfFile = resultContainer.getDbfFile(); File dbfFile = resultContainer.getDbfFile();
if (!srcDir.exists()) { if (!srcDir.exists()) {
@ -39,7 +49,7 @@ public class ChangeDirOfFileStage extends Stage {
return StageResult.ERROR; return StageResult.ERROR;
} }
if (!outDir.exists()) { if (!outDir.exists()) {
log.warn("SettlementHouse_DocIn does not exists! Trying to made new!"); log.warn("ouput directory {} does not exists! Trying to made new!", outDir.getAbsolutePath());
if (outDir.mkdir()) { if (outDir.mkdir()) {
log.error("Made dir {} successfully!", outDir.getName()); log.error("Made dir {} successfully!", outDir.getName());
} else { } else {
@ -60,6 +70,10 @@ public class ChangeDirOfFileStage extends Stage {
return StageResult.ERROR; return StageResult.ERROR;
} }
return StageResult.COMPLETE; if (resultContainer.getLastStageStatus().equals(StageResult.ERROR)) {
return StageResult.ERROR;
} else {
return StageResult.COMPLETE;
}
} }
} }

View file

@ -9,4 +9,8 @@ public abstract class Stage {
protected Logger log = LoggerFactory.getLogger(getClass()); protected Logger log = LoggerFactory.getLogger(getClass());
public abstract StageResult process(ResultContainer resultContainer); public abstract StageResult process(ResultContainer resultContainer);
public boolean skipCompleted() {
return true;
}
} }

View file

@ -7,6 +7,7 @@ import-dbf-service.scheduler.check-src-dir-cron=* * * * 1 ?
import-dbf-service.store.delete-src-files=false import-dbf-service.store.delete-src-files=false
import-dbf-service.store.src-dir=/opt/clearing/file/importer/ import-dbf-service.store.src-dir=/opt/clearing/file/importer/
import-dbf-service.store.out-dir=/opt/clearing/file/importer/loaded/ import-dbf-service.store.out-dir=/opt/clearing/file/importer/loaded/
import-dbf-service.store.out-dir-error=/opt/clearing/file/importer/error/
import-dbf-service.common.encoding-source=cp866 import-dbf-service.common.encoding-source=cp866
import-dbf-service.common.insert-batch-size=100 import-dbf-service.common.insert-batch-size=100