sqlcsv: l'option -l supporte une url jdbc, et la recherche de sqlcsv.properties se fait dans tous les répertoires parent jusqu'à $HOME
This commit is contained in:
parent
f4f49c048c
commit
40babfe24a
64
sqlcsv
64
sqlcsv
|
@ -77,6 +77,25 @@ public class sqlcsv {
|
||||||
static final String USER_CONFIG = USER_CONFDIR + "/" + DEFAULT_CONFIG,
|
static final String USER_CONFIG = USER_CONFDIR + "/" + DEFAULT_CONFIG,
|
||||||
SYSTEM_CONFIG = SYSTEM_CONFDIR + "/" + DEFAULT_CONFIG;
|
SYSTEM_CONFIG = SYSTEM_CONFDIR + "/" + DEFAULT_CONFIG;
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
public static final File getCanonical(File file) {
|
||||||
|
try {
|
||||||
|
return file.getCanonicalFile();
|
||||||
|
} catch (IOException e) {
|
||||||
|
return file.getAbsoluteFile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final File[] ROOTS = File.listRoots();
|
||||||
|
|
||||||
|
public static final boolean isRoot(File file) {
|
||||||
|
if (file == null) return false;
|
||||||
|
for (File root : ROOTS) {
|
||||||
|
if (root.equals(file)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
public static class ResultSetHelper {
|
public static class ResultSetHelper {
|
||||||
public static final int CLOBBUFFERSIZE = 2048;
|
public static final int CLOBBUFFERSIZE = 2048;
|
||||||
|
@ -1151,20 +1170,31 @@ public class sqlcsv {
|
||||||
log.setLevel(Level.parse(loglevel.toUpperCase()));
|
log.setLevel(Level.parse(loglevel.toUpperCase()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Charger les propriétés
|
// Charger les propriétés...
|
||||||
|
// essayer depuis le répertoire courant et les répertoires parents jusqu'à $HOME
|
||||||
|
if (config == null) {
|
||||||
|
String userHome = System.getProperty("user.home");
|
||||||
|
if (userHome != null && userHome.length() == 0) userHome = null;
|
||||||
|
File dir = getCanonical(new File("."));
|
||||||
|
File homedir = null;
|
||||||
|
if (userHome != null) homedir = getCanonical(new File(userHome));
|
||||||
|
while (true) {
|
||||||
|
File file = new File(dir, DEFAULT_CONFIG);
|
||||||
|
if (file.exists()) {
|
||||||
|
config = file.getPath();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((homedir != null && dir.equals(homedir)) || isRoot(dir)) break;
|
||||||
|
dir = dir.getParentFile();
|
||||||
|
if (dir == null) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// puis dans le répertoire de configuration utilisateur
|
||||||
|
if (config == null && new File(USER_CONFIG).exists()) config = USER_CONFIG;
|
||||||
|
// puis dans le répertoire de configuration système
|
||||||
|
if (config == null && new File(SYSTEM_CONFIG).exists()) config = SYSTEM_CONFIG;
|
||||||
|
|
||||||
Properties props = null;
|
Properties props = null;
|
||||||
if (config == null && new File(DEFAULT_CONFIG).exists()) {
|
|
||||||
// essayer depuis le répertoire courant
|
|
||||||
config = DEFAULT_CONFIG;
|
|
||||||
}
|
|
||||||
if (config == null && new File(USER_CONFIG).exists()) {
|
|
||||||
// puis dans le répertoire de configuration utilisateur
|
|
||||||
config = USER_CONFIG;
|
|
||||||
}
|
|
||||||
if (config == null && new File(SYSTEM_CONFIG).exists()) {
|
|
||||||
// puis dans le répertoire de configuration système
|
|
||||||
config = SYSTEM_CONFIG;
|
|
||||||
}
|
|
||||||
if (config != null) {
|
if (config != null) {
|
||||||
log.config("Chargement des propriétés de " + config);
|
log.config("Chargement des propriétés de " + config);
|
||||||
props = new Properties();
|
props = new Properties();
|
||||||
|
@ -1187,7 +1217,11 @@ public class sqlcsv {
|
||||||
}
|
}
|
||||||
|
|
||||||
String jdbcUrl = null;
|
String jdbcUrl = null;
|
||||||
if (connid == null && props != null) {
|
if (connid != null && connid.startsWith("jdbc:")) {
|
||||||
|
jdbcUrl = connid;
|
||||||
|
connid = null;
|
||||||
|
}
|
||||||
|
if (jdbcUrl == null && connid == null && props != null) {
|
||||||
// Essayer de deviner connid en parcourant les propriétés de props
|
// Essayer de deviner connid en parcourant les propriétés de props
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
Enumeration<String> en = (Enumeration<String>)props.propertyNames();
|
Enumeration<String> en = (Enumeration<String>)props.propertyNames();
|
||||||
|
@ -1206,7 +1240,7 @@ public class sqlcsv {
|
||||||
connid = null;
|
connid = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (connid != null) {
|
if (jdbcUrl == null && connid != null) {
|
||||||
if (props != null) {
|
if (props != null) {
|
||||||
String jdbcUrlKey = connid + ".url";
|
String jdbcUrlKey = connid + ".url";
|
||||||
if (props.containsKey(jdbcUrlKey)) jdbcUrl = props.getProperty(jdbcUrlKey);
|
if (props.containsKey(jdbcUrlKey)) jdbcUrl = props.getProperty(jdbcUrlKey);
|
||||||
|
|
Loading…
Reference in New Issue