dojo.declare()

in plugins/struts2-dojo-plugin/src/main/resources/org/apache/struts2/static/dojo/src/data/RdfStore.js [26:142]


dojo.declare("dojo.data.RdfStore", dojo.data.core.RemoteStore, {_datatypeMap:{literal:function (value) {
	var literal = value.value;
	if (value["xml:lang"]) {
		literal.lang = value["xml:lang"];
	}
	return literal;
}, uri:function (value) {
	return {id:value.value};
}, bnode:function (value) {
	return {id:"_:" + value.value};
}, "http://www.w3.org/2001/XMLSchema#int":function (value) {
	return parseInt(value.value);
}, "http://www.w3.org/2001/XMLSchema#integer":function (value) {
	return parseInt(value.value);
}, "http://www.w3.org/2001/XMLSchema#long":function (value) {
	return parseInt(value.value);
}, "http://www.w3.org/2001/XMLSchema#float":function (value) {
	return parseFloat(value.value);
}, "http://www.w3.org/2001/XMLSchema#double":function (value) {
	return parseFloat(value.value);
}, "http://www.w3.org/2001/XMLSchema#boolean":function (value) {
	return !value || value == "false" || value == "0" ? false : true;
}}, _datatypeSerializers:[new dojo.data.RdfDatatypeSerializer(Number, Number.toString, "http://www.w3.org/2001/XMLSchema#float"), new dojo.data.RdfDatatypeSerializer(Boolean, Boolean.toString, "http://www.w3.org/2001/XMLSchema#boolean")], _findDatatypeSerializer:function (value) {
	var length = this._datatypeSerializers.length;
	for (var i = 0; i < length; i++) {
		var datatype = this._datatypeSerializers[i];
		if (value instanceof datatype.type) {
			return datatype;
		}
	}
}, _toRDFValue:function (value) {
	var rdfvalue = {};
	if (value.id) {
		if (value.id.slice(0, 2) == "_:") {
			rdfvalue.type = "bnode";
			rdfvalue.value = value.id.substring(2);
		} else {
			rdfvalue.type = "uri";
			rdfvalue.value = value.id;
		}
	} else {
		if (typeof value == "string" || value instanceof String) {
			rdfvalue.type = "literal";
			rdfvalue.value = value;
			if (value.lang) {
				rdfvalue["xml:lang"] = value.lang;
			}
		} else {
			if (typeof value == "number") {
				value = new Number(value);
			} else {
				if (typeof value == "boolean") {
					value = new Boolean(value);
				}
			}
			var datatype = this._findDatatypeSerializer(value);
			if (datatype) {
				rdfvalue = {"type":"typed-literal", "datatype":datatype.uri, "value":value.toString()};
			} else {
				rdfvalue = {"type":"literal", "value":value.toString()};
			}
		}
	}
	return rdfvalue;
}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
	var rdfResult = {"head":{"vars":["s", "p", "o"]}, "results":{"bindings":[]}};
	var resources = [];
	for (var key in this._deleted) {
		resources.push(key);
	}
	rdfResult.results.deleted = resources;
	for (key in this._changed) {
		var subject = this._toRDFValue(this.getIdentity(key));
		var attributes = this._changed[key];
		for (var attr in attributes) {
			var predicate = {type:"uri", value:attr};
			var values = attributes[attr];
			if (!values.length) {
				continue;
			}
			var rdfvalues = [];
			for (var i = 0; i < values.length; i++) {
				var rdfvalue = this._toRDFValue(values[i]);
				rdfResult.results.bindings.push({s:subject, p:predicate, o:rdfvalue});
			}
		}
	}
	var oldRegistry = dojo.json.jsonRegistry;
	dojo.json.jsonRegistry = this._jsonRegistry;
	var jsonString = dojo.json.serialize(rdfResult);
	dojo.json.jsonRegistry = oldRegistry;
	requestKw.postContent = jsonString;
}, _resultToQueryMetadata:function (json) {
	return json.head;
}, _resultToQueryData:function (json) {
	var items = {};
	var stmts = json.results.bindings;
	for (var i = 0; i < stmts.length; i++) {
		var stmt = stmts[i];
		var subject = stmt.s.value;
		if (stmt.s.type == "bnode") {
			subject = "_:" + subject;
		}
		var attributes = data[subject];
		if (!attributes) {
			attributes = {};
			data[stmt.s] = attributes;
		}
		var attr = attributes[stmt.p.value];
		if (!attr) {
			attributes[stmt.p.value] = [stmt.o];
		} else {
			attr.push(stmt.o);
		}
	}
	return items;
}});