Author: chatellier Date: 2011-03-17 10:32:16 +0000 (Thu, 17 Mar 2011) New Revision: 3170 Log: Disable migration when schema is created or restored Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/IsisH2Config.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/IsisH2Config.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/IsisH2Config.java 2011-03-17 10:30:25 UTC (rev 3169) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/IsisH2Config.java 2011-03-17 10:32:16 UTC (rev 3170) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2002 - 2010 Ifremer, Code Lutin, Tony Chemit + * Copyright (C) 2002 - 2011 Ifremer, Code Lutin, Tony Chemit, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -32,14 +32,13 @@ import org.apache.commons.logging.LogFactory; import org.hibernate.cfg.Environment; import org.hibernate.dialect.H2Dialect; -import org.nuiton.topia.migration.TopiaMigrationServiceImpl; +import org.nuiton.topia.migration.TopiaMigrationEngine; +import org.nuiton.topia.migration.TopiaMigrationService; -import fr.ifremer.isisfish.IsisConfig; import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.IsisFishDAOHelper; -import fr.ifremer.isisfish.datastore.migration.SwingMigrationCallbackHandler; +import fr.ifremer.isisfish.datastore.migration.DatabaseMigrationClass; - /** * Isis H2 concrete Config implementation. * @@ -56,7 +55,7 @@ private static Log log = LogFactory.getLog(IsisH2Config.class); /** Set in static field to be overridden by tests. Default to swing callback. */ - protected static Class<?> databaseMigrationClass = SwingMigrationCallbackHandler.class; + protected static Class<?> databaseMigrationClass = DatabaseMigrationClass.class; protected static final String COMMON_URL = // on peut aussi utiliser mysql ou postgresql @@ -141,9 +140,10 @@ * * @param config l'objet properties dans lequel il faut ajouter les informations * @param directory le repertoire dans lequel la base de données doit se trouver + * @param performMigration if {@code true} perform migration * @return l'objet config passe en parametre */ - public static Properties addDatabaseConfig(Properties config, File directory) { + public static Properties addDatabaseConfig(Properties config, File directory, boolean performMigration) { File databasePath = getStorageDataDirectory(directory); databasePath.mkdirs(); @@ -158,11 +158,11 @@ } // migration configuration, seulement pour les fichiers, pas pour les bases memoires - config.put(TopiaMigrationServiceImpl.MIGRATION_APPLICATION_VERSION, IsisConfig.getDatabaseVersion().toString()); - config.put(TopiaMigrationServiceImpl.MIGRATION_PREVIOUS_MAPPING_DIRECTORY, "oldmappings"); - config.put(TopiaMigrationServiceImpl.MIGRATION_MODEL_NAMES, "IsisFish"); - config.put(TopiaMigrationServiceImpl.MIGRATION_CALLBACKHANDLERS, databaseMigrationClass.getName()); - config.put("topia.service.migration", TopiaMigrationServiceImpl.class.getName()); + config.put(TopiaMigrationService.TOPIA_SERVICE_NAME, TopiaMigrationEngine.class.getName()); + config.put(TopiaMigrationService.MIGRATION_CALLBACK, databaseMigrationClass.getName()); + if (!performMigration) { + config.put(TopiaMigrationService.MIGRATION_MIGRATE_ON_INIT, databaseMigrationClass.getName()); + } return config; } Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2011-03-17 10:30:25 UTC (rev 3169) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2011-03-17 10:32:16 UTC (rev 3170) @@ -202,7 +202,7 @@ if (region != null) { File file = region.getDataBackupFile(); if (file.exists()) { - TopiaContext tx = region.getStorage().beginTransaction(); + TopiaContext tx = region.getStorage(false).beginTransaction(); tx.restore(file); tx.commitTransaction(); tx.closeContext(); @@ -280,7 +280,7 @@ RegionStorage result = new RegionStorage(directory, name); try { - TopiaContext context = result.getStorage().beginTransaction(); + TopiaContext context = result.getStorage(false).beginTransaction(); context.createSchema(); FisheryRegionDAO regionDAO = IsisFishDAOHelper .getFisheryRegionDAO(context); @@ -436,7 +436,7 @@ if (result != null) { File data = result.getDataBackupFile(); if (file.exists()) { - TopiaContext tx = result.getStorage().beginTransaction(); + TopiaContext tx = result.getStorage(false).beginTransaction(); tx.restore(data); if (newName != null) { FisheryRegion region = getFisheryRegion(tx); Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2011-03-17 10:30:25 UTC (rev 3169) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2011-03-17 10:32:16 UTC (rev 3170) @@ -597,7 +597,7 @@ checkout(IsisFish.config.getDatabaseDirectory(), SIMULATION_PATH + "/" + name); SimulationStorage sim = getSimulation(name); File file = sim.getDataBackupFile(); - TopiaContext tx = sim.getStorage().beginTransaction(); + TopiaContext tx = sim.getStorage(false).beginTransaction(); tx.restore(file); tx.commitTransaction(); tx.closeContext(); @@ -686,7 +686,7 @@ File data = result.getDataBackupFile(); // FIXME was file.exists() ? if (data.exists()) { - TopiaContext tx = result.getStorage().beginTransaction(); + TopiaContext tx = result.getStorage(false).beginTransaction(); tx.restore(data); tx.commitTransaction(); tx.closeContext(); @@ -732,10 +732,10 @@ tx.commitTransaction(); tx.closeContext(); - } catch (IOException e) { - throw new StorageException(e); - } catch (TopiaException e) { - throw new StorageException(e); + } catch (IOException ex) { + throw new StorageException("Can't extract region", ex); + } catch (TopiaException ex) { + throw new StorageException("Can't extract region", ex); } finally { if (tmpDir != null && !FileUtil.deleteRecursively(tmpDir)) { log.warn(_("isisfish.error.delete.file", tmpDir)); Modified: isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java =================================================================== --- isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java 2011-03-17 10:30:25 UTC (rev 3169) +++ isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java 2011-03-17 10:32:16 UTC (rev 3170) @@ -33,7 +33,7 @@ import org.junit.AfterClass; import org.junit.BeforeClass; -import fr.ifremer.isisfish.datastore.TestIsisH2Config; +import fr.ifremer.isisfish.datastore.AutoMigrationIsisH2Config; import fr.ifremer.isisfish.util.ClasspathTemplateLoader; import freemarker.cache.TemplateLoader; import freemarker.ext.beans.BeansWrapper; @@ -98,7 +98,7 @@ // install a new topia migration service callback // to not ask for user for migration during test - TestIsisH2Config.setTestMigrationCallBack(); + AutoMigrationIsisH2Config.setTestMigrationCallBack(); FileUtils.copyDirectory(new File("src/test/resources/test-database"), dirDatabase, new FileFilter() { Modified: isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java =================================================================== --- isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java 2011-03-17 10:30:25 UTC (rev 3169) +++ isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java 2011-03-17 10:32:16 UTC (rev 3170) @@ -65,8 +65,8 @@ SimulationParameter parameters = new SimulationParameterImpl(); SimulationStorage simulation = SimulationStorage.create("testdao", parameters); - TopiaContext rootContext = simulation.getStorage(); + TopiaContext rootContext = simulation.getStorage(false); TopiaContext context = rootContext.beginTransaction(); context.createSchema(); Modified: isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java =================================================================== --- isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java 2011-03-17 10:30:25 UTC (rev 3169) +++ isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java 2011-03-17 10:32:16 UTC (rev 3170) @@ -125,7 +125,7 @@ SimulationContext context = SimulationContext.get(); SimulationParameter params = new SimulationParameterImpl(); SimulationStorage simulation = SimulationStorage.create("test_1_int", params); - TopiaContext storageContext = simulation.getStorage(); + TopiaContext storageContext = simulation.getStorage(false); storageContext.createSchema(); TopiaContext childStorageContext = storageContext.beginTransaction(); VesselTypeDAO vesselTypeDAO = IsisFishDAOHelper.getVesselTypeDAO(childStorageContext); @@ -225,7 +225,7 @@ SimulationContext context = SimulationContext.get(); SimulationParameter params = new SimulationParameterImpl(); SimulationStorage simulation = SimulationStorage.create("test_2_matrix", params); - TopiaContext storageContext = simulation.getStorage(); + TopiaContext storageContext = simulation.getStorage(false); storageContext.createSchema(); TopiaContext childStorageContext = storageContext.beginTransaction(); PopulationSeasonInfoDAO populationSeasonInfoDAO = IsisFishDAOHelper.getPopulationSeasonInfoDAO(childStorageContext);