1 package fr.ifremer.quadrige2.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.quadrige2.core.config.Quadrige2Configuration;
28 import fr.ifremer.quadrige2.core.dao.technical.Daos;
29 import fr.ifremer.quadrige2.core.exception.Quadrige2TechnicalException;
30 import fr.ifremer.quadrige2.core.service.DatabaseSchemaService;
31 import fr.ifremer.quadrige2.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 import java.io.IOException;
38
39
40
41
42 public class DatabaseChangeLogAction {
43
44 private static final Log log = LogFactory.getLog(DatabaseChangeLogAction.class);
45
46
47
48
49 public void run() {
50 Quadrige2Configuration config = Quadrige2Configuration.getInstance();
51
52 if (log.isInfoEnabled()) {
53 log.info("Starting change log file generation...");
54 }
55 ActionUtils.logConnectionProperties();
56
57 boolean isValidConnection = Daos.isValidConnectionProperties(config.getJdbcDriver(),
58 config.getJdbcURL(),
59 config.getJdbcUsername(),
60 config.getJdbcPassword());
61
62 if (!isValidConnection) {
63 log.warn("Connection error: could not generate changelog file.");
64 return;
65 }
66 DatabaseSchemaService databaseSchemaService = ServiceLocator.instance().getService("databaseSchemaService", DatabaseSchemaService.class);
67
68
69 if (!databaseSchemaService.isDbLoaded()) {
70 log.warn("Database not start ! Could not generate changelog file.");
71 return;
72 }
73
74 try {
75 Version actualDbVersion = databaseSchemaService.getDbVersion();
76 if (actualDbVersion != null) {
77 log.info("Database schema version is: " + actualDbVersion.toString());
78 }
79
80 Version modelVersion = config.getVersion();
81 log.info("Model version is: " + modelVersion.toString());
82 } catch (Quadrige2TechnicalException e) {
83 log.error("Error while getting versions.", e);
84 }
85
86 File outputFile = ActionUtils.checkAndGetOutputFile(false, this.getClass());
87
88 try {
89 log.info("Launching changelog file generation...");
90 databaseSchemaService.generateDiffChangeLog(outputFile);
91 if (outputFile != null) {
92 log.info(String.format("Database changelog file successfullly generated at %s", outputFile));
93 }
94 else {
95 log.info("Database changelog file successfullly generated.");
96 }
97 } catch (Quadrige2TechnicalException e) {
98 log.error("Error while generating changelog file.", e);
99 } catch (IOException e) {
100 log.error("Error while generating changelog file.", e);
101 }
102 }
103 }