From fcbf7066f0a3d076670b5cff5232f36bd2d7a8c7 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Sun, 6 Nov 2016 15:33:12 +0100 Subject: [PATCH] The content of the generated script is checked for modifications as well This enables the plugin to automatically generate the SQL if the generated script is missing (or was exidentically changed, for example by repository operations). --- .../plugins/hibernate/AbstractSchemaMojo.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java b/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java index 6f224b09..e99aea4a 100644 --- a/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java +++ b/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java @@ -10,6 +10,7 @@ import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.security.NoSuchAlgorithmException; +import java.time.ZonedDateTime; import java.util.Collections; import java.util.EnumSet; import java.util.HashMap; @@ -95,6 +96,7 @@ public abstract class AbstractSchemaMojo extends AbstractMojo public final static String SCAN_TESTCLASSES = "hibernate.schema.scan.test_classes"; public final static String TEST_OUTPUTDIRECTORY = "project.build.testOutputDirectory"; public final static String SKIPPED = "hibernate.schema.skipped"; + public final static String SCRIPT = "hibernate.schema.script"; private final static Pattern SPLIT = Pattern.compile("[^,\\s]+"); @@ -504,6 +506,8 @@ public abstract class AbstractSchemaMojo extends AbstractMojo /** Check, that the outputfile is writable */ final File output = getOutputFile(filename); + /** Check, if the outputfile is missing or was changed */ + checkOutputFile(output, tracker); /** Configure Hibernate */ final StandardServiceRegistry serviceRegistry = @@ -735,6 +739,8 @@ public abstract class AbstractSchemaMojo extends AbstractMojo thread.setContextClassLoader(contextClassLoader); for (Exception e : handler.getExceptions()) getLog().error(e.getMessage()); + /** Track, the content of the generated script */ + checkOutputFile(output, tracker); } } catch (MojoExecutionException e) @@ -1078,6 +1084,26 @@ public abstract class AbstractSchemaMojo extends AbstractMojo return output; } + private void checkOutputFile(File output, ModificationTracker tracker) + throws + MojoExecutionException + { + try + { + if (output.exists()) + tracker.track(SCRIPT, new FileInputStream(output)); + else + tracker.track(SCRIPT, ZonedDateTime.now().toString()); + } + catch (IOException e) + { + String error = + "Error while checking the generated script: " + e.getMessage(); + getLog().error(error); + throw new MojoExecutionException(error); + } + } + private void addMappings(MetadataSources sources, ModificationTracker tracker) throws MojoFailureException { -- 2.20.1