/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.gui;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
/**
* Cette classe contient le param�trage d'une application (versionning,serveurs sybase,utilisateur par
* d�faut...) .
*
* <p> Cf le fichier se trouvant ici \Lib\Common\private\Application.properties pour un exemple. </p>
*
* @version $Revision: 1.4 $
*/
public class ApplicationData {
Properties data;
Server[] servers = null;
public ApplicationData(InputStream confFile) throws IOException {
Properties props = new Properties();
props.load(confFile);
init(props);
}
public ApplicationData(Properties props) {
init(props);
}
/**
* Retourne toutes les proprietes d�finie dans le fichier de configuration.
*
* @return Les properties
*/
public Properties getData() {
return data;
}
public String getDefaultLogin() {
return data.getProperty("login.default.name");
}
public String getHelpUrl() {
return data.getProperty("help.default.url", "NONE");
}
public String getDefaultPassword() {
return data.getProperty("login.default.pwd");
}
public String getDriver() {
return data.getProperty("server.driver");
}
public javax.swing.Icon getIcon() {
return new javax.swing.ImageIcon(ApplicationData.class.getResource(
data.getProperty("application.icon")));
}
public String getName() {
return data.getProperty("application.name");
}
public Server[] getServers() {
return servers;
}
public String getVersion() {
return data.getProperty("application.version");
}
private Server buildServer(String serverData) {
StringTokenizer tokenizer = new StringTokenizer(serverData, ",");
if (tokenizer.countTokens() != 3) {
throw new IllegalArgumentException();
}
return new Server(tokenizer.nextToken().trim(), tokenizer.nextToken().trim(),
tokenizer.nextToken().trim());
}
private void init(Properties props) {
data = new Properties();
data.putAll(props);
data.putAll(System.getProperties());
String defaultServerData =
data.getProperty(data.getProperty("server.default.url", "NONE"));
if (defaultServerData != null) {
servers = new Server[]{buildServer(defaultServerData)};
}
else {
Set<Server> serverSet = new TreeSet<Server>();
for (Enumeration iter = data.keys(); iter.hasMoreElements();) {
String key = (String)iter.nextElement();
if (key.startsWith("server.url.")) {
serverSet.add(buildServer(data.getProperty(key)));
}
}
servers = serverSet.toArray(new Server[]{});
}
}
/**
* Classe deccrivant un serveur/base SYBASE.
*
* @author $Author: acharif $
* @version $Revision: 1.4 $
*/
public static final class Server implements Comparable {
private String catalog;
private String name;
private String url;
Server(String name, String url, String catalog) {
if (name == null || url == null || catalog == null) {
throw new IllegalArgumentException();
}
this.name = name;
this.url = url;
this.catalog = catalog;
}
public String getCatalog() {
return catalog;
}
public String getName() {
return name;
}
public String getUrl() {
return url;
}
public int compareTo(Object obj) {
return name.compareTo(((Server)obj).getName());
}
}
}