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

Struts example source code file (Uuid.js)

This example Struts source code file (Uuid.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

called, called, date, date, dce, dce_security:2, gregorian_change_offset_in_hours, string, the, the, time_based, uuid, uuid, variant

The Struts Uuid.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.uuid.Uuid");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.assert");
dojo.uuid.Uuid = function (input) {
	this._uuidString = dojo.uuid.Uuid.NIL_UUID;
	if (input) {
		if (dojo.lang.isString(input)) {
			this._uuidString = input.toLowerCase();
			dojo.lang.assert(this.isValid());
		} else {
			if (dojo.lang.isObject(input) && input.generate) {
				var generator = input;
				this._uuidString = generator.generate();
				dojo.lang.assert(this.isValid());
			} else {
				dojo.lang.assert(false, "The dojo.uuid.Uuid() constructor must be initializated with a UUID string.");
			}
		}
	} else {
		var ourGenerator = dojo.uuid.Uuid.getGenerator();
		if (ourGenerator) {
			this._uuidString = ourGenerator.generate();
			dojo.lang.assert(this.isValid());
		}
	}
};
dojo.uuid.Uuid.NIL_UUID = "00000000-0000-0000-0000-000000000000";
dojo.uuid.Uuid.Version = {UNKNOWN:0, TIME_BASED:1, DCE_SECURITY:2, NAME_BASED_MD5:3, RANDOM:4, NAME_BASED_SHA1:5};
dojo.uuid.Uuid.Variant = {NCS:"0", DCE:"10", MICROSOFT:"110", UNKNOWN:"111"};
dojo.uuid.Uuid.HEX_RADIX = 16;
dojo.uuid.Uuid.compare = function (uuidOne, uuidTwo) {
	var uuidStringOne = uuidOne.toString();
	var uuidStringTwo = uuidTwo.toString();
	if (uuidStringOne > uuidStringTwo) {
		return 1;
	}
	if (uuidStringOne < uuidStringTwo) {
		return -1;
	}
	return 0;
};
dojo.uuid.Uuid.setGenerator = function (generator) {
	dojo.lang.assert(!generator || (dojo.lang.isObject(generator) && generator.generate));
	dojo.uuid.Uuid._ourGenerator = generator;
};
dojo.uuid.Uuid.getGenerator = function () {
	return dojo.uuid.Uuid._ourGenerator;
};
dojo.uuid.Uuid.prototype.toString = function (format) {
	if (format) {
		switch (format) {
		  case "{}":
			return "{" + this._uuidString + "}";
			break;
		  case "()":
			return "(" + this._uuidString + ")";
			break;
		  case "\"\"":
			return "\"" + this._uuidString + "\"";
			break;
		  case "''":
			return "'" + this._uuidString + "'";
			break;
		  case "urn":
			return "urn:uuid:" + this._uuidString;
			break;
		  case "!-":
			return this._uuidString.split("-").join("");
			break;
		  default:
			dojo.lang.assert(false, "The toString() method of dojo.uuid.Uuid was passed a bogus format.");
		}
	} else {
		return this._uuidString;
	}
};
dojo.uuid.Uuid.prototype.compare = function (otherUuid) {
	return dojo.uuid.Uuid.compare(this, otherUuid);
};
dojo.uuid.Uuid.prototype.isEqual = function (otherUuid) {
	return (this.compare(otherUuid) == 0);
};
dojo.uuid.Uuid.prototype.isValid = function () {
	try {
		dojo.lang.assertType(this._uuidString, String);
		dojo.lang.assert(this._uuidString.length == 36);
		dojo.lang.assert(this._uuidString == this._uuidString.toLowerCase());
		var arrayOfParts = this._uuidString.split("-");
		dojo.lang.assert(arrayOfParts.length == 5);
		dojo.lang.assert(arrayOfParts[0].length == 8);
		dojo.lang.assert(arrayOfParts[1].length == 4);
		dojo.lang.assert(arrayOfParts[2].length == 4);
		dojo.lang.assert(arrayOfParts[3].length == 4);
		dojo.lang.assert(arrayOfParts[4].length == 12);
		for (var i in arrayOfParts) {
			var part = arrayOfParts[i];
			var integer = parseInt(part, dojo.uuid.Uuid.HEX_RADIX);
			dojo.lang.assert(isFinite(integer));
		}
		return true;
	}
	catch (e) {
		return false;
	}
};
dojo.uuid.Uuid.prototype.getVariant = function () {
	var variantCharacter = this._uuidString.charAt(19);
	var variantNumber = parseInt(variantCharacter, dojo.uuid.Uuid.HEX_RADIX);
	dojo.lang.assert((variantNumber >= 0) && (variantNumber <= 16));
	if (!dojo.uuid.Uuid._ourVariantLookupTable) {
		var Variant = dojo.uuid.Uuid.Variant;
		var lookupTable = [];
		lookupTable[0] = Variant.NCS;
		lookupTable[1] = Variant.NCS;
		lookupTable[2] = Variant.NCS;
		lookupTable[3] = Variant.NCS;
		lookupTable[4] = Variant.NCS;
		lookupTable[5] = Variant.NCS;
		lookupTable[6] = Variant.NCS;
		lookupTable[7] = Variant.NCS;
		lookupTable[8] = Variant.DCE;
		lookupTable[9] = Variant.DCE;
		lookupTable[10] = Variant.DCE;
		lookupTable[11] = Variant.DCE;
		lookupTable[12] = Variant.MICROSOFT;
		lookupTable[13] = Variant.MICROSOFT;
		lookupTable[14] = Variant.UNKNOWN;
		lookupTable[15] = Variant.UNKNOWN;
		dojo.uuid.Uuid._ourVariantLookupTable = lookupTable;
	}
	return dojo.uuid.Uuid._ourVariantLookupTable[variantNumber];
};
dojo.uuid.Uuid.prototype.getVersion = function () {
	if (!this._versionNumber) {
		var errorMessage = "Called getVersion() on a dojo.uuid.Uuid that was not a DCE Variant UUID.";
		dojo.lang.assert(this.getVariant() == dojo.uuid.Uuid.Variant.DCE, errorMessage);
		var versionCharacter = this._uuidString.charAt(14);
		this._versionNumber = parseInt(versionCharacter, dojo.uuid.Uuid.HEX_RADIX);
	}
	return this._versionNumber;
};
dojo.uuid.Uuid.prototype.getNode = function () {
	if (!this._nodeString) {
		var errorMessage = "Called getNode() on a dojo.uuid.Uuid that was not a TIME_BASED UUID.";
		dojo.lang.assert(this.getVersion() == dojo.uuid.Uuid.Version.TIME_BASED, errorMessage);
		var arrayOfStrings = this._uuidString.split("-");
		this._nodeString = arrayOfStrings[4];
	}
	return this._nodeString;
};
dojo.uuid.Uuid.prototype.getTimestamp = function (returnType) {
	var errorMessage = "Called getTimestamp() on a dojo.uuid.Uuid that was not a TIME_BASED UUID.";
	dojo.lang.assert(this.getVersion() == dojo.uuid.Uuid.Version.TIME_BASED, errorMessage);
	if (!returnType) {
		returnType = null;
	}
	switch (returnType) {
	  case "string":
	  case String:
		return this.getTimestamp(Date).toUTCString();
		break;
	  case "hex":
		if (!this._timestampAsHexString) {
			var arrayOfStrings = this._uuidString.split("-");
			var hexTimeLow = arrayOfStrings[0];
			var hexTimeMid = arrayOfStrings[1];
			var hexTimeHigh = arrayOfStrings[2];
			hexTimeHigh = hexTimeHigh.slice(1);
			this._timestampAsHexString = hexTimeHigh + hexTimeMid + hexTimeLow;
			dojo.lang.assert(this._timestampAsHexString.length == 15);
		}
		return this._timestampAsHexString;
		break;
	  case null:
	  case "date":
	  case Date:
		if (!this._timestampAsDate) {
			var GREGORIAN_CHANGE_OFFSET_IN_HOURS = 3394248;
			var arrayOfParts = this._uuidString.split("-");
			var timeLow = parseInt(arrayOfParts[0], dojo.uuid.Uuid.HEX_RADIX);
			var timeMid = parseInt(arrayOfParts[1], dojo.uuid.Uuid.HEX_RADIX);
			var timeHigh = parseInt(arrayOfParts[2], dojo.uuid.Uuid.HEX_RADIX);
			var hundredNanosecondIntervalsSince1582 = timeHigh & 4095;
			hundredNanosecondIntervalsSince1582 <<= 16;
			hundredNanosecondIntervalsSince1582 += timeMid;
			hundredNanosecondIntervalsSince1582 *= 4294967296;
			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;
			this._timestampAsDate = new Date(millisecondsSince1970);
		}
		return this._timestampAsDate;
		break;
	  default:
		dojo.lang.assert(false, "The getTimestamp() method dojo.uuid.Uuid was passed a bogus returnType: " + returnType);
		break;
	}
};

Other Struts examples (source code examples)

Here is a short list of links related to this Struts Uuid.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.