ConnectionPropertiesProducer.java
package org.ferris.riviera.console.connection;
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.StringTool;
/**
*
* @author Michael Remijan mjremijan@yahoo.com @mjremijan
*/
@Singleton
public class ConnectionPropertiesProducer {
private ConnectionProperties connectionProperties;
@Inject
protected Logger log;
@Inject
protected DriverDirectory driverDirectory;
@Inject
protected StringTool strt;
@Produces
protected ConnectionProperties produceConnectionProperties() {
log.info("ENTER");
if (connectionProperties == 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, String> scrubbed
= new HashMap<>();
Arrays.asList("url,username,password,schema_sql,validation_sql".split(","))
.forEach(k -> {
String v = strt.trimToNull(props.getProperty(k));
scrubbed.put(k, v);
log.info(String.format("Connection property %s=\"%s\"", k, v));
});
Arrays.asList("table_types,table_cat,table_schem_pattern,table_name_pattern".split(","))
.forEach(k -> {
String v = strt.trimUp(props.getProperty(k));
scrubbed.put(k, v);
log.info(String.format("Connection property %s=\"%s\"", k, v));
});
connectionProperties
= new ConnectionProperties(
scrubbed.get("url"), scrubbed.get("username"), scrubbed.get("password"), scrubbed.get("validation_sql"), scrubbed.get("schema_sql"), (scrubbed.get("table_types") != null ? scrubbed.get("table_types").split(",") : null), scrubbed.get("table_cat"), scrubbed.get("table_schem_pattern"), scrubbed.get("table_name_pattern")
);
}
return connectionProperties;
}
}