56 lines
2.1 KiB
Java
56 lines
2.1 KiB
Java
package com.navi.medici.client;
|
|
|
|
import com.navi.medici.config.LitmusConfig;
|
|
import com.navi.medici.exception.LitmusException;
|
|
import com.navi.medici.request.v1.LitmusExperiment;
|
|
import com.navi.medici.response.LitmusExperimentCollection;
|
|
import com.navi.medici.util.JacksonUtils;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.FileReader;
|
|
import java.io.FileWriter;
|
|
import java.io.IOException;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import lombok.extern.log4j.Log4j2;
|
|
import org.apache.logging.log4j.core.util.IOUtils;
|
|
|
|
@Log4j2
|
|
public class ExperimentBackupHandlerFile implements ExperimentBackupHandler {
|
|
|
|
private final String backupFile;
|
|
|
|
public ExperimentBackupHandlerFile(LitmusConfig config) {
|
|
this.backupFile = config.getBackupFile();
|
|
}
|
|
|
|
@Override
|
|
public LitmusExperimentCollection read() {
|
|
log.info("Litmus will try to load experiments states from temporary backup");
|
|
try (FileReader reader = new FileReader(backupFile)) {
|
|
return JacksonUtils.stringToObject(IOUtils.toString(reader), LitmusExperimentCollection.class);
|
|
} catch (FileNotFoundException e) {
|
|
log.info(
|
|
" Litmus could not find the backup-file '"
|
|
+ backupFile
|
|
+ ". This is expected behavior the first time litmus runs in a new environment.");
|
|
} catch (IOException | IllegalStateException e) {
|
|
log.error("");
|
|
}
|
|
List<LitmusExperiment> emptyList = Collections.emptyList();
|
|
return LitmusExperimentCollection.builder()
|
|
.litmusExperiments(emptyList)
|
|
.build();
|
|
}
|
|
|
|
@Override
|
|
public void write(LitmusExperimentCollection experimentCollection) {
|
|
try (FileWriter writer = new FileWriter(backupFile)) {
|
|
writer.write(JacksonUtils.objectToString(experimentCollection));
|
|
} catch (IOException e) {
|
|
throw new LitmusException(
|
|
"Litmus was unable to backup experiments to file: " + backupFile, e);
|
|
}
|
|
}
|
|
}
|