diff options
author | Bibiko <bibiko@eva.mpg.de> | 2010-10-07 22:23:29 +0000 |
---|---|---|
committer | Bibiko <bibiko@eva.mpg.de> | 2010-10-07 22:23:29 +0000 |
commit | 933bb6c9254ba4761eb960c1b3893a9e57c39fb6 (patch) | |
tree | bf50da8ca46d1c60b6de5e23e9881b806c75de51 /Source | |
parent | 600314d27c03b299e3a9d0f986698a8c2baca9bc (diff) | |
download | sequelpro-933bb6c9254ba4761eb960c1b3893a9e57c39fb6.tar.gz sequelpro-933bb6c9254ba4761eb960c1b3893a9e57c39fb6.tar.bz2 sequelpro-933bb6c9254ba4761eb960c1b3893a9e57c39fb6.zip |
• enhanced spatial support
- implemented native routine to immediate AsText() [MULTIPOLYGON and GEOMETRYCOLLECTION are not yet ready]
- enabled editing of spatial data in Content View for tables and views and in Custom Query via wkt strings which will be saved automatically as wkb by using GeomFromText()
Diffstat (limited to 'Source')
-rw-r--r-- | Source/SPCustomQuery.m | 7 | ||||
-rw-r--r-- | Source/SPTableContent.m | 15 |
2 files changed, 16 insertions, 6 deletions
diff --git a/Source/SPCustomQuery.m b/Source/SPCustomQuery.m index 44ba5987..a945a53d 100644 --- a/Source/SPCustomQuery.m +++ b/Source/SPCustomQuery.m @@ -1752,6 +1752,9 @@ else if ([[field objectForKey:@"typegrouping"] isEqualToString:@"integer"]) { [fieldIDQueryStr appendFormat:@"%@=%@ AND ", [[field objectForKey:@"org_name"] backtickQuotedString], [aValue description]]; } + else if ([[field objectForKey:@"typegrouping"] isEqualToString:@"geometry"]) { + [fieldIDQueryStr appendFormat:@"%@=X'%@' AND ", [[field objectForKey:@"org_name"] backtickQuotedString], [mySQLConnection prepareBinaryData:[aValue data]]]; + } else { [fieldIDQueryStr appendFormat:@"%@='%@' AND ", [[field objectForKey:@"org_name"] backtickQuotedString], [mySQLConnection prepareString:aValue]]; } @@ -1848,7 +1851,7 @@ return [prefs objectForKey:SPNullValue]; if ([theValue isKindOfClass:[MCPGeometryData class]]) - return [theValue description]; + return [theValue wktString]; return theValue; } @@ -1902,6 +1905,8 @@ newObject = @"CURRENT_TIMESTAMP"; } else if([anObject isEqualToString:[prefs stringForKey:SPNullValue]]) { newObject = @"NULL"; + } else if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"geometry"]) { + newObject = [NSString stringWithFormat:@"GeomFromText('%@')", anObject]; } else if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"bit"]) { newObject = [NSString stringWithFormat:@"b'%@'", ((![[anObject description] length] || [[anObject description] isEqualToString:@"0"]) ? @"0" : [anObject description])]; } else if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"date"] diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m index cc5eb6bd..fd8f1703 100644 --- a/Source/SPTableContent.m +++ b/Source/SPTableContent.m @@ -1547,6 +1547,9 @@ else if ([[field objectForKey:@"typegrouping"] isEqualToString:@"integer"]) { [fieldIDQueryStr appendFormat:@"%@=%@ AND ", [[field objectForKey:@"org_name"] backtickQuotedString], [aValue description]]; } + else if ([[field objectForKey:@"typegrouping"] isEqualToString:@"geometry"]) { + [fieldIDQueryStr appendFormat:@"%@=X'%@' AND ", [[field objectForKey:@"org_name"] backtickQuotedString], [mySQLConnection prepareBinaryData:[aValue data]]]; + } else { [fieldIDQueryStr appendFormat:@"%@='%@' AND ", [[field objectForKey:@"org_name"] backtickQuotedString], [mySQLConnection prepareString:aValue]]; } @@ -2673,12 +2676,12 @@ if ([[[tableDataInstance columnWithName:NSArrayObjectAtIndex(keys, i)] objectForKey:@"type"] isEqualToString:@"BIT"]) { [value setString:[NSString stringWithFormat:@"b'%@'", [mySQLConnection prepareString:tempValue]]]; } + else if ([tempValue isKindOfClass:[MCPGeometryData class]]) { + [value setString:[NSString stringWithFormat:@"X'%@'", [mySQLConnection prepareBinaryData:[tempValue data]]]]; + } // BLOB/TEXT data else if ([tempValue isKindOfClass:[NSData class]]) { - if([tableDataInstance columnIsGeometry:NSArrayObjectAtIndex(keys, i)]) - [value setString:[NSString stringWithFormat:@"GeomFromText('%@')", [[[NSString alloc] initWithData:tempValue encoding:NSASCIIStringEncoding] autorelease]]]; - else - [value setString:[NSString stringWithFormat:@"X'%@'", [mySQLConnection prepareBinaryData:tempValue]]]; + [value setString:[NSString stringWithFormat:@"X'%@'", [mySQLConnection prepareBinaryData:tempValue]]]; } else [value setString:[NSString stringWithFormat:@"'%@'", [mySQLConnection prepareString:tempValue]]]; @@ -3401,7 +3404,7 @@ } if([theValue isKindOfClass:[MCPGeometryData class]]) - return [theValue description]; + return [theValue wktString]; if ([theValue isNSNull]) return [prefs objectForKey:SPNullValue]; @@ -3542,6 +3545,8 @@ newObject = @"CURRENT_TIMESTAMP"; } else if([anObject isEqualToString:[prefs stringForKey:SPNullValue]]) { newObject = @"NULL"; + } else if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"geometry"]) { + newObject = [NSString stringWithFormat:@"GeomFromText('%@')", anObject]; } else if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"bit"]) { newObject = [NSString stringWithFormat:@"b'%@'", ((![[anObject description] length] || [[anObject description] isEqualToString:@"0"]) ? @"0" : [anObject description])]; } else if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"date"] |