From 08839094f770b477f74b5bc64eb3a87c574a751d Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 16 Nov 2021 17:37:16 +0100 Subject: [PATCH] [jOOQ/jOOQ#982] Add support for GIS extensions - Added Oracle support for: - ST_AsText - ST_Contains - ST_Equals - ST_ExteriorRing - ST_GeometryType - ST_InteriorRingN - ST_Intersection - ST_Intersects - ST_Length - ST_NumGeometries - ST_NumInteriorRingN - ST_Overlaps - ST_Touches - ST_Union - Added support for ST_Difference --- jOOQ/src/main/java/org/jooq/impl/DSL.java | 55 +++++ jOOQ/src/main/java/org/jooq/impl/Names.java | 1 + .../main/java/org/jooq/impl/ParserImpl.java | 40 +++- jOOQ/src/main/java/org/jooq/impl/QOM.java | 18 ++ .../src/main/java/org/jooq/impl/StAstext.java | 4 + .../main/java/org/jooq/impl/StContains.java | 4 + .../main/java/org/jooq/impl/StDifference.java | 195 ++++++++++++++++++ .../src/main/java/org/jooq/impl/StEquals.java | 4 + .../java/org/jooq/impl/StExteriorRing.java | 4 + .../java/org/jooq/impl/StGeometryType.java | 15 ++ .../java/org/jooq/impl/StInteriorRingN.java | 4 + .../java/org/jooq/impl/StIntersection.java | 4 + .../main/java/org/jooq/impl/StIntersects.java | 4 + .../src/main/java/org/jooq/impl/StLength.java | 4 + .../java/org/jooq/impl/StNumGeometries.java | 4 + .../java/org/jooq/impl/StNumInteriorRing.java | 4 + .../main/java/org/jooq/impl/StOverlaps.java | 4 + .../main/java/org/jooq/impl/StTouches.java | 4 + jOOQ/src/main/java/org/jooq/impl/StUnion.java | 4 + 19 files changed, 371 insertions(+), 5 deletions(-) create mode 100644 jOOQ/src/main/java/org/jooq/impl/StDifference.java diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 6e156192e6..f2a325329c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -21627,6 +21627,61 @@ public class DSL { + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/Names.java b/jOOQ/src/main/java/org/jooq/impl/Names.java index 1dabb486da..fa72031929 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Names.java +++ b/jOOQ/src/main/java/org/jooq/impl/Names.java @@ -431,6 +431,7 @@ final class Names { static final Name N_ST_CENTROID = unquotedName("st_centroid"); static final Name N_ST_CONTAINS = unquotedName("st_contains"); static final Name N_ST_CROSSES = unquotedName("st_crosses"); + static final Name N_ST_DIFFERENCE = unquotedName("st_difference"); static final Name N_ST_DISJOINT = unquotedName("st_disjoint"); static final Name N_ST_DISTANCE = unquotedName("st_distance"); static final Name N_ST_ENDPOINT = unquotedName("st_endpoint"); diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 0dc84d2ea2..66b93e1b6a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -330,6 +330,7 @@ import static org.jooq.impl.DSL.square; // ... // ... // ... +// ... import static org.jooq.impl.DSL.stddevPop; import static org.jooq.impl.DSL.stddevSamp; import static org.jooq.impl.DSL.sum; @@ -6206,7 +6207,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { break; case 'S': - if (parseFunctionNameIf("ST_CONTAINS") && requireProEdition()) { + if (parseFunctionNameIf("ST_CONTAINS", "SDO_CONTAINS") && requireProEdition()) { @@ -6221,7 +6222,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { } - else if (parseFunctionNameIf("ST_EQUALS") && requireProEdition()) { + else if (parseFunctionNameIf("ST_EQUALS", "SDO_EQUAL") && requireProEdition()) { @@ -6241,12 +6242,12 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { } - else if (parseFunctionNameIf("ST_OVERLAPS") && requireProEdition()) { + else if (parseFunctionNameIf("ST_OVERLAPS", "SDO_OVERLAPS") && requireProEdition()) { } - else if (parseFunctionNameIf("ST_TOUCHES") && requireProEdition()) { + else if (parseFunctionNameIf("ST_TOUCHES", "SDO_TOUCH") && requireProEdition()) { @@ -7801,6 +7802,10 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { + + + + @@ -8396,6 +8401,16 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { + } + else if (parseFunctionNameIf("ST_DIFFERENCE") && requireProEdition()) { + + + + } + else if (parseFunctionNameIf("SDO_GEOM.SDO_DIFFERENCE") && requireProEdition()) { + + + } else if (parseFunctionNameIf("ST_DISTANCE") && requireProEdition()) { @@ -8441,18 +8456,28 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { + } + else if (parseFunctionNameIf("SDO_GEOM.SDO_INTERSECTION") && requireProEdition()) { + + + } else if (parseFunctionNameIf("ST_LENGTH") && requireProEdition()) { + } + else if (parseFunctionNameIf("SDO_GEOM.SDO_LENGTH") && requireProEdition()) { + + + } else if (parseFunctionNameIf("ST_NUMINTERIORRING", "ST_NUMINTERIORRINGS") && requireProEdition()) { } - else if (parseFunctionNameIf("ST_NUMGEOMETRIES") && requireProEdition()) { + else if (parseFunctionNameIf("ST_NUMGEOMETRIES", "SDO_UTIL.GETNUMELEM") && requireProEdition()) { @@ -8476,6 +8501,11 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { + } + else if (parseFunctionNameIf("SDO_GEOM.SDO_UNION") && requireProEdition()) { + + + } else if (parseFunctionNameIf("ST_X") && requireProEdition()) { diff --git a/jOOQ/src/main/java/org/jooq/impl/QOM.java b/jOOQ/src/main/java/org/jooq/impl/QOM.java index b11b4abaf1..c69d83fd02 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QOM.java +++ b/jOOQ/src/main/java/org/jooq/impl/QOM.java @@ -5486,6 +5486,24 @@ public final class QOM { + + + + + + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StAstext.java b/jOOQ/src/main/java/org/jooq/impl/StAstext.java index 672b7e22cc..723d3df8d4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StAstext.java +++ b/jOOQ/src/main/java/org/jooq/impl/StAstext.java @@ -166,6 +166,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StContains.java b/jOOQ/src/main/java/org/jooq/impl/StContains.java index 91b38ac18a..255d7e8f08 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StContains.java +++ b/jOOQ/src/main/java/org/jooq/impl/StContains.java @@ -180,6 +180,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StDifference.java b/jOOQ/src/main/java/org/jooq/impl/StDifference.java new file mode 100644 index 0000000000..7a6937b26f --- /dev/null +++ b/jOOQ/src/main/java/org/jooq/impl/StDifference.java @@ -0,0 +1,195 @@ +/* + * 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 + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ +package org.jooq.impl; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StEquals.java b/jOOQ/src/main/java/org/jooq/impl/StEquals.java index 91b38ac18a..255d7e8f08 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StEquals.java +++ b/jOOQ/src/main/java/org/jooq/impl/StEquals.java @@ -180,6 +180,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StExteriorRing.java b/jOOQ/src/main/java/org/jooq/impl/StExteriorRing.java index 672b7e22cc..723d3df8d4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StExteriorRing.java +++ b/jOOQ/src/main/java/org/jooq/impl/StExteriorRing.java @@ -166,6 +166,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StGeometryType.java b/jOOQ/src/main/java/org/jooq/impl/StGeometryType.java index 672b7e22cc..cbcf8eed67 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StGeometryType.java +++ b/jOOQ/src/main/java/org/jooq/impl/StGeometryType.java @@ -155,6 +155,21 @@ package org.jooq.impl; + + + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StInteriorRingN.java b/jOOQ/src/main/java/org/jooq/impl/StInteriorRingN.java index 255d7e8f08..7a6937b26f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StInteriorRingN.java +++ b/jOOQ/src/main/java/org/jooq/impl/StInteriorRingN.java @@ -184,6 +184,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StIntersection.java b/jOOQ/src/main/java/org/jooq/impl/StIntersection.java index 255d7e8f08..7a6937b26f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StIntersection.java +++ b/jOOQ/src/main/java/org/jooq/impl/StIntersection.java @@ -184,6 +184,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StIntersects.java b/jOOQ/src/main/java/org/jooq/impl/StIntersects.java index 91b38ac18a..255d7e8f08 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StIntersects.java +++ b/jOOQ/src/main/java/org/jooq/impl/StIntersects.java @@ -180,6 +180,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StLength.java b/jOOQ/src/main/java/org/jooq/impl/StLength.java index 672b7e22cc..723d3df8d4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StLength.java +++ b/jOOQ/src/main/java/org/jooq/impl/StLength.java @@ -166,6 +166,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StNumGeometries.java b/jOOQ/src/main/java/org/jooq/impl/StNumGeometries.java index 672b7e22cc..723d3df8d4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StNumGeometries.java +++ b/jOOQ/src/main/java/org/jooq/impl/StNumGeometries.java @@ -166,6 +166,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StNumInteriorRing.java b/jOOQ/src/main/java/org/jooq/impl/StNumInteriorRing.java index 672b7e22cc..723d3df8d4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StNumInteriorRing.java +++ b/jOOQ/src/main/java/org/jooq/impl/StNumInteriorRing.java @@ -166,6 +166,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StOverlaps.java b/jOOQ/src/main/java/org/jooq/impl/StOverlaps.java index 91b38ac18a..255d7e8f08 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StOverlaps.java +++ b/jOOQ/src/main/java/org/jooq/impl/StOverlaps.java @@ -180,6 +180,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StTouches.java b/jOOQ/src/main/java/org/jooq/impl/StTouches.java index 91b38ac18a..255d7e8f08 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StTouches.java +++ b/jOOQ/src/main/java/org/jooq/impl/StTouches.java @@ -180,6 +180,10 @@ package org.jooq.impl; + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/StUnion.java b/jOOQ/src/main/java/org/jooq/impl/StUnion.java index 6dfc01ae15..55aca93bbb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StUnion.java +++ b/jOOQ/src/main/java/org/jooq/impl/StUnion.java @@ -191,6 +191,10 @@ package org.jooq.impl; + + + +