- '''
- }
-}
-
diff --git a/jOOQ-tools/src/org/jooq/oss/Splitter.xtend b/jOOQ-tools/src/org/jooq/oss/Splitter.xtend
deleted file mode 100644
index 3fb904bfeb..0000000000
--- a/jOOQ-tools/src/org/jooq/oss/Splitter.xtend
+++ /dev/null
@@ -1,251 +0,0 @@
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
-package org.jooq.oss
-
-import static java.util.regex.Pattern.*;
-
-import java.io.File
-import java.util.ArrayList
-import java.util.regex.Pattern
-import org.apache.commons.lang3.tuple.ImmutablePair
-import org.jooq.SQLDialect
-import org.jooq.xtend.Generators
-import java.util.concurrent.ExecutorService
-import java.util.concurrent.Executors
-
-class RemoveProCode {
- def static void main(String[] args) {
- Splitter::split("pro", "/../workspace-jooq-oss");
- }
-}
-
-class RemoveTrialCode {
- def static void main(String[] args) {
- Splitter::split("trial", "/../workspace-jooq-pro");
- }
-}
-
-class Splitter extends Generators {
-
- static ExecutorService ex;
- String token;
-
- def static void split(String token, String workspace) {
- ex = Executors::newFixedThreadPool(4);
-
- val splitter = new Splitter(token);
-
- val workspaceIn = new File("../..").canonicalFile;
- val workspaceOut = new File(workspaceIn.canonicalPath + workspace).canonicalFile;
-
- for (project : workspaceIn.listFiles[f | f.name.startsWith("jOOQ")]) {
- val in = new File(workspaceIn, project.name);
- val out = new File(workspaceOut, project.name);
- splitter.transform(in, out, in);
- }
-
- ex.shutdown;
- }
-
- def transform(File inRoot, File outRoot, File in) {
- val out = new File(outRoot.canonicalPath + "/" + in.canonicalPath.replace(inRoot.canonicalPath, ""));
-
- if (in.directory) {
- val files = in.listFiles[path |
- !path.canonicalPath.endsWith(".class")
- && !path.canonicalPath.endsWith(".dat")
- && !path.canonicalPath.endsWith(".git")
- && !path.canonicalPath.endsWith(".jar")
- && !path.canonicalPath.endsWith(".pdf")
- && !path.canonicalPath.endsWith(".zip")
- && !path.canonicalPath.endsWith("._trace")
- && !path.canonicalPath.endsWith("jOOQ-tools")
- && !path.canonicalPath.endsWith("jOOQ-website")
- && !path.canonicalPath.endsWith("jOOQ-websites")
- && !path.canonicalPath.endsWith("jOOQ-webservices")
- && !path.canonicalPath.contains("\\access")
- && !path.canonicalPath.contains("\\ase")
- && !path.canonicalPath.contains("\\db2")
- && !path.canonicalPath.contains("\\ingres")
- && !path.canonicalPath.contains("\\oracle")
- && !path.canonicalPath.contains("\\sqlserver")
- && !path.canonicalPath.contains("\\sybase")
- && !path.canonicalPath.contains("\\target")
- && !path.canonicalPath.contains("\\bin")
- ];
-
- for (file : files) {
- transform(inRoot, outRoot, file);
- }
- }
- else if (token == "pro" && in.name.equals("LICENSE.txt")) {
- ex.submit[ |
- write(out, '''
-Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
-All rights reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-Other licenses:
------------------------------------------------------------------------------
-Commercial licenses for this work are available. These replace the above
-ASL 2.0 and offer limited warranties, support, maintenance, and commercial
-database integrations.
-
-For more information, please visit: http://www.jooq.org/licenses''');
- ];
- }
- else {
- ex.submit[ |
- var content = read(in);
-
- for (pattern : translateAll) {
- val m = pattern.matcher(content);
-
- while (m.find) {
- content = content.substring(0, m.start)
- + m.group(1)
- + m.group(2).replaceAll("\\S", "x")
- + m.group(3)
- + content.substring(m.end);
- }
- }
- for (pair : replaceFirst) {
- content = pair.left.matcher(content).replaceAll(pair.right);
- }
- for (pair : replaceAll) {
- content = pair.left.matcher(content).replaceAll(pair.right);
- }
-
- write(out, content);
- ];
- }
- }
-
- val translateAll = new ArrayList();
- val replaceAll = new ArrayList>();
- val replaceFirst = new ArrayList>();
-
- new(String token) {
- this.token = token;
-
- if (token == "pro") {
-
- // Replace a couple of imports
- replaceFirst.add(new ImmutablePair(compile('''import org\.jooq\.(ArrayConstant|ArrayRecord|impl\.ArrayRecordImpl|impl\.FlashbackTable.*?);'''), "// ..."));
- replaceFirst.add(new ImmutablePair(compile('''import static org\.jooq\.impl\.DSL\.(cube|grouping|groupingId|groupingSets);'''), "// ..."));
-
- // Replace the Java / Scala / Xtend license header
- replaceFirst.add(new ImmutablePair(compile('''(?s:/\*\*[\r\n] \* Copyright.*?eula[\r\n] \*/)'''), '''
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Other licenses:
- * -----------------------------------------------------------------------------
- * Commercial licenses for this work are available. These replace the above
- * ASL 2.0 and offer limited warranties, support, maintenance, and commercial
- * database integrations.
- *
- * For more information, please visit: http://www.jooq.org/licenses
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- */'''));
-
- for (d : SQLDialect::values.filter[d | d.commercial]) {
-
- // Remove commercial dialects from @Support annotations
- replaceAll.add(new ImmutablePair(compile('''(?s:(\@Support\([^\)]*?),\s*\b«d.name»\b([^\)]*?\)))'''), "$1$2"));
- replaceAll.add(new ImmutablePair(compile('''(?s:(\@Support\([^\)]*?)\b«d.name»\b,\s*([^\)]*?\)))'''), "$1$2"));
- replaceAll.add(new ImmutablePair(compile('''(?s:(\@Support\([^\)]*?)\s*\b«d.name»\b\s*([^\)]*?\)))'''), "$1$2"));
-
- // Remove commercial dialects from Arrays.asList() expressions
- replaceAll.add(new ImmutablePair(compile('''(asList\([^\)]*?),\s*\b«d.name»\b([^\)]*?\))'''), "$1$2"));
- replaceAll.add(new ImmutablePair(compile('''(asList\([^\)]*?)\b«d.name»\b,\s*([^\)]*?\))'''), "$1$2"));
- replaceAll.add(new ImmutablePair(compile('''(asList\([^\)]*?)\s*\b«d.name»\b\s*([^\)]*?\))'''), "$1$2"));
-
- // Remove commercial dialects from imports
- replaceAll.add(new ImmutablePair(compile('''import (static )?org\.jooq\.SQLDialect\.«d.name»;'''), "// ..."));
- replaceAll.add(new ImmutablePair(compile('''import (static )?org\.jooq\.util\.«d.name.toLowerCase»\..*?;'''), "// ..."));
- }
- }
-
- // Remove sections of delimited code
- translateAll.add(compile('''(?s:(/\* \[«token»\])( \*.*?/\* )(\[/«token»\] \*/))'''));
- translateAll.add(compile('''(?s:(.*?))'''));
- }
-}
diff --git a/jOOQ-tools/src/org/jooq/xtend/BetweenAndSteps.xtend b/jOOQ-tools/src/org/jooq/xtend/BetweenAndSteps.xtend
deleted file mode 100644
index 6715362b03..0000000000
--- a/jOOQ-tools/src/org/jooq/xtend/BetweenAndSteps.xtend
+++ /dev/null
@@ -1,343 +0,0 @@
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
-package org.jooq.xtend
-
-import org.jooq.Constants
-
-/**
- * @author Lukas Eder
- */
-class BetweenAndSteps extends Generators {
-
- def static void main(String[] args) {
- val steps = new BetweenAndSteps();
- steps.generateBetweenAndSteps();
- steps.generateBetweenAndStepsImpl();
- }
-
- def generateBetweenAndSteps() {
- for (degree : (1..Constants::MAX_ROW_DEGREE)) {
- val out = new StringBuilder();
-
- out.append('''
- «classHeader»
- package org.jooq;
-
- import javax.annotation.Generated;
-
- /**
- * An intermediate DSL type for the construction of a BETWEEN
- * predicate.
- *
- * @author Lukas Eder
- */
- «generatedAnnotation»
- public interface BetweenAndStep«degree»<«TN(degree)»> {
-
- /**
- * Create a condition to check this field against some bounds
- */
- @Support
- Condition and(«Field_TN_XXXn(degree, "maxValue")»);
-
- /**
- * Create a condition to check this field against some bounds
- */
- @Support
- Condition and(«TN_XXXn(degree, "maxValue")»);
-
- /**
- * Create a condition to check this field against some bounds
- */
- @Support
- Condition and(Row«degree»<«TN(degree)»> maxValue);
-
- /**
- * Create a condition to check this field against some bounds
- */
- @Support
- Condition and(Record«degree»<«TN(degree)»> maxValue);
-
- }
- ''');
-
- write("org.jooq.BetweenAndStep" + degree, out);
- }
- }
-
- def generateBetweenAndStepsImpl() {
- val out = new StringBuilder();
-
- out.append('''
- «classHeader»
- package org.jooq.impl;
-
- import static java.util.Arrays.asList;
- import static org.jooq.Clause.CONDITION;
- import static org.jooq.Clause.CONDITION_BETWEEN;
- import static org.jooq.Clause.CONDITION_BETWEEN_SYMMETRIC;
- import static org.jooq.Clause.CONDITION_NOT_BETWEEN;
- import static org.jooq.Clause.CONDITION_NOT_BETWEEN_SYMMETRIC;
- import static org.jooq.SQLDialect.ASE;
- import static org.jooq.SQLDialect.CUBRID;
- import static org.jooq.SQLDialect.DB2;
- import static org.jooq.SQLDialect.DERBY;
- import static org.jooq.SQLDialect.FIREBIRD;
- import static org.jooq.SQLDialect.H2;
- import static org.jooq.SQLDialect.MARIADB;
- import static org.jooq.SQLDialect.MYSQL;
- import static org.jooq.SQLDialect.ORACLE;
- import static org.jooq.SQLDialect.SQLITE;
- import static org.jooq.SQLDialect.SQLSERVER;
- import static org.jooq.SQLDialect.SYBASE;
- import static org.jooq.impl.DSL.row;
-
- import javax.annotation.Generated;
-
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
- import org.jooq.BetweenAndStep«degree»;
- «ENDFOR»
- import org.jooq.BetweenAndStepN;
- import org.jooq.BindContext;
- import org.jooq.Clause;
- import org.jooq.Condition;
- import org.jooq.Configuration;
- import org.jooq.Context;
- import org.jooq.Field;
- import org.jooq.QueryPartInternal;
- import org.jooq.Record;
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
- import org.jooq.Record«degree»;
- «ENDFOR»
- import org.jooq.RenderContext;
- import org.jooq.Row;
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
- import org.jooq.Row«degree»;
- «ENDFOR»
- import org.jooq.RowN;
-
- /**
- * @author Lukas Eder
- */
- «generatedAnnotation»
- @SuppressWarnings({ "rawtypes", "unchecked" })
- class RowBetweenCondition<«TN(Constants::MAX_ROW_DEGREE)»> extends AbstractCondition
- implements
-
- // This BetweenAndStep implementation implements all types. Type-safety is
- // being checked through the type-safe API. No need for further checks here
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
- BetweenAndStep«degree»<«TN(degree)»>,
- «ENDFOR»
- BetweenAndStepN {
-
- private static final long serialVersionUID = -4666251100802237878L;
- private static final Clause[] CLAUSES_BETWEEN = { CONDITION, CONDITION_BETWEEN };
- private static final Clause[] CLAUSES_BETWEEN_SYMMETRIC = { CONDITION, CONDITION_BETWEEN_SYMMETRIC };
- private static final Clause[] CLAUSES_NOT_BETWEEN = { CONDITION, CONDITION_NOT_BETWEEN };
- private static final Clause[] CLAUSES_NOT_BETWEEN_SYMMETRIC = { CONDITION, CONDITION_NOT_BETWEEN_SYMMETRIC };
-
- private final boolean symmetric;
- private final boolean not;
- private final Row row;
- private final Row minValue;
- private Row maxValue;
-
- RowBetweenCondition(Row row, Row minValue, boolean not, boolean symmetric) {
- this.row = row;
- this.minValue = minValue;
- this.not = not;
- this.symmetric = symmetric;
- }
-
- // ------------------------------------------------------------------------
- // XXX: BetweenAndStep API
- // ------------------------------------------------------------------------
-
- @Override
- public final Condition and(Field f) {
- if (maxValue == null) {
- return and(row(f));
- }
- else {
- return super.and(f);
- }
- }
- «FOR degree : (2..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition and(«Field_TN_tn(degree)») {
- return and(row(«tn(degree)»));
- }
- «ENDFOR»
-
- @Override
- public final Condition and(Field>... fields) {
- return and(row(fields));
- }
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition and(«TN_tn(degree)») {
- return and(row(«tn(degree)»));
- }
- «ENDFOR»
-
- @Override
- public final Condition and(Object... values) {
- return and(row(values));
- }
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition and(Row«degree»<«TN(degree)»> r) {
- this.maxValue = r;
- return this;
- }
- «ENDFOR»
-
- @Override
- public final Condition and(RowN r) {
- this.maxValue = r;
- return this;
- }
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition and(Record«degree»<«TN(degree)»> record) {
- return and(record.valuesRow());
- }
- «ENDFOR»
-
- @Override
- public final Condition and(Record record) {
- RowN r = new RowImpl(Utils.fields(record.intoArray(), record.fields()));
- return and(r);
- }
-
- // ------------------------------------------------------------------------
- // XXX: QueryPart API
- // ------------------------------------------------------------------------
-
- @Override
- public final void bind(BindContext context) {
- delegate(context.configuration()).bind(context);
- }
-
- @Override
- public final void toSQL(RenderContext context) {
- delegate(context.configuration()).toSQL(context);
- }
-
- @Override
- public final Clause[] clauses(Context> ctx) {
- return delegate(ctx.configuration()).clauses(ctx);
- }
-
- private final QueryPartInternal delegate(Configuration configuration) {
- // These casts are safe for RowImpl
- RowN r = (RowN) row;
- RowN min = (RowN) minValue;
- RowN max = (RowN) maxValue;
-
- // These dialects don't support the SYMMETRIC keyword at all
- if (symmetric && asList(ASE, CUBRID, DB2, DERBY, FIREBIRD, H2, MARIADB, MYSQL, ORACLE, SQLITE, SQLSERVER, SYBASE).contains(configuration.dialect().family())) {
- if (not) {
- return (QueryPartInternal) r.notBetween(min, max).and(r.notBetween(max, min));
- }
- else {
- return (QueryPartInternal) r.between(min, max).or(r.between(max, min));
- }
- }
-
- // These dialects either don't support row value expressions, or they
- // Can't handle row value expressions with the BETWEEN predicate
- else if (row.size() > 1 && asList(CUBRID, DERBY, FIREBIRD, MARIADB, MYSQL, ORACLE, SQLITE, SQLSERVER, SYBASE).contains(configuration.dialect().family())) {
- Condition result = r.ge(min).and(r.le(max));
-
- if (not) {
- result = result.not();
- }
-
- return (QueryPartInternal) result;
- }
- else {
- return new Native();
- }
- }
-
- private class Native extends AbstractQueryPart {
-
- /**
- * Generated UID
- */
- private static final long serialVersionUID = 2915703568738921575L;
-
- @Override
- public final void toSQL(RenderContext context) {
- context.visit(row);
- if (not) context.sql(" ").keyword("not");
- context.sql(" ").keyword("between");
- if (symmetric) context.sql(" ").keyword("symmetric");
- context.sql(" ").visit(minValue);
- context.sql(" ").keyword("and");
- context.sql(" ").visit(maxValue);
- }
-
- @Override
- public final void bind(BindContext context) {
- context.visit(row).visit(minValue).visit(maxValue);
- }
-
- @Override
- public final Clause[] clauses(Context> ctx) {
- return not ? symmetric ? CLAUSES_NOT_BETWEEN_SYMMETRIC
- : CLAUSES_NOT_BETWEEN
- : symmetric ? CLAUSES_BETWEEN_SYMMETRIC
- : CLAUSES_BETWEEN;
- }
- }
- }
- ''');
-
- write("org.jooq.impl.RowBetweenCondition", out);
- }
-}
\ No newline at end of file
diff --git a/jOOQ-tools/src/org/jooq/xtend/Conversions.xtend b/jOOQ-tools/src/org/jooq/xtend/Conversions.xtend
deleted file mode 100644
index 83f774e298..0000000000
--- a/jOOQ-tools/src/org/jooq/xtend/Conversions.xtend
+++ /dev/null
@@ -1,129 +0,0 @@
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
-package org.jooq.xtend
-
-import org.jooq.Constants
-
-/**
- * @author Lukas Eder
- */
-class Conversions extends Generators {
-
- def static void main(String[] args) {
- val conversions = new Conversions();
- conversions.generateAsTuple();
- conversions.generateAsMapper();
- // conversions.generateAsHandler();
- }
-
- def generateAsTuple() {
- val out = new StringBuilder();
-
- out.append('''
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- /**
- * Enrich any {@link org.jooq.Record«degree»} with the {@link Tuple«degree»} case class
- */
- implicit def asTuple«degree»[«TN(degree)»](r : Record«degree»[«TN(degree)»]): Tuple«degree»[«TN(degree)»] = r match {
- case null => null
- case _ => Tuple«degree»(«FOR d : (1..degree) SEPARATOR ', '»r.value«d»«ENDFOR»)
- }
- «ENDFOR»
- ''');
-
- insert("org.jooq.scala.Conversions", out, "tuples");
- }
-
- def generateAsMapper() {
- val out = new StringBuilder();
-
- out.append('''
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- /**
- * Wrap a Scala Tuple«degree» => E function in a jOOQ RecordMapper type.
- */
- implicit def asMapperFromArgList«degree»[«TN(degree)», E](f: («TN(degree)») => E): RecordMapper[Record«degree»[«TN(degree)»], E] = new RecordMapper[Record«degree»[«TN(degree)»], E] {
- def map(record: Record«degree»[«TN(degree)»]) = f(«XXXn(degree, "record.value")»)
- }
- «ENDFOR»
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- /**
- * Wrap a Scala Tuple«degree» => E function in a jOOQ RecordMapper type.
- */
- implicit def asMapperFromTuple«degree»[«TN(degree)», E](f: Tuple«degree»[«TN(degree)»] => E): RecordMapper[Record«degree»[«TN(degree)»], E] = new RecordMapper[Record«degree»[«TN(degree)»], E] {
- def map(record: Record«degree»[«TN(degree)»]) = f(Tuple«degree»(«XXXn(degree, "record.value")»))
- }
- «ENDFOR»
- ''');
-
- insert("org.jooq.scala.Conversions", out, "mapper");
- }
-
- def generateAsHandler() {
- val out = new StringBuilder();
-
- out.append('''
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- /**
- * Wrap a Scala Tuple«degree» => Unit function in a jOOQ RecordHandler type.
- */
- implicit def asHandlerFromArgList«degree»[«TN(degree)»](f: («TN(degree)») => Unit): RecordHandler[Record«degree»[«TN(degree)»]] = new RecordHandler[Record«degree»[«TN(degree)»]] {
- def next(record: Record«degree»[«TN(degree)»]) = f(«XXXn(degree, "record.value")»)
- }
- «ENDFOR»
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- /**
- * Wrap a Scala Tuple«degree» => Unit function in a jOOQ RecordHandler type.
- */
- implicit def asHandlerFromTuple«degree»[«TN(degree)», E](f: Tuple«degree»[«TN(degree)»] => E): RecordHandler[Record«degree»[«TN(degree)»]] = new RecordHandler[Record«degree»[«TN(degree)»]] {
- def next(record: Record«degree»[«TN(degree)»]) = f(Tuple«degree»(«XXXn(degree, "record.value")»))
- }
- «ENDFOR»
- ''');
-
- insert("org.jooq.scala.Conversions", out, "handler");
- }
-}
\ No newline at end of file
diff --git a/jOOQ-tools/src/org/jooq/xtend/DSL.xtend b/jOOQ-tools/src/org/jooq/xtend/DSL.xtend
deleted file mode 100644
index 979879352f..0000000000
--- a/jOOQ-tools/src/org/jooq/xtend/DSL.xtend
+++ /dev/null
@@ -1,156 +0,0 @@
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
-package org.jooq.xtend
-
-import org.jooq.Constants
-
-class DSL extends Generators {
-
- def static void main(String[] args) {
- val dsl = new DSL();
- dsl.generateRowValue();
- dsl.generateRowField();
- dsl.generateValues();
- }
-
- def generateRowValue() {
- val out = new StringBuilder();
-
- for (degree : (1..Constants::MAX_ROW_DEGREE)) {
- out.append('''
-
- /**
- * Create a row value expression of degree «degree».
- *
- * Note: Not all databases support row value expressions, but many row value
- * expression operations can be simulated on all databases. See relevant row
- * value expression method Javadocs for details.
- */
- «generatedMethod»
- @Support
- @Transition(
- name = "ROW",
- args = "Field+"
- )
- public static <«TN(degree)»> Row«degree»<«TN(degree)»> row(«TN_tn(degree)») {
- return row(«Utils_field_tn(degree)»);
- }
- ''');
- }
-
- insert("org.jooq.impl.DSL", out, "row-value");
- }
-
- def generateRowField() {
- val out = new StringBuilder();
-
- for (degree : (1..Constants::MAX_ROW_DEGREE)) {
- out.append('''
-
- /**
- * Create a row value expression of degree «degree».
- *
- * Note: Not all databases support row value expressions, but many row value
- * expression operations can be simulated on all databases. See relevant row
- * value expression method Javadocs for details.
- */
- «generatedMethod»
- @Support
- @Transition(
- name = "ROW",
- args = "Field+"
- )
- public static <«TN(degree)»> Row«degree»<«TN(degree)»> row(«Field_TN_tn(degree)») {
- return new RowImpl(«tn(degree)»);
- }
- ''');
- }
-
- insert("org.jooq.impl.DSL", out, "row-field");
- }
-
- def generateValues() {
- val out = new StringBuilder();
-
- for (degree : (1..Constants::MAX_ROW_DEGREE)) {
- out.append('''
-
- /**
- * Create a VALUES() expression of degree «degree».
- *
- * The VALUES() constructor is a tool supported by some
- * databases to allow for constructing tables from constant values.
- *
- * If a database doesn't support the VALUES() constructor, it
- * can be simulated using SELECT .. UNION ALL ... The following
- * expressions are equivalent:
- *
- *
- * -- Using VALUES() constructor
- * VALUES(«FOR d : (1..degree) SEPARATOR ', '»val1_«d»«ENDFOR»),
- * («FOR d : (1..degree) SEPARATOR ', '»val2_«d»«ENDFOR»),
- * («FOR d : (1..degree) SEPARATOR ', '»val3_«d»«ENDFOR»)
- * AS "v"(«FOR d : (1..degree) SEPARATOR ', '»"c«d»" «ENDFOR»)
- *
- * -- Using UNION ALL
- * SELECT «FOR d : (1..degree) SEPARATOR ', '»val1_«d» AS "c«d»"«ENDFOR») UNION ALL
- * SELECT «FOR d : (1..degree) SEPARATOR ', '»val1_«d» AS "c«d»"«ENDFOR») UNION ALL
- * SELECT «FOR d : (1..degree) SEPARATOR ', '»val1_«d» AS "c«d»"«ENDFOR»)
- *
- *
- * Use {@link Table#as(String, String...)} to rename the resulting table and
- * its columns.
- */
- «generatedMethod»
- @Support
- @Transition(
- name = "VALUES",
- args = "Row+"
- )
- public static <«TN(degree)»> Table> values(Row«degree»<«TN(degree)»>... rows) {
- return new Values>(rows).as("v", «FOR d : (1..degree) SEPARATOR ', '»"c«d»"«ENDFOR»);
- }
- ''');
- }
-
- insert("org.jooq.impl.DSL", out, "values");
- }
-}
\ No newline at end of file
diff --git a/jOOQ-tools/src/org/jooq/xtend/DSLContext.xtend b/jOOQ-tools/src/org/jooq/xtend/DSLContext.xtend
deleted file mode 100644
index 19c7fdc312..0000000000
--- a/jOOQ-tools/src/org/jooq/xtend/DSLContext.xtend
+++ /dev/null
@@ -1,473 +0,0 @@
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
-package org.jooq.xtend
-
-
-/**
- * @author Lukas Eder
- */
-import org.jooq.Constants
-
-class DSLContext extends Generators {
-
- def static void main(String[] args) {
- val ctx = new DSLContext();
- ctx.generateNewRecord();
- ctx.generateSelect();
- ctx.generateSelectDistinct();
- ctx.generateInsert();
- ctx.generateMerge();
- }
-
- def generateNewRecord() {
- val outImpl = new StringBuilder();
- val outAPI = new StringBuilder();
-
- for (degree : (1..Constants::MAX_ROW_DEGREE)) {
- var fieldOrRow = "Row" + degree;
-
- if (degree == 1) {
- fieldOrRow = "Field";
- }
-
- outAPI.append('''
-
- /**
- * Create a new empty {@link Record}.
- *
- * The resulting record is attached to this {@link Configuration} by
- * default. Use {@link Settings#isAttachRecords()} to override this
- * behaviour.
- *
- * @return The new record
- */
- «generatedMethod»
- <«TN(degree)»> Record«recTypeSuffix(degree)» newRecord(«Field_TN_fieldn(degree)»);
- ''');
-
- outImpl.append('''
-
- «generatedMethod»
- @Override
- public <«TN(degree)»> Record«recTypeSuffix(degree)» newRecord(«Field_TN_fieldn(degree)») {
- return (Record«recTypeSuffixRaw(degree)») newRecord(new Field[] { «fieldn(degree)» });
- }
- ''');
- }
-
- insert("org.jooq.DSLContext", outAPI, "newRecord");
- insert("org.jooq.impl.DefaultDSLContext", outImpl, "newRecord");
- }
-
- def generateSelect() {
- val outDSL = new StringBuilder();
- val outImpl = new StringBuilder();
- val outAPI = new StringBuilder();
-
- for (degree : (1..Constants::MAX_ROW_DEGREE)) {
- var fieldOrRow = "Row" + degree;
-
- if (degree == 1) {
- fieldOrRow = "Field";
- }
-
- outAPI.append('''
-
- /**
- * Create a new DSL select statement.
- *
- * This is the same as {@link #select(Field...)}, except that it
- * declares additional record-level typesafety, which is needed by
- * {@link «fieldOrRow»#in(Select)}, {@link «fieldOrRow»#equal(Select)} and other predicate
- * building methods taking subselect arguments.
- *
- * This creates an attached, renderable and executable SELECT
- * statement from this {@link DSLContext}. If you don't need to render or
- * execute this SELECT statement (e.g. because you want to
- * create a subselect), consider using the static
- * {@link DSL#select(«FOR d : (1..degree) SEPARATOR ', '»Field«ENDFOR»)} instead.
- *
- * This is the same as {@link #select(Field...)}, except that it declares
- * additional record-level typesafety, which is needed by
- * {@link «fieldOrRow»#in(Select)}, {@link «fieldOrRow»#equal(Select)} and other predicate
- * building methods taking subselect arguments.
- *
- * Unlike {@link Select} factory methods in the {@link DSLContext} API, this
- * creates an unattached, and thus not directly renderable or executable
- * SELECT statement. You can use this statement in two ways:
- *
- *
As a subselect within another select
- *
As a statement, after attaching it using
- * {@link Select#attach(org.jooq.Configuration)}
- * This is the same as {@link #selectDistinct(Field...)}, except that it
- * declares additional record-level typesafety, which is needed by
- * {@link «fieldOrRow»#in(Select)}, {@link «fieldOrRow»#equal(Select)} and other predicate
- * building methods taking subselect arguments.
- *
- * This creates an attached, renderable and executable SELECT
- * statement from this {@link DSLContext}. If you don't need to render or
- * execute this SELECT statement (e.g. because you want to
- * create a subselect), consider using the static
- * {@link DSL#selectDistinct(«FOR d : (1..degree) SEPARATOR ', '»Field«ENDFOR»)} instead.
- *
- * This is the same as {@link #selectDistinct(Field...)}, except that it
- * declares additional record-level typesafety, which is needed by
- * {@link «fieldOrRow»#in(Select)}, {@link «fieldOrRow»#equal(Select)} and other predicate
- * building methods taking subselect arguments.
- *
- * Unlike {@link Select} factory methods in the {@link DSLContext} API, this
- * creates an unattached, and thus not directly renderable or executable
- * SELECT statement. You can use this statement in two ways:
- *
- *
As a subselect within another select
- *
As a statement, after attaching it using
- * {@link Select#attach(org.jooq.Configuration)}
- * Unlike {@link Insert} factory methods in the {@link DSLContext} API, this
- * creates an unattached, and thus not directly renderable or executable
- * INSERT statement.
- *
- * Unlike {@link Merge} factory methods in the {@link DSLContext} API, this
- * creates an unattached, and thus not directly renderable or executable
- * MERGE statement.
- *
- * This statement is available from DSL syntax only. It is known to be
- * supported in some way by any of these dialects:
- *
These databases can simulate the H2-specific MERGE statement using a
- * standard SQL MERGE statement, without restrictions
- *
See {@link #mergeInto(Table)} for the standard MERGE statement
- *
- *
- *
- * @see DSLContext#mergeInto(Table, «(1..degree).map[e | "Field"].join(", ")»)
- */
- «generatedMethod»
- @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE })
- public static MergeKeyStep«degree» mergeInto(Table table, «Field_TN_fieldn(degree)») {
- return using(new DefaultConfiguration()).mergeInto(table, «fieldn(degree)»);
- }
- ''');
-
- outImpl.append('''
-
- «generatedMethod»
- @Override
- public MergeKeyStep«degree» mergeInto(Table table, «Field_TN_fieldn(degree)») {
- return new MergeImpl(configuration, table, Arrays.asList(«fieldn(degree)»));
- }
- ''');
- }
-
- insert("org.jooq.DSLContext", outAPI, "merge");
- insert("org.jooq.impl.DefaultDSLContext", outImpl, "merge");
- insert("org.jooq.impl.DSL", outDSL, "merge");
- }
-}
\ No newline at end of file
diff --git a/jOOQ-tools/src/org/jooq/xtend/GenerateAll.xtend b/jOOQ-tools/src/org/jooq/xtend/GenerateAll.xtend
deleted file mode 100644
index 276e5d352b..0000000000
--- a/jOOQ-tools/src/org/jooq/xtend/GenerateAll.xtend
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
-package org.jooq.xtend
-
-/**
- * @author Lukas Eder
- */
-class GenerateAll {
- def static void main(String[] args) {
- BetweenAndSteps::main(args);
- Conversions::main(args);
- DSLContext::main(args);
- DSL::main(args);
- InsertDSL::main(args);
- MergeDSL::main(args);
- Records::main(args);
- Rows::main(args);
- UpdateDSL::main(args);
- }
-}
\ No newline at end of file
diff --git a/jOOQ-tools/src/org/jooq/xtend/Generators.xtend b/jOOQ-tools/src/org/jooq/xtend/Generators.xtend
deleted file mode 100644
index d463346119..0000000000
--- a/jOOQ-tools/src/org/jooq/xtend/Generators.xtend
+++ /dev/null
@@ -1,450 +0,0 @@
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
-package org.jooq.xtend
-
-import java.io.File
-import java.io.FileWriter
-import java.io.IOException
-import java.io.RandomAccessFile
-
-/**
- * @author Lukas Eder
- */
-abstract class Generators {
-
- def file(String className) {
- if (className.contains("scala")) {
- return new File("./../jOOQ-scala/src/main/scala/" + className.replace(".", "/") + ".scala");
- }
- else {
- return new File("./../jOOQ/src/main/java/" + className.replace(".", "/") + ".java");
- }
- }
-
- def read(String className) {
- return read(file(className))
- }
-
- def read(File file) {
- val f = new RandomAccessFile(file, "r");
- try {
- val contents = Util::newByteArray(f.length);
- f.readFully(contents);
- return new String(contents);
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- finally {
- f.close;
- }
- }
-
- def insert(String className, CharSequence contents, String section) {
- val result = new StringBuilder();
- val original = read(className);
- val start = "// [jooq-tools] START [" + section + "]";
- val end = "// [jooq-tools] END [" + section + "]"
-
- result.append(original.substring(0, original.indexOf(start) + start.length + 1))
- result.append(contents);
- result.append("\n");
- result.append(original.substring(original.indexOf(end)));
-
- write(className, result, section);
- }
-
- def write(String className, CharSequence contents) {
- write(className, contents, null);
- }
-
- def write(String className, CharSequence contents, String section) {
- val file = file(className);
- write(file, contents, section);
- }
-
- def write(File file, CharSequence contents) {
- write(file, contents, null);
- }
-
- def write(File file, CharSequence contents, String section) {
- file.getParentFile().mkdirs();
-
- try {
- System::out.println("Writing " + file + (if (section != null) (" (section: " + section + ")") else ""));
- val fw = new FileWriter(file);
- fw.append(contents);
- fw.flush();
- fw.close();
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- def first(int degree) {
- switch degree {
- case 1 : "first"
- case 2 : "second"
- case 3 : "third"
- case 4 : "fourth"
- case 5 : "fifth"
- case 6 : "sixth"
- case 7 : "seventh"
- case 8 : "eighth"
- case 9 : "ninth"
- case 10 : "tenth"
- case 11 : "eleventh"
- case 12 : "twelfth"
- case 13 : "thirteenth"
- case 14 : "fourteenth"
- case 15 : "fifteenth"
- case 16 : "sixteenth"
- case 17 : "seventeenth"
- case 18 : "eighteenth"
- case 19 : "ninteenth"
- case 20 : "twentieth"
- case 21 : "twenty-first"
- case 22 : "twenty-second"
- case degree % 10 == 1 : degree + "st"
- case degree % 10 == 2 : degree + "nd"
- case degree % 10 == 3 : degree + "rd"
- default : degree + "th"
- }
- }
-
- def classHeader() {
- '''
- /**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
- '''
- }
-
- def generatedAnnotation() {
- '''
- @Generated("This class was generated using jOOQ-tools")
- '''
- }
-
- def generatedMethod() {
- '''
- @Generated("This method was generated using jOOQ-tools")
- '''
- }
-
- /**
- * A comma-separated list of types
- *
- * val(t1), val(t2), .., val(t[N])
- */
- def Utils_field_tn(int degree) {
- (1..degree).join(", ", [e | "Utils.field(t" + e + ")"])
- }
-
- /**
- * A numeric degree or "N"
- */
- def degreeOrN(int degree) {
- return degreeOr(degree, "N")
- }
-
- /**
- * A numeric degree or [nothing]
- */
- def degreeOr(int degree) {
- return degreeOr(degree, "")
- }
-
- /**
- * A numeric degree or [or]
- */
- def degreeOr(int degree, String or) {
- return if (degree == 0) or else degree
- }
-
- /**
- * The generic type of a class, e.g. "" or <T1, T2, T3>
- */
- def type(int degree) {
- type(degree, "")
- }
-
- /**
- * The generic type of a class, e.g. "" or <T1, T2, T3>
- */
- def type(int degree, String spacer) {
- '''«IF degree > 0»<«TN(degree)»>«spacer»«ENDIF»'''
- }
-
- /**
- * The generic type suffix of a class, e.g. N or 3<T1, T2, T3>
- */
- def typeSuffix(int degree) {
- '''«typeSuffixRaw(degree)»«type(degree)»'''
- }
-
- /**
- * The "raw" generic type suffix of a class, e.g. N or 3
- */
- def typeSuffixRaw(int degree) {
- '''«degreeOrN(degree)»'''
- }
-
- /**
- * The generic type suffix of a record, e.g. "" or 3<T1, T2, T3>
- */
- def recTypeSuffix(int degree) {
- '''«recTypeSuffixRaw(degree)»«type(degree)»'''
- }
-
- /**
- * The "raw" generic type suffix of a record, e.g. "" or 3
- */
- def recTypeSuffixRaw(int degree) {
- '''«degreeOr(degree)»'''
- }
-}
\ No newline at end of file
diff --git a/jOOQ-tools/src/org/jooq/xtend/InsertDSL.xtend b/jOOQ-tools/src/org/jooq/xtend/InsertDSL.xtend
deleted file mode 100644
index aee6a16cf9..0000000000
--- a/jOOQ-tools/src/org/jooq/xtend/InsertDSL.xtend
+++ /dev/null
@@ -1,362 +0,0 @@
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
-package org.jooq.xtend
-
-
-/**
- * @author Lukas Eder
- */
-import org.jooq.Constants
-
-class InsertDSL extends Generators {
-
- def static void main(String[] args) {
- val insert = new InsertDSL();
- insert.generateInsertValuesStep();
- insert.generateInsertImpl();
- }
-
- def generateInsertValuesStep() {
- for (degree : (1..Constants::MAX_ROW_DEGREE)) {
- val out = new StringBuilder();
-
- out.append('''
- «classHeader»
- package org.jooq;
-
- import java.util.Collection;
-
- import javax.annotation.Generated;
-
- /**
- * This type is used for the {@link Insert}'s DSL API.
- *
- *
- * @author Lukas Eder
- */
- «generatedAnnotation»
- public interface MergeValuesStep«degree» {
-
- /**
- * Specify a VALUES clause
- */
- @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE })
- Merge values(«TN_XXXn(degree, "value")»);
-
- /**
- * Specify a VALUES clause
- */
- @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE })
- Merge values(«Field_TN_XXXn(degree, "value")»);
-
- /**
- * Specify a VALUES clause
- */
- @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE })
- Merge values(Collection> values);
-
- /**
- * Use a SELECT statement as the source of values for the
- * MERGE statement
- *
- * This variant of the MERGE .. SELECT statement expects a
- * select returning exactly as many fields as specified previously in the
- * INTO clause:
- * {@link DSLContext#mergeInto(Table, «(1..degree).join(', ', [e | 'Field'])»)}
- */
- @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE })
- Merge select(Select extends Record«degree»<«TN(degree)»>> select);
- }
- ''');
-
- write("org.jooq.MergeValuesStep" + degree, out);
- }
- }
-
- def generateMergeImplImplements() {
- val outKeyStep = new StringBuilder();
- val outNotMatchedValuesStep = new StringBuilder();
-
- outKeyStep.append('''
-
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
- MergeKeyStep«degree»,
- «ENDFOR»
- ''')
-
- outNotMatchedValuesStep.append('''
-
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
- MergeNotMatchedValuesStep«degree»,
- «ENDFOR»
- ''')
-
- insert("org.jooq.impl.MergeImpl", outKeyStep, "implementsKeyStep");
- insert("org.jooq.impl.MergeImpl", outNotMatchedValuesStep, "implementsNotMatchedValuesStep");
- }
-
- def generateMergeImplValues() {
- val out = new StringBuilder();
-
- out.append('''
-
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
- @Override
- public final MergeImpl values(«TN_XXXn(degree, "value")») {
- return values(new Object[] { «XXXn(degree, "value")» });
- }
-
- «ENDFOR»
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final MergeImpl values(«Field_TN_XXXn(degree, "value")») {
- return values(new Field[] { «XXXn(degree, "value")» });
- }
- «ENDFOR»
- ''')
-
- insert("org.jooq.impl.MergeImpl", out, "values");
- }
-
- def generateMergeImplWhenNotMatchedThenInsert() {
- val out = new StringBuilder();
-
- out.append('''
-
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
- @Override
- @SuppressWarnings("hiding")
- public final <«TN(degree)»> MergeImpl whenNotMatchedThenInsert(«Field_TN_fieldn(degree)») {
- return whenNotMatchedThenInsert(new Field[] { «fieldn(degree)» });
- }
-
- «ENDFOR»
- ''')
-
- insert("org.jooq.impl.MergeImpl", out, "whenNotMatchedThenInsert");
- }
-}
\ No newline at end of file
diff --git a/jOOQ-tools/src/org/jooq/xtend/Records.xtend b/jOOQ-tools/src/org/jooq/xtend/Records.xtend
deleted file mode 100644
index 040c3f560e..0000000000
--- a/jOOQ-tools/src/org/jooq/xtend/Records.xtend
+++ /dev/null
@@ -1,208 +0,0 @@
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
-package org.jooq.xtend
-
-import org.jooq.Constants
-
-/**
- * @author Lukas Eder
- */
-class Records extends Generators {
-
- def static void main(String[] args) {
- val records = new Records();
- records.generateRecords();
- records.generateRecordImpl();
- }
-
- def generateRecords() {
- for (degree : (1..Constants::MAX_ROW_DEGREE)) {
- val out = new StringBuilder();
-
- out.append('''
- «classHeader»
- package org.jooq;
-
- import javax.annotation.Generated;
-
- /**
- * A model type for a records with degree «degree»
- *
- * @see Row«degree»
- * @author Lukas Eder
- */
- «generatedAnnotation»
- public interface Record«degree»<«TN(degree)»> extends Record {
-
- // ------------------------------------------------------------------------
- // Row value expressions
- // ------------------------------------------------------------------------
-
- /**
- * Get this record's fields as a {@link Row«degree»}
- */
- @Override
- Row«degree»<«TN(degree)»> fieldsRow();
-
- /**
- * Get this record's values as a {@link Row«degree»}
- */
- @Override
- Row«degree»<«TN(degree)»> valuesRow();
-
- // ------------------------------------------------------------------------
- // Field accessors
- // ------------------------------------------------------------------------
- «FOR d : (1..degree)»
-
- /**
- * Get the «first(d)» field
- */
- Field field«d»();
- «ENDFOR»
-
- // ------------------------------------------------------------------------
- // Value accessors
- // ------------------------------------------------------------------------
- «FOR d : (1..degree)»
-
- /**
- * Get the «first(d)» value
- */
- T«d» value«d»();
- «ENDFOR»
-
- }
- ''');
-
- write("org.jooq.Record" + degree, out);
- }
- }
-
- def generateRecordImpl() {
- val out = new StringBuilder();
-
- out.append('''
- «classHeader»
- package org.jooq.impl;
-
- import java.util.Collection;
-
- import javax.annotation.Generated;
-
- import org.jooq.Field;
- import org.jooq.Record;
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
- import org.jooq.Record«degree»;
- «ENDFOR»
-
- /**
- * A general purpose record, typically used for ad-hoc types.
- *
- * This type implements both the general-purpose, type-unsafe {@link Record}
- * interface, as well as the more specific, type-safe {@link Record1},
- * {@link Record2} through {@link Record«Constants::MAX_ROW_DEGREE»} interfaces
- *
- * @author Lukas Eder
- */
- «generatedAnnotation»
- @SuppressWarnings({ "unchecked", "rawtypes" })
- class RecordImpl<«TN(Constants::MAX_ROW_DEGREE)»> extends AbstractRecord
- implements
-
- // This record implementation implements all record types. Type-safety is
- // being checked through the type-safe API. No need for further checks here
- «FOR degree : (1..Constants::MAX_ROW_DEGREE) SEPARATOR ','»
- Record«degree»<«TN(degree)»>«IF degree == Constants::MAX_ROW_DEGREE» {«ENDIF»
- «ENDFOR»
-
- /**
- * Generated UID
- */
- private static final long serialVersionUID = -2201346180421463830L;
-
- /**
- * Create a new general purpose record
- */
- public RecordImpl(Field>... fields) {
- super(fields);
- }
-
- /**
- * Create a new general purpose record
- */
- public RecordImpl(Collection extends Field>> fields) {
- super(fields);
- }
-
- // ------------------------------------------------------------------------
- // XXX: Type-safe Record APIs
- // ------------------------------------------------------------------------
-
- @Override
- public RowImpl<«TN(Constants::MAX_ROW_DEGREE)»> fieldsRow() {
- return fields;
- }
-
- @Override
- public final RowImpl<«TN(Constants::MAX_ROW_DEGREE)»> valuesRow() {
- return new RowImpl(Utils.fields(intoArray(), fields.fields()));
- }
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Field field«degree»() {
- return fields.field(«degree - 1»);
- }
- «ENDFOR»
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final T«degree» value«degree»() {
- return (T«degree») getValue(«degree - 1»);
- }
- «ENDFOR»
- }
- ''');
-
- write("org.jooq.impl.RecordImpl", out);
- }
-}
\ No newline at end of file
diff --git a/jOOQ-tools/src/org/jooq/xtend/Rows.xtend b/jOOQ-tools/src/org/jooq/xtend/Rows.xtend
deleted file mode 100644
index 0497b0347b..0000000000
--- a/jOOQ-tools/src/org/jooq/xtend/Rows.xtend
+++ /dev/null
@@ -1,1982 +0,0 @@
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
-package org.jooq.xtend
-
-import org.jooq.Constants
-
-/**
- * @author Lukas Eder
- */
-class Rows extends Generators {
-
- def static void main(String[] args) {
- val rows = new Rows();
- rows.generateRowClasses();
- rows.generateRowImpl();
- }
-
- def generateRowClasses() {
- for (degree : (0..Constants::MAX_ROW_DEGREE)) {
- val out = new StringBuilder();
-
- val typeSuffix = typeSuffix(degree)
- val typeSuffixRaw = typeSuffixRaw(degree)
- val recTypeSuffix = recTypeSuffix(degree)
-
- out.append('''
- «classHeader»
- package org.jooq;
-
- import org.jooq.Comparator;
- import org.jooq.api.annotation.State;
-
- import java.util.Collection;
-
- import javax.annotation.Generated;
-
- /**
- * A model type for a row value expression with degree «IF degree > 0»«degree»«ELSE»N > «Constants::MAX_ROW_DEGREE»«ENDIF».
- *
- * Note: Not all databases support row value expressions, but many row value
- * expression operations can be simulated on all databases. See relevant row
- * value expression method Javadocs for details.
- *
- * @author Lukas Eder
- */
- «generatedAnnotation»
- @State
- public interface Row«typeSuffix» extends Row {
- «IF degree > 0»
-
- // ------------------------------------------------------------------------
- // Field accessors
- // ------------------------------------------------------------------------
- «FOR d : (1..degree)»
-
- /**
- * Get the «first(d)» field.
- */
- Field field«d»();
- «ENDFOR»
- «ENDIF»
-
- // ------------------------------------------------------------------------
- // Generic comparison predicates
- // ------------------------------------------------------------------------
-
- /**
- * Compare this row value expression with another row value expression
- * using a dynamic comparator.
- *
- * See the explicit comparison methods for details. Note, not all
- * {@link Comparator} types are supported
- *
- * @see #equal(Row«typeSuffixRaw»)
- * @see #notEqual(Row«typeSuffixRaw»)
- * @see #lessThan(Row«typeSuffixRaw»)
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- * @see #greaterThan(Row«typeSuffixRaw»)
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition compare(Comparator comparator, Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record record
- * using a dynamic comparator.
- *
- * See the explicit comparison methods for details. Note, not all
- * {@link Comparator} types are supported
- *
- * @see #equal(Row«typeSuffixRaw»)
- * @see #notEqual(Row«typeSuffixRaw»)
- * @see #lessThan(Row«typeSuffixRaw»)
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- * @see #greaterThan(Row«typeSuffixRaw»)
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition compare(Comparator comparator, Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression
- * using a dynamic comparator.
- *
- * See the explicit comparison methods for details. Note, not all
- * {@link Comparator} types are supported
- *
- * @see #equal(Row«typeSuffixRaw»)
- * @see #notEqual(Row«typeSuffixRaw»)
- * @see #lessThan(Row«typeSuffixRaw»)
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- * @see #greaterThan(Row«typeSuffixRaw»)
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition compare(Comparator comparator, «TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression
- * using a dynamic comparator.
- *
- * See the explicit comparison methods for details. Note, not all
- * {@link Comparator} types are supported
- *
- * @see #equal(Row«typeSuffixRaw»)
- * @see #notEqual(Row«typeSuffixRaw»)
- * @see #lessThan(Row«typeSuffixRaw»)
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- * @see #greaterThan(Row«typeSuffixRaw»)
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition compare(Comparator comparator, «Field_TN_tn(degree)»);
-
- // ------------------------------------------------------------------------
- // Equal / Not equal comparison predicates
- // ------------------------------------------------------------------------
-
- /**
- * Compare this row value expression with another row value expression for
- * equality.
- *
- * Row equality comparison predicates can be simulated in those databases
- * that do not support such predicates natively:
- * (A, B) = (1, 2) is equivalent to
- * A = 1 AND B = 2
- */
- @Support
- Condition equal(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for equality.
- *
- * @see #equal(Row«typeSuffixRaw»)
- */
- @Support
- Condition equal(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for
- * equality.
- *
- * @see #equal(Row«typeSuffixRaw»)
- */
- @Support
- Condition equal(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * equality.
- *
- * @see #equal(Row«typeSuffixRaw»)
- */
- @Support
- Condition equal(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for equality.
- *
- * @see #equal(Row«typeSuffixRaw»)
- */
- @Support
- Condition equal(Select extends Record«recTypeSuffix»> select);
-
- /**
- * Compare this row value expression with another row value expression for
- * equality.
- *
- * @see #equal(Row«typeSuffixRaw»)
- */
- @Support
- Condition eq(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for equality.
- *
- * @see #equal(Row«typeSuffixRaw»)
- */
- @Support
- Condition eq(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for
- * equality.
- *
- * @see #equal(Row«typeSuffixRaw»)
- */
- @Support
- Condition eq(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * equality.
- *
- * @see #equal(Row«typeSuffixRaw»)
- */
- @Support
- Condition eq(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for equality.
- *
- * @see #equal(Row«typeSuffixRaw»)
- */
- @Support
- Condition eq(Select extends Record«recTypeSuffix»> select);
-
- /**
- * Compare this row value expression with another row value expression for
- * non-equality.
- *
- * Row non-equality comparison predicates can be simulated in those
- * databases that do not support such predicates natively:
- * (A, B) <> (1, 2) is equivalent to
- * NOT(A = 1 AND B = 2)
- */
- @Support
- Condition notEqual(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for non-equality
- *
- * @see #notEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition notEqual(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for.
- * non-equality
- *
- * @see #notEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition notEqual(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * non-equality.
- *
- * @see #notEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition notEqual(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for non-equality.
- *
- * @see #notEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition notEqual(Select extends Record«recTypeSuffix»> select);
-
- /**
- * Compare this row value expression with another row value expression for
- * non-equality.
- *
- * @see #notEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition ne(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for non-equality.
- *
- * @see #notEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition ne(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for
- * non-equality.
- *
- * @see #notEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition ne(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * non-equality.
- *
- * @see #notEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition ne(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for non-equality.
- *
- * @see #notEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition ne(Select extends Record«recTypeSuffix»> select);
-
- // ------------------------------------------------------------------------
- // Ordering comparison predicates
- // ------------------------------------------------------------------------
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * Row order comparison predicates can be simulated in those
- * databases that do not support such predicates natively:
- * (A, B, C) < (1, 2, 3) is equivalent to
- * A < 1 OR (A = 1 AND B < 2) OR (A = 1 AND B = 2 AND C < 3)
- */
- @Support
- Condition lessThan(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for order.
- *
- * @see #lessThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition lessThan(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #lessThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition lessThan(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #lessThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition lessThan(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for order.
- *
- * @see #lessThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition lessThan(Select extends Record«recTypeSuffix»> select);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #lessThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition lt(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for order.
- *
- * @see #lessThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition lt(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #lessThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition lt(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #lessThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition lt(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for order.
- *
- * @see #lessThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition lt(Select extends Record«recTypeSuffix»> select);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * Row order comparison predicates can be simulated in those
- * databases that do not support such predicates natively:
- * (A, B) <= (1, 2) is equivalent to
- * A < 1 OR (A = 1 AND B < 2) OR (A = 1 AND B = 2)
- */
- @Support
- Condition lessOrEqual(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for order.
- *
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition lessOrEqual(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition lessOrEqual(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition lessOrEqual(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for order.
- *
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition lessOrEqual(Select extends Record«recTypeSuffix»> select);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition le(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for order.
- *
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition le(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition le(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition le(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for order.
- *
- * @see #lessOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition le(Select extends Record«recTypeSuffix»> select);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * Row order comparison predicates can be simulated in those
- * databases that do not support such predicates natively:
- * (A, B, C) > (1, 2, 3) is equivalent to
- * A > 1 OR (A = 1 AND B > 2) OR (A = 1 AND B = 2 AND C > 3)
- */
- @Support
- Condition greaterThan(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for order.
- *
- * @see #greaterThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition greaterThan(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #greaterThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition greaterThan(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #greaterThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition greaterThan(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for order.
- *
- * @see #greaterThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition greaterThan(Select extends Record«recTypeSuffix»> select);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #greaterThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition gt(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for order.
- *
- * @see #greaterThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition gt(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #greaterThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition gt(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #greaterThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition gt(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for order.
- *
- * @see #greaterThan(Row«typeSuffixRaw»)
- */
- @Support
- Condition gt(Select extends Record«recTypeSuffix»> select);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * Row order comparison predicates can be simulated in those
- * databases that do not support such predicates natively:
- * (A, B) >= (1, 2) is equivalent to
- * A > 1 OR (A = 1 AND B > 2) OR (A = 1 AND B = 2)
- */
- @Support
- Condition greaterOrEqual(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for order.
- *
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition greaterOrEqual(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition greaterOrEqual(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition greaterOrEqual(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for order.
- *
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition greaterOrEqual(Select extends Record«recTypeSuffix»> select);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition ge(Row«typeSuffix» row);
-
- /**
- * Compare this row value expression with a record for order.
- *
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition ge(Record«recTypeSuffix» record);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition ge(«TN_tn(degree)»);
-
- /**
- * Compare this row value expression with another row value expression for
- * order.
- *
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition ge(«Field_TN_tn(degree)»);
-
- /**
- * Compare this row value expression with a subselect for order.
- *
- * @see #greaterOrEqual(Row«typeSuffixRaw»)
- */
- @Support
- Condition ge(Select extends Record«recTypeSuffix»> select);
-
- // ------------------------------------------------------------------------
- // [NOT] BETWEEN predicates
- // ------------------------------------------------------------------------
-
- /**
- * Check if this row value expression is within a range of two other row
- * value expressions.
- *
- * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» between(«TN_XXXn(degree, "minValue")»);
-
- /**
- * Check if this row value expression is within a range of two other row
- * value expressions.
- *
- * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» between(«Field_TN_XXXn(degree, "minValue")»);
-
- /**
- * Check if this row value expression is within a range of two other row
- * value expressions.
- *
- * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» between(Row«typeSuffix» minValue);
-
- /**
- * Check if this row value expression is within a range of two records.
- *
- * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» between(Record«recTypeSuffix» minValue);
-
- /**
- * Check if this row value expression is within a range of two other row
- * value expressions.
- *
- * This is the same as calling between(minValue).and(maxValue)
- *
- * The expression A BETWEEN B AND C is equivalent to the
- * expression A >= B AND A <= C for those SQL dialects that do
- * not properly support the BETWEEN predicate for row value
- * expressions
- */
- @Support
- Condition between(Row«typeSuffix» minValue,
- Row«typeSuffix» maxValue);
-
- /**
- * Check if this row value expression is within a range of two records.
- *
- * This is the same as calling between(minValue).and(maxValue)
- *
- * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- Condition between(Record«recTypeSuffix» minValue,
- Record«recTypeSuffix» maxValue);
-
- /**
- * Check if this row value expression is within a symmetric range of two
- * other row value expressions.
- *
- * @see #betweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» betweenSymmetric(«TN_XXXn(degree, "minValue")»);
-
- /**
- * Check if this row value expression is within a symmetric range of two
- * other row value expressions.
- *
- * @see #betweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» betweenSymmetric(«Field_TN_XXXn(degree, "minValue")»);
-
- /**
- * Check if this row value expression is within a symmetric range of two
- * other row value expressions.
- *
- * @see #betweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» betweenSymmetric(Row«typeSuffix» minValue);
-
- /**
- * Check if this row value expression is within a symmetric range of two
- * records.
- *
- * @see #betweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» betweenSymmetric(Record«recTypeSuffix» minValue);
-
- /**
- * Check if this row value expression is within a symmetric range of two
- * other row value expressions.
- *
- * This is the same as calling betweenSymmetric(minValue).and(maxValue)
- *
- * The expression A BETWEEN SYMMETRIC B AND C is equivalent to
- * the expression (A >= B AND A <= C) OR (A >= C AND A <= B)
- * for those SQL dialects that do not properly support the
- * BETWEEN predicate for row value expressions
- */
- @Support
- Condition betweenSymmetric(Row«typeSuffix» minValue,
- Row«typeSuffix» maxValue);
-
- /**
- * Check if this row value expression is within a symmetric range of two
- * records.
- *
- * This is the same as calling betweenSymmetric(minValue).and(maxValue)
- *
- * @see #betweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- Condition betweenSymmetric(Record«recTypeSuffix» minValue,
- Record«recTypeSuffix» maxValue);
-
- /**
- * Check if this row value expression is not within a range of two other
- * row value expressions.
- *
- * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» notBetween(«TN_XXXn(degree, "minValue")»);
-
- /**
- * Check if this row value expression is not within a range of two other
- * row value expressions.
- *
- * @see #notBetween(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» notBetween(«Field_TN_XXXn(degree, "minValue")»);
-
- /**
- * Check if this row value expression is not within a range of two other
- * row value expressions.
- *
- * @see #notBetween(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» notBetween(Row«typeSuffix» minValue);
-
- /**
- * Check if this row value expression is within a range of two records.
- *
- * @see #notBetween(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» notBetween(Record«recTypeSuffix» minValue);
-
- /**
- * Check if this row value expression is not within a range of two other
- * row value expressions.
- *
- * This is the same as calling notBetween(minValue).and(maxValue)
- *
- * The expression A NOT BETWEEN B AND C is equivalent to the
- * expression A < B OR A > C for those SQL dialects that do
- * not properly support the BETWEEN predicate for row value
- * expressions
- */
- @Support
- Condition notBetween(Row«typeSuffix» minValue,
- Row«typeSuffix» maxValue);
-
- /**
- * Check if this row value expression is within a range of two records.
- *
- * This is the same as calling notBetween(minValue).and(maxValue)
- *
- * @see #notBetween(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- Condition notBetween(Record«recTypeSuffix» minValue,
- Record«recTypeSuffix» maxValue);
-
- /**
- * Check if this row value expression is not within a symmetric range of two
- * other row value expressions.
- *
- * @see #notBetweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» notBetweenSymmetric(«TN_XXXn(degree, "minValue")»);
-
- /**
- * Check if this row value expression is not within a symmetric range of two
- * other row value expressions.
- *
- * @see #notBetweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» notBetweenSymmetric(«Field_TN_XXXn(degree, "minValue")»);
-
- /**
- * Check if this row value expression is not within a symmetric range of two
- * other row value expressions.
- *
- * @see #notBetweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» notBetweenSymmetric(Row«typeSuffix» minValue);
-
- /**
- * Check if this row value expression is not within a symmetric range of two
- * records.
- *
- * @see #notBetweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- BetweenAndStep«typeSuffix» notBetweenSymmetric(Record«recTypeSuffix» minValue);
-
- /**
- * Check if this row value expression is not within a symmetric range of two
- * other row value expressions.
- *
- * This is the same as calling notBetweenSymmetric(minValue).and(maxValue)
- *
- * The expression A NOT BETWEEN SYMMETRIC B AND C is equivalent
- * to the expression (A < B OR A > C) AND (A < C OR A > B) for
- * those SQL dialects that do not properly support the BETWEEN
- * predicate for row value expressions
- */
- @Support
- Condition notBetweenSymmetric(Row«typeSuffix» minValue,
- Row«typeSuffix» maxValue);
-
- /**
- * Check if this row value expression is not within a symmetric range of two
- * records.
- *
- * This is the same as calling notBetweenSymmetric(minValue).and(maxValue)
- *
- * @see #notBetweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw»)
- */
- @Support
- Condition notBetweenSymmetric(Record«recTypeSuffix» minValue,
- Record«recTypeSuffix» maxValue);
-
- // ------------------------------------------------------------------------
- // [NOT] DISTINCT predicates
- // ------------------------------------------------------------------------
-
-««« /**
-««« * Compare this row value expression with another row value expression for
-««« * distinctness.
-««« */
-««« @Support
-««« Condition isDistinctFrom(Row«typeSuffix» row);
-«««
-««« /**
-««« * Compare this row value expression with a record for distinctness.
-««« *
-««« * @see #isDistinctFrom(Row«typeSuffixRaw»)
-««« */
-««« @Support
-««« Condition isDistinctFrom(Record«recTypeSuffix» record);
-«««
-««« /**
-««« * Compare this row value expression with another row value expression for
-««« * distinctness.
-««« *
-««« * @see #isDistinctFrom(Row«typeSuffixRaw»)
-««« */
-««« @Support
-««« Condition isDistinctFrom(«TN_tn(degree)»);
-«««
-««« /**
-««« * Compare this row value expression with another row value expression for
-««« * distinctness.
-««« *
-««« * @see #isDistinctFrom(Row«typeSuffixRaw»)
-««« */
-««« @Support
-««« Condition isDistinctFrom(«Field_TN_tn(degree)»);
-«««
-««« /**
-««« * Compare this row value expression with another row value expression for
-««« * non-distinctness.
-««« */
-««« @Support
-««« Condition isNotDistinctFrom(Row«typeSuffix» row);
-«««
-««« /**
-««« * Compare this row value expression with a record for non-distinctness.
-««« *
-««« * @see #isNotDistinctFrom(Row«typeSuffixRaw»)
-««« */
-««« @Support
-««« Condition isNotDistinctFrom(Record«recTypeSuffix» record);
-«««
-««« /**
-««« * Compare this row value expression with another row value expression for
-««« * non-distinctness.
-««« *
-««« * @see #isNotDistinctFrom(Row«typeSuffixRaw»)
-««« */
-««« @Support
-««« Condition isNotDistinctFrom(«TN_tn(degree)»);
-«««
-««« /**
-««« * Compare this row value expression with another row value expression for
-««« * non-distinctness.
-««« *
-««« * @see #isNotDistinctFrom(Row«typeSuffixRaw»)
-««« */
-««« @Support
-««« Condition isNotDistinctFrom(«Field_TN_tn(degree)»);
-
- // ------------------------------------------------------------------------
- // [NOT] IN predicates
- // ------------------------------------------------------------------------
-
- /**
- * Compare this row value expression with a set of row value expressions for
- * equality.
- *
- * Row IN predicates can be simulated in those databases that do not support
- * such predicates natively: (A, B) IN ((1, 2), (3, 4)) is
- * equivalent to ((A, B) = (1, 2)) OR ((A, B) = (3, 4)), which
- * is equivalent to (A = 1 AND B = 2) OR (A = 3 AND B = 4)
- */
- @Support
- Condition in(Collection extends Row«typeSuffix»> rows);
-
- /**
- * Compare this row value expression with a set of row value expressions for
- * equality.
- *
- * @see #in(Collection)
- */
- @Support
- Condition in(Row«typeSuffix»... rows);
-
- /**
- * Compare this row value expression with a set of records for equality.
- *
- * @see #in(Collection)
- */
- @Support
- Condition in(Record«recTypeSuffix»... record);
-
- /**
- * Compare this row value expression with a subselect for equality.
- *
- * @see #in(Collection)
- */
- @Support
- Condition in(Select extends Record«recTypeSuffix»> select);
-
- /**
- * Compare this row value expression with a set of row value expressions for
- * equality.
- *
- * Row NOT IN predicates can be simulated in those databases that do not
- * support such predicates natively:
- * (A, B) NOT IN ((1, 2), (3, 4)) is equivalent to
- * NOT(((A, B) = (1, 2)) OR ((A, B) = (3, 4))), which is
- * equivalent to NOT((A = 1 AND B = 2) OR (A = 3 AND B = 4))
- */
- @Support
- Condition notIn(Collection extends Row«typeSuffix»> rows);
-
- /**
- * Compare this row value expression with a set of row value expressions for
- * equality.
- *
- * @see #notIn(Collection)
- */
- @Support
- Condition notIn(Row«typeSuffix»... rows);
-
- /**
- * Compare this row value expression with a set of records for non-equality.
- *
- * @see #notIn(Collection)
- */
- @Support
- Condition notIn(Record«recTypeSuffix»... record);
-
- /**
- * Compare this row value expression with a subselect for non-equality.
- *
- * @see #notIn(Collection)
- */
- @Support
- Condition notIn(Select extends Record«recTypeSuffix»> select);
-
- «IF degree == 2»
- // ------------------------------------------------------------------------
- // Row2-specific OVERLAPS predicate
- // ------------------------------------------------------------------------
-
- /**
- * Check if this row value expression overlaps another row value expression.
- *
- * The SQL standard specifies a temporal OVERLAPS predicate,
- * which comes in two flavours:
- *
- *
(DATE, DATE) OVERLAPS (DATE, DATE)
- *
(DATE, INTERVAL) OVERLAPS (DATE, INTERVAL)
- *
- *
- * jOOQ also supports arbitrary 2-degree row value expression comparisons,
- * by simulating them as such
- * -- This predicate
- * (A, B) OVERLAPS (C, D)
- *
- * -- can be simulated as such
- * (C <= B) AND (A <= D)
- *
- */
- @Support
- Condition overlaps(T1 t1, T2 t2);
-
- /**
- * Check if this row value expression overlaps another row value expression.
- *
- * The SQL standard specifies a temporal OVERLAPS predicate,
- * which comes in two flavours:
- *
- *
(DATE, DATE) OVERLAPS (DATE, DATE)
- *
(DATE, INTERVAL) OVERLAPS (DATE, INTERVAL)
- *
- *
- * jOOQ also supports arbitrary 2-degree row value expression comparisons,
- * by simulating them as such
- * -- This predicate
- * (A, B) OVERLAPS (C, D)
- *
- * -- can be simulated as such
- * (C <= B) AND (A <= D)
- *
- */
- @Support
- Condition overlaps(Field t1, Field t2);
-
- /**
- * Check if this row value expression overlaps another row value expression.
- *
- * The SQL standard specifies a temporal OVERLAPS predicate,
- * which comes in two flavours:
- *
- *
(DATE, DATE) OVERLAPS (DATE, DATE)
- *
(DATE, INTERVAL) OVERLAPS (DATE, INTERVAL)
- *
- *
- * jOOQ also supports arbitrary 2-degree row value expression comparisons,
- * by simulating them as such
- * -- This predicate
- * (A, B) OVERLAPS (C, D)
- *
- * -- can be simulated as such
- * (C <= B) AND (A <= D)
- *
- */
- @Support
- Condition overlaps(Row2 row);
-
- «ENDIF»
- }
- ''');
-
- write("org.jooq.Row" + degreeOrN(degree), out);
- }
- }
-
- def generateRowImpl() {
- val out = new StringBuilder();
-
- out.append('''
- «classHeader»
- package org.jooq.impl;
-
- import static org.jooq.Clause.FIELD_ROW;
- import static org.jooq.impl.DSL.row;
-
- import java.util.Arrays;
- import java.util.Collection;
-
- import javax.annotation.Generated;
-
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
- import org.jooq.BetweenAndStep«typeSuffixRaw(degree)»;
- «ENDFOR»
- import org.jooq.BindContext;
- import org.jooq.Clause;
- import org.jooq.Comparator;
- import org.jooq.Condition;
- import org.jooq.Context;
- import org.jooq.DataType;
- import org.jooq.Field;
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
- import org.jooq.Record«recTypeSuffixRaw(degree)»;
- «ENDFOR»
- import org.jooq.RenderContext;
- import org.jooq.Row;
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
- import org.jooq.Row«typeSuffixRaw(degree)»;
- «ENDFOR»
- import org.jooq.Select;
-
- /**
- * @author Lukas Eder
- */
- «generatedAnnotation»
- @SuppressWarnings({ "rawtypes", "unchecked" })
- class RowImpl<«TN(Constants::MAX_ROW_DEGREE)»> extends AbstractQueryPart
- implements
-
- // This row implementation implements all row types. Type-safety is
- // being checked through the type-safe API. No need for further checks here
- «FOR degree : (0..Constants::MAX_ROW_DEGREE) SEPARATOR ','»
- Row«typeSuffix(degree)»
- «ENDFOR»
- {
-
- /**
- * Generated UID
- */
- private static final long serialVersionUID = -929427349071556318L;
- private static final Clause[] CLAUSES = { FIELD_ROW };
-
- final Fields fields;
-
- RowImpl(Field>... fields) {
- this(new Fields(fields));
- }
-
- RowImpl(Collection extends Field>> fields) {
- this(new Fields(fields));
- }
-
- RowImpl(Fields fields) {
- super();
-
- this.fields = fields;
- }
-
- // ------------------------------------------------------------------------
- // XXX: QueryPart API
- // ------------------------------------------------------------------------
-
- @Override
- public final void toSQL(RenderContext context) {
- context.sql("(");
-
- String separator = "";
- for (Field> field : fields.fields) {
- context.sql(separator);
- context.visit(field);
-
- separator = ", ";
- }
-
- context.sql(")");
- }
-
- @Override
- public final void bind(BindContext context) {
- context.visit(fields);
- }
-
- @Override
- public final Clause[] clauses(Context> ctx) {
- return CLAUSES;
- }
-
- // ------------------------------------------------------------------------
- // XXX: Row accessor API
- // ------------------------------------------------------------------------
-
- @Override
- public final int size() {
- return fields.size();
- }
-
- @Override
- public final Field field(Field field) {
- return fields.field(field);
- }
-
- @Override
- public final Field> field(String name) {
- return fields.field(name);
- }
-
- @Override
- public final Field> field(int index) {
- return fields.field(index);
- }
-
- @Override
- public final Field>[] fields() {
- return fields.fields();
- }
-
- @Override
- public final Field>[] fields(Field>... f) {
- return fields.fields(f);
- }
-
- @Override
- public final Field>[] fields(String... fieldNames) {
- return fields.fields(fieldNames);
- }
-
- @Override
- public final Field>[] fields(int... fieldIndexes) {
- return fields.fields(fieldIndexes);
- }
-
- @Override
- public final int indexOf(Field> field) {
- return fields.indexOf(field);
- }
-
- @Override
- public final int indexOf(String fieldName) {
- return fields.indexOf(fieldName);
- }
-
- @Override
- public final Class>[] types() {
- return fields.types();
- }
-
- @Override
- public final Class> type(int fieldIndex) {
- return fields.type(fieldIndex);
- }
-
- @Override
- public final Class> type(String fieldName) {
- return fields.type(fieldName);
- }
-
- @Override
- public final DataType>[] dataTypes() {
- return fields.dataTypes();
- }
-
- @Override
- public final DataType> dataType(int fieldIndex) {
- return fields.dataType(fieldIndex);
- }
-
- @Override
- public final DataType> dataType(String fieldName) {
- return fields.dataType(fieldName);
- }
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Field field«degree»() {
- return fields.field(«degree - 1»);
- }
- «ENDFOR»
-
- // ------------------------------------------------------------------------
- // [NOT] NULL predicates
- // ------------------------------------------------------------------------
-
- @Override
- public final Condition isNull() {
- return new RowIsNull(this, true);
- }
-
- @Override
- public final Condition isNotNull() {
- return new RowIsNull(this, false);
- }
-
- // ------------------------------------------------------------------------
- // Generic comparison predicates
- // ------------------------------------------------------------------------
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition compare(Comparator comparator, Row«typeSuffix(degree)» row) {
- return new RowCondition(this, row, comparator);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition compare(Comparator comparator, Record«recTypeSuffix(degree)» record) {
- return new RowCondition(this, record.valuesRow(), comparator);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition compare(Comparator comparator, «TN_tn(degree)») {
- return compare(comparator, row(«tn(degree)»));
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition compare(Comparator comparator, «Field_TN_tn(degree)») {
- return compare(comparator, row(«tn(degree)»));
- }
- «ENDFOR»
-
- // ------------------------------------------------------------------------
- // Equal / Not equal comparison predicates
- // ------------------------------------------------------------------------
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition equal(Row«typeSuffix(degree)» row) {
- return compare(Comparator.EQUALS, row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition equal(Record«recTypeSuffix(degree)» record) {
- return compare(Comparator.EQUALS, record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition equal(«TN_tn(degree)») {
- return compare(Comparator.EQUALS, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition equal(«Field_TN_tn(degree)») {
- return compare(Comparator.EQUALS, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition eq(Row«typeSuffix(degree)» row) {
- return equal(row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition eq(Record«recTypeSuffix(degree)» record) {
- return equal(record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition eq(«TN_tn(degree)») {
- return equal(«tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition eq(«Field_TN_tn(degree)») {
- return equal(«tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition notEqual(Row«typeSuffix(degree)» row) {
- return compare(Comparator.NOT_EQUALS, row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition notEqual(Record«recTypeSuffix(degree)» record) {
- return compare(Comparator.NOT_EQUALS, record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition notEqual(«TN_tn(degree)») {
- return compare(Comparator.NOT_EQUALS, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition notEqual(«Field_TN_tn(degree)») {
- return compare(Comparator.NOT_EQUALS, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition ne(Row«typeSuffix(degree)» row) {
- return notEqual(row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition ne(Record«recTypeSuffix(degree)» record) {
- return notEqual(record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition ne(«TN_tn(degree)») {
- return notEqual(«tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition ne(«Field_TN_tn(degree)») {
- return notEqual(«tn(degree)»);
- }
- «ENDFOR»
-
- // ------------------------------------------------------------------------
- // Ordering comparison predicates
- // ------------------------------------------------------------------------
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lessThan(Row«typeSuffix(degree)» row) {
- return compare(Comparator.LESS, row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lessThan(Record«recTypeSuffix(degree)» record) {
- return compare(Comparator.LESS, record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lessThan(«TN_tn(degree)») {
- return compare(Comparator.LESS, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lessThan(«Field_TN_tn(degree)») {
- return compare(Comparator.LESS, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lt(Row«typeSuffix(degree)» row) {
- return lessThan(row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lt(Record«recTypeSuffix(degree)» record) {
- return lessThan(record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lt(«TN_tn(degree)») {
- return lessThan(«tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lt(«Field_TN_tn(degree)») {
- return lessThan(«tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lessOrEqual(Row«typeSuffix(degree)» row) {
- return compare(Comparator.LESS_OR_EQUAL, row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lessOrEqual(Record«recTypeSuffix(degree)» record) {
- return compare(Comparator.LESS_OR_EQUAL, record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lessOrEqual(«TN_tn(degree)») {
- return compare(Comparator.LESS_OR_EQUAL, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition lessOrEqual(«Field_TN_tn(degree)») {
- return compare(Comparator.LESS_OR_EQUAL, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition le(Row«typeSuffix(degree)» row) {
- return lessOrEqual(row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition le(Record«recTypeSuffix(degree)» record) {
- return lessOrEqual(record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition le(«TN_tn(degree)») {
- return lessOrEqual(«tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition le(«Field_TN_tn(degree)») {
- return lessOrEqual(«tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition greaterThan(Row«typeSuffix(degree)» row) {
- return compare(Comparator.GREATER, row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition greaterThan(Record«recTypeSuffix(degree)» record) {
- return compare(Comparator.GREATER, record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition greaterThan(«TN_tn(degree)») {
- return compare(Comparator.GREATER, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition greaterThan(«Field_TN_tn(degree)») {
- return compare(Comparator.GREATER, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition gt(Row«typeSuffix(degree)» row) {
- return greaterThan(row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition gt(Record«recTypeSuffix(degree)» record) {
- return greaterThan(record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition gt(«TN_tn(degree)») {
- return greaterThan(«tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition gt(«Field_TN_tn(degree)») {
- return greaterThan(«tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition greaterOrEqual(Row«typeSuffix(degree)» row) {
- return compare(Comparator.GREATER_OR_EQUAL, row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition greaterOrEqual(Record«recTypeSuffix(degree)» record) {
- return compare(Comparator.GREATER_OR_EQUAL, record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition greaterOrEqual(«TN_tn(degree)») {
- return compare(Comparator.GREATER_OR_EQUAL, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition greaterOrEqual(«Field_TN_tn(degree)») {
- return compare(Comparator.GREATER_OR_EQUAL, «tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition ge(Row«typeSuffix(degree)» row) {
- return greaterOrEqual(row);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition ge(Record«recTypeSuffix(degree)» record) {
- return greaterOrEqual(record);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition ge(«TN_tn(degree)») {
- return greaterOrEqual(«tn(degree)»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition ge(«Field_TN_tn(degree)») {
- return greaterOrEqual(«tn(degree)»);
- }
- «ENDFOR»
-
- // ------------------------------------------------------------------------
- // [NOT] BETWEEN predicates
- // ------------------------------------------------------------------------
- «FOR keyword : newArrayList("between", "betweenSymmetric", "notBetween", "notBetweenSymmetric")»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final BetweenAndStep«typeSuffix(degree)» «keyword»(«TN_tn(degree)») {
- return «keyword»(row(«tn(degree)»));
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final BetweenAndStep«typeSuffix(degree)» «keyword»(«Field_TN_tn(degree)») {
- return «keyword»(row(«tn(degree)»));
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final BetweenAndStep«typeSuffix(degree)» «keyword»(Row«typeSuffix(degree)» row) {
- return new RowBetweenCondition(this, row, «keyword.startsWith("not")», «keyword.endsWith("Symmetric")»);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final BetweenAndStep«typeSuffix(degree)» «keyword»(Record«recTypeSuffix(degree)» record) {
- return «keyword»(record.valuesRow());
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition «keyword»(Row«typeSuffix(degree)» minValue, Row«typeSuffix(degree)» maxValue) {
- return «keyword»(minValue).and(maxValue);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition «keyword»(Record«recTypeSuffix(degree)» minValue, Record«recTypeSuffix(degree)» maxValue) {
- return «keyword»(minValue).and(maxValue);
- }
- «ENDFOR»
- «ENDFOR»
-
- // ------------------------------------------------------------------------
- // [NOT] DISTINCT predicates
- // ------------------------------------------------------------------------
-
- // ------------------------------------------------------------------------
- // [NOT] IN predicates
- // ------------------------------------------------------------------------
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition in(Row«typeSuffix(degree)»... rows) {
- return in(Arrays.asList(rows));
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition in(Record«recTypeSuffix(degree)»... records) {
- Row«typeSuffix(degree)»[] rows = new Row«typeSuffixRaw(degree)»[records.length];
-
- for (int i = 0; i < records.length; i++) {
- rows[i] = «IF degree == 0»(RowN) «ENDIF»records[i].valuesRow();
- }
-
- return in(rows);
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition notIn(Row«typeSuffix(degree)»... rows) {
- return notIn(Arrays.asList(rows));
- }
- «ENDFOR»
- «FOR degree : (0..Constants::MAX_ROW_DEGREE)»
-
- @Override
- public final Condition notIn(Record«recTypeSuffix(degree)»... records) {
- Row«typeSuffix(degree)»[] rows = new Row«typeSuffixRaw(degree)»[records.length];
-
- for (int i = 0; i < records.length; i++) {
- rows[i] = «IF degree == 0»(RowN) «ENDIF»records[i].valuesRow();
- }
-
- return notIn(rows);
- }
- «ENDFOR»
-
- @Override
- public final Condition in(Collection rows) {
- QueryPartList list = new QueryPartList(rows);
- return new RowInCondition(this, list, Comparator.IN);
- }
-
- @Override
- public final Condition notIn(Collection rows) {
- QueryPartList list = new QueryPartList(rows);
- return new RowInCondition(this, list, Comparator.NOT_IN);
- }
-
- // ------------------------------------------------------------------------
- // Predicates involving subqueries
- // ------------------------------------------------------------------------
-
- @Override
- public final Condition equal(Select select) {
- return new RowSubqueryCondition(this, select, Comparator.EQUALS);
- }
-
- @Override
- public final Condition eq(Select select) {
- return equal(select);
- }
-
- @Override
- public final Condition notEqual(Select select) {
- return new RowSubqueryCondition(this, select, Comparator.NOT_EQUALS);
- }
-
- @Override
- public final Condition ne(Select select) {
- return notEqual(select);
- }
-
- @Override
- public final Condition greaterThan(Select select) {
- return new RowSubqueryCondition(this, select, Comparator.GREATER);
- }
-
- @Override
- public final Condition gt(Select select) {
- return greaterThan(select);
- }
-
- @Override
- public final Condition greaterOrEqual(Select select) {
- return new RowSubqueryCondition(this, select, Comparator.GREATER_OR_EQUAL);
- }
-
- @Override
- public final Condition ge(Select select) {
- return greaterOrEqual(select);
- }
-
- @Override
- public final Condition lessThan(Select select) {
- return new RowSubqueryCondition(this, select, Comparator.LESS);
- }
-
- @Override
- public final Condition lt(Select select) {
- return lessThan(select);
- }
-
- @Override
- public final Condition lessOrEqual(Select select) {
- return new RowSubqueryCondition(this, select, Comparator.LESS_OR_EQUAL);
- }
-
- @Override
- public final Condition le(Select select) {
- return lessOrEqual(select);
- }
-
- @Override
- public final Condition in(Select select) {
- return new RowSubqueryCondition(this, select, Comparator.IN);
- }
-
- @Override
- public final Condition notIn(Select select) {
- return new RowSubqueryCondition(this, select, Comparator.NOT_IN);
- }
-
- // ------------------------------------------------------------------------
- // XXX: Row2 API
- // ------------------------------------------------------------------------
-
- @Override
- public final Condition overlaps(T1 t1, T2 t2) {
- return overlaps(row(t1, t2));
- }
-
- @Override
- public final Condition overlaps(Field t1, Field t2) {
- return overlaps(row(t1, t2));
- }
-
- @Override
- public final Condition overlaps(Row2 row) {
- return new RowOverlapsCondition(this, row);
- }
- }
- ''');
-
- write("org.jooq.impl.RowImpl", out);
- }
-}
diff --git a/jOOQ-tools/src/org/jooq/xtend/UpdateDSL.xtend b/jOOQ-tools/src/org/jooq/xtend/UpdateDSL.xtend
deleted file mode 100644
index 4fa11ca274..0000000000
--- a/jOOQ-tools/src/org/jooq/xtend/UpdateDSL.xtend
+++ /dev/null
@@ -1,212 +0,0 @@
-/**
- * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
- * All rights reserved.
- *
- * This work is dual-licensed
- * - under the Apache Software License 2.0 (the "ASL")
- * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
- * =============================================================================
- * You may choose which license applies to you:
- *
- * - If you're using this work with Open Source databases, you may choose
- * either ASL or jOOQ License.
- * - If you're using this work with at least one commercial database, you must
- * choose jOOQ License
- *
- * For more information, please visit http://www.jooq.org/licenses
- *
- * Apache Software License 2.0:
- * -----------------------------------------------------------------------------
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * jOOQ License and Maintenance Agreement:
- * -----------------------------------------------------------------------------
- * Data Geekery grants the Customer the non-exclusive, timely limited and
- * non-transferable license to install and use the Software under the terms of
- * the jOOQ License and Maintenance Agreement.
- *
- * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
- * and Maintenance Agreement for more details: http://www.jooq.org/licensing
- */
-package org.jooq.xtend
-
-import org.jooq.Constants
-
-/**
- * @author Lukas Eder
- */
-class UpdateDSL extends Generators {
-
- def static void main(String[] args) {
- val update = new UpdateDSL();
- update.generateUpdateQuery();
- update.generateUpdateQueryImpl();
- update.generateUpdateSetFirstStep();
- update.generateUpdateImpl();
- }
-
- def generateUpdateQuery() {
- val out = new StringBuilder();
-
- out.append('''
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- /**
- * Specify a multi-column set clause for the UPDATE statement.
- */
- «generatedMethod»
- @Support({ DB2, H2, HSQLDB, INGRES, ORACLE, POSTGRES })
- <«TN(degree)»> void addValues(Row«degree»<«TN(degree)»> row, Row«degree»<«TN(degree)»> value);
- «ENDFOR»
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- /**
- * Specify a multi-column set clause for the UPDATE statement.
- */
- «generatedMethod»
- @Support({ DB2, H2, HSQLDB, INGRES, ORACLE })
- <«TN(degree)»> void addValues(Row«degree»<«TN(degree)»> row, Select extends Record«degree»<«TN(degree)»>> select);
- «ENDFOR»
- ''');
-
- insert("org.jooq.UpdateQuery", out, "addValues");
- }
-
- def generateUpdateQueryImpl() {
- val out = new StringBuilder();
-
- out.append('''
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- «generatedMethod»
- @Override
- public final <«TN(degree)»> void addValues(Row«degree»<«TN(degree)»> row, Row«degree»<«TN(degree)»> value) {
- addValues0(row, value);
- }
- «ENDFOR»
- «FOR degree : (1..Constants::MAX_ROW_DEGREE)»
-
- «generatedMethod»
- @Override
- public final <«TN(degree)»> void addValues(Row«degree»<«TN(degree)»> row, Select extends Record«degree»<«TN(degree)»>> select) {
- addValues0(row, select);
- }
- «ENDFOR»
- ''');
-
- insert("org.jooq.impl.UpdateQueryImpl", out, "addValues");
- }
-
- def generateUpdateSetFirstStep() {
- val out = new StringBuilder();
-
- out.append('''
- «classHeader»
- package org.jooq;
-
- import static org.jooq.SQLDialect.DB2;
- import static org.jooq.SQLDialect.H2;
- import static org.jooq.SQLDialect.HSQLDB;
- import static org.jooq.SQLDialect.INGRES;
- import static org.jooq.SQLDialect.ORACLE;
- import static org.jooq.SQLDialect.POSTGRES;
-
- import javax.annotation.Generated;
-
- import org.jooq.api.annotation.State;
- import org.jooq.api.annotation.Transition;
-
- /**
- * This type is used for the {@link Update}'s DSL API.
- *
-... or blog about jOOQ. Write articles! Advertise jOOQ!
-
-
-
-
Contributing code
-
... or contribute code! If you want to share code, please follow these instructions
-
-
If you haven't already, download Eclipse (Indigo or Juno) from http://www.eclipse.org/. While you could develop with other IDEs as well, you wouldn't profit from all the installed launch configurations, etc.
If you haven't already, get M2E, the Eclipse Maven plugin to build jOOQ with Maven in Eclipse (The one from Sonatype, NOT the one from Eclipse)
-
Use the Eclipse formatting settings that have been checked in with the projects. Keeps the code nice and clean. Your code should not change (not much), if formatted with Ctrl-Shift-F. But don't format jOOQ DSL query code!
Send your changes as an Eclipse-compatible .patch file (or the sum of the modified Java classes). Ideally, the .patch file can be applied to the latest version of jOOQ on the SVN trunk.
-
I'll review, audit your changes and it goes into the repository with the next release, if I'm happy :-) AND: you'll make it to the hall of fame. Provide me with links to your webpage / blog / etc, if you would like to see that mentioned.
-
If you are a committer on GitHub, please commit with the following comment scheme: [#Issue-ID] GitHub-Ticket-Title - Your specific comment
-
-
-
Hints for new features
-
-
A lot of ideas are around already. Check out this GitHub Milestone to see some of them
-
-
Hints for new database integrations
-
-
Should you wish to provide an extension/support for a new RDBMS (such as Informix, Firebird, etc) your work would consist of these steps:
-
-
Extend Eclipse .classpath files and .launch targets such that all developers are able to use your newly added database / JDBC drivers
-
Implement code generation for the new RDBMS. For that, you'll need to provide an implementation for AbstractDatabase in jOOQ-meta
-
Make the integration tests for the new RDBMS run.
-
-
-
Or in more detail:
-
In detail, you have to do these steps:
-
-
Migrate create.sql and reset.sql scripts to your dialect
-
Create the above schema (create.sql) and data (reset.sql) in your test database
-
Extend org.jooq.util.AbstractDatabase. Ideally, you'll use your own generated meta-schema classes and the jOOQ API to navigate through your RDBMS's meta-schema in order to discover your test schema. Apart from the integration tests, this adds an additional layer of "proof of concept". See for instance org.jooq.util.oracle.OracleDatabase, where rather complex nested queries are used to navigate through Oracle foreign key relationships.
-
For a minimal implementation, check out org.jooq.util.sqlite.SQLiteDatabase, which only implements loadPrimaryKeys0() and getTables0(). All other implementations are optional extensions.
-
-
Once you've done these steps, in order to be sure that everything works fine you'll also have to do this:
-
-
Let jOOQ generate the integration test schema
-
Extend the org.jooq.test.jOOQAbstractTest for your RDBMS
-
Run the integration tests for your RDBMS
-
Fix all issues. You should get syntax errors, SQLDialectNotSupportedExceptions, etc
-
-
If you provide me with instructions how to set up your RDBMS instance and any partial implementation of the above, I'm going to take that into the jOOQ code base (giving you credit, of course) and guaranteeing implementation integrity in the future.
-
-
So let's get to work, then! :-)
-
-
Cheers, Lukas
-
-
-
-
The business community
-
Invest in jOOQ
-
-jOOQ is currently looking for partnerships. If you are a database vendor
-or a software vendor and you wish to get basic or advanced support for your
-specific database product integrated in jOOQ, or if you have any other specific
-feature request, please contact me directly at
-lukas.eder@gmail.com.
-
-
-
Advertise on www.jooq.org
-
-jOOQ has a growing community in dire need for good database products. Make
-yourself heard to many database users!
-
-
-
-
-
-
-
-
Donations
-
-If you simply wish to
-donate,
-that is fine too.
-
-
-
The latest news, links
-
-Follow jOOQ on any of these channels to get the latest news:
-
-Want to publish something about jOOQ? Use the official brand! Right-click on any image and
-choose "Save As..." to store the image on your computer.
-contact me for more specific formats:
-
-Your donations are highly valued and make up for the numerous amounts of hours (and love) put into jOOQ. It also helps buying those more and more demanding machines that can run 14 RDBMS in parallel, for integration tests :-)
-
-
\ No newline at end of file
diff --git a/jOOQ-website/download.php b/jOOQ-website/download.php
deleted file mode 100644
index 192818daf1..0000000000
--- a/jOOQ-website/download.php
+++ /dev/null
@@ -1,123 +0,0 @@
-
-
-
-"jOO*" stands for Java Object Oriented ... It started with jOOQ, an internalised
-domain specific language (aka SQL), written in Java. This DSL happens to be a
-fluent API, a concept that is on the rise in software engineering. jOO* comes
-into play whenever a pre-existing API is too clumsy and no fun to work with. Here
-are some other products:
-
-
jOOX stands for Java
- Object Oriented XML. It is a simple wrapper for the org.w3c.dom package,
- to allow for fluent XML document creation and manipulation where DOM is
- required but too verbose. jOOX only wraps the underlying document and
- can be used to enhance DOM, not as an alternative.
-
-
-
jOOR and jOOU
-
-
-
jOOR stands for Java
- Object Oriented Reflection. It is a simple wrapper for the java.lang.reflect package,
- to allow for fluent reflective access of objects in Java.
-
jOOU stands for Java
- Object Oriented Unsigned. It is a simple implementation of unsigned integer numbers in Java,
- created out of necessity, as jOOQ supports MySQL's (and other databases') unsigned integers
Attente de la suite de la requête.
-La partie initiale de la requête a bien été reçue et le client peut continuer avec la suite de cette requête.
-
-
Continue
-
Waiting for the end part of the request.
-The initial part of the request has been received and the client may continue with its request.
-
-
-
-
101
-
Changement de protocoles
-
Le serveur accepte la requête du client de changer de protocole.
-Le client a demandé au serveur d'utiliser un autre protocole que celui actuellement utilisé, et le serveur accepte cette requête.
-
-
Switching Protocols
-
The server is complying with a client request to switch protocols to the one specified in the Upgrade header field.
-The client asked the server to use another protocol than the one actually used, and the server complied this request.
La requête HTTP a été traitée avec succès.
-L'information retournée avec la réponse dépend de la méthode utilisée dans la requête. Par exemple la réponse à une requête GET classiquement émise par un navigateur web sera la ressource demandée (c'est-à-dire une page HTML, une image, etc).
-
-
OK
-
The HTTP request has succeeded.
-The information returned with the response is dependent on the method used in the request. For example the response to a standard GET request issued by a web browser is the requested resource (i.e. an HTML page, an image, etc).
-
-
-
-
201
-
Créé
-
La requête a été correctement traitée et a résulté en la création d'une nouvelle ressource.
-Cette ressource peut être référencée par l'URI retournée dans le corps de la réponse, avec l'URL la plus précise pour la ressource indiquée dans l'en-tête du champ "Location".
-
-
Created
-
The request has been fulfilled and resulted in a new resource being created.
-The newly created resource can be referenced by the URI(s) returned in the entity of the response, with the most specific URL for the resource given by a Location header field.
-
-
-
-
202
-
Accepté
-
La requête a été acceptée pour être traitée, mais son traitement peut ne pas avoir abouti.
-Ce code est utilisé en remplacement du 201 lorsque le traitement ne peut pas avoir lieu immédiatement, son résultat est donc indéterminé.
-
-
Accepted
-
The request has been accepted for processing, but the processing has not been completed.
-This code is used instead of 201 when the processing of the request cannot be carried out immediately, leaving the result undetermined.
-
-
-
-
203
-
Information non certifiée
-
L'information retournée n'a pas été générée par le serveur HTTP mais par une autre source non authentifiée.
-
-
Non-Authoritative Information
-
Usually the preliminary information sent from a server to a browser comes directly from the server. If it does not, then this code might also be sent to indicate that information did not come from a known source.
-
-
-
-
204
-
Pas de contenu
-
Le serveur HTTP a correctement traité la requête mais il n'y a pas d'information à envoyer en retour.
-Cela peut par exemple se produire lorsqu'un fichier HTML ou le résultat d'un programme CGI-BIN est vide.
-
-
No Content
-
The request was accepted and filled but no new information is being sent back.
-The browser receiving this response should not change its screen display (although new, and changed, private header information may be sent).
-
-
-
-
205
-
Contenu réinitialisé
-
Le client doit remettre à zéro le formulaire utilisé dans cette transaction.
-Ce code est envoyé au logiciel de navigation quand il doit réinitialiser un formulaire généré dynamiquement par un CGI-BIN, par exemple.
-
-
Reset Content
-
The browser should clear the form used for this transaction for additional input.
-Appropriate for data-entry CGI applications.
-
-
-
-
206
-
Contenu partiel
-
Le serveur retourne une partie seulement de la taille demandée.
-Ce code est utilisé lorsqu'une requête spécifiant une taille a été transmise.
-
-
Partial Content
-
The server is returning partial data of the size requested.
-Used in response to a request specifying a Range header. The server must specify the range included in the response with the Content-Range header.
L'URI demandée concerne plus d'une ressource.
-Par exemple, l'URI concerne un document qui a été traduit en plusieurs langues. Le serveur doit retourner des informations indiquant comment choisir une ressource précise.
-
-
Multiple Choices
-
The requested URI refers to more than one resource.
-For example, the URI could refer to a document that has been translated into many languages. The entity body returned by the server could have a list of more specific data about how to choose the correct resource.
-
-
-
-
301
-
Changement d'adresse définitif
-
La ressource demandée possède une nouvelle adresse (URI).
-Toute référence future à cette ressource doit être faite en utilisant l'une des URIs retournées dans la réponse. Le navigateur web doit normalement charger automatiquement la ressource demandée à sa nouvelle adresse.
-
-
Moved Permanently
-
The requested resource has been assigned a new permanent address (URI).
-Any future references to this resource should be done using one of the returned URIs. Web browsers should automatically load the requested resource using its new address.
-
-
-
-
302
-
Changement d'adresse temporaire
-
La ressource demandée réside temporairement à une adresse (URI) différente.
-Cette redirection étant temporaire, le navigateur web doit continuer à utiliser l'URI originale pour les requêtes futures.
-
-
Moved Temporarily
-
The requested resource resides temporarily under a different URI.
-Since the redirection may be altered on occasion, the client should continue to use the Request-URI for future requests.
-
-
-
-
303
-
Voir ailleurs
-
L'URI spécifié est disponible à un autre URI et doit être demandé par un GET.
-
-
See Other
-
The requested URI can be found at a different URI (specified in the Location header) and should be retrieved by a GET on that resource.
-
-
-
-
304
-
Non modifié
-
Le navigateur web a effectué une requête GET conditionnelle et l'accès est autorisé, mais le document n'a pas été modifié.
-Cette réponse classique signifie que vous avez configuré votre navigateur pour utiliser un cache HTTP (proxy) dans lequel une copie du document demandé est déjà stockée. Le proxy a donc demandé au serveur si le document original a changé depuis, et a reçu cette réponse : il pourra ainsi utiliser la copie locale.
-
-
Not Modified
-
The web browser has performed a conditional GET request and access is allowed, but the document has not been modified.
-This classic response means you have configured your web browser to use an HTTP cache (proxy) in which a copy of the requested document is already stored. The cache proxy thus asked the server if the original document was modified, and received this response, so it will use the local copy instead of loading it from the server.
-
-
-
-
305
-
Utiliser le proxy
-
L'URI spécifié doit être accédé en passant par le proxy.
-
-
Use Proxy
-
The requested URI must be accessed through the proxy in the Location header.
La requête HTTP n'a pas pu être comprise par le serveur en raison d'une syntaxe erronée.
-Le problème peut provenir d'un navigateur web trop récent ou d'un serveur HTTP trop ancien.
-
-
Bad Request
-
The HTTP request could not be understood by the server due to malformed syntax.
-The web browser may be too recent, or the HTTP server may be too old.
-
-
-
-
401
-
Non autorisé
-
La requête nécessite une identification de l'utilisateur.
-Concrètement, cela signifie que tout ou partie du serveur contacté est protégé par un mot de passe, qu'il faut indiquer au serveur pour pouvoir accéder à son contenu.
-
-
Unauthorized
-
The request requires user authentication.
-This means that all or a part of the requested server is protected by a password that should be given to the server to allow access to its contents.
-
-
-
-
402
-
Paiement exigé
-
Ce code n'est pas encore mis en oeuvre dans le protocole HTTP.
-
-
Payment Required
-
This code is not yet implemented in HTTP.
-
-
-
-
403
-
Interdit
-
Le serveur HTTP a compris la requête, mais refuse de la traiter.
-Ce code est généralement utilisé lorsqu'un serveur ne souhaite pas indiquer pourquoi la requête a été rejetée, ou lorsqu'aucune autre réponse ne correspond (par exemple le serveur est un Intranet et seules les machines du réseau local sont autorisées à se connecter au serveur).
-
-
Forbidden
-
The HTTP server understood the request, but is refusing to fulfill it.
-This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable (for example the server is an Intranet and only the LAN machines are authorized to connect).
-
-
-
-
404
-
Non trouvé
-
Le serveur n'a rien trouvé qui corresponde à l'adresse (URI) demandée.
-Cela signifie que l'URL que vous avez tapée ou cliquée est mauvaise ou obsolète et ne correspond à aucun document existant sur le serveur (vous pouvez essayez de supprimer progressivement les composants de l'URL en partant de la fin pour éventuellement retrouver un chemin d'accès existant).
-
-
Not Found
-
The server has not found anything matching the requested address (URI).
-This means the URL you have typed or cliked on is wrong or obsolete and does not match any document existing on the server (you may try to gradualy remove the URL components from the right to the left to eventually retrieve an existing path).
-
-
-
-
405
-
Méthode non autorisée
-
Ce code indique que la méthode utilisée par le client n'est pas supportée pour cet URI.
-
-
Method Not Allowed
-
This code is given with the Allow header and indicates that the method used by the client is not supported for this URI.
-
-
-
-
406
-
Aucun disponible
-
L'adresse (URI) spécifiée existe, mais pas dans le format préféré du client.
-Le serveur indique en retour le langage et les types d'encodages disponibles pour cette adresse.
-
-
Not Acceptable
-
The URI specified by the client exists, but not in a format preferred by the client.
-Along with this code, the server provides the Content-Language, Content-Encoding, and Content-Type headers.
-
-
-
-
407
-
Authentification proxy exigée
-
Le serveur proxy exige une authentification du client avant de transmettre la requête.
-
-
Proxy Authentication Required
-
The proxy server needs to authorize the request before forwarding it.
-
-
-
-
408
-
Requête hors-délai
-
Le client n'a pas présenté une requête complète pendant le délai maximal qui lui était imparti, et le serveur a abandonné la connexion.
-
-
Request Time-out
-
This response code means the client did not produce a full request within some predetermined time (usually specified in the server's configuration), and the server is disconnecting the network connection.
-
-
-
-
409
-
Conflit
-
La requête entre en conflit avec une autre requête ou avec la configuration du serveur.
-Des informations sur les raisons de ce conflit doivent être indiquée en retour.
-
-
Conflict
-
This code indicates that the request conflicts with another request or with the server's configuration.
-Information about the conflict should be returned in the data portion of the reply.
-
-
-
-
410
-
Parti
-
L'adresse (URI) demandée n'existe plus et a été définitivement supprimée du serveur.
-
-
Gone
-
This code indicates that the requested URI no longer exists and has been permanently removed from the server.
-
-
-
-
411
-
Longueur exigée
-
Le serveur a besoin de connaître la taille de cette requête pour pouvoir y répondre.
-
-
Length Required
-
The server will not accept the request without a Content-Length header supplied in the request.
-
-
-
-
412
-
Précondition échouée
-
Les conditions spécifiées dans la requête ne sont pas remplies.
-
-
Precondition Failed
-
The condition specified by one or more If... headers in the request evaluated to false.
-
-
-
-
413
-
Corps de requête trop grand
-
Le serveur ne peut traiter la requête car la taille de son contenu est trop importante.
-
-
Request Entity Too Large
-
The server will not process the request because its entity body is too large.
-
-
-
-
414
-
URI trop long
-
Le serveur ne peut traiter la requête car la taille de l'objet (URI) a retourner est trop importante.
-
-
Request-URI Too Long
-
The server will not process the request because its request URI is too large.
-
-
-
-
415
-
Format non supporté
-
Le serveur ne peut traiter la requête car son contenu est écrit dans un format non supporté.
-
-
Unsupported Media Type
-
The server will not process the request because its entity body is in an unsupported format.
-
-
-
-
416
-
Plage demandée invalide
-
Le sous-ensemble de recherche spécifié est invalide.
-
-
Requested range unsatifiable
-
The server will not process the request because the requested range is invalid.
-
-
-
-
417
-
Comportement erroné
-
Le comportement prévu pour le serveur n'est pas supporté.
-
-
Expectation failed
-
The behavior expected fot the server is not supported.
Le serveur HTTP a rencontré une condition inattendue qui l'a empêché de traiter la requête.
-Cette erreur peut par exemple être le résultat d'une mauvaise configuration du serveur, ou d'une ressource épuisée ou refusée au serveur sur la machine hôte.
-
-
Internal Server Error
-
The HTTP server encountered an unexpected condition which prevented it from fulfilling the request.
-For example this error can be caused by a serveur misconfiguration, or a resource exhausted or denied to the server on the host machine.
-
-
-
-
501
-
Non mis en oeuvre
-
Le serveur HTTP ne supporte pas la fonctionnalité nécessaire pour traiter la requête.
-C'est la réponse émise lorsque le serveur ne reconnaît pas la méthode indiquée dans la requête et n'est capable de la mettre en oeuvre pour aucune ressource (soit le navigateur web est trop récent, soit le serveur HTTP est trop ancien).
-
-
Not Implemented
-
The HTTP server does not support the functionality required to fulfill the request.
-This is the appropriate response when the server does not recognize the request method and is not capable of supporting it for any resource (either the web browser is too recent, or the HTTP server is too old).
-
-
-
-
502
-
Mauvais intermédiaire
-
Le serveur intermédiaire a fourni une réponse invalide.
-Le serveur HTTP a agi en tant qu'intermédiaire (passerelle ou proxy) avec un autre serveur, et a reçu de ce dernier une réponse invalide en essayant de traiter la requête.
-
-
Bad Gateway
-
The gateway server returned an invalid response.
-The HTTP server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request.
-
-
-
-
503
-
Service indisponible
-
Le serveur HTTP est actuellement incapable de traiter la requête en raison d'une surcharge temporaire ou d'une opération de maintenance.
-Cela sous-entend l'existence d'une condition temporaire qui sera levée après un certain délai.
-
-
Service Unavailable
-
The HTTP server is currently unable to handle the request due to a temporary overloading or maintenance of the server.
-The implication is that this is a temporary condition which will be alleviated after some delay.
-
-
-
-
504
-
Intermédiaire hors-délai
-
Cette réponse est identique au code 408 (requête hors-délai), mais ici c'est un proxy ou un autre intermédiaire qui a mis trop longtemps à répondre.
-
-
Gateway Time-out
-
This response is like 408 (Request Time-out) except that a gateway or proxy has timed out.
-
-
-
-
505
-
Version HTTP non supportée
-
La version du protocole HTTP utilisée dans cette requête n'est pas (ou plus) supportée par le serveur.
-
-
HTTP Version not supported
-
The server will not support the HTTP protocol version used in the request.
Tell us a little bit about yourself and join our newsletter
- We will keep this information strictly confidential
-
-
-
-
-
Help us understand your needs by completing this survey
-
-
- jOOQ has been the leading Java Open Source SQL building tool for the last three years. Feedback on social media such as Facebook, Twitter, reddit, Stack Overflow has been overwhelmingly positive.
-
-
- You can influence jOOQ's future in the professional OSS world. By completing this survey, you help us take the right decisions to provide you with an even better Java / SQL integration in the future. All of the provided information will be kept strictly confidential.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/jOOQ-website/img/.gitignore b/jOOQ-website/img/.gitignore
deleted file mode 100644
index 0acd18c94c..0000000000
--- a/jOOQ-website/img/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/Thumbs.db
diff --git a/jOOQ-website/img/banner-medium.png b/jOOQ-website/img/banner-medium.png
deleted file mode 100644
index aefd51b57f..0000000000
Binary files a/jOOQ-website/img/banner-medium.png and /dev/null differ
diff --git a/jOOQ-website/img/bg.jpg b/jOOQ-website/img/bg.jpg
deleted file mode 100644
index 4847ebea0a..0000000000
Binary files a/jOOQ-website/img/bg.jpg and /dev/null differ
diff --git a/jOOQ-website/img/eclipse-example-01.png b/jOOQ-website/img/eclipse-example-01.png
deleted file mode 100644
index 372276eaf5..0000000000
Binary files a/jOOQ-website/img/eclipse-example-01.png and /dev/null differ
diff --git a/jOOQ-website/img/eclipse-example-02.png b/jOOQ-website/img/eclipse-example-02.png
deleted file mode 100644
index e53f3c524e..0000000000
Binary files a/jOOQ-website/img/eclipse-example-02.png and /dev/null differ
diff --git a/jOOQ-website/img/eclipse-example-03.png b/jOOQ-website/img/eclipse-example-03.png
deleted file mode 100644
index a1d87db25b..0000000000
Binary files a/jOOQ-website/img/eclipse-example-03.png and /dev/null differ
diff --git a/jOOQ-website/img/eclipse-example-04.png b/jOOQ-website/img/eclipse-example-04.png
deleted file mode 100644
index a8fc4e8726..0000000000
Binary files a/jOOQ-website/img/eclipse-example-04.png and /dev/null differ
diff --git a/jOOQ-website/img/eclipse-example-05.png b/jOOQ-website/img/eclipse-example-05.png
deleted file mode 100644
index 1fac385811..0000000000
Binary files a/jOOQ-website/img/eclipse-example-05.png and /dev/null differ
diff --git a/jOOQ-website/img/favicon-16.png b/jOOQ-website/img/favicon-16.png
deleted file mode 100644
index 58d2c8b32e..0000000000
Binary files a/jOOQ-website/img/favicon-16.png and /dev/null differ
diff --git a/jOOQ-website/img/favicon-32.png b/jOOQ-website/img/favicon-32.png
deleted file mode 100644
index 21115aade8..0000000000
Binary files a/jOOQ-website/img/favicon-32.png and /dev/null differ
diff --git a/jOOQ-website/img/forkme.png b/jOOQ-website/img/forkme.png
deleted file mode 100644
index 10c08f4d55..0000000000
Binary files a/jOOQ-website/img/forkme.png and /dev/null differ
diff --git a/jOOQ-website/img/jooq-console-01.png b/jOOQ-website/img/jooq-console-01.png
deleted file mode 100644
index b52d1f4644..0000000000
Binary files a/jOOQ-website/img/jooq-console-01.png and /dev/null differ
diff --git a/jOOQ-website/img/jooq-console-02.png b/jOOQ-website/img/jooq-console-02.png
deleted file mode 100644
index 4c32430baf..0000000000
Binary files a/jOOQ-website/img/jooq-console-02.png and /dev/null differ
diff --git a/jOOQ-website/img/jooq-logo-black.png b/jOOQ-website/img/jooq-logo-black.png
deleted file mode 100644
index d53c3992cf..0000000000
Binary files a/jOOQ-website/img/jooq-logo-black.png and /dev/null differ
diff --git a/jOOQ-website/img/joox-big-bw.png b/jOOQ-website/img/joox-big-bw.png
deleted file mode 100644
index 63e984bbf1..0000000000
Binary files a/jOOQ-website/img/joox-big-bw.png and /dev/null differ
diff --git a/jOOQ-website/img/joox-big.png b/jOOQ-website/img/joox-big.png
deleted file mode 100644
index 56d8162c6a..0000000000
Binary files a/jOOQ-website/img/joox-big.png and /dev/null differ
diff --git a/jOOQ-website/img/joox-bw.png b/jOOQ-website/img/joox-bw.png
deleted file mode 100644
index 883fca22e2..0000000000
Binary files a/jOOQ-website/img/joox-bw.png and /dev/null differ
diff --git a/jOOQ-website/img/joox-small.png b/jOOQ-website/img/joox-small.png
deleted file mode 100644
index aa255723e4..0000000000
Binary files a/jOOQ-website/img/joox-small.png and /dev/null differ
diff --git a/jOOQ-website/img/joox.png b/jOOQ-website/img/joox.png
deleted file mode 100644
index bc78caeba8..0000000000
Binary files a/jOOQ-website/img/joox.png and /dev/null differ
diff --git a/jOOQ-website/img/logo-223x170.png b/jOOQ-website/img/logo-223x170.png
deleted file mode 100644
index e66bffe3f4..0000000000
Binary files a/jOOQ-website/img/logo-223x170.png and /dev/null differ
diff --git a/jOOQ-website/img/logo-big-bw.png b/jOOQ-website/img/logo-big-bw.png
deleted file mode 100644
index 8bf09d7772..0000000000
Binary files a/jOOQ-website/img/logo-big-bw.png and /dev/null differ
diff --git a/jOOQ-website/img/logo-big.jpg b/jOOQ-website/img/logo-big.jpg
deleted file mode 100644
index 970912c0ca..0000000000
Binary files a/jOOQ-website/img/logo-big.jpg and /dev/null differ
diff --git a/jOOQ-website/img/logo-big.png b/jOOQ-website/img/logo-big.png
deleted file mode 100644
index fcb1824469..0000000000
Binary files a/jOOQ-website/img/logo-big.png and /dev/null differ
diff --git a/jOOQ-website/img/logo-bw.png b/jOOQ-website/img/logo-bw.png
deleted file mode 100644
index dafa088645..0000000000
Binary files a/jOOQ-website/img/logo-bw.png and /dev/null differ
diff --git a/jOOQ-website/img/logo.png b/jOOQ-website/img/logo.png
deleted file mode 100644
index 3c4dfe1eb8..0000000000
Binary files a/jOOQ-website/img/logo.png and /dev/null differ
diff --git a/jOOQ-website/img/navigation-item-active.png b/jOOQ-website/img/navigation-item-active.png
deleted file mode 100644
index 3c4966b080..0000000000
Binary files a/jOOQ-website/img/navigation-item-active.png and /dev/null differ
diff --git a/jOOQ-website/img/social-fb-hover.png b/jOOQ-website/img/social-fb-hover.png
deleted file mode 100644
index ae733892c4..0000000000
Binary files a/jOOQ-website/img/social-fb-hover.png and /dev/null differ
diff --git a/jOOQ-website/img/social-fb.png b/jOOQ-website/img/social-fb.png
deleted file mode 100644
index ae733892c4..0000000000
Binary files a/jOOQ-website/img/social-fb.png and /dev/null differ
diff --git a/jOOQ-website/img/social-g+-hover.png b/jOOQ-website/img/social-g+-hover.png
deleted file mode 100644
index ce6b4261ca..0000000000
Binary files a/jOOQ-website/img/social-g+-hover.png and /dev/null differ
diff --git a/jOOQ-website/img/social-g+.png b/jOOQ-website/img/social-g+.png
deleted file mode 100644
index 3b74db2cd2..0000000000
Binary files a/jOOQ-website/img/social-g+.png and /dev/null differ
diff --git a/jOOQ-website/img/social-gh.png b/jOOQ-website/img/social-gh.png
deleted file mode 100644
index 470a72be73..0000000000
Binary files a/jOOQ-website/img/social-gh.png and /dev/null differ
diff --git a/jOOQ-website/img/social-in-hover.png b/jOOQ-website/img/social-in-hover.png
deleted file mode 100644
index 8b838cef76..0000000000
Binary files a/jOOQ-website/img/social-in-hover.png and /dev/null differ
diff --git a/jOOQ-website/img/social-in.png b/jOOQ-website/img/social-in.png
deleted file mode 100644
index 1d4044e914..0000000000
Binary files a/jOOQ-website/img/social-in.png and /dev/null differ
diff --git a/jOOQ-website/img/social-nl-hover.png b/jOOQ-website/img/social-nl-hover.png
deleted file mode 100644
index d18926c046..0000000000
Binary files a/jOOQ-website/img/social-nl-hover.png and /dev/null differ
diff --git a/jOOQ-website/img/social-nl.png b/jOOQ-website/img/social-nl.png
deleted file mode 100644
index 778d27c785..0000000000
Binary files a/jOOQ-website/img/social-nl.png and /dev/null differ
diff --git a/jOOQ-website/img/social-so.png b/jOOQ-website/img/social-so.png
deleted file mode 100644
index 8dcd540070..0000000000
Binary files a/jOOQ-website/img/social-so.png and /dev/null differ
diff --git a/jOOQ-website/img/social-su.png b/jOOQ-website/img/social-su.png
deleted file mode 100644
index 857407e236..0000000000
Binary files a/jOOQ-website/img/social-su.png and /dev/null differ
diff --git a/jOOQ-website/img/social-subscribe-hover.png b/jOOQ-website/img/social-subscribe-hover.png
deleted file mode 100644
index a578854bef..0000000000
Binary files a/jOOQ-website/img/social-subscribe-hover.png and /dev/null differ
diff --git a/jOOQ-website/img/social-subscribe.png b/jOOQ-website/img/social-subscribe.png
deleted file mode 100644
index 8adc0f4e41..0000000000
Binary files a/jOOQ-website/img/social-subscribe.png and /dev/null differ
diff --git a/jOOQ-website/img/social-tw-hover.png b/jOOQ-website/img/social-tw-hover.png
deleted file mode 100644
index 9932d128b2..0000000000
Binary files a/jOOQ-website/img/social-tw-hover.png and /dev/null differ
diff --git a/jOOQ-website/img/social-tw.png b/jOOQ-website/img/social-tw.png
deleted file mode 100644
index c78af6dab6..0000000000
Binary files a/jOOQ-website/img/social-tw.png and /dev/null differ
diff --git a/jOOQ-website/img/sql-performance-explained-de.png b/jOOQ-website/img/sql-performance-explained-de.png
deleted file mode 100644
index b828e47765..0000000000
Binary files a/jOOQ-website/img/sql-performance-explained-de.png and /dev/null differ
diff --git a/jOOQ-website/inc/LICENSE.txt b/jOOQ-website/inc/LICENSE.txt
deleted file mode 100644
index 03b0953bc3..0000000000
--- a/jOOQ-website/inc/LICENSE.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
-All rights reserved.
-
-This work is dual-licensed
-- under the Apache Software License 2.0 (the "ASL")
-- under the jOOQ License and Maintenance Agreement (the "jOOQ License")
-=============================================================================
-You may choose which license applies to you:
-
-- If you're using this work with Open Source databases, you may choose
- either ASL or jOOQ License.
-- If you're using this work with at least one commercial database, you must
- choose jOOQ License
-
-For more information, please visit http://www.jooq.org/licenses
-
-Apache Software License 2.0:
------------------------------------------------------------------------------
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-jOOQ License and Maintenance Agreement:
------------------------------------------------------------------------------
-Data Geekery grants the Customer the non-exclusive, timely limited and
-non-transferable license to install and use the Software under the terms of
-the jOOQ License and Maintenance Agreement.
-
-This library is distributed with a LIMITED WARRANTY. See the jOOQ License
-and Maintenance Agreement for more details: http://www.jooq.org/licensing
diff --git a/jOOQ-website/inc/RELEASENOTES-2.0.txt b/jOOQ-website/inc/RELEASENOTES-2.0.txt
deleted file mode 100644
index 4bce8b89ab..0000000000
--- a/jOOQ-website/inc/RELEASENOTES-2.0.txt
+++ /dev/null
@@ -1,2299 +0,0 @@
-jOOQ Release notes
-==================
-
-For an interactive overview, see also
-http://github.com/jOOQ/jOOQ/issues
-
-For a formatted text version, see
-http://www.jooq.org/notes.php?version=2.0
-
-For a text version, see
-http://www.jooq.org/inc/RELEASENOTES-2.0.txt
-
-Version 2.0.6 - April 22, 2012
-=================================================================
-
-This is a minor patch release, fixing some issues
-
-Bug fixes
----------
-#1189 - TableMapping regression for SQLite database
-#1190 - Cannot store SQLite records when using
- StatementType.STATIC_STATEMENT
-#1199 - Table.getFields() returns an internal representation of a
- table's field list. Make generated tables immutable
- instead!
-#1211 - Enforce method name disambiguation also when using custom
- strategies (regression of #182)
-#1212 - Enforce identifier disambiguation also when using custom
- strategies (regression)
-#1221 - Incorrect ExecuteListener invocation for INSERT ..
- RETURNING. executeStart() and executeEnd() are omitted
-#1223 - Cache ExecuteListener classes for performance
-#1232 - SQLException when Factory.fetch() does not return a
- ResultSet
-#1237 - Don't generate enum classes for columns in MySQL tables
- that are excluded from code generation
-#1241 - Wrong variable binding when comparing CHAR columns in
- Derby and DB2 without explicit casting to VARCHAR
-#1244 - Cannot override class name in GeneratorStrategy in
- Mode.POJO
-#1256 - User defined H2 functions codegen bug
-#1263 - Pass fetchsizes <= 0 to the JDBC driver (for MySQL
- compatibility)
-#1271 - Most databases allow for multiple identical foreign keys.
- This leads to compilation errors in generated source code
-#1287 - Remove oracle.sql dependency also from OSGi information
- in pom.xml
-#1298 - Avoid source code generation errors when generating code
- for unknown, dialect-specific data types
-#1343 - Regression in insertInto(...).values(...). Cannot pass
- Field> to values()
-
-Version 2.0.5 - February 26, 2012
-=================================================================
-
-This release finally introduced basic runtime configuration
-features for the jOOQ Factory. This configuration now includes:
-
-- Execute listener and SQL tracing support. jOOQ allows you to
- hook your own listeners into jOOQ's query execution engine to
- be notified of all sorts of events
-- The existing SchemaMapping features. They are now part of the
- runtime configuration
-- StatementType settings. Specify whether a Factory should
- execute java.sql.PreparedStatements (with bind variables) or
- static java.sql.Statements with inlined variables.
-
-The runtime configuration is documented here:
-
-http://www.jooq.org/manual/JOOQ/Factory/
-
-The listener and tracing support has been requested by
-Christopher Deckers, a new jOOQ user who has had the courtesy to
-contribute the new jOOQ Console, which is documented here:
-
-http://www.jooq.org/manual/ADVANCED/ExecuteListener/
-
-Apart from that, another long-requested feature is now fully
-implemented: The GeneratorStrategy, allowing for custom naming
-strategies in generated source code. This will allow for
-generating custom table / record class name prefixes / suffixes,
-as well as overriding the default behaviour for rendering UPPER,
-lower and CamelCase artefacts. See the manual for details:
-
-http://www.jooq.org/manual/META/Configuration/
-
-Features and improvements
--------------------------
-#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase()
-#408 - Add class prefixes, suffixes and other options to the
- code generator
-#492 - Add runtime configuration
-#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY
- operator
-#1140 - Add ResultQuery.fetchResultSet() to return the underlying
- JDBC result set
-#1143 - Add Result.isNotEmpty() for convenience
-#1145 - Add runtime configuration to specify whether jOOQ should
- execute java.sql.PreparedStatement (with bind variables)
- or a java.sql.Statement (with inlined parameters)
-#1146 - Add Query.getSQL(boolean) to indicate that bind values
- should be inlined (as a convenience for
- Factory.renderInlined(QueryPart))
-#1148 - Add Cursor.resultSet() to expose the underlying ResultSet
-#1149 - Allow for optional
- "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd"
- namespace in jooq-codegen configuration
-#1152 - Add & org.jooq.EnumType>
- E MySQLFactory.enumType(Class, int) for enum reverse
- lookups of MySQL-specific enums
-#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%'
-#1160 - Implement Field.contains(), .startsWith(), .endsWith()
- for numeric values, too
-#1161 - Use reflection to remove compile-time dependency on
- ojdbc for creating ARRAYs
-#1162 - Integrate jOOR into jOOQ for simpler reflection
-#1164 - Distinguish between Definition.getInputName(),
- .getOutputName()
-#1165 - Add constraint name to generated javadoc
-#1167 - Trivial issue with org.jooq.Factory.exists Javadoc -
- GitHub issue #10
-#1169 - Add Configuration.setData(), getData() to convey custom
- data in a configuration's lifecycle
-#1172 - Add runtime configuration to deactivate JooqLogger
-#1177 - Add jOOQ-Console module to jOOQ
-#1184 - Add DataType.isArray()
-
-API changes (backwards-compatible)
-----------------------------------
-#1142 - Rename Result.exportXML() to Result.intoXML() to stay
- more consistent
-#1151 - Deprecate SchemaMapping in favour of new runtime
- configuration
-
-Bug fixes
----------
-#978 - Schema.getTables() and similar methods return empty lists
- when Schema is mapped with SchemaMapping
-#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle
- SQL Server / SQLite
-#1154 - Bad inlining of byte[] in most dialects
-#1155 - byte[] are erroneously converted to String when using
- Record.intoArray()
-#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in
- Ingres (and other dialects, when the setting differs from
- the default)
-#1166 - Some generated Javadoc uses naming strategy or plain
- output name, instead of qualified output name
-#1168 - Oracle packages are generated as static, instead of
- static final
-#1175 - Factory.use() seems to render SQL with the Schema name
- still present
-#1179 - Oracle-generated ArrayRecords need a reference to
- org.jooq.Schema to read TABLE of OBJECT from stored
- procedures
-
-Test cases
-----------
-#1147 - Add integration tests for executing SQL generated using
- Factory.renderInlined()
-
-Version 2.0.4 - February 12, 2012
-=================================================================
-
-This release introduced many improvements to source code
-generation. These improvements include:
-
-- Maven and standalone code generation now use the same XML
- configuration, which is read by jOOQ-codegen using JAXB. This
- allows for more complex configuration elements in the future
-- jOOQ-codegen can now handle multi-schema databases and generate
- code for tables referencing tables from other schemata. This
- is integration tested against the SQL Server AdventureWorks
- database
-- jOOQ now allows to generate simple POJOs in addition to Records
- and to annotate both POJOs and Records with JPA annotations
- such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc.
-
-You can migrate your existing .properties configuration by running
-> org.jooq.util.GenerationTool /your.properties migrate
-
-Besides that, there is a lot of ongoing work to improve the
-integration of Oracle's TABLE and VARRAY types.
-
-Features and improvements
--------------------------
-#8 - Add JPA annotations to generated POJOs / Records
-#282 - Add support for multi-schema databases
-#287 - Add support for Oracle TABLE types
-#395 - Use XML configuration file instead of properties file
-#1089 - Add Field.contains(), .startsWith(), .endsWith() as a
- convenience for Field.like() (including escaping)
-#1092 - Move master data table configuration from
- generator.generate to generator.database namespace
-#1093 - Add support for generator.strategy in Maven source code
- generation
-#1094 - Add support for generator.database.date-as-timestamp in
- Maven source code generation
-#1095 - Move generator.generate.unsigned-types to
- generator.database namespace
-#1096 - Add support for generator.generate.unsigned-types in
- Maven source code generation
-#1103 - Add support for SQL Server data type uniqueidentifier
-#1106 - Add Factory.escape(Field, char) for use with LIKE
-#1108 - Add support for multi-schema databases using Maven code
- generation
-#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types
-#1127 - Add support for POJO classes generation
-#1129 - Allow for using Param in LIMIT .. OFFSET clauses
-#1132 - Add RenderContext.castMode() to allow for avoiding casts
- where this is not really needed
-#1136 - Add generation option to enable/disable generating
- navigation methods
-
-Bug fixes
----------
-#1099 - Derby generated artefacts are not sorted alphabetically
-#1101 - Internal API leak exposed through covariance in
- AbstractTable.joinXXX() methods
-#1110 - VARRAY element type information is lost when unnesting
- VARRAY's in Oracle
-#1111 - VARRAY element type information is lost when unnesting
- VARRAY's returned from functions in Oracle
-#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle.
- The unnested table contains several columns but jOOQ only
- unnests "COLUMN_VALUE"
-#1117 - NullPointerException when passing an ArrayRecord
- containing a null array to a stored function in Oracle
-#1125 - Postgres needs casting for date time data types in
- queries like SELECT ? FROM DUAL
-#1131 - DB2: [Noauthorized routine named "LIKE" of type
- "FUNCTION" having compatible arguments was found] when
- using Field.like(concat(x, y))
-#1133 - Compilation errors in generated source code if the same
- constraint name exists in several schemata
-#1134 - NullPointerException in code generation when a foreign
- key constraint references a table from another schema
- that is not being generated
-#1135 - Generated Javadoc references inputSchema instead of
- outputSchema
-
-Test cases
-----------
-#1009 - Add more integration tests for proper handling of
- java.sql.Date, Time, Timestamp
-#1090 - Run jOOQ tests against AdventureWorks SQL Server sample
- database
-#1105 - Add integration tests for multi-schema source code
- generation and querying
-#1122 - The 10k lines of integration test code are too heavy for
- the compiler. Create test modules with fewer lines of
- code, each.
-
-Version 2.0.3 - January 29, 2012
-=================================================================
-
-This release focuses on increased compatibility between various
-SQL dialect integrations as far as ARRAY and JOIN support is
-concerned:
-
-- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres.
- Nevertheless, they can be somewhat simulated in other dialects
- using nested selects with UNION ALL. Increased compatibility
- leads to a nicer API, where ARRAYs are used along with ALL/ANY
- quantifiers, for instance.
-
-- JOIN syntaxes can be quite powerful in SQL. Apart from
- simulating NATURAL JOIN, JOIN USING clauses, as well as a
- synthetic "KEY JOIN" syntax, jOOQ now also supports nesting
- JOIN expressions to create more complex table sources. See a
- recent blog post on the subject here:
-
-http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/
-
-Features and improvements
--------------------------
-#578 - Add KEY JOIN syntax to simulate joining using generated
- foreign keys
-#577 - Simulate NATURAL JOIN syntax, where this is unavailable
-#582 - Simulate JOIN USING syntax, where this is unavailable
-#671 - Allow for nesting JOIN clauses
-#676 - Add Table.join() methods to create more flexible table
- sources
-#993 - Add Field.equalAny(T[]), .equalAny(Field) methods
-#1048 - Simulate (array) syntax for dialects
- that do not support arrays
-#1051 - Add Factory.execute(String, Object...) as a convenience
- method for Factory.query(...).execute()
-#1055 - Simulate Factory.table(Object[]) and table(List>) using
- UNION ALL in dialects that do not support arrays
-#1060 - Improve debug logging of H2 arrays. The syntax is not
- ARRAY[1, 2], but (1, 2)
-#1065 - Add OracleFactory.sysContext(String, String) to support
- Oracle's SYS_CONTEXT function
-#1069 - Add support for INSERT INTO table(field1, field2, ...)
- SELECT syntax - as opposed to the existing INSERT INTO
- table SELECT
-#1072 - Add support for LIKE .. ESCAPE .. syntax
-#1074 - Add Field.notBetween(T, T) for convenience
-#1080 - Add support for JDBC's Statement.setFetchSize() in
- ResultQuery.fetchLazy()
-#1082 - Add some more DEBUG logging in AbstractResultQuery
-
-API changes (backwards-compatible)
-----------------------------------
-#1059 - Change SelectFromStep.from(Collection>) to
- from(Collection extends TableLike>>)
-
-API changes (backwards-incompatible)
-------------------------------------
-#1087 - Change the NTILE function to return Field
- instead of Field
-
-Bug fixes
----------
-#1071 - Make Sequence Serializable
-#1081 - Derby error in NULL handling when simulating unnested
- arrays that contain NULL values
-#1084 - Bind index mismatch in val(null).equal(null) and in
- val(null).notEqual(null)
-#1091 - Add missing @Support annotations on Table.crossJoin()
- methods
-
-Test cases
-----------
-#1026 - Add integration tests for NTILE window function and
- document compatibility
-#1073 - Add integration tests for NOT IN queries holding NULL
- arguments
-
-Version 2.0.2 - January 8, 2012
-=================================================================
-
-This is a maintenance release for jOOQ 2.0. The main improvements
-include
-
-- The whole jOOQ API is now annotated with a new org.jooq.Support
- annotation to help you assess whether a certain SQL clause is
- available in your database or not. This is particularly useful
- when your application should support several databases at once
- (e.g. MySQL, Postgres, Oracle)
-- The Oracle PIVOT clause is now formally supported for advanced
- statistical queries in Oracle. This clause will be simulated in
- other dialects in the future.
-- The DATE data type can be mapped to TIMESTAMP. This important
- when you query a legacy Oracle database, where DATE columns
- can also contain time information
-- Several convenience methods have been added for more fluent
- syntax, when using plain SQL result queries, subqueries as
- tables, or when unnesting arrays in ANY() and ALL() quantifiers
-
-Further type mapping support is still experimental. An official
-cooperation with MinuteProject for source code generation is
-being analysed. With MinuteProject, many source code generation
-issues could be addressed centrally, as MinuteProject specialises
-in source code generation:
-
-http://minuteproject.wikispaces.com/
-
-Features and improvements
--------------------------
-#595 - Add support for Oracle's PIVOT clause
-#869 - Add support for using ANY, ALL with arrays, not just with
- subselects
-#1007 - Formally document the API methods to indicate whether
- something is supported by any given SQL dialect
-#1011 - Add code generation configuration parameter to avoid
- generating @Generated annotation
-#1019 - Render LIMIT x OFFSET y also for MySQL, instead of
- LIMIT y, x
-#1022 - Add missing Sybase ASE implementation for Factory.use()
-#1024 - Add Factory.resultQuery(String, Object...) to allow for
- arbitrary execution modes of plain SQL queries (lazy,
- later, into, array, etc)
-#1025 - Add missing SQLite implementation for Factory.deg() and
- Factory.rad()
-#1033 - Generate table comments into generated Tables.java as
- Javadoc
-#1040 - Add Object[][] Result.intoArray() and
- Object[] Record.intoArray() for convenience. Let
- E Record.into(Class) also support array types.
-#1041 - Add Table Factory.table(Select) convenience
- method for more fluency
-#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX
- aggregate functions
-#1046 - Generate Ingres table and column comments in generated
- source code (only Ingres 10)
-
-API changes (backwards-compatible)
-----------------------------------
-#1050 - Deprecate usage of SOME quantifier in predicates, such as
- equalSome()
-
-API changes (backwards-incompatible)
-------------------------------------
-#1036 - Fixed API typo in
- WindowsRowsStep.rowsBetweenUnboundedFollwing()
-#1037 - The fluent API allows for JOIN clauses without FROM
- clause
-
-Bug fixes
----------
-#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax
- may cause type-safety issues in some databases. VALUES
- should be converted before binding
-#1014 - FindBugs: Latent risk of infinite recursion due to typo
- in QueryPartList.retainAll();
-#1015 - FindBugs: 7 occurrences of "Bad attempt to compute
- absolute value of signed 32-bit hashcode". In extreme
- cases, this could lead to SQL syntax errors
-#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously
- creates a WHERE cond2 CONNECT BY cond1 statement
-#1028 - Syntax errors when using untyped param() in HSQLDB (and
- other strongly typed dialects)
-#1029 - Postgres can't bind NULL values in cases, where bind type
- is Object.class and bind value was created with
- Factory.param()
-#1030 - UnsupportedOperationException when calling
- Query.bind(int, Object) on a query containing plain SQL
- fields
-#1031 - Incorrect debug logging when plain SQL QueryParts like
- field("?") bind null values
-#1032 - Incorrect debug logging when plain SQL QueryParts contain
- String literals, such as 'Hello? Anyobody out there?'
-#1047 - Field.notEqualAny() erroneously renders <> ALL()
-
-Test cases
-----------
-#1021 - Add explicit integration tests for
- LEFT|RIGHT|FULL OUTER JOIN
-
-Version 2.0.1 - December 23, 2011
-=================================================================
-
-This is a maintenance release for jOOQ 2.0. The main improvements
-include
-
-- Better integration for using jOOQ with Spring Data. This
- includes support for named parameters, as well as allowing to
- change bind values on previously constructed Query objects
-- The MERGE statement has been enhanced for better integration
- with Oracle.
-- jOOQ is now ready to use with Scala / Groovy
-
-For more information about using jOOQ with Scala, see this blog
-post:
-http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/
-
-There is now also experimental support for a custom type mapping.
-This mapping allows to rewrite data types at code generation time
-as well as to specify custom enum data types (e.g. boolean Y/N).
-Not all integration tests run smoothly for custom data types,
-hence, this feature is not yet fully supported.
-
-Features and improvements
--------------------------
-#691 - Add support for Oracle CURSOR REF IN / INOUT parameters
-#677 - Add type-mapping configuration, enforcing types for
- columns
-#947 - Add custom type mapping support (experimental)
-#968 - Allow for custom enum types, configured in the code
- generator (experimental)
-#974 - Add Schema.getTable(String), getSequence(String),
- getUDT(String) for better runtime Schema meta-navigation
-#975 - Add Sequence.getName(), getSchema(), getDataType()
-#980 - Add support for named parameters, to better interact with
- Spring
-#991 - Add Query.bind(String, Object) and bind(int, Object) to
- easily modify existing bind values
-#992 - Document thrown DataTypeException in Convert methods
-#998 - Enhance MERGE statement for Oracle extensions:
- WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE ..
- WHEN NOT MATCHED THEN INSERT .. WHERE ..
-#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in
- MERGE statement's WHEN NOT MATCHED THEN INSERT clause
-
-API changes (backwards-compatible)
-----------------------------------
-#981 - Cannot insertInto(table("my_table")), as plain SQL tables
- return Table, not Table. Relax
- bound on R
-#988 - Change Factory.field(String) to return Field