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 import net.sumaris.core.config.SumarisConfiguration;
28 import net.sumaris.core.dao.technical.Daos;
29 import net.sumaris.core.exception.SumarisTechnicalException;
30 import net.sumaris.core.exception.VersionNotFoundException;
31 import net.sumaris.core.service.ServiceLocator;
32 import net.sumaris.core.service.schema.DatabaseSchemaService;
33 import org.nuiton.i18n.I18n;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
36 import org.nuiton.version.Version;
37
38 import java.io.File;
39
40
41
42
43
44 public class DatabaseGenerateChangeLogAction {
45
46 private static final Logger log = LoggerFactory.getLogger(DatabaseCreateSchemaAction.class);
47
48
49
50
51 public void run() {
52 SumarisConfiguration config = SumarisConfiguration.getInstance();
53 DatabaseSchemaService service = ServiceLocator.instance().getDatabaseSchemaService();
54
55 log.info("Starting change log file generation...");
56 ActionUtils.logConnectionProperties();
57
58
59 if (!service.isDbLoaded()) {
60 log.warn("Could not generate changelog file: database seems to be empty !");
61 return;
62 }
63
64 try {
65 Version actualDbVersion = service.getDbVersion();
66 if (actualDbVersion != null) {
67 log.info(I18n.t("sumaris.persistence.schemaVersion", actualDbVersion.toString()));
68 }
69
70 Version modelVersion = config.getVersion();
71 log.info(I18n.t("sumaris.persistence.modelVersion", modelVersion.toString()));
72 } catch (SumarisTechnicalException e) {
73 log.error("Error while getting versions.", e);
74 }
75
76 File outputFile = ActionUtils.checkAndGetOutputFile(false, this.getClass());
77
78 try {
79 log.info("Launching changelog file generation...");
80 service.generateDiffChangeLog(outputFile);
81 if (outputFile != null) {
82 log.info(String.format("Database changelog file successfully generated at %s", outputFile));
83 }
84 else {
85 log.info("Database changelog file successfully generated.");
86 }
87 } catch (SumarisTechnicalException e) {
88 log.error("Error while generating changelog file.", e);
89 }
90 }
91 }