alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Struts example source code file (RdfStore.js)

This example Struts source code file (RdfStore.js) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Struts tags/keywords

boolean, boolean, number, number, string, string

The Struts RdfStore.js source code

/*
	Copyright (c) 2004-2006, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/



dojo.provide("dojo.data.RdfStore");
dojo.provide("dojo.data.RhizomeStore");
dojo.require("dojo.lang.declare");
dojo.require("dojo.data.core.RemoteStore");
dojo.require("dojo.experimental");
dojo.data.RdfDatatypeSerializer = function (type, convertFunc, uri) {
	this.type = type;
	this._converter = convertFunc;
	this.uri = uri;
	this.serialize = function (value) {
		return this._converter.call(value, value);
	};
};
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;
}});
dojo.declare("dojo.data.RhizomeStore", dojo.data.RdfStore, {initializer:function (kwArgs) {
	this._serverQueryUrl = kwArgs.baseUrl + "search?view=json&searchType=RxPath&search=";
	this._serverSaveUrl = kwArgs.baseUrl + "save-metadata";
}, _resultToQueryMetadata:function (json) {
	return json;
}, _resultToQueryData:function (json) {
	return json;
}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
	requestKw.url = this._serverSaveUrl;
	requestKw.method = "post";
	requestKw.mimetype = "text/plain";
	var resources = [];
	for (var key in this._deleted) {
		resources.push(key);
	}
	var changes = {};
	for (key in this._changed) {
		if (!this._added[key]) {
			resources.push(key);
		}
		var attributes = this._changed[key];
		var rdfattributes = {};
		for (var attr in attributes) {
			var values = attributes[attr];
			if (!values.length) {
				continue;
			}
			var rdfvalues = [];
			for (var i = 0; i < values.length; i++) {
				var rdfvalue = this._toRDFValue(values[i]);
				rdfvalues.push(rdfvalue);
			}
			rdfattributes[attr] = rdfvalues;
		}
		changes[key] = rdfattributes;
	}
	var oldRegistry = dojo.json.jsonRegistry;
	dojo.json.jsonRegistry = this._jsonRegistry;
	var jsonString = dojo.json.serialize(changes);
	dojo.json.jsonRegistry = oldRegistry;
	requestKw.content = {rdfFormat:"json", resource:resources, metadata:jsonString};
}});

Other Struts examples (source code examples)

Here is a short list of links related to this Struts RdfStore.js source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.