1 package net.sumaris.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
28 import net.sumaris.core.config.SumarisConfiguration;
29 import net.sumaris.core.dao.schema.DatabaseSchemaDao;
30 import net.sumaris.core.dao.schema.DatabaseSchemaDaoImpl;
31 import net.sumaris.core.dao.technical.Daos;
32 import net.sumaris.core.exception.DatabaseSchemaUpdateException;
33 import net.sumaris.core.exception.SumarisTechnicalException;
34 import net.sumaris.core.exception.VersionNotFoundException;
35 import net.sumaris.core.service.ServiceLocator;
36 import net.sumaris.core.service.schema.DatabaseSchemaService;
37 import org.nuiton.version.Version;
38 import org.slf4j.Logger;
39 import org.slf4j.LoggerFactory;
40
41
42
43
44 public class DatabaseUpdateSchemaAction {
45
46 private static final Logger log = LoggerFactory.getLogger(DatabaseUpdateSchemaAction.class);
47
48
49
50
51 public void run() {
52 DatabaseSchemaService service = ServiceLocator.instance().getDatabaseSchemaService();
53
54 log.info("Starting schema update...");
55 ActionUtils.logConnectionProperties();
56
57
58 if (!service.isDbLoaded()) {
59 log.warn("Could not update the schema: database seems to be empty!");
60 return;
61 }
62
63
64 try {
65 Version actualDbVersion = service.getDbVersion();
66
67 if (actualDbVersion == null) {
68 log.warn("Could not get database schema version");
69 }
70 else {
71 log.info(String.format("Database schema version is [%s]", actualDbVersion));
72 }
73
74 } catch (SumarisTechnicalException e) {
75 log.error("Error while getting database version.", e);
76 }
77
78
79 try {
80 Version expectedDbVersion = service.getApplicationVersion();
81 if (expectedDbVersion == null) {
82 log.warn("Unable to get the database schema version AFTER the update. Nothing to update !");
83 return;
84 }
85 log.info(String.format("Database schema version AFTER the update should be [%s]", expectedDbVersion));
86 } catch (SumarisTechnicalException e) {
87 log.error("Error while getting database version AFTER the update.", e);
88 }
89
90
91 try {
92 log.info("Launching update...");
93 service.updateSchema();
94 log.info("Database schema successfully updated.");
95 } catch (SumarisTechnicalException e) {
96 log.error("Error while updating the database schema.", e);
97 }
98 }
99 }