⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csvstore.js

📁 对java中如何使用Ajax技术
💻 JS
字号:
/*	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.CsvStore");dojo.require("dojo.data.core.RemoteStore");dojo.require("dojo.lang.assert");dojo.declare("dojo.data.CsvStore", dojo.data.core.RemoteStore, {	/* summary:	 *   The CsvStore subclasses dojo.data.core.RemoteStore to implement	 *   the dojo.data.core.Read API.  	 */		/* examples:	 *   var csvStore = new dojo.data.CsvStore({queryUrl:"movies.csv");	 *   var csvStore = new dojo.data.CsvStore({url:"http://example.com/movies.csv");	 */	_setupQueryRequest: function(/* dojo.data.core.Result */ result, /* object */ requestKw) { 		// summary: See dojo.data.core.RemoteStore._setupQueryRequest()		var serverQueryUrl = this._serverQueryUrl ? this._serverQueryUrl : "";		var queryUrl = result.query ? result.query : "";		requestKw.url = serverQueryUrl + queryUrl;		requestKw.method = 'get';	},		_resultToQueryData: function(/* varies */ serverResponseData) {		// summary: See dojo.data.core.RemoteStore._resultToQueryData()		var csvFileContentString = serverResponseData;		var arrayOfArrays = this._getArrayOfArraysFromCsvFileContents(csvFileContentString);		var arrayOfObjects = this._getArrayOfObjectsFromArrayOfArrays(arrayOfArrays);        var remoteStoreData = this._getRemoteStoreDataFromArrayOfObjects(arrayOfObjects);		return remoteStoreData;	},		_setupSaveRequest: function(/* object */ saveKeywordArgs, /* object */ requestKw) {		// summary: See dojo.data.core.RemoteStore._setupSaveRequest()		// description: NOT IMPLEMENTED -- CsvStore is a read-only store	},		// -------------------------------------------------------------------	// Private methods	_getArrayOfArraysFromCsvFileContents: function(/* string */ csvFileContents) {		/* summary:		 *   Parses a string of CSV records into a nested array structure.		 * description:		 *   Given a string containing CSV records, this method parses		 *   the string and returns a data structure containing the parsed		 *   content.  The data structure we return is an array of length		 *   R, where R is the number of rows (lines) in the CSV data.  The 		 *   return array contains one sub-array for each CSV line, and each 		 *   sub-array contains C string values, where C is the number of 		 *   columns in the CSV data.		 */		 		/* example:		 *   For example, given this CSV string as input:		 *     "Title, Year, Producer \n Alien, 1979, Ridley Scott \n Blade Runner, 1982, Ridley Scott"		 *   We will return this data structure:		 *     [["Title", "Year", "Producer"]		 *      ["Alien", "1979", "Ridley Scott"],  		 *      ["Blade Runner", "1982", "Ridley Scott"]]		 */		dojo.lang.assertType(csvFileContents, String);				var lineEndingCharacters = new RegExp("\r\n|\n|\r");		var leadingWhiteSpaceCharacters = new RegExp("^\\s+",'g');		var trailingWhiteSpaceCharacters = new RegExp("\\s+$",'g');		var doubleQuotes = new RegExp('""','g');		var arrayOfOutputRecords = [];				var arrayOfInputLines = csvFileContents.split(lineEndingCharacters);		for (var i in arrayOfInputLines) {			var singleLine = arrayOfInputLines[i];			if (singleLine.length > 0) {				var listOfFields = singleLine.split(',');				var j = 0;				while (j < listOfFields.length) {					var space_field_space = listOfFields[j];					var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, ''); // trim leading whitespace					var field = field_space.replace(trailingWhiteSpaceCharacters, ''); // trim trailing whitespace					var firstChar = field.charAt(0);					var lastChar = field.charAt(field.length - 1);					var secondToLastChar = field.charAt(field.length - 2);					var thirdToLastChar = field.charAt(field.length - 3);					if ((firstChar == '"') && 							((lastChar != '"') || 							 ((lastChar == '"') && (secondToLastChar == '"') && (thirdToLastChar != '"')) )) {						if (j+1 === listOfFields.length) {							// alert("The last field in record " + i + " is corrupted:\n" + field);							return null;						}						var nextField = listOfFields[j+1];						listOfFields[j] = field_space + ',' + nextField;						listOfFields.splice(j+1, 1); // delete element [j+1] from the list					} else {						if ((firstChar == '"') && (lastChar == '"')) {							field = field.slice(1, (field.length - 1)); // trim the " characters off the ends							field = field.replace(doubleQuotes, '"');   // replace "" with "						}						listOfFields[j] = field;						j += 1;					}				}				arrayOfOutputRecords.push(listOfFields);			}		}		return arrayOfOutputRecords; // Array	},	_getArrayOfObjectsFromArrayOfArrays: function(/* array[] */ arrayOfArrays) {		/* summary:		 *   Converts a nested array structure into an array of keyword objects.		 */		 		/* example:		 *   For example, given this as input:		 *     [["Title", "Year", "Producer"]		 *      ["Alien", "1979", "Ridley Scott"],  		 *      ["Blade Runner", "1982", "Ridley Scott"]]		 *   We will return this as output:		 *     [{"Title":"Alien", "Year":"1979", "Producer":"Ridley Scott"},		 *      {"Title":"Blade Runner", "Year":"1982", "Producer":"Ridley Scott"}]		 */		dojo.lang.assertType(arrayOfArrays, Array);		var arrayOfItems = [];		if (arrayOfArrays.length > 1) {			var arrayOfKeys = arrayOfArrays[0];			for (var i = 1; i < arrayOfArrays.length; ++i) {				var row = arrayOfArrays[i];				var item = {};				for (var j in row) {					var value = row[j];					var key = arrayOfKeys[j];					item[key] = value;				}				arrayOfItems.push(item);			}		}		return arrayOfItems; // Array	},		_getRemoteStoreDataFromArrayOfObjects: function(/* object[] */ arrayOfObjects) {		/* summary:		 *   Converts an array of keyword objects in the internal record data 		 *    structure used by RemoteStore.		 */		/* example:		 *   For example, given this as input:		 *     [{"Title":"Alien", "Year":"1979", "Producer":"Ridley Scott"},		 *      {"Title":"Blade Runner", "Year":"1982", "Producer":"Ridley Scott"}]		 *   We will return this as output:		 *     { "1": {"Title":["Alien"], "Year":["1979"], "Producer":["Ridley Scott"]},		 *       "2": {"Title":["Blade Runner"], "Year":["1982"], "Producer":["Ridley Scott"]}		 *     }		 */		dojo.lang.assertType(arrayOfObjects, Array);		var output = {};		for (var i = 0; i < arrayOfObjects.length; ++i) {			var object = arrayOfObjects[i];			for (var key in object) {				var value = object[key]; // {"Title":"Alien"} --> "Alien"				object[key] = [value];   // {"Title":["Alien"]}			}			output[i] = object;		}		return output; // Object	},	// CsvStore implements the dojo.data.core.Read API, but does not yet  	// implements the dojo.data.core.Write API.  CsvStore extends RemoteStore,	// and RemoteStore does implement the Write API, so we need to explicitly	// mark those Write API methods as being unimplemented.	newItem: function(/* object? */ attributes, /* object? */ keywordArgs) {		dojo.unimplemented('dojo.data.CsvStore.newItem');	},	deleteItem: function(/* item */ item) {		dojo.unimplemented('dojo.data.CsvStore.deleteItem');	},	setValues: function(/* item */ item, /* attribute || string */ attribute, /* array */ values) {		dojo.unimplemented('dojo.data.CsvStore.setValues');	},	set: function(/* item */ item, /* attribute || string */ attribute, /* almost anything */ value) {		dojo.unimplemented('dojo.data.CsvStore.set');	},	unsetAttribute: function(/* item */ item, /* attribute || string */ attribute) {		dojo.unimplemented('dojo.data.CsvStore.unsetAttribute');	},	save: function(/* object? */ keywordArgs) {		dojo.unimplemented('dojo.data.CsvStore.save');	},	revert: function() {		dojo.unimplemented('dojo.data.CsvStore.revert');	},	isDirty: function(/*item?*/ item) {		dojo.unimplemented('dojo.data.CsvStore.isDirty');	}});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -