1 package fr.ifremer.quadrige3.core;
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 import fr.ifremer.common.synchro.config.SynchroConfiguration;
27 import fr.ifremer.common.synchro.config.SynchroConfigurationOption;
28 import fr.ifremer.quadrige3.core.config.QuadrigeConfiguration;
29 import fr.ifremer.quadrige3.core.config.QuadrigeConfigurationOption;
30 import fr.ifremer.quadrige3.core.exception.QuadrigeTechnicalException;
31 import fr.ifremer.quadrige3.core.service.ServiceLocator;
32 import org.apache.commons.io.FileUtils;
33 import org.apache.commons.io.IOUtils;
34 import org.apache.commons.logging.Log;
35 import org.apache.commons.logging.LogFactory;
36 import org.nuiton.config.ApplicationConfig;
37 import org.nuiton.i18n.I18n;
38 import org.nuiton.i18n.init.DefaultI18nInitializer;
39 import org.nuiton.i18n.init.UserI18nInitializer;
40
41 import java.io.File;
42 import java.io.IOException;
43 import java.util.Arrays;
44 import java.util.Locale;
45
46
47
48
49
50
51
52 public class QuadrigeCoreMain {
53
54
55 private static final Log log = LogFactory.getLog(QuadrigeCoreMain.class);
56
57
58
59
60
61
62
63
64
65 public static void main(String[] args) {
66 if (log.isInfoEnabled()) {
67 log.info("Starting Quadrige3 :: Core Client with arguments: " + Arrays.toString(args));
68 }
69
70
71 if (args == null || args.length == 0) {
72 args = new String[] { "-h" };
73 }
74
75
76 String configFile = "quadrige3-core.config";
77 if (System.getProperty(configFile) != null) {
78 configFile = System.getProperty(configFile);
79 configFile = configFile.replaceAll("\\\\", "/");
80 }
81
82
83 QuadrigeConfiguration config = new QuadrigeConfiguration(configFile, args) {
84 protected void addAlias(ApplicationConfig applicationConfig) {
85 super.addAlias(applicationConfig);
86
87 applicationConfig.addAlias("-iu", "--option", SynchroConfigurationOption.IMPORT_JDBC_USERNAME.getKey());
88 applicationConfig.addAlias("--import-user", "--option", SynchroConfigurationOption.IMPORT_JDBC_USERNAME.getKey());
89 applicationConfig.addAlias("-ip", "--option", SynchroConfigurationOption.IMPORT_JDBC_PASSWORD.getKey());
90 applicationConfig.addAlias("--import-password", "--option", SynchroConfigurationOption.IMPORT_JDBC_PASSWORD.getKey());
91 applicationConfig.addAlias("-idb", "--option", SynchroConfigurationOption.IMPORT_JDBC_URL.getKey());
92 applicationConfig.addAlias("--import-database", "--option", SynchroConfigurationOption.IMPORT_JDBC_URL.getKey());
93 applicationConfig.addAlias("-is", "--option", SynchroConfigurationOption.IMPORT_JDBC_SCHEMA.getKey());
94 applicationConfig.addAlias("--import-schema", "--option", SynchroConfigurationOption.IMPORT_JDBC_SCHEMA.getKey());
95
96
97 applicationConfig.addAlias("-ny", "--option", QuadrigeConfigurationOption.IMPORT_NB_YEARS_DATA_HISTORY.getKey());
98 applicationConfig.addAlias("--nb-years", "--option", QuadrigeConfigurationOption.IMPORT_NB_YEARS_DATA_HISTORY.getKey());
99 }
100 };
101 QuadrigeConfiguration.setInstance(config);
102
103
104 SynchroConfiguration synchroConfig = new SynchroConfiguration(config.getApplicationConfig());
105 SynchroConfiguration.setInstance(synchroConfig);
106
107
108 try {
109 initI18n(config);
110 } catch (IOException e) {
111 throw new QuadrigeTechnicalException("i18n initialization failed", e);
112 }
113
114 try {
115 config.getApplicationConfig().doAllAction();
116 } catch (Exception e) {
117 e.printStackTrace();
118 }
119
120 IOUtils.closeQuietly(ServiceLocator.instance());
121 }
122
123
124
125
126
127
128
129
130
131
132
133 protected static void initI18n(QuadrigeConfiguration config) throws IOException {
134
135
136
137
138 File i18nDirectory = new File(config.getDataDirectory(), "i18n");
139 if (i18nDirectory.exists()) {
140
141 FileUtils.cleanDirectory(i18nDirectory);
142 }
143
144 FileUtils.forceMkdir(i18nDirectory);
145
146 if (log.isDebugEnabled()) {
147 log.debug("I18N directory: " + i18nDirectory);
148 }
149
150 Locale i18nLocale = config.getI18nLocale();
151
152 if (log.isInfoEnabled()) {
153 log.info(String.format("Starts i18n with locale [%s] at [%s]",
154 i18nLocale, i18nDirectory));
155 }
156 I18n.init(new UserI18nInitializer(
157 i18nDirectory, new DefaultI18nInitializer(getI18nBundleName())),
158 i18nLocale);
159 }
160
161
162
163
164
165
166
167
168 protected static String getI18nBundleName() {
169 return "quadrige3-core-client-i18n";
170 }
171 }