branch develop updated (44525ee -> f2665e3)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See http://git.codelutin.com/tutti.git from 44525ee amélioration du démarrage de l'application new c4ec765 chargement en lazy du modèle de catégorisation new 8a187b4 do not remove sample category model reference, just dirty it new 865dbb3 add delete on exit hook new 98f931c always work on a copy of db to avoid windows locks on files new f2665e3 fixes #6541 The 5 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit f2665e3dc9d29653da66bc24f998a87e336f6777 Merge: 44525ee 98f931c Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 2 16:15:49 2015 +0100 fixes #6541 commit 98f931c08dcff357b92036892a8f3bf379710ced Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 2 16:14:52 2015 +0100 always work on a copy of db to avoid windows locks on files commit 865dbb35341d0460f5283625c4764c4f24e337ae Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 2 16:12:41 2015 +0100 add delete on exit hook commit 8a187b4b2b2d3811f546f5b9bd583669a40fa6a0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 2 16:11:46 2015 +0100 do not remove sample category model reference, just dirty it commit c4ec765a2e90776cf54f0c4c1c33c662fc49d59b Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 2 14:52:15 2015 +0100 chargement en lazy du modèle de catégorisation Summary of changes: .../fr/ifremer/tutti/service/TuttiDataContext.java | 41 ++++++++--- .../tutti/ui/swing/updater/DeleteHelper.java | 27 ++++++++ .../action/SaveSampleCategoryModelAction.java | 2 +- .../ui/swing/update/module/DbModuleUpdater.java | 79 +++++++++++++++++----- 4 files changed, 120 insertions(+), 29 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit c4ec765a2e90776cf54f0c4c1c33c662fc49d59b Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 2 14:52:15 2015 +0100 chargement en lazy du modèle de catégorisation --- .../fr/ifremer/tutti/service/TuttiDataContext.java | 38 +++++++++++++++++----- .../action/SaveSampleCategoryModelAction.java | 2 +- .../ui/swing/update/module/DbModuleUpdater.java | 14 +++++--- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java index 3fc6ca6..94b23af 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java @@ -115,6 +115,13 @@ public class TuttiDataContext extends AbstractBean implements Closeable { */ protected SampleCategoryModel sampleCategoryModel; + /** + * Flag to reload sampleCategoryModel in lazy mode. + * + * @since 3.13 + */ + protected boolean dirtySampleCategoryModel; + protected Program program; protected Cruise cruise; @@ -191,7 +198,7 @@ public class TuttiDataContext extends AbstractBean implements Closeable { PersistenceService persistenceService = this.service; // Check there is a persistence service injected - Preconditions.checkState(persistenceService != null); + Preconditions.checkNotNull(persistenceService, "Can't have a null persistence service."); // Close data context close(); @@ -226,7 +233,7 @@ public class TuttiDataContext extends AbstractBean implements Closeable { } } - loadSampleCategoryModel(config.getSampleCategoryModel()); + setSampleCategoryModel(config.getSampleCategoryModel()); } @Override @@ -364,9 +371,28 @@ public class TuttiDataContext extends AbstractBean implements Closeable { } public SampleCategoryModel getSampleCategoryModel() { + if (dirtySampleCategoryModel) { + + try { + if (log.isInfoEnabled()) { + log.info("Loading sampleCategoryModel: " + sampleCategoryModel); + } + sampleCategoryModel.load(service); + } finally { + + dirtySampleCategoryModel = false; + } + + } return sampleCategoryModel; } + public void setSampleCategoryModel(SampleCategoryModel sampleCategoryModel) { + Preconditions.checkNotNull(sampleCategoryModel, "Can't get a null sampleCategoryModel"); + this.sampleCategoryModel = sampleCategoryModel; + this.dirtySampleCategoryModel = true; + } + public String getProgramId() { return programId; } @@ -629,7 +655,7 @@ public class TuttiDataContext extends AbstractBean implements Closeable { // use the first category Integer categoryId = speciesProtocol.getMandatorySampleCategoryId().get(0); - selectedCategory = sampleCategoryModel.getCategoryById(categoryId); + selectedCategory = getSampleCategoryModel().getCategoryById(categoryId); if (categories.contains(selectedCategory)) { @@ -836,12 +862,6 @@ public class TuttiDataContext extends AbstractBean implements Closeable { deadOrAliveValues = null; } - public void loadSampleCategoryModel(SampleCategoryModel sampleCategoryModel) { - Preconditions.checkNotNull(sampleCategoryModel,"Can't get a null sampleCategoryModel"); - this.sampleCategoryModel = sampleCategoryModel; - sampleCategoryModel.load(service); - } - protected void checkOpened() { Preconditions.checkState(service != null, "No persistence service assigned!"); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveSampleCategoryModelAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveSampleCategoryModelAction.java index 68d3dcb..3a71477 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveSampleCategoryModelAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveSampleCategoryModelAction.java @@ -60,7 +60,7 @@ public class SaveSampleCategoryModelAction extends AbstractTuttiAction<EditSampl getConfig().save(); - getDataContext().loadSampleCategoryModel(bean); + getDataContext().setSampleCategoryModel(bean); model.setModify(false); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/update/module/DbModuleUpdater.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/update/module/DbModuleUpdater.java index 266eac1..8b63a46 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/update/module/DbModuleUpdater.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/update/module/DbModuleUpdater.java @@ -117,7 +117,7 @@ public class DbModuleUpdater extends ModuleUpdaterSupport { } else if (dbUpdated) { // launch a referential synchronize operation - synchronizetDatabase(context, info); + synchronizeDatabase(context, info); } @@ -149,7 +149,7 @@ public class DbModuleUpdater extends ModuleUpdaterSupport { } } - protected void synchronizetDatabase(TuttiUIContext context, ApplicationInfo info) { + protected void synchronizeDatabase(TuttiUIContext context, ApplicationInfo info) { if (log.isInfoEnabled()) { log.info(String.format("A database update was downloaded (oldVersion: %s, newVersion: %s), will launch a referential synchronize operation ", info.oldVersion, info.newVersion)); @@ -184,12 +184,18 @@ public class DbModuleUpdater extends ModuleUpdaterSupport { persistence.clearAllCaches(); // clean data context + SampleCategoryModel sampleCategoryModel = context.getConfig().getSampleCategoryModel(); + if (log.isInfoEnabled()) { + log.info("SampleCategoryModel to reload: " + sampleCategoryModel); + } if (log.isInfoEnabled()) { log.info("Clean data context."); } - SampleCategoryModel sampleCategoryModel = context.getDataContext().getSampleCategoryModel(); context.getDataContext().clearContext(); - context.getDataContext().loadSampleCategoryModel(sampleCategoryModel); + if (log.isInfoEnabled()) { + log.info("SampleCategoryModel to reload (after clearContext): " + sampleCategoryModel); + } + context.getDataContext().setSampleCategoryModel(sampleCategoryModel); // replace the version.appup file content File target = context.getConfig().getDbDirectory(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 8a187b4b2b2d3811f546f5b9bd583669a40fa6a0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 2 16:11:46 2015 +0100 do not remove sample category model reference, just dirty it --- .../src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java index 94b23af..9a3a1bc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java @@ -246,7 +246,8 @@ public class TuttiDataContext extends AbstractBean implements Closeable { program = null; cruise = null; fishingOperation = null; - sampleCategoryModel = null; + //sampleCategoryModel = null; + dirtySampleCategoryModel = true; resetProtocol(); resetVessels(); resetGears(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 865dbb35341d0460f5283625c4764c4f24e337ae Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 2 16:12:41 2015 +0100 add delete on exit hook --- .../tutti/ui/swing/updater/DeleteHelper.java | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tutti-ui-swing-updater/src/main/java/fr/ifremer/tutti/ui/swing/updater/DeleteHelper.java b/tutti-ui-swing-updater/src/main/java/fr/ifremer/tutti/ui/swing/updater/DeleteHelper.java index bddf87a..6ca1fdd 100644 --- a/tutti-ui-swing-updater/src/main/java/fr/ifremer/tutti/ui/swing/updater/DeleteHelper.java +++ b/tutti-ui-swing-updater/src/main/java/fr/ifremer/tutti/ui/swing/updater/DeleteHelper.java @@ -68,6 +68,13 @@ public class DeleteHelper { } } + public static void deleteDirectoryOnExit(Path path) throws IOException { + if (Files.isDirectory(path)) { + DeleteDirectoryOnExit deleteDirectory = new DeleteDirectoryOnExit(); + Files.walkFileTree(path, deleteDirectory); + } + } + /** * To delete the given directory. */ @@ -89,6 +96,26 @@ public class DeleteHelper { } /** + * To delete the given directory on exit. + */ + public static class DeleteDirectoryOnExit extends SimpleFileVisitor<Path> { + + @Override + public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { + System.out.println("Delete directory on exit: " + dir); + dir.toFile().deleteOnExit(); + return FileVisitResult.CONTINUE; + } + + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + file.toFile().deleteOnExit(); + return FileVisitResult.CONTINUE; + } + + } + + /** * To delete all files that are matching the given matcher. */ public static class DeleteFiles extends SimpleFileVisitor<Path> { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 98f931c08dcff357b92036892a8f3bf379710ced Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 2 16:14:52 2015 +0100 always work on a copy of db to avoid windows locks on files --- .../ui/swing/update/module/DbModuleUpdater.java | 69 +++++++++++++++++----- 1 file changed, 53 insertions(+), 16 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/update/module/DbModuleUpdater.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/update/module/DbModuleUpdater.java index 8b63a46..96731d6 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/update/module/DbModuleUpdater.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/update/module/DbModuleUpdater.java @@ -31,10 +31,12 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.referential.TuttiReferentialSynchronizeService; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.updater.DeleteHelper; import fr.ifremer.tutti.ui.swing.updater.UpdateModule; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.ApplicationIOUtil; import org.nuiton.jaxx.application.ApplicationTechnicalException; import org.nuiton.jaxx.application.swing.action.ApplicationActionUI; import org.nuiton.jaxx.application.type.ApplicationProgressionModel; @@ -105,19 +107,34 @@ public class DbModuleUpdater extends ModuleUpdaterSupport { if (log.isInfoEnabled()) { log.info(String.format( - "A db update was downloaded (oldVersion: %s, newVersion: %s), will restart application to use it", + "A db update was downloaded (oldVersion: %s, newVersion: %s).", info.oldVersion, info.newVersion)); } - if (dbInstalled) { + if (dbInstalled || dbUpdated) { - // first database, just copy it to correct directory - prepareFirstDatabase(context, info); + File source = getDbDirectory(info); - } else if (dbUpdated) { + if (dbInstalled) { - // launch a referential synchronize operation - synchronizeDatabase(context, info); + // first database, just copy it to correct directory + prepareFirstDatabase(context, info, source); + + } else if (dbUpdated) { + + // launch a referential synchronize operation + synchronizeDatabase(context, info, source); + + } + + if (log.isInfoEnabled()) { + log.info("Delete update directory: " + source); + } + try { + FileUtils.deleteDirectory(source); + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.applicationUpdater.prepareFirstDB.deleteDirectory.error", source), e); + } } @@ -128,28 +145,26 @@ public class DbModuleUpdater extends ModuleUpdaterSupport { return t("tutti.update.db"); } - protected void prepareFirstDatabase(TuttiUIContext context, ApplicationInfo info) { + protected void prepareFirstDatabase(TuttiUIContext context, ApplicationInfo info, File source) { + if (log.isInfoEnabled()) { log.info("First time database was downloaded at version: " + info.newVersion); } - File source = getDbDirectory(info); + File target = context.getConfig().getDbDirectory(); if (log.isInfoEnabled()) { log.info("Copy from " + source + " to " + target); } + try { FileUtils.copyDirectory(source, target); } catch (IOException e) { throw new ApplicationTechnicalException(t("tutti.applicationUpdater.prepareFirstDB.copyDirectory.error", source, target), e); } - try { - FileUtils.deleteDirectory(source.getParentFile()); - } catch (IOException e) { - throw new ApplicationTechnicalException(t("tutti.applicationUpdater.prepareFirstDB.deleteDirectory.error", target), e); - } + } - protected void synchronizeDatabase(TuttiUIContext context, ApplicationInfo info) { + protected void synchronizeDatabase(TuttiUIContext context, ApplicationInfo info, File source) { if (log.isInfoEnabled()) { log.info(String.format("A database update was downloaded (oldVersion: %s, newVersion: %s), will launch a referential synchronize operation ", info.oldVersion, info.newVersion)); @@ -157,7 +172,7 @@ public class DbModuleUpdater extends ModuleUpdaterSupport { TuttiReferentialSynchronizeService service = context.getTuttiReferentialSynchronizeService(); - File dbDirectory = getDbDirectory(info); + File dbDirectory = getDbDirectoryCopy(source); ReferentialSynchroContext synchroContext = service.createSynchroContext(dbDirectory); ReferentialSynchroResult result = synchroContext.getResult(); @@ -219,6 +234,28 @@ public class DbModuleUpdater extends ModuleUpdaterSupport { return result; } + protected File getDbDirectoryCopy(File source) { + + File temporaryDirectory = ApplicationIOUtil.createTemporaryDirectory(this.toString()); + File[] files = source.listFiles(); + if (files != null) { + + for (File file : files) { + ApplicationIOUtil.copyFileToDirectory(file, temporaryDirectory, "Can't copy file " + file + " to directory " + temporaryDirectory); + } + + } + + try { + DeleteHelper.deleteDirectoryOnExit(temporaryDirectory.toPath()); + } catch (IOException e) { + throw new ApplicationTechnicalException("Can't mark directory " + temporaryDirectory + "to be deleted on exit", e); + } + + return temporaryDirectory; + + } + private static class DelegateProgressionModel extends ApplicationProgressionModel { private static final long serialVersionUID = 1L; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit f2665e3dc9d29653da66bc24f998a87e336f6777 Merge: 44525ee 98f931c Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 2 16:15:49 2015 +0100 fixes #6541 .../fr/ifremer/tutti/service/TuttiDataContext.java | 41 ++++++++--- .../tutti/ui/swing/updater/DeleteHelper.java | 27 ++++++++ .../action/SaveSampleCategoryModelAction.java | 2 +- .../ui/swing/update/module/DbModuleUpdater.java | 79 +++++++++++++++++----- 4 files changed, 120 insertions(+), 29 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm