aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/com/iciql/util/GenerateModels.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/iciql/util/GenerateModels.java')
-rw-r--r--src/main/java/com/iciql/util/GenerateModels.java290
1 files changed, 140 insertions, 150 deletions
diff --git a/src/main/java/com/iciql/util/GenerateModels.java b/src/main/java/com/iciql/util/GenerateModels.java
index eac9f6c..b8dcaa4 100644
--- a/src/main/java/com/iciql/util/GenerateModels.java
+++ b/src/main/java/com/iciql/util/GenerateModels.java
@@ -17,6 +17,9 @@
package com.iciql.util;
+import com.iciql.Db;
+import com.iciql.DbInspector;
+
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
@@ -29,165 +32,152 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import com.iciql.Db;
-import com.iciql.DbInspector;
-
/**
* Generates iciql models.
*/
public class GenerateModels {
- /**
- * The output stream where this tool writes to.
- */
- protected PrintStream out = System.out;
+ /**
+ * The output stream where this tool writes to.
+ */
+ protected PrintStream out = System.out;
- public static void main(String... args) {
- GenerateModels tool = new GenerateModels();
- try {
- tool.runTool(args);
- } catch (SQLException e) {
- tool.out.print("Error: ");
- tool.out.println(e.getMessage());
- tool.out.println();
- tool.showUsage();
- }
- }
+ public static void main(String... args) {
+ GenerateModels tool = new GenerateModels();
+ try {
+ tool.runTool(args);
+ } catch (SQLException e) {
+ tool.out.print("Error: ");
+ tool.out.println(e.getMessage());
+ tool.out.println();
+ tool.showUsage();
+ }
+ }
- public void runTool(String... args) throws SQLException {
- String url = null;
- String user = "sa";
- String password = "";
- String schema = null;
- String table = null;
- String packageName = "";
- String folder = null;
- boolean annotateSchema = true;
- boolean trimStrings = false;
- for (int i = 0; args != null && i < args.length; i++) {
- String arg = args[i];
- if (arg.equals("-url")) {
- url = args[++i];
- } else if (arg.equals("-user")) {
- user = args[++i];
- } else if (arg.equals("-password")) {
- password = args[++i];
- } else if (arg.equals("-schema")) {
- schema = args[++i];
- } else if (arg.equals("-table")) {
- table = args[++i];
- } else if (arg.equals("-package")) {
- packageName = args[++i];
- } else if (arg.equals("-folder")) {
- folder = args[++i];
- } else if (arg.equals("-annotateSchema")) {
- try {
- annotateSchema = Boolean.parseBoolean(args[++i]);
- } catch (Throwable t) {
- throw new SQLException("Can not parse -annotateSchema value");
- }
- } else if (arg.equals("-trimStrings")) {
- try {
- trimStrings = Boolean.parseBoolean(args[++i]);
- } catch (Throwable t) {
- throw new SQLException("Can not parse -trimStrings value");
- }
- } else {
- throwUnsupportedOption(arg);
- }
- }
- if (url == null) {
- throw new SQLException("URL not set");
- }
- execute(url, user, password, schema, table, packageName, folder, annotateSchema, trimStrings);
- }
+ public void runTool(String... args) throws SQLException {
+ String url = null;
+ String user = "sa";
+ String password = "";
+ String schema = null;
+ String table = null;
+ String packageName = "";
+ String folder = null;
+ boolean annotateSchema = true;
+ boolean trimStrings = false;
+ for (int i = 0; args != null && i < args.length; i++) {
+ String arg = args[i];
+ if (arg.equals("-url")) {
+ url = args[++i];
+ } else if (arg.equals("-user")) {
+ user = args[++i];
+ } else if (arg.equals("-password")) {
+ password = args[++i];
+ } else if (arg.equals("-schema")) {
+ schema = args[++i];
+ } else if (arg.equals("-table")) {
+ table = args[++i];
+ } else if (arg.equals("-package")) {
+ packageName = args[++i];
+ } else if (arg.equals("-folder")) {
+ folder = args[++i];
+ } else if (arg.equals("-annotateSchema")) {
+ try {
+ annotateSchema = Boolean.parseBoolean(args[++i]);
+ } catch (Throwable t) {
+ throw new SQLException("Can not parse -annotateSchema value");
+ }
+ } else if (arg.equals("-trimStrings")) {
+ try {
+ trimStrings = Boolean.parseBoolean(args[++i]);
+ } catch (Throwable t) {
+ throw new SQLException("Can not parse -trimStrings value");
+ }
+ } else {
+ throwUnsupportedOption(arg);
+ }
+ }
+ if (url == null) {
+ throw new SQLException("URL not set");
+ }
+ execute(url, user, password, schema, table, packageName, folder, annotateSchema, trimStrings);
+ }
- /**
- * Generates models from the database.
- *
- * @param url
- * the database URL
- * @param user
- * the user name
- * @param password
- * the password
- * @param schema
- * the schema to read from. null for all schemas.
- * @param table
- * the table to model. null for all tables within schema.
- * @param packageName
- * the package name of the model classes.
- * @param folder
- * destination folder for model classes (package path not
- * included)
- * @param annotateSchema
- * includes the schema in the table model annotations
- * @param trimStrings
- * automatically trim strings that exceed maxLength
- */
- public static void execute(String url, String user, String password, String schema, String table,
- String packageName, String folder, boolean annotateSchema, boolean trimStrings)
- throws SQLException {
- try {
- Db db;
- if (password == null) {
- db = Db.open(url, user, (String) null);
- } else {
- db = Db.open(url, user, password);
- }
- DbInspector inspector = new DbInspector(db);
- List<String> models = inspector.generateModel(schema, table, packageName, annotateSchema,
- trimStrings);
- File parentFile;
- if (StringUtils.isNullOrEmpty(folder)) {
- parentFile = new File(System.getProperty("user.dir"));
- } else {
- parentFile = new File(folder);
- }
- parentFile.mkdirs();
- Pattern p = Pattern.compile("class ([a-zA-Z0-9]+)");
- for (String model : models) {
- Matcher m = p.matcher(model);
- if (m.find()) {
- String className = m.group().substring("class".length()).trim();
- File classFile = new File(parentFile, className + ".java");
- Writer o = new FileWriter(classFile, false);
- PrintWriter writer = new PrintWriter(new BufferedWriter(o));
- writer.write(model);
- writer.close();
- System.out.println("Generated " + classFile.getAbsolutePath());
- }
- }
- } catch (IOException io) {
- throw new SQLException("could not generate model", io);
- }
- }
+ /**
+ * Generates models from the database.
+ *
+ * @param url the database URL
+ * @param user the user name
+ * @param password the password
+ * @param schema the schema to read from. null for all schemas.
+ * @param table the table to model. null for all tables within schema.
+ * @param packageName the package name of the model classes.
+ * @param folder destination folder for model classes (package path not
+ * included)
+ * @param annotateSchema includes the schema in the table model annotations
+ * @param trimStrings automatically trim strings that exceed maxLength
+ */
+ public static void execute(String url, String user, String password, String schema, String table,
+ String packageName, String folder, boolean annotateSchema, boolean trimStrings)
+ throws SQLException {
+ try {
+ Db db;
+ if (password == null) {
+ db = Db.open(url, user, (String) null);
+ } else {
+ db = Db.open(url, user, password);
+ }
+ DbInspector inspector = new DbInspector(db);
+ List<String> models = inspector.generateModel(schema, table, packageName, annotateSchema,
+ trimStrings);
+ File parentFile;
+ if (StringUtils.isNullOrEmpty(folder)) {
+ parentFile = new File(System.getProperty("user.dir"));
+ } else {
+ parentFile = new File(folder);
+ }
+ parentFile.mkdirs();
+ Pattern p = Pattern.compile("class ([a-zA-Z0-9]+)");
+ for (String model : models) {
+ Matcher m = p.matcher(model);
+ if (m.find()) {
+ String className = m.group().substring("class".length()).trim();
+ File classFile = new File(parentFile, className + ".java");
+ Writer o = new FileWriter(classFile, false);
+ PrintWriter writer = new PrintWriter(new BufferedWriter(o));
+ writer.write(model);
+ writer.close();
+ System.out.println("Generated " + classFile.getAbsolutePath());
+ }
+ }
+ } catch (IOException io) {
+ throw new SQLException("could not generate model", io);
+ }
+ }
- /**
- * Throw a SQLException saying this command line option is not supported.
- *
- * @param option
- * the unsupported option
- * @return this method never returns normally
- */
- protected SQLException throwUnsupportedOption(String option) throws SQLException {
- showUsage();
- throw new SQLException("Unsupported option: " + option);
- }
+ /**
+ * Throw a SQLException saying this command line option is not supported.
+ *
+ * @param option the unsupported option
+ * @return this method never returns normally
+ */
+ protected SQLException throwUnsupportedOption(String option) throws SQLException {
+ showUsage();
+ throw new SQLException("Unsupported option: " + option);
+ }
- protected void showUsage() {
- out.println("GenerateModels");
- out.println("Usage:");
- out.println();
- out.println("(*) -url jdbc:h2:~test");
- out.println(" -user <string>");
- out.println(" -password <string>");
- out.println(" -schema <string>");
- out.println(" -table <string>");
- out.println(" -package <string>");
- out.println(" -folder <string>");
- out.println(" -annotateSchema <boolean>");
- out.println(" -trimStrings <boolean>");
- }
+ protected void showUsage() {
+ out.println("GenerateModels");
+ out.println("Usage:");
+ out.println();
+ out.println("(*) -url jdbc:h2:~test");
+ out.println(" -user <string>");
+ out.println(" -password <string>");
+ out.println(" -schema <string>");
+ out.println(" -table <string>");
+ out.println(" -package <string>");
+ out.println(" -folder <string>");
+ out.println(" -annotateSchema <boolean>");
+ out.println(" -trimStrings <boolean>");
+ }
}