dbf-importer added error directory
This commit is contained in:
parent
b25d9de2bd
commit
c4149935a0
6 changed files with 49 additions and 8 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue