Subversion Repositories Applications.papyrus

Rev

Rev 1372 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1372 Rev 1422
1
/*
1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
3
	All Rights Reserved.
4
 
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
9
*/
-
 
10
 
-
 
11
 
10
 
12
 
11
dojo.provide("dojo.data.CsvStore");
13
dojo.provide("dojo.data.CsvStore");
12
dojo.require("dojo.data.core.RemoteStore");
14
dojo.require("dojo.data.core.RemoteStore");
13
dojo.require("dojo.lang.assert");
15
dojo.require("dojo.lang.assert");
14
dojo.declare("dojo.data.CsvStore", dojo.data.core.RemoteStore, {_setupQueryRequest:function (result, requestKw) {
16
dojo.declare("dojo.data.CsvStore", dojo.data.core.RemoteStore, {_setupQueryRequest:function (result, requestKw) {
15
	var serverQueryUrl = this._serverQueryUrl ? this._serverQueryUrl : "";
17
	var serverQueryUrl = this._serverQueryUrl ? this._serverQueryUrl : "";
16
	var queryUrl = result.query ? result.query : "";
18
	var queryUrl = result.query ? result.query : "";
17
	requestKw.url = serverQueryUrl + queryUrl;
19
	requestKw.url = serverQueryUrl + queryUrl;
18
	requestKw.method = "get";
20
	requestKw.method = "get";
19
}, _resultToQueryData:function (serverResponseData) {
21
}, _resultToQueryData:function (serverResponseData) {
20
	var csvFileContentString = serverResponseData;
22
	var csvFileContentString = serverResponseData;
21
	var arrayOfArrays = this._getArrayOfArraysFromCsvFileContents(csvFileContentString);
23
	var arrayOfArrays = this._getArrayOfArraysFromCsvFileContents(csvFileContentString);
22
	var arrayOfObjects = this._getArrayOfObjectsFromArrayOfArrays(arrayOfArrays);
24
	var arrayOfObjects = this._getArrayOfObjectsFromArrayOfArrays(arrayOfArrays);
23
	var remoteStoreData = this._getRemoteStoreDataFromArrayOfObjects(arrayOfObjects);
25
	var remoteStoreData = this._getRemoteStoreDataFromArrayOfObjects(arrayOfObjects);
24
	return remoteStoreData;
26
	return remoteStoreData;
25
}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
27
}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
26
}, _getArrayOfArraysFromCsvFileContents:function (csvFileContents) {
28
}, _getArrayOfArraysFromCsvFileContents:function (csvFileContents) {
27
	dojo.lang.assertType(csvFileContents, String);
29
	dojo.lang.assertType(csvFileContents, String);
28
	var lineEndingCharacters = new RegExp("\r\n|\n|\r");
30
	var lineEndingCharacters = new RegExp("\r\n|\n|\r");
29
	var leadingWhiteSpaceCharacters = new RegExp("^\\s+", "g");
31
	var leadingWhiteSpaceCharacters = new RegExp("^\\s+", "g");
30
	var trailingWhiteSpaceCharacters = new RegExp("\\s+$", "g");
32
	var trailingWhiteSpaceCharacters = new RegExp("\\s+$", "g");
31
	var doubleQuotes = new RegExp("\"\"", "g");
33
	var doubleQuotes = new RegExp("\"\"", "g");
32
	var arrayOfOutputRecords = [];
34
	var arrayOfOutputRecords = [];
33
	var arrayOfInputLines = csvFileContents.split(lineEndingCharacters);
35
	var arrayOfInputLines = csvFileContents.split(lineEndingCharacters);
34
	for (var i in arrayOfInputLines) {
36
	for (var i in arrayOfInputLines) {
35
		var singleLine = arrayOfInputLines[i];
37
		var singleLine = arrayOfInputLines[i];
36
		if (singleLine.length > 0) {
38
		if (singleLine.length > 0) {
37
			var listOfFields = singleLine.split(",");
39
			var listOfFields = singleLine.split(",");
38
			var j = 0;
40
			var j = 0;
39
			while (j < listOfFields.length) {
41
			while (j < listOfFields.length) {
40
				var space_field_space = listOfFields[j];
42
				var space_field_space = listOfFields[j];
41
				var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, "");
43
				var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, "");
42
				var field = field_space.replace(trailingWhiteSpaceCharacters, "");
44
				var field = field_space.replace(trailingWhiteSpaceCharacters, "");
43
				var firstChar = field.charAt(0);
45
				var firstChar = field.charAt(0);
44
				var lastChar = field.charAt(field.length - 1);
46
				var lastChar = field.charAt(field.length - 1);
45
				var secondToLastChar = field.charAt(field.length - 2);
47
				var secondToLastChar = field.charAt(field.length - 2);
46
				var thirdToLastChar = field.charAt(field.length - 3);
48
				var thirdToLastChar = field.charAt(field.length - 3);
47
				if ((firstChar == "\"") && ((lastChar != "\"") || ((lastChar == "\"") && (secondToLastChar == "\"") && (thirdToLastChar != "\"")))) {
49
				if ((firstChar == "\"") && ((lastChar != "\"") || ((lastChar == "\"") && (secondToLastChar == "\"") && (thirdToLastChar != "\"")))) {
48
					if (j + 1 === listOfFields.length) {
50
					if (j + 1 === listOfFields.length) {
49
						return null;
51
						return null;
50
					}
52
					}
51
					var nextField = listOfFields[j + 1];
53
					var nextField = listOfFields[j + 1];
52
					listOfFields[j] = field_space + "," + nextField;
54
					listOfFields[j] = field_space + "," + nextField;
53
					listOfFields.splice(j + 1, 1);
55
					listOfFields.splice(j + 1, 1);
54
				} else {
56
				} else {
55
					if ((firstChar == "\"") && (lastChar == "\"")) {
57
					if ((firstChar == "\"") && (lastChar == "\"")) {
56
						field = field.slice(1, (field.length - 1));
58
						field = field.slice(1, (field.length - 1));
57
						field = field.replace(doubleQuotes, "\"");
59
						field = field.replace(doubleQuotes, "\"");
58
					}
60
					}
59
					listOfFields[j] = field;
61
					listOfFields[j] = field;
60
					j += 1;
62
					j += 1;
61
				}
63
				}
62
			}
64
			}
63
			arrayOfOutputRecords.push(listOfFields);
65
			arrayOfOutputRecords.push(listOfFields);
64
		}
66
		}
65
	}
67
	}
66
	return arrayOfOutputRecords;
68
	return arrayOfOutputRecords;
67
}, _getArrayOfObjectsFromArrayOfArrays:function (arrayOfArrays) {
69
}, _getArrayOfObjectsFromArrayOfArrays:function (arrayOfArrays) {
68
	dojo.lang.assertType(arrayOfArrays, Array);
70
	dojo.lang.assertType(arrayOfArrays, Array);
69
	var arrayOfItems = [];
71
	var arrayOfItems = [];
70
	if (arrayOfArrays.length > 1) {
72
	if (arrayOfArrays.length > 1) {
71
		var arrayOfKeys = arrayOfArrays[0];
73
		var arrayOfKeys = arrayOfArrays[0];
72
		for (var i = 1; i < arrayOfArrays.length; ++i) {
74
		for (var i = 1; i < arrayOfArrays.length; ++i) {
73
			var row = arrayOfArrays[i];
75
			var row = arrayOfArrays[i];
74
			var item = {};
76
			var item = {};
75
			for (var j in row) {
77
			for (var j in row) {
76
				var value = row[j];
78
				var value = row[j];
77
				var key = arrayOfKeys[j];
79
				var key = arrayOfKeys[j];
78
				item[key] = value;
80
				item[key] = value;
79
			}
81
			}
80
			arrayOfItems.push(item);
82
			arrayOfItems.push(item);
81
		}
83
		}
82
	}
84
	}
83
	return arrayOfItems;
85
	return arrayOfItems;
84
}, _getRemoteStoreDataFromArrayOfObjects:function (arrayOfObjects) {
86
}, _getRemoteStoreDataFromArrayOfObjects:function (arrayOfObjects) {
85
	dojo.lang.assertType(arrayOfObjects, Array);
87
	dojo.lang.assertType(arrayOfObjects, Array);
86
	var output = {};
88
	var output = {};
87
	for (var i = 0; i < arrayOfObjects.length; ++i) {
89
	for (var i = 0; i < arrayOfObjects.length; ++i) {
88
		var object = arrayOfObjects[i];
90
		var object = arrayOfObjects[i];
89
		for (var key in object) {
91
		for (var key in object) {
90
			var value = object[key];
92
			var value = object[key];
91
			object[key] = [value];
93
			object[key] = [value];
92
		}
94
		}
93
		output[i] = object;
95
		output[i] = object;
94
	}
96
	}
95
	return output;
97
	return output;
96
}, newItem:function (attributes, keywordArgs) {
98
}, newItem:function (attributes, keywordArgs) {
97
	dojo.unimplemented("dojo.data.CsvStore.newItem");
99
	dojo.unimplemented("dojo.data.CsvStore.newItem");
98
}, deleteItem:function (item) {
100
}, deleteItem:function (item) {
99
	dojo.unimplemented("dojo.data.CsvStore.deleteItem");
101
	dojo.unimplemented("dojo.data.CsvStore.deleteItem");
100
}, setValues:function (item, attribute, values) {
102
}, setValues:function (item, attribute, values) {
101
	dojo.unimplemented("dojo.data.CsvStore.setValues");
103
	dojo.unimplemented("dojo.data.CsvStore.setValues");
102
}, set:function (item, attribute, value) {
104
}, set:function (item, attribute, value) {
103
	dojo.unimplemented("dojo.data.CsvStore.set");
105
	dojo.unimplemented("dojo.data.CsvStore.set");
104
}, unsetAttribute:function (item, attribute) {
106
}, unsetAttribute:function (item, attribute) {
105
	dojo.unimplemented("dojo.data.CsvStore.unsetAttribute");
107
	dojo.unimplemented("dojo.data.CsvStore.unsetAttribute");
106
}, save:function (keywordArgs) {
108
}, save:function (keywordArgs) {
107
	dojo.unimplemented("dojo.data.CsvStore.save");
109
	dojo.unimplemented("dojo.data.CsvStore.save");
108
}, revert:function () {
110
}, revert:function () {
109
	dojo.unimplemented("dojo.data.CsvStore.revert");
111
	dojo.unimplemented("dojo.data.CsvStore.revert");
110
}, isDirty:function (item) {
112
}, isDirty:function (item) {
111
	dojo.unimplemented("dojo.data.CsvStore.isDirty");
113
	dojo.unimplemented("dojo.data.CsvStore.isDirty");
112
}});
114
}});
113
 
115