1 package fr.ifremer.tutti.ui.swing.content.db.actions;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import com.google.common.base.Preconditions;
26 import fr.ifremer.tutti.TuttiConfiguration;
27 import fr.ifremer.tutti.persistence.ProgressionModel;
28 import fr.ifremer.tutti.ui.swing.content.actions.AbstractMainUITuttiAction;
29 import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
30 import fr.ifremer.tutti.ui.swing.update.TuttiDbUpdaterCallBack;
31 import fr.ifremer.tutti.ui.swing.update.Updates;
32 import org.apache.commons.logging.Log;
33 import org.apache.commons.logging.LogFactory;
34
35 import java.io.File;
36
37 import static org.nuiton.i18n.I18n.t;
38
39
40
41
42
43
44
45 public class InstallDbAction extends AbstractMainUITuttiAction {
46
47
48 private static final Log log =
49 LogFactory.getLog(InstallDbAction.class);
50
51 protected File backupFile;
52
53 protected boolean doBackup;
54
55 protected String jdbcUrl;
56
57 public InstallDbAction(MainUIHandler handler) {
58 super(handler, true);
59 setActionDescription(t("tutti.dbManager.action.installDb.tip"));
60 }
61
62 @Override
63 public boolean prepareAction() throws Exception {
64 boolean doAction = super.prepareAction();
65
66 if (doAction) {
67
68
69 doAction = getContext().checkUpdateDataReachable(true);
70 }
71
72 if (doAction) {
73
74 ProgressionModel progressionModel = new ProgressionModel();
75 progressionModel.setTotal(2);
76 setProgressionModel(progressionModel);
77 }
78 return doAction;
79 }
80
81 @Override
82 public void doAction() {
83
84 ProgressionModel progressionModel = getProgressionModel();
85
86
87
88
89
90 TuttiConfiguration config = getConfig();
91
92 File current = config.getDataDirectory();
93 String url = config.getUpdateDataUrl();
94
95 if (log.isInfoEnabled()) {
96 log.info(String.format("Try to install / update db (current data location: %s), using update url: %s", current, url));
97 }
98
99 progressionModel.increments(t("tutti.dbManager.action.upgradeDb.check"));
100 TuttiDbUpdaterCallBack callback = new TuttiDbUpdaterCallBack(url, this, progressionModel);
101 Updates.doUpdate(config, callback, current);
102
103 Preconditions.checkState(callback.isDbInstalled());
104
105 progressionModel.increments(t("tutti.dbManager.action.upgradeDb.opening"));
106
107 getContext().setDbExist(true);
108
109
110
111
112
113 getActionEngine().runInternalAction(getHandler(), OpenDbAction.class);
114 }
115 }