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 outDir;
private String outDirError;
private boolean deleteSrcFiles = true;
public String getSrcDir() {
@ -29,4 +30,12 @@ public class Store {
public void setDeleteSrcFiles(boolean 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) {
log.info("uuid {}. Task started", task.getUuid());
StageResult result = null;
long startMills = System.currentTimeMillis();
for (Stage currStage : pipeline) {
if (statusIsFinal(task.getLastStageStatus()) && currStage.skipCompleted()) {continue;}
log.info("uuid {}. Stage: {}", task.getUuid(), currStage.getClass().getSimpleName());
result = currStage.process(task);
log.info("uuid {}. Stage {} finished", task.getUuid(), currStage.getClass().getSimpleName());
if (Arrays.asList(StageResult.ERROR, StageResult.COMPLETE).contains(result)) break;
task.setLastStageStatus(currStage.process(task));
log.info("uuid {}. Stage {} finished with status {}", task.getUuid(), currStage.getClass().getSimpleName(), task.getLastStageStatus());
}
long endMills = System.currentTimeMillis();
log.info("uuid {}. Task completed, result: {}, time working: {} ms",
task.getUuid(),
result,
task,
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;
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.util.UUID;
@ -12,6 +13,7 @@ public class ResultContainer {
private UUID uuid;
private ETable dbfTable;
private File dbfFile;
private StageResult lastStageStatus;
private byte[] dbfSource;
@ -57,4 +59,12 @@ public class ResultContainer {
public void setUuid(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;
}
@Override
public boolean skipCompleted() {
return false;
}
@Override
public StageResult process(ResultContainer resultContainer) {
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();
if (!srcDir.exists()) {
@ -39,7 +49,7 @@ public class ChangeDirOfFileStage extends Stage {
return StageResult.ERROR;
}
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()) {
log.error("Made dir {} successfully!", outDir.getName());
} else {
@ -60,6 +70,10 @@ public class ChangeDirOfFileStage extends Stage {
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());
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.src-dir=/opt/clearing/file/importer/
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.insert-batch-size=100