1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.migration.commands;
17
18 import java.math.BigDecimal;
19
20 import org.apache.ibatis.migration.MigrationException;
21 import org.apache.ibatis.migration.operations.VersionOperation;
22 import org.apache.ibatis.migration.options.SelectedOptions;
23
24 public final class VersionCommand extends BaseCommand {
25 public VersionCommand(SelectedOptions options) {
26 super(options);
27 }
28
29 @Override
30 public void execute(String... params) {
31 ensureParamsPassed(params);
32 ensureNumericParam(params);
33
34 VersionOperation operation = new VersionOperation(new BigDecimal(params[0]));
35 operation.operate(getConnectionProvider(), getMigrationLoader(), getDatabaseOperationOption(), printStream,
36 createUpHook(), createDownHook());
37 }
38
39 private void ensureParamsPassed(String... params) {
40 if (paramsEmpty(params)) {
41 throw new MigrationException("No target version specified for migration.");
42 }
43 }
44
45 private void ensureNumericParam(String... params) {
46 try {
47 new BigDecimal(params[0]);
48 } catch (Exception e) {
49 throw new MigrationException("The version number must be a numeric integer. " + e, e);
50 }
51 }
52 }