View Javadoc
1   package org.kuali.coeus.dc;
2   
3   public class CliOptions {
4   
5       private String[] args;
6   
7       public CliOptions(String[] args) {
8           this.args = args;
9       }
10  
11      public boolean isValid() {
12          boolean valid = args != null && args.length > 0;
13          if (valid && (containsHelp() || containsVersion())) {
14              return true;
15          }
16  
17          if (valid && (containsValidate() && !"".equals(getCoeusConnectionString()) && !"".equals(getRiceConnectionString()))) {
18              return true;
19          }
20  
21          if (valid && (containsProposalPersonRole() && !"".equals(getCoeusConnectionString()) && !"".equals(getRiceConnectionString()))) {
22              return true;
23          }
24  
25          if (valid && (containsProposal() && !"".equals(getCoeusConnectionString()) && !"".equals(getRiceConnectionString()))) {
26              return true;
27          }
28  
29          if (valid && (containsIrb() && !"".equals(getCoeusConnectionString()) && !"".equals(getRiceConnectionString()))) {
30              return true;
31          }
32  
33          if (valid && (containsIacuc() && !"".equals(getCoeusConnectionString()) && !"".equals(getRiceConnectionString()))) {
34              return true;
35          }
36  
37          if (valid && (inactivateCleanupPolicy() || deleteCleanupPolicy())) {
38              return true;
39          }
40  
41          return false;
42      }
43  
44      public boolean containsHelp() {
45          return contains("-help");
46      }
47  
48      public boolean containsVersion() {
49          return contains("-version");
50      }
51  
52      public boolean containsDebug() {
53          return contains("-debug");
54      }
55  
56      public boolean containsDryRun() {
57          return contains("-dryrun");
58      }
59  
60      public boolean containsValidate() {
61          return contains("-validate");
62      }
63  
64      public boolean containsProposalPersonRole() {
65          return contains("pprole");
66      }
67  
68      public boolean containsProposal() {
69          return contains("proposal");
70      }
71  
72      public boolean containsIrb() {
73          return contains("irb");
74      }
75  
76      public boolean containsIacuc() {
77          return contains("iacuc");
78      }
79  
80      private boolean contains(String name) {
81          for (String arg : args) {
82              if (name.equals(arg)) {
83                  return true;
84              }
85          }
86          return false;
87      }
88  
89      private String nextArg(String name) {
90          boolean returnNext = false;
91          for (String arg : args) {
92              if (returnNext) {
93                  return arg;
94              }
95  
96              if (name.equals(arg)) {
97                  returnNext = true;
98              }
99          }
100         return "";
101     }
102 
103     public String getCoeusConnectionString() {
104         if (contains("-dbcoeuscon")) {
105             return nextArg("-dbcoeuscon");
106         }
107         return "";
108     }
109 
110     public String getRiceConnectionString() {
111         if (contains("-dbricecon")) {
112             return nextArg("-dbricecon");
113         }
114         return "";
115     }
116 
117     public String getCoeusUser() {
118         if (contains("-dbcoeususer")) {
119             return nextArg("-dbcoeususer");
120         }
121         return "";
122     }
123     public String getCoeusPassword() {
124         if (contains("-dbcoeuspwd")) {
125             return nextArg("-dbcoeuspwd");
126         }
127         return "";
128     }
129     public String getRiceUser() {
130         if (contains("-dbriceuser")) {
131             return nextArg("-dbriceuser");
132         }
133         return "";
134     }
135     public String getRicePassword() {
136         if (contains("-dbricepwd")) {
137             return nextArg("-dbricepwd");
138         }
139         return "";
140     }
141     public String getCleanupPolicy() {
142         if (contains("-cleanup")) {
143             return nextArg("-cleanup");
144         }
145         return "inactivate";
146     }
147 
148     public boolean deleteCleanupPolicy() {
149         return getCleanupPolicy().equals("delete");
150     }
151 
152     public boolean inactivateCleanupPolicy() {
153         return getCleanupPolicy().equals("inactivate");
154     }
155 
156     public boolean isMySql() {
157         if (contains("-platform") && "MySql".equalsIgnoreCase(nextArg("-platform"))) {
158             return true;
159         } else if (contains("-dbricecon") && nextArg("-dbricecon").startsWith("jdbc:mysql")) {
160             return true;
161         } else if (contains("-dbcoeuscon") && nextArg("-dbcoeuscon").startsWith("jdbc:mysql")) {
162             return true;
163         }
164 
165         return false;
166     }
167 
168     public boolean isOracle() {
169         if (contains("-platform") && "Oracle".equalsIgnoreCase(nextArg("-platform"))) {
170             return true;
171         } else if (contains("-dbricecon") && nextArg("-dbricecon").startsWith("jdbc:oracle")) {
172             return true;
173         } else if (contains("-dbcoeuscon") && nextArg("-dbcoeuscon").startsWith("jdbc:oracle")) {
174             return true;
175         }
176 
177         return false;
178     }
179 
180     public String getCliHelpString() {
181         return "coeus-data-conv [options] [conv_target [conv_target2 [conv_target3] ...]]\n"
182                 + "  Options:\n"
183                 + "  -help                    print this message\n"
184                 + "  -version                 print the version information and exit\n"
185                 + "  -dryrun                  executes conversion without writing out to the database\n"
186                 + "  -validate                validates database connections only\n"
187                 + "  -debug                   print debugging information\n"
188                 + "  -cleanup <policy>        the policy used for data cleanup (delete|inactivate)\n"
189                 + "  -dbplatform <platform>   the database platform (MySql|Oracle)\n"
190                 + "  -dbricecon <connection>  the kuali rice jdbc database connection string (jdbc:mysql://localhost/rice?user=usr&password=pwd)\n"
191                 + "  -dbcoeuscon <connection> the kuali coeus jdbc database connection string (jdbc:mysql://localhost/coeus?user=usr&password=pwd)\n"
192                 + "  -dbriceuser <ricedbuser>  the kuali rice database user\n"
193                 + "  -dbricepwd <ricerbpassword> the kuali rice database password\n"
194                 + "  -dbcoeususer <coeususer>  the kuali coeus database user\n"
195                 + "  -dbcoeuspwd <coeuspassword> the kuali coeus database password\n"
196                 + "\n"
197                 + "If platform is not specified then the platform will be autodetected from the connection strings.\n"
198                 + "\n"
199                 + "The valid conversion targets are (proposal|irb|iacuc|pprole).\n"
200                 + "\n"
201                 + "The dryrun flag may still cause database sequences to increment.\n"
202                 + "\n"
203                 + "The cleanup flag when choosing inactivate will attempt to set the active flag to false when possible.  This is the default. ";
204     }
205 
206 }