123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- define("dojox/uuid/_base", ['dojo/_base/kernel', 'dojo/_base/lang'], function(dojo){
- dojo.getObject("uuid", true, dojox);
- dojox.uuid.NIL_UUID = "00000000-0000-0000-0000-000000000000";
- dojox.uuid.version = {
-
- UNKNOWN: 0,
- TIME_BASED: 1,
- DCE_SECURITY: 2,
- NAME_BASED_MD5: 3,
- RANDOM: 4,
- NAME_BASED_SHA1: 5 };
- dojox.uuid.variant = {
-
- NCS: "0",
- DCE: "10",
- MICROSOFT: "110",
- UNKNOWN: "111" };
- dojox.uuid.assert = function(/*Boolean*/ booleanValue, /*String?*/ message){
-
-
-
-
-
-
-
-
- if(!booleanValue){
- if(!message){
- message = "An assert statement failed.\n" +
- "The method dojox.uuid.assert() was called with a 'false' value.\n";
- }
- throw new Error(message);
- }
- };
- dojox.uuid.generateNilUuid = function(){
-
-
-
-
-
-
-
- return dojox.uuid.NIL_UUID;
- };
- dojox.uuid.isValid = function(/*String*/ uuidString){
-
-
- uuidString = uuidString.toString();
- var valid = (dojo.isString(uuidString) &&
- (uuidString.length == 36) &&
- (uuidString == uuidString.toLowerCase()));
- if(valid){
- var arrayOfParts = uuidString.split("-");
- valid = ((arrayOfParts.length == 5) &&
- (arrayOfParts[0].length == 8) &&
- (arrayOfParts[1].length == 4) &&
- (arrayOfParts[2].length == 4) &&
- (arrayOfParts[3].length == 4) &&
- (arrayOfParts[4].length == 12));
- var HEX_RADIX = 16;
- for (var i in arrayOfParts) {
- var part = arrayOfParts[i];
- var integer = parseInt(part, HEX_RADIX);
- valid = valid && isFinite(integer);
- }
- }
- return valid;
- };
- dojox.uuid.getVariant = function(/*String*/ uuidString){
-
-
-
-
-
-
-
-
-
-
-
- if(!dojox.uuid._ourVariantLookupTable){
- var variant = dojox.uuid.variant;
- var lookupTable = [];
- lookupTable[0x0] = variant.NCS;
- lookupTable[0x1] = variant.NCS;
- lookupTable[0x2] = variant.NCS;
- lookupTable[0x3] = variant.NCS;
- lookupTable[0x4] = variant.NCS;
- lookupTable[0x5] = variant.NCS;
- lookupTable[0x6] = variant.NCS;
- lookupTable[0x7] = variant.NCS;
- lookupTable[0x8] = variant.DCE;
- lookupTable[0x9] = variant.DCE;
- lookupTable[0xA] = variant.DCE;
- lookupTable[0xB] = variant.DCE;
- lookupTable[0xC] = variant.MICROSOFT;
- lookupTable[0xD] = variant.MICROSOFT;
- lookupTable[0xE] = variant.UNKNOWN;
- lookupTable[0xF] = variant.UNKNOWN;
-
- dojox.uuid._ourVariantLookupTable = lookupTable;
- }
- uuidString = uuidString.toString();
- var variantCharacter = uuidString.charAt(19);
- var HEX_RADIX = 16;
- var variantNumber = parseInt(variantCharacter, HEX_RADIX);
- dojox.uuid.assert((variantNumber >= 0) && (variantNumber <= 16));
- return dojox.uuid._ourVariantLookupTable[variantNumber];
- };
- dojox.uuid.getVersion = function(/*String*/ uuidString){
-
-
-
-
-
-
-
-
- var errorMessage = "dojox.uuid.getVersion() was not passed a DCE Variant UUID.";
- dojox.uuid.assert(dojox.uuid.getVariant(uuidString) == dojox.uuid.variant.DCE, errorMessage);
- uuidString = uuidString.toString();
-
-
-
-
-
- var versionCharacter = uuidString.charAt(14);
- var HEX_RADIX = 16;
- var versionNumber = parseInt(versionCharacter, HEX_RADIX);
- return versionNumber;
- };
- dojox.uuid.getNode = function(/*String*/ uuidString){
-
-
-
-
-
-
- var errorMessage = "dojox.uuid.getNode() was not passed a TIME_BASED UUID.";
- dojox.uuid.assert(dojox.uuid.getVersion(uuidString) == dojox.uuid.version.TIME_BASED, errorMessage);
- uuidString = uuidString.toString();
- var arrayOfStrings = uuidString.split('-');
- var nodeString = arrayOfStrings[4];
- return nodeString;
- };
- dojox.uuid.getTimestamp = function(/*String*/ uuidString, /*String?*/ returnType){
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- var errorMessage = "dojox.uuid.getTimestamp() was not passed a TIME_BASED UUID.";
- dojox.uuid.assert(dojox.uuid.getVersion(uuidString) == dojox.uuid.version.TIME_BASED, errorMessage);
-
- uuidString = uuidString.toString();
- if(!returnType){returnType = null};
- switch(returnType){
- case "string":
- case String:
- return dojox.uuid.getTimestamp(uuidString, Date).toUTCString();
- break;
- case "hex":
-
-
- var arrayOfStrings = uuidString.split('-');
- var hexTimeLow = arrayOfStrings[0];
- var hexTimeMid = arrayOfStrings[1];
- var hexTimeHigh = arrayOfStrings[2];
-
-
-
- hexTimeHigh = hexTimeHigh.slice(1);
-
- var timestampAsHexString = hexTimeHigh + hexTimeMid + hexTimeLow;
- dojox.uuid.assert(timestampAsHexString.length == 15);
- return timestampAsHexString;
- break;
- case null:
- case "date":
- case Date:
-
- var GREGORIAN_CHANGE_OFFSET_IN_HOURS = 3394248;
- var HEX_RADIX = 16;
-
- var arrayOfParts = uuidString.split('-');
- var timeLow = parseInt(arrayOfParts[0], HEX_RADIX);
- var timeMid = parseInt(arrayOfParts[1], HEX_RADIX);
- var timeHigh = parseInt(arrayOfParts[2], HEX_RADIX);
- var hundredNanosecondIntervalsSince1582 = timeHigh & 0x0FFF;
- hundredNanosecondIntervalsSince1582 <<= 16;
- hundredNanosecondIntervalsSince1582 += timeMid;
-
-
-
- hundredNanosecondIntervalsSince1582 *= 0x100000000;
- hundredNanosecondIntervalsSince1582 += timeLow;
- var millisecondsSince1582 = hundredNanosecondIntervalsSince1582 / 10000;
-
-
-
- var secondsPerHour = 60 * 60;
- var hoursBetween1582and1970 = GREGORIAN_CHANGE_OFFSET_IN_HOURS;
- var secondsBetween1582and1970 = hoursBetween1582and1970 * secondsPerHour;
- var millisecondsBetween1582and1970 = secondsBetween1582and1970 * 1000;
- var millisecondsSince1970 = millisecondsSince1582 - millisecondsBetween1582and1970;
-
- var timestampAsDate = new Date(millisecondsSince1970);
- return timestampAsDate;
- break;
- default:
-
- dojox.uuid.assert(false, "dojox.uuid.getTimestamp was not passed a valid returnType: " + returnType);
- break;
- }
- };
- return dojox.uuid;
- });
|