+
+ private MultiMap<EiJob> jobsByType = new MultiMap<>();
+ private MultiMap<EiJob> jobsByOwner = new MultiMap<>();
+ private final Gson gson;
+
+ private final ApplicationConfig config;
+ private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ public EiJobs(ApplicationConfig config) {
+ this.config = config;
+ GsonBuilder gsonBuilder = new GsonBuilder();
+ ServiceLoader.load(TypeAdapterFactory.class).forEach(gsonBuilder::registerTypeAdapterFactory);
+ this.gson = gsonBuilder.create();
+ }
+
+ public synchronized void restoreJobsFromDatabase() throws IOException {
+ Files.createDirectories(Paths.get(getDatabaseDirectory()));
+ File dbDir = new File(getDatabaseDirectory());
+
+ for (File file : dbDir.listFiles()) {
+ String json = Files.readString(file.toPath());
+ EiJob job = gson.fromJson(json, EiJob.class);
+ this.put(job, false);
+ }
+
+ }