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 import fr.ifremer.quadrige3.core.config.QuadrigeConfiguration;
25 import fr.ifremer.quadrige3.core.dao.technical.Daos;
26 import fr.ifremer.quadrige3.core.exception.QuadrigeTechnicalException;
27 import fr.ifremer.quadrige3.core.service.DatabaseSchemaService;
28 import fr.ifremer.quadrige3.core.service.ServiceLocator;
29 import org.apache.commons.logging.Log;
30 import org.apache.commons.logging.LogFactory;
31 import org.nuiton.version.Version;
32
33 import java.io.File;
34 import java.io.IOException;
35
36
37
38
39 public class DatabaseCreateSchemaAction {
40
41 private static final Log LOG = LogFactory.getLog(DatabaseCreateSchemaAction.class);
42
43 public void run() {
44
45 QuadrigeConfiguration config = QuadrigeConfiguration.getInstance();
46 File outputFile = ActionUtils.checkAndGetOutputFile(false, this.getClass());
47
48 if (LOG.isInfoEnabled()) {
49 LOG.info("Starting generation script file ...");
50 }
51 ActionUtils.logConnectionProperties();
52
53 boolean isValidConnection = Daos.isValidConnectionProperties(config.getJdbcDriver(),
54 config.getJdbcURL(),
55 config.getJdbcUsername(),
56 config.getJdbcPassword());
57
58 if (!isValidConnection) {
59 LOG.warn("Connection error: could not generate script file.");
60 return;
61 }
62 DatabaseSchemaService databaseSchemaService = ServiceLocator.instance().getService("databaseSchemaService", DatabaseSchemaService.class);
63
64 try {
65 Version actualDbVersion = databaseSchemaService.getDbVersion();
66 if (actualDbVersion != null) {
67 LOG.info("Database schema version is: " + actualDbVersion.toString());
68 }
69
70 Version modelVersion = config.getVersion();
71 LOG.info("Model version is: " + modelVersion.toString());
72 } catch (QuadrigeTechnicalException e) {
73 LOG.error("Error while getting versions.", e);
74 }
75
76 try {
77 LOG.info("Launching creation file generation...");
78 databaseSchemaService.createSchemaToFile(outputFile, false);
79 if (outputFile != null) {
80 LOG.info(String.format("Database creation script file successfully generated at %s", outputFile));
81 }
82 else {
83 LOG.info("Database creation script file successfully generated.");
84 }
85 } catch (QuadrigeTechnicalException | IOException e) {
86 LOG.error("Error while generating creation script file.", e);
87 }
88 }
89 }