/*
* Copyright 2015 Collective, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.collective.celos;
import com.collective.celos.database.*;
import java.io.File;
import java.io.IOException;
import java.util.Map;
/**
* Reads configuration and database from filesystem at well-known paths.
*/
public class SchedulerConfiguration {
public static final int SLIDING_WINDOW_DAYS = 7;
private final File workflowConfigurationPath;
private final File defaultsConfigurationPath;
private final StateDatabase db;
private final Map<String, String> additionalVars;
public SchedulerConfiguration(File workflowConfigurationPath, File defaultsConfigurationPath, StateDatabase db, Map<String, String> additionalVars) throws IOException {
this.workflowConfigurationPath = workflowConfigurationPath;
this.defaultsConfigurationPath = defaultsConfigurationPath;
this.additionalVars = additionalVars;
this.db = db;
}
public Scheduler makeDefaultScheduler() throws Exception {
WorkflowConfiguration config;
try(StateDatabaseConnection conn = db.openConnection()) {
config = getWorkflowConfigurationParser(conn).getWorkflowConfiguration();
}
int slidingWindowHours = 24 * SLIDING_WINDOW_DAYS;
return new Scheduler(config, slidingWindowHours);
}
private WorkflowConfigurationParser getWorkflowConfigurationParser(StateDatabaseConnection conn) throws Exception {
return new WorkflowConfigurationParser(defaultsConfigurationPath, additionalVars).parseConfiguration(workflowConfigurationPath, conn);
}
public StateDatabase getStateDatabase() {
return db;
}
}