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
60
sqlcsv
60
sqlcsv
|
@ -77,6 +77,25 @@ public class sqlcsv {
|
|||
static final String USER_CONFIG = USER_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 final int CLOBBUFFERSIZE = 2048;
|
||||
|
@ -1151,20 +1170,31 @@ public class sqlcsv {
|
|||
log.setLevel(Level.parse(loglevel.toUpperCase()));
|
||||
}
|
||||
|
||||
// Charger les propriétés
|
||||
Properties props = null;
|
||||
if (config == null && new File(DEFAULT_CONFIG).exists()) {
|
||||
// essayer depuis le répertoire courant
|
||||
config = DEFAULT_CONFIG;
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
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()) {
|
||||
if (config == null && new File(USER_CONFIG).exists()) config = USER_CONFIG;
|
||||
// puis dans le répertoire de configuration système
|
||||
config = SYSTEM_CONFIG;
|
||||
}
|
||||
if (config == null && new File(SYSTEM_CONFIG).exists()) config = SYSTEM_CONFIG;
|
||||
|
||||
Properties props = null;
|
||||
if (config != null) {
|
||||
log.config("Chargement des propriétés de " + config);
|
||||
props = new Properties();
|
||||
|
@ -1187,7 +1217,11 @@ public class sqlcsv {
|
|||
}
|
||||
|
||||
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
|
||||
@SuppressWarnings("unchecked")
|
||||
Enumeration<String> en = (Enumeration<String>)props.propertyNames();
|
||||
|
@ -1206,7 +1240,7 @@ public class sqlcsv {
|
|||
connid = null;
|
||||
}
|
||||
}
|
||||
if (connid != null) {
|
||||
if (jdbcUrl == null && connid != null) {
|
||||
if (props != null) {
|
||||
String jdbcUrlKey = connid + ".url";
|
||||
if (props.containsKey(jdbcUrlKey)) jdbcUrl = props.getProperty(jdbcUrlKey);
|
||||
|
|
Loading…
Reference in New Issue