Skip to content

Commit

Permalink
0002344: Geography data type support
Browse files Browse the repository at this point in the history
  • Loading branch information
jhicks committed Jul 8, 2015
1 parent ba66860 commit 12a2ea4
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 7 deletions.
Expand Up @@ -48,6 +48,7 @@ public MsSqlTriggerTemplate(ISymmetricDialect symmetricDialect) {
(castToNVARCHAR ? "n" : "")
+"varchar($(columnSize)),$(tableAlias).\"$(columnName)\") $(masterCollation),'\\','\\\\'),'\"','\\\"') + '\"' end" ;
geometryColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else '\"' + replace(replace(convert("+(castToNVARCHAR ? "n" : "")+"varchar(max),$(tableAlias).\"$(columnName)\".STAsText()) $(masterCollation),'\\','\\\\'),'\"','\\\"') + '\"' end" ;
geographyColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else '\"' + replace(replace(convert("+(castToNVARCHAR ? "n" : "")+"varchar(max),$(tableAlias).\"$(columnName)\".STAsText()) $(masterCollation),'\\','\\\\'),'\"','\\\"') + '\"' end" ;
numberColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else ('\"' + convert(varchar(40), $(tableAlias).\"$(columnName)\",2) + '\"') end" ;
datetimeColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else ('\"' + convert(varchar,$(tableAlias).\"$(columnName)\",121) + '\"') end" ;
clobColumnTemplate = "case when $(origTableAlias).\"$(columnName)\" is null then '' else '\"' + replace(replace(cast($(origTableAlias).\"$(columnName)\" as "+(castToNVARCHAR ? "n" : "")+"varchar(max)),'\\','\\\\'),'\"','\\\"') + '\"' end" ;
Expand Down
Expand Up @@ -35,6 +35,7 @@ public MsSql2000TriggerTemplate(ISymmetricDialect symmetricDialect) {
emptyColumnTemplate = "''" ;
stringColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else '\"' + replace(replace(convert(varchar(8000),$(tableAlias).\"$(columnName)\") $(masterCollation),'\\','\\\\'),'\"','\\\"') + '\"' end" ;
geometryColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else '\"' + replace(replace(convert(varchar(8000),$(tableAlias).\"$(columnName)\".STAsText()) $(masterCollation),'\\','\\\\'),'\"','\\\"') + '\"' end" ;
geographyColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else '\"' + replace(replace(convert(varchar(8000),$(tableAlias).\"$(columnName)\".STAsText()) $(masterCollation),'\\','\\\\'),'\"','\\\"') + '\"' end" ;
numberColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else ('\"' + convert(varchar(40), $(tableAlias).\"$(columnName)\",2) + '\"') end" ;
datetimeColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else ('\"' + convert(varchar,$(tableAlias).\"$(columnName)\",121) + '\"') end" ;
clobColumnTemplate = "case when $(origTableAlias).\"$(columnName)\" is null then '' else '\"' + replace(replace(cast($(origTableAlias).\"$(columnName)\" as varchar(8000)),'\\','\\\\'),'\"','\\\"') + '\"' end" ;
Expand Down
Expand Up @@ -31,6 +31,7 @@ public PostgreSqlTriggerTemplate(ISymmetricDialect symmetricDialect) {
super(symmetricDialect);
//@formatter:off
geometryColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else '\"' || replace(replace(cast(ST_AsEWKT($(tableAlias).\"$(columnName)\") as varchar),$$\\$$,$$\\\\$$),'\"',$$\\\"$$) || '\"' end" ;
geographyColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else '\"' || replace(replace(cast(ST_AsEWKT($(tableAlias).\"$(columnName)\") as varchar),$$\\$$,$$\\\\$$),'\"',$$\\\"$$) || '\"' end" ;
emptyColumnTemplate = "''" ;
stringColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else '\"' || replace(replace(cast($(tableAlias).\"$(columnName)\" as varchar),$$\\$$,$$\\\\$$),'\"',$$\\\"$$) || '\"' end" ;
xmlColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else '\"' || replace(replace(cast($(tableAlias).\"$(columnName)\" as varchar),$$\\$$,$$\\\\$$),'\"',$$\\\"$$) || '\"' end" ;
Expand Down
Expand Up @@ -88,6 +88,8 @@ abstract public class AbstractTriggerTemplate {
protected String dateTimeWithLocalTimeZoneColumnTemplate;

protected String geometryColumnTemplate;

protected String geographyColumnTemplate;

protected String clobColumnTemplate;

Expand Down Expand Up @@ -716,7 +718,13 @@ protected ColumnString fillOutColumnTemplate(String origTableAlias, String table
&& (column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOMETRY))
&& StringUtils.isNotBlank(geometryColumnTemplate)) {
templateToUse = geometryColumnTemplate;
} else {
}
else if (column.getJdbcTypeName() != null
&& (column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOGRAPHY))
&& StringUtils.isNotBlank(geographyColumnTemplate)) {
templateToUse = geographyColumnTemplate;
}
else {
switch (column.getMappedTypeCode()) {
case Types.TINYINT:
case Types.SMALLINT:
Expand Down
Expand Up @@ -103,6 +103,7 @@ public abstract class TypeMap

public static final String SQLXML = "SQLXML";
public static final String GEOMETRY = "GEOMETRY";
public static final String GEOGRAPHY = "GEOGRAPHY";
public static final String POINT = "POINT";
public static final String LINESTRING = "LINESTRING";
public static final String POLYGON = "POLYGON";
Expand Down
Expand Up @@ -398,6 +398,8 @@ protected Object getObjectValue(String value, Column column, BinaryEncoding enco
objectValue = value.equals("1") ? Boolean.TRUE : Boolean.FALSE;
} else if (!(column.getJdbcTypeName() != null && column.getJdbcTypeName().toUpperCase()
.contains(TypeMap.GEOMETRY))
&& !(column.getJdbcTypeName() != null && column.getJdbcTypeName().toUpperCase()
.contains(TypeMap.GEOGRAPHY))
&& (type == Types.BLOB || type == Types.LONGVARBINARY || type == Types.BINARY
|| type == Types.VARBINARY ||
// SQLServer ntext type
Expand Down
Expand Up @@ -36,7 +36,9 @@ public MySqlDmlStatement(DmlType type, String catalogName, String schemaName, St

@Override
protected void appendColumnQuestion(StringBuilder sql, Column column) {
if (column.getJdbcTypeName() != null && column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOMETRY)) {
if (column.getJdbcTypeName() != null &&
(column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOMETRY)
|| column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOGRAPHY))) {
sql.append("geomfromtext(?)").append(",");
} else {
super.appendColumnQuestion(sql, column);
Expand All @@ -45,7 +47,8 @@ protected void appendColumnQuestion(StringBuilder sql, Column column) {

@Override
protected void appendColumnEquals(StringBuilder sql, Column column) {
if (column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOMETRY)) {
if (column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOMETRY)
|| column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOGRAPHY)) {
sql.append(quote).append(column.getName()).append(quote).append(" = ")
.append("geomfromtext(?)");
} else {
Expand Down
Expand Up @@ -42,7 +42,9 @@ protected void appendColumnQuestion(StringBuilder sql, Column column) {
if (column.isTimestampWithTimezone()) {
sql.append("TO_TIMESTAMP_TZ(?, 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM')")
.append(",");
} else if (name != null && name.toUpperCase().contains(TypeMap.GEOMETRY)) {
} else if (name != null && (
name.toUpperCase().contains(TypeMap.GEOMETRY) ||
name.toUpperCase().contains(TypeMap.GEOGRAPHY))) {
sql.append("SYM_WKT2GEOM(?)").append(",");
} else {
super.appendColumnQuestion(sql, column);
Expand All @@ -54,7 +56,8 @@ protected void appendColumnEquals(StringBuilder sql, Column column) {
if (column.isTimestampWithTimezone()) {
sql.append(quote).append(column.getName()).append(quote)
.append(" = TO_TIMESTAMP_TZ(?, 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM')");
} else if (column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOMETRY)) {
} else if (column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOMETRY) ||
column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOGRAPHY)) {
sql.append(quote).append(column.getName()).append(quote).append(" = ")
.append("SYM_WKT2GEOM(?)");
} else {
Expand Down
Expand Up @@ -121,7 +121,9 @@ protected void appendColumnQuestion(StringBuilder sql, Column column) {
sql.append("cast(? as bit varying)").append(",");
} else if (column.getJdbcTypeName() != null && column.getJdbcTypeName().toUpperCase().contains(TypeMap.INTERVAL)) {
sql.append("cast(? as interval)").append(",");
} else if (column.getJdbcTypeName() != null && column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOMETRY)) {
} else if (column.getJdbcTypeName() != null && (
column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOMETRY) ||
column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOGRAPHY))) {
sql.append("ST_GEOMFROMTEXT(?)").append(",");
} else {
super.appendColumnQuestion(sql, column);
Expand All @@ -142,7 +144,8 @@ protected void appendColumnEquals(StringBuilder sql, Column column) {
} else if (column.getJdbcTypeName().toUpperCase().contains(TypeMap.INTERVAL)) {
sql.append(quote).append(column.getName()).append(quote)
.append(" = cast(? as interval)");
} else if (column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOMETRY)) {
} else if (column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOMETRY) ||
column.getJdbcTypeName().toUpperCase().contains(TypeMap.GEOGRAPHY)) {
sql.append(quote).append(column.getName()).append(quote)
.append(" = ST_GEOMFROMTEXT(?)");
} else {
Expand Down

0 comments on commit 12a2ea4

Please sign in to comment.