Changeset 7235
- Timestamp:
- 05/21/08 04:15:46 (6 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
sandbox/vector-behavior/lib/OpenLayers/Protocol/SQL/GoogleGears.js
r7227 r7235 72 72 73 73 return [feature.fid, 74 feature.geometry .toString(),74 feature.geometry ? feature.geometry.toString() : '', 75 75 this.jsonFormat.write(feature.attributes), 76 76 feature.state]; … … 88 88 unfreezeFeature: function(row) { 89 89 var feature = this.wktFormat.read(row.fieldByName('geometry')); 90 if (!feature) { 91 // feature's geometry is empty 92 feature = new OpenLayers.Feature.Vector(); 93 } 90 94 feature.attributes = this.jsonFormat.read(row.fieldByName('properties')); 91 95 feature.fid = row.fieldByName('fid'); … … 99 103 */ 100 104 read: function(options) { 101 OpenLayers.Console.debug("GoogleGears::read(%o)", options); 105 var mergedOptions = OpenLayers.Util.extend({}, options); 106 OpenLayers.Util.applyDefaults(mergedOptions, this.options); 107 108 OpenLayers.Console.debug("GoogleGears::read(%o)", mergedOptions); 102 109 var features = []; 103 110 var rs = this.db.execute("SELECT * FROM " + this.tableName); … … 112 119 features: features 113 120 }); 114 if ( options && options.callback) {115 options.callback.call(options.scope, resp);121 if (mergedOptions && mergedOptions.callback) { 122 mergedOptions.callback.call(mergedOptions.scope, resp); 116 123 } 117 124 return resp; … … 128 135 */ 129 136 create: function(features, options) { 137 var mergedOptions = OpenLayers.Util.extend({}, options); 138 OpenLayers.Util.applyDefaults(mergedOptions, this.options); 139 130 140 OpenLayers.Console.debug("GoogleGears::create()"); 131 141 var toCreate = features instanceof Array ? features : [features]; … … 146 156 reqFeatures: features 147 157 }); 148 if ( options && options.callback) {149 options.callback.call(options.scope, resp);158 if (mergedOptions && mergedOptions.callback) { 159 mergedOptions.callback.call(mergedOptions.scope, resp); 150 160 } 151 161 return resp; … … 162 172 */ 163 173 update: function(features, options) { 174 var mergedOptions = OpenLayers.Util.extend({}, options); 175 OpenLayers.Util.applyDefaults(mergedOptions, this.options); 176 164 177 OpenLayers.Console.debug("GoogleGears::update()"); 165 178 var toUpdate = features instanceof Array ? features : [features]; … … 180 193 reqFeatures: features 181 194 }); 182 if ( options && options.callback) {183 options.callback.call(options.scope, resp);195 if (mergedOptions && mergedOptions.callback) { 196 mergedOptions.callback.call(mergedOptions.scope, resp); 184 197 } 185 198 return resp; … … 207 220 */ 208 221 commit: function(features, options) { 222 var mergedOptions = OpenLayers.Util.extend({}, options); 223 OpenLayers.Util.applyDefaults(mergedOptions, this.options); 224 209 225 OpenLayers.Console.debug("GoogleGears::commit()"); 210 226 var toCreate = [], toUpdate = []; … … 220 236 break; 221 237 case OpenLayers.State.DELETE: 222 this["delete"](feature, options["delete"]);238 this["delete"](feature, mergedOptions["delete"]); 223 239 break; 224 240 } 225 241 } 226 242 if (toCreate.length > 0) { 227 this.create(toCreate, options.create);243 this.create(toCreate, mergedOptions.create); 228 244 } 229 245 if (toUpdate.length > 0) { 230 this.update(toUpdate, options.update);246 this.update(toUpdate, mergedOptions.update); 231 247 } 232 248 }, … … 241 257 */ 242 258 "delete": function(feature, options) { 243 OpenLayers.Console.debug("GoogleGears::delete()"); 244 this.db.execute("DELETE FROM " + this.tableName + 245 " WHERE fid = ?", [feature.fid]); 246 259 var mergedOptions = OpenLayers.Util.extend({}, options); 260 OpenLayers.Util.applyDefaults(mergedOptions, this.options); 261 262 OpenLayers.Console.debug("GoogleGears::delete(%o, %o)", feature, options); 263 264 // Don't delete the feature from the database 265 if (mergedOptions["delete"] && !!(mergedOptions["delete"].dontDelete)) { 266 var toDelete = feature.clone(); 267 toDelete.fid = feature.fid; 268 toDelete.geometry.destroy(); 269 toDelete.geometry = null; 270 toDelete.state = feature.state; 271 272 this.update(toDelete); 273 } else { 274 this.db.execute("DELETE FROM " + this.tableName + 275 " WHERE fid = ?", [feature.fid]); 276 } 247 277 var resp = new OpenLayers.Protocol.Response({ 248 278 code: OpenLayers.Protocol.Response.SUCCESS, … … 250 280 }); 251 281 252 if ( options && options.callback) {253 options.callback.call(options.scope, resp);282 if (mergedOptions && mergedOptions.callback) { 283 mergedOptions.callback.call(mergedOptions.scope, resp); 254 284 } 255 285 return resp;
