1 package fr.ifremer.quadrige3.core.action;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import fr.ifremer.quadrige3.core.config.QuadrigeConfiguration;
28 import fr.ifremer.quadrige3.core.dao.technical.Daos;
29 import fr.ifremer.quadrige3.core.exception.QuadrigeTechnicalException;
30 import fr.ifremer.quadrige3.core.service.DatabaseSchemaService;
31 import fr.ifremer.quadrige3.core.service.ServiceLocator;
32 import org.apache.commons.logging.Log;
33 import org.apache.commons.logging.LogFactory;
34 import org.nuiton.version.Version;
35
36 import java.io.File;
37
38
39
40
41 public class DatabaseGenerateChangeLogAction {
42
43 private static final Log log = LogFactory.getLog(DatabaseGenerateChangeLogAction.class);
44
45
46
47
48 public void run() {
49 QuadrigeConfiguration config = QuadrigeConfiguration.getInstance();
50
51 if (log.isInfoEnabled()) {
52 log.info("Starting change log file generation...");
53 }
54 ActionUtils.logConnectionProperties();
55
56 boolean isValidConnection = Daos.isValidConnectionProperties(config.getJdbcDriver(),
57 config.getJdbcURL(),
58 config.getJdbcUsername(),
59 config.getJdbcPassword());
60
61 if (!isValidConnection) {
62 log.warn("Connection error: could not generate changelog file.");
63 return;
64 }
65 DatabaseSchemaService databaseSchemaService = ServiceLocator.instance().getService("databaseSchemaService", DatabaseSchemaService.class);
66
67
68 if (!databaseSchemaService.isDbLoaded()) {
69 log.warn("Database not start ! Could not generate changelog file.");
70 return;
71 }
72
73 try {
74 Version actualDbVersion = databaseSchemaService.getDbVersion();
75 if (actualDbVersion != null) {
76 log.info("Database schema version is: " + actualDbVersion.toString());
77 }
78
79 Version modelVersion = config.getVersion();
80 log.info("Model version is: " + modelVersion.toString());
81 } catch (QuadrigeTechnicalException e) {
82 log.error("Error while getting versions.", e);
83 }
84
85 File outputFile = ActionUtils.checkAndGetOutputFile(false, this.getClass());
86
87 try {
88 log.info("Launching changelog file generation...");
89 databaseSchemaService.generateDiffChangeLog(outputFile);
90 if (outputFile != null) {
91 log.info(String.format("Database changelog file successfully generated at %s", outputFile));
92 }
93 else {
94 log.info("Database changelog file successfully generated.");
95 }
96 } catch (QuadrigeTechnicalException e) {
97 log.error("Error while generating changelog file.", e);
98 }
99 }
100 }