15 * You should have received a copy of the GNU General Public License |
15 * You should have received a copy of the GNU General Public License |
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 */ |
17 */ |
18 package info.globalcode.sql.dk; |
18 package info.globalcode.sql.dk; |
19 |
19 |
|
20 import info.globalcode.sql.dk.CLIOptions.MODE; |
20 import java.util.logging.Level; |
21 import java.util.logging.Level; |
21 import java.util.logging.Logger; |
22 import java.util.logging.Logger; |
22 |
23 |
23 /** |
24 /** |
24 * |
25 * |
25 * @author Ing. František Kučera (frantovo.cz) |
26 * @author Ing. František Kučera (frantovo.cz) |
26 */ |
27 */ |
27 public class CLIStarter { |
28 public class CLIStarter implements ConfigurationProvider { |
28 |
29 |
29 private static final Logger log = Logger.getLogger(CLIStarter.class.getName()); |
30 private static final Logger log = Logger.getLogger(CLIStarter.class.getName()); |
|
31 private CLIOptions options; |
|
32 private Configuration configuration; |
30 |
33 |
31 public static void main(String[] args) { |
34 public static void main(String[] args) { |
32 try { |
35 try { |
33 /** Parse options */ |
|
34 CLIParser parser = new CLIParser(); |
36 CLIParser parser = new CLIParser(); |
35 CLIOptions options = parser.parseOptions(args); |
37 CLIOptions options = parser.parseOptions(args); |
36 |
|
37 options.validate(); |
38 options.validate(); |
38 |
39 CLIStarter starter = new CLIStarter(options); |
39 /** Show info */ |
40 starter.process(); |
40 if (!options.getShowInfo().isEmpty()) { |
|
41 InfoLister infoLister = new InfoLister(System.err); |
|
42 infoLister.showInfo(options); |
|
43 } |
|
44 |
|
45 } catch (CLIParserException e) { |
41 } catch (CLIParserException e) { |
46 log.log(Level.SEVERE, "Unable to parse CLI options", e); |
42 log.log(Level.SEVERE, "Unable to parse CLI options", e); |
47 } catch (InvalidOptionsException e) { |
43 } catch (InvalidOptionsException e) { |
48 log.log(Level.SEVERE, "Invalid CLI options", e); |
44 log.log(Level.SEVERE, "Invalid CLI options", e); |
49 } |
45 } |
50 } |
46 } |
|
47 |
|
48 public CLIStarter(CLIOptions options) { |
|
49 this.options = options; |
|
50 } |
|
51 |
|
52 private void process() { |
|
53 /** Show info */ |
|
54 if (!options.getShowInfo().isEmpty()) { |
|
55 InfoLister infoLister = new InfoLister(System.err, this); |
|
56 infoLister.showInfo(options); |
|
57 } |
|
58 |
|
59 MODE mode = options.getMode(); |
|
60 switch (mode) { |
|
61 case QUERY_NOW: |
|
62 break; |
|
63 case PREPARE_BATCH: |
|
64 break; |
|
65 case EXECUTE_BATCH: |
|
66 break; |
|
67 case JUST_SHOW_INFO: |
|
68 // already done above |
|
69 break; |
|
70 default: |
|
71 log.log(Level.SEVERE, "Unsupported mode: {0}", mode); |
|
72 break; |
|
73 } |
|
74 } |
|
75 |
|
76 @Override |
|
77 public Configuration getConfiguration() { |
|
78 if (configuration == null) { |
|
79 installDefaultConfiguration(); |
|
80 configuration = loadConfiguration(); |
|
81 } |
|
82 return configuration; |
|
83 } |
|
84 |
|
85 private void installDefaultConfiguration() { |
|
86 /** |
|
87 * TODO: check config folder/file and create it if missing |
|
88 */ |
|
89 } |
|
90 |
|
91 private Configuration loadConfiguration() { |
|
92 /** |
|
93 * TODO: load configuration from XML |
|
94 */ |
|
95 return null; |
|
96 } |
51 } |
97 } |