/* * Copyright (c) 1990-2012 kopiLeft Development SARL, Bizerte, Tunisia * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License version 2.1 as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $Id$ */ package org.kopi.ebics.session; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Locale; import java.util.MissingResourceException; import java.util.Properties; import java.util.ResourceBundle; import org.kopi.ebics.exception.EbicsException; import org.kopi.ebics.interfaces.Configuration; import org.kopi.ebics.interfaces.EbicsLogger; import org.kopi.ebics.interfaces.EbicsUser; import org.kopi.ebics.interfaces.LetterManager; import org.kopi.ebics.interfaces.SerializationManager; import org.kopi.ebics.interfaces.TraceManager; import org.kopi.ebics.io.IOUtils; import org.kopi.ebics.letter.DefaultLetterManager; /** * A simple client application configuration. * * @author hachani * */ public class DefaultConfiguration implements Configuration { /** * Creates a new application configuration. * @param rootDir the root directory */ public DefaultConfiguration(String rootDir) { this.rootDir = rootDir; bundle = ResourceBundle.getBundle(RESOURCE_DIR); properties = new Properties(); logger = new DefaultEbicsLogger(); serializationManager = new DefaultSerializationManager(); traceManager = new DefaultTraceManager(); } /** * Creates a new application configuration. * The root directory will be user.home/ebics/client */ public DefaultConfiguration() { this(System.getProperty("user.home") + File.separator + "ebics" + File.separator + "client"); } /** * Returns the corresponding property of the given key * @param key the property key * @return the property value. */ private String getString(String key) { try { return bundle.getString(key); } catch(MissingResourceException e) { return "!!" + key + "!!"; } } /** * Loads the configuration * @throws EbicsException */ public void load(String configFile) throws EbicsException { if (isConfigFileLoad) { return; } try { properties.load(new FileInputStream(new File(configFile))); } catch (IOException e) { throw new EbicsException(e.getMessage()); } isConfigFileLoad = true; } @Override public String getRootDirectory() { return rootDir; } @Override public void init() { //Create the root directory IOUtils.createDirectories(getRootDirectory()); //Create the logs directory IOUtils.createDirectories(getLogDirectory()); //Create the serialization directory IOUtils.createDirectories(getSerializationDirectory()); //create the SSL trusted stores directories IOUtils.createDirectories(getSSLTrustedStoreDirectory()); //create the SSL key stores directories IOUtils.createDirectories(getSSLKeyStoreDirectory()); //Create the SSL bank certificates directories IOUtils.createDirectories(getSSLBankCertificates()); //Create users directory IOUtils.createDirectories(getUsersDirectory()); logger.setLogFile(getLogDirectory() + File.separator + getLogFileName()); ((DefaultEbicsLogger)logger).setFileLoggingEnabled(true); ((DefaultEbicsLogger)logger).setLevel(DefaultEbicsLogger.ALL_LEVEL); serializationManager.setSerializationDirectory(getSerializationDirectory()); traceManager.setTraceEnabled(isTraceEnabled()); letterManager = new DefaultLetterManager(getLocale()); } @Override public Locale getLocale() { return Locale.FRANCE; } @Override public String getLogDirectory() { return rootDir + File.separator + getString("log.dir.name"); } @Override public String getLogFileName() { return getString("log.file.name"); } @Override public String getConfigurationFile() { return rootDir + File.separator + getString("conf.file.name"); } @Override public String getProperty(String key) { if (!isConfigFileLoad) { return null; } if (key == null) { return null; } return properties.getProperty(key); } @Override public String getKeystoreDirectory(EbicsUser user) { return getUserDirectory(user) + File.separator + getString("keystore.dir.name"); } @Override public String getTransferTraceDirectory(EbicsUser user) { return getUserDirectory(user) + File.separator + getString("traces.dir.name"); } @Override public String getSerializationDirectory() { return rootDir + File.separator + getString("serialization.dir.name"); } @Override public String getSSLTrustedStoreDirectory() { return rootDir + File.separator + getString("ssltruststore.dir.name"); } @Override public String getSSLKeyStoreDirectory() { return rootDir + File.separator + getString("sslkeystore.dir.name"); } @Override public String getSSLBankCertificates() { return rootDir + File.separator + getString("sslbankcert.dir.name"); } @Override public String getUsersDirectory() { return rootDir + File.separator + getString("users.dir.name"); } @Override public SerializationManager getSerializationManager() { return serializationManager; } @Override public TraceManager getTraceManager() { return traceManager; } @Override public LetterManager getLetterManager() { return letterManager; } @Override public String getLettersDirectory(EbicsUser user) { return getUserDirectory(user) + File.separator + getString("letters.dir.name"); } @Override public String getUserDirectory(EbicsUser user) { return getUsersDirectory() + File.separator + user.getUserId(); } @Override public EbicsLogger getLogger() { return logger; } @Override public String getSignatureVersion() { return getString("signature.version"); } @Override public String getAuthenticationVersion() { return getString("authentication.version"); } @Override public String getEncryptionVersion() { return getString("encryption.version"); } @Override public boolean isTraceEnabled() { return true; } @Override public boolean isCompressionEnabled() { return true; } @Override public int getRevision() { return 1; } @Override public String getVersion() { return getString("ebics.version"); } // -------------------------------------------------------------------- // DATA MEMBERS // -------------------------------------------------------------------- private final String rootDir; private ResourceBundle bundle; private Properties properties; private EbicsLogger logger; private SerializationManager serializationManager; private TraceManager traceManager; private LetterManager letterManager; private boolean isConfigFileLoad; private static final String RESOURCE_DIR = "org.kopi.ebics.client.config"; }