Index: topia-service/src/java/org/codelutin/topia/migration/TopiaMigrationServiceImpl.java diff -u topia-service/src/java/org/codelutin/topia/migration/TopiaMigrationServiceImpl.java:1.1 topia-service/src/java/org/codelutin/topia/migration/TopiaMigrationServiceImpl.java:1.2 --- topia-service/src/java/org/codelutin/topia/migration/TopiaMigrationServiceImpl.java:1.1 Mon Apr 2 14:24:37 2007 +++ topia-service/src/java/org/codelutin/topia/migration/TopiaMigrationServiceImpl.java Wed Apr 18 08:44:59 2007 @@ -30,7 +30,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.codelutin.topia.TopiaNotFoundException; import org.codelutin.topia.framework.TopiaContextImplementor; +import org.codelutin.topia.framework.TopiaUtil; import org.codelutin.topia.migration.common.Version; import org.codelutin.topia.migration.kernel.ConfigurationAdapter; import org.codelutin.topia.migration.kernel.ConfigurationHelper; @@ -46,9 +48,9 @@ * @author Chevallereau Benjamin * @author Eon Sébastien * @author Trève Vincent - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ * - * Last update : $Date: 2007/04/02 14:24:37 $ + * Last update : $Date: 2007/04/18 08:44:59 $ */ public class TopiaMigrationServiceImpl implements TopiaMigrationService { @@ -57,7 +59,13 @@ */ static private final String MIGRATION_APPLICATION_VERSION = "topia.service.migration.version"; static private final String MIGRATION_PREVIOUS_MAPPING_DIRECTORY = "topia.service.migration.mappingsdir"; - static private final String MIGRATION_HIBERNATE_CONFIGURATION_FILE = "topia.service.migration.hibernateconfigfile"; + + /** + * C'est la meme, mais ca vire des dependances + */ + static final private String TOPIA_PERSISTENCE_DIRECTORIES = "topia.persistence.directories"; + static final private String TOPIA_PERSISTENCE_CLASSES = "topia.persistence.classes"; + //static final private String TOPIA_PERSISTENCE_PROPERTIES_FILE = "topia.persistence.properties.file"; /** * Nom courant du fichier de configuration. @@ -98,7 +106,7 @@ // init configuration currentApplicationConfiguration = null; } - + public Class [] getPersistenceClasses() { return null; } @@ -108,20 +116,62 @@ } public void preInit(TopiaContextImplementor context) { - // FIXME verifier la version et migrer si necessaire Properties config = context.getConfig(); - String hibernateconfigfile = config.getProperty(MIGRATION_HIBERNATE_CONFIGURATION_FILE, null); String mappingdir = config.getProperty(MIGRATION_PREVIOUS_MAPPING_DIRECTORY, null); String applicationversion = config.getProperty(MIGRATION_APPLICATION_VERSION, null); - - // MIGRATION_HIBERNATE_CONFIGURATION_FILE est facultatif - // version et mapping non - - if(hibernateconfigfile!=null) { - this.setConfigurationFile(hibernateconfigfile); - } - + + // Creer une nouvelle configuration a partir des fichiers speciaux + // de TOPIA + // il n'y a pas ici de hibernate.cfg.xml + Configuration hibernateConfiguration = new Configuration(); + + // ajout des repertoires contenant les mappings hibernate + String[] dirs = config.getProperty( + TOPIA_PERSISTENCE_DIRECTORIES, "").split(","); + for (String dir : dirs) { + dir = dir.trim(); + if (!"".equals(dir)) { + hibernateConfiguration.addDirectory(new File(dir)); + } + } + + // ajout des classes dites persistentes + String listPersistenceClasses = config.getProperty( + TOPIA_PERSISTENCE_CLASSES, ""); + + String[] classes = listPersistenceClasses.split(","); + for (String classname : classes) { + classname = classname.trim(); + if (!"".equals(classname)) { + Class clazz; + try { + clazz = Class.forName(classname); + hibernateConfiguration.addClass(clazz); + } catch (ClassNotFoundException eee) { + logger.error( + "Persistent class " + classname + + " not found",eee); + } + } + } + + Properties prop = new Properties(); + prop.putAll(hibernateConfiguration.getProperties()); + prop.putAll(config); + /*TODO TOPIA_PERSISTENCE_PROPERTIES_FILE + try { + prop.putAll(TopiaUtil.getProperties(config.getProperty( + TOPIA_PERSISTENCE_PROPERTIES_FILE))); + } catch (TopiaNotFoundException e1) { + logger.error( + "Can't found property file",e1); + }*/ + hibernateConfiguration.setProperties(prop); + + // reseigne la configuration qui sera utilisee + this.setConfiguration(hibernateConfiguration); + // test version null if(applicationversion == null) { logger.error("'" + MIGRATION_APPLICATION_VERSION +"' not set."); @@ -433,5 +483,4 @@ return mVersionAndConfigurationMap; } - }