diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java index 6c5f74729d..0f5e6c56a6 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java @@ -137,8 +137,9 @@ public class GenerationTool { @SuppressWarnings("unchecked") public static void main(Configuration configuration) throws Exception { - Jdbc j = defaultIfNull(configuration.getJdbc(), new Jdbc()); + Jdbc j = configuration.getJdbc(); org.jooq.util.jaxb.Generator g = configuration.getGenerator(); + errorIfNull(g, "The tag is mandatory."); // Some default values for optional elements to avoid NPE's if (g.getStrategy() == null) @@ -151,6 +152,7 @@ public class GenerationTool { // Initialise connection // --------------------- if (connection == null) { + errorIfNull(j, "The tag is mandatory."); loadClass(j.getDriver()); Properties properties = new Properties(); @@ -165,6 +167,9 @@ public class GenerationTool { connection = DriverManager.getConnection(defaultString(j.getUrl()), properties); } + else { + j = defaultIfNull(j, new Jdbc()); + } // Initialise generator @@ -181,21 +186,24 @@ public class GenerationTool { generator.setStrategy(strategy); - Class databaseClass = (Class) loadClass(trim(g.getDatabase().getName())); + org.jooq.util.jaxb.Database d = g.getDatabase(); + errorIfNull(d, "The tag is mandatory."); + + Class databaseClass = (Class) loadClass(trim(d.getName())); Database database = databaseClass.newInstance(); - List schemata = g.getDatabase().getSchemata(); + List schemata = d.getSchemata(); if (schemata.isEmpty()) { Schema schema = new Schema(); - schema.setInputSchema(trim(g.getDatabase().getInputSchema())); - schema.setOutputSchema(trim(g.getDatabase().getOutputSchema())); + schema.setInputSchema(trim(d.getInputSchema())); + schema.setOutputSchema(trim(d.getOutputSchema())); schemata.add(schema); } else { - if (!StringUtils.isBlank(g.getDatabase().getInputSchema())) { + if (!StringUtils.isBlank(d.getInputSchema())) { log.warn("WARNING: Cannot combine configuration properties /configuration/generator/database/inputSchema and /configuration/generator/database/schemata"); } - if (!StringUtils.isBlank(g.getDatabase().getOutputSchema())) { + if (!StringUtils.isBlank(d.getOutputSchema())) { log.warn("WARNING: Cannot combine configuration properties /configuration/generator/database/outputSchema and /configuration/generator/database/schemata"); } } @@ -222,22 +230,22 @@ public class GenerationTool { database.setConnection(connection); database.setConfiguredSchemata(schemata); - database.setIncludes(new String[] { defaultString(g.getDatabase().getIncludes()) }); - database.setExcludes(new String[] { defaultString(g.getDatabase().getExcludes()) }); - database.setRecordVersionFields(new String[] { defaultString(g.getDatabase().getRecordVersionFields()) }); - database.setRecordTimestampFields(new String[] { defaultString(g.getDatabase().getRecordTimestampFields()) }); - database.setConfiguredCustomTypes(g.getDatabase().getCustomTypes()); - database.setConfiguredEnumTypes(g.getDatabase().getEnumTypes()); - database.setConfiguredForcedTypes(g.getDatabase().getForcedTypes()); + database.setIncludes(new String[] { defaultString(d.getIncludes()) }); + database.setExcludes(new String[] { defaultString(d.getExcludes()) }); + database.setRecordVersionFields(new String[] { defaultString(d.getRecordVersionFields()) }); + database.setRecordTimestampFields(new String[] { defaultString(d.getRecordTimestampFields()) }); + database.setConfiguredCustomTypes(d.getCustomTypes()); + database.setConfiguredEnumTypes(d.getEnumTypes()); + database.setConfiguredForcedTypes(d.getForcedTypes()); - if (g.getDatabase().getEnumTypes().size() > 0) { + if (d.getEnumTypes().size() > 0) { log.warn("WARNING: The configuration property /configuration/generator/database/enumTypes is experimental and deprecated and will be removed in the future."); } - if (g.getDatabase().isDateAsTimestamp() != null) - database.setDateAsTimestamp(g.getDatabase().isDateAsTimestamp()); - if (g.getDatabase().isUnsignedTypes() != null) - database.setSupportsUnsignedTypes(g.getDatabase().isUnsignedTypes()); + if (d.isDateAsTimestamp() != null) + database.setDateAsTimestamp(d.isDateAsTimestamp()); + if (d.isUnsignedTypes() != null) + database.setSupportsUnsignedTypes(d.isUnsignedTypes()); if (StringUtils.isBlank(g.getTarget().getPackageName())) g.getTarget().setPackageName("org.jooq.generated"); @@ -313,6 +321,13 @@ public class GenerationTool { return (string == null ? null : string.trim()); } + private static void errorIfNull(Object o, String message) { + if (o == null) { + log.error(message + " For details, see http://www.jooq.org/xsd/jooq-codegen-3.0.0.xsd"); + System.exit(-1); + } + } + private static void error() { log.error("Usage : GenerationTool "); System.exit(-1);