ExecutePropertiesProducer.java
package org.ferris.riviera.console.execute;
import java.io.File;
import java.io.FileReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.apache.log4j.Logger;
import org.ferris.riviera.console.driver.DriverDirectory;
import org.ferris.riviera.console.lang.BooleanTool;
/**
*
* @author Michael Remijan mjremijan@yahoo.com @mjremijan
*/
@Singleton
public class ExecutePropertiesProducer {
private ExecuteProperties executeProperties;
@Inject
protected Logger log;
@Inject
protected BooleanTool booltool;
@Produces
protected ExecuteProperties produceExecuteProperties(DriverDirectory driverDirectory) {
log.info("ENTER");
if (executeProperties == null) {
File propertiesFile
= new File(driverDirectory, "connection.properties");
if (!propertiesFile.exists()) {
throw new RuntimeException(
String.format(
"File does not exist \"%s\"", propertiesFile.getAbsolutePath())
);
}
Properties props = new Properties();
try (FileReader reader = new FileReader(propertiesFile)) {
props.load(reader);
} catch (Exception e) {
throw new RuntimeException(
String.format("Cannot read file \"%s\"", propertiesFile.getAbsoluteFile())
);
}
Map<String, Boolean> scrubbed
= new HashMap<>();
Arrays.asList("execute_sql".split(","))
.forEach(k -> {
Boolean v = booltool.trimToBoolean(props.getProperty(k));
scrubbed.put(k, v);
log.info(String.format("Execute property %s=\"%s\"", k, v));
});
executeProperties
= new ExecuteProperties(
scrubbed.get("execute_sql")
);
}
return executeProperties;
}
}