123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- if (!dojo._hasResource["dojox.uuid.Uuid"]) { // _hasResource checks added by
- // build. Do not use
- // _hasResource directly in your
- // code.
- dojo._hasResource["dojox.uuid.Uuid"] = true;
- dojo.provide("dojox.uuid.Uuid");
- dojo.require("dojox.uuid");
- dojox.uuid.Uuid = function(/* String? */input) {
- // summary:
- // This is the constructor for the Uuid class. The Uuid class offers
- // methods for inspecting existing UUIDs.
- // input: A 36-character string that conforms to the UUID spec.
- // examples:
- // var uuid;
- // uuid = new dojox.uuid.Uuid("3b12f1df-5232-4804-897e-917bf397618a");
- // uuid = new dojox.uuid.Uuid(); //
- // "00000000-0000-0000-0000-000000000000"
- // uuid = new dojox.uuid.Uuid(dojox.uuid.generateRandomUuid());
- // uuid = new dojox.uuid.Uuid(dojox.uuid.generateTimeBasedUuid());
- // dojox.uuid.Uuid.setGenerator(dojox.uuid.generateRandomUuid);
- // uuid = new dojox.uuid.Uuid();
- // dojox.uuid.assert(!uuid.isEqual(dojox.uuid.NIL_UUID));
- this._uuidString = dojox.uuid.NIL_UUID;
- if (input) {
- dojox.uuid.assert(dojo.isString(input));
- this._uuidString = input.toLowerCase();
- dojox.uuid.assert(this.isValid());
- } else {
- var ourGenerator = dojox.uuid.Uuid.getGenerator();
- if (ourGenerator) {
- this._uuidString = ourGenerator();
- dojox.uuid.assert(this.isValid());
- }
- }
- };
- dojox.uuid.Uuid.compare = function(/* dojox.uuid.Uuid */uuidOne, /* dojox.uuid.Uuid */
- uuidTwo) {
- // summary:
- // Given two UUIDs to compare, this method returns 0, 1, or -1.
- // description:
- // This method is designed to be used by sorting routines, like the
- // JavaScript built-in Array sort() method. This implementation is
- // intended to match the sample implementation in IETF RFC 4122:
- // http://www.ietf.org/rfc/rfc4122.txt
- // uuidOne: Any object that has toString() method that returns a
- // 36-character string that conforms to the UUID spec.
- // uuidTwo: Any object that has toString() method that returns a
- // 36-character string that conforms to the UUID spec.
- // examples:
- // var uuid;
- // var generator = dojox.uuid.TimeBasedGenerator;
- // var a = new dojox.uuid.Uuid(generator);
- // var b = new dojox.uuid.Uuid(generator);
- // var c = new dojox.uuid.Uuid(generator);
- // var array = new Array(a, b, c);
- // array.sort(dojox.uuid.Uuid.compare);
- var uuidStringOne = uuidOne.toString();
- var uuidStringTwo = uuidTwo.toString();
- if (uuidStringOne > uuidStringTwo)
- return 1; // integer
- if (uuidStringOne < uuidStringTwo)
- return -1; // integer
- return 0; // integer (either 0, 1, or -1)
- };
- dojox.uuid.Uuid.setGenerator = function(/* Function? */generator) {
- // summary:
- // Sets the default generator, which will be used by the
- // "new dojox.uuid.Uuid()" constructor if no parameters
- // are passed in.
- // generator: A UUID generator function, such as
- // dojox.uuid.generateTimeBasedUuid.
- dojox.uuid.assert(!generator || dojo.isFunction(generator));
- dojox.uuid.Uuid._ourGenerator = generator;
- };
- dojox.uuid.Uuid.getGenerator = function() {
- // summary:
- // Returns the default generator. See setGenerator().
- return dojox.uuid.Uuid._ourGenerator; // generator (A UUID generator,
- // such as
- // dojox.uuid.TimeBasedGenerator).
- };
- dojox.uuid.Uuid.prototype.toString = function() {
- // summary:
- // This method returns a standard 36-character string representing
- // the UUID, such as "3b12f1df-5232-4804-897e-917bf397618a".
- return this._uuidString; // string
- };
- dojox.uuid.Uuid.prototype.compare = function(/* dojox.uuid.Uuid */otherUuid) {
- // summary:
- // Compares this UUID to another UUID, and returns 0, 1, or -1.
- // description:
- // This implementation is intended to match the sample implementation
- // in IETF RFC 4122: http://www.ietf.org/rfc/rfc4122.txt
- // otherUuid: Any object that has toString() method that returns a
- // 36-character string that conforms to the UUID spec.
- return dojox.uuid.Uuid.compare(this, otherUuid); // integer (either
- // 0, 1, or -1)
- };
- dojox.uuid.Uuid.prototype.isEqual = function(/* dojox.uuid.Uuid */otherUuid) {
- // summary:
- // Returns true if this UUID is equal to the otherUuid, or false
- // otherwise.
- // otherUuid: Any object that has toString() method that returns a
- // 36-character string that conforms to the UUID spec.
- return (this.compare(otherUuid) == 0); // boolean
- };
- dojox.uuid.Uuid.prototype.isValid = function() {
- // summary:
- // Returns true if the UUID was initialized with a valid value.
- return dojox.uuid.isValid(this);
- };
- dojox.uuid.Uuid.prototype.getVariant = function() {
- // summary:
- // Returns a variant code that indicates what type of UUID this is.
- // Returns one of the enumerated dojox.uuid.variant values.
- // example:
- // var uuid = new
- // dojox.uuid.Uuid("3b12f1df-5232-4804-897e-917bf397618a");
- // var variant = uuid.getVariant();
- // dojox.uuid.assert(variant == dojox.uuid.variant.DCE);
- // example:
- // "3b12f1df-5232-4804-897e-917bf397618a"
- // ^
- // |
- // (variant "10__" == DCE)
- return dojox.uuid.getVariant(this);
- };
- dojox.uuid.Uuid.prototype.getVersion = function() {
- // summary:
- // Returns a version number that indicates what type of UUID this is.
- // Returns one of the enumerated dojox.uuid.version values.
- // example:
- // var uuid = new
- // dojox.uuid.Uuid("b4308fb0-86cd-11da-a72b-0800200c9a66");
- // var version = uuid.getVersion();
- // dojox.uuid.assert(version == dojox.uuid.version.TIME_BASED);
- // exceptions:
- // Throws an Error if this is not a DCE Variant UUID.
- if (!this._versionNumber) {
- this._versionNumber = dojox.uuid.getVersion(this);
- }
- return this._versionNumber; // dojox.uuid.version
- };
- dojox.uuid.Uuid.prototype.getNode = function() {
- // summary:
- // If this is a version 1 UUID (a time-based UUID), getNode() returns a
- // 12-character string with the "node" or "pseudonode" portion of the
- // UUID,
- // which is the rightmost 12 characters.
- // exceptions:
- // Throws an Error if this is not a version 1 UUID.
- if (!this._nodeString) {
- this._nodeString = dojox.uuid.getNode(this);
- }
- return this._nodeString; // String (a 12-character string, which will
- // look something like "917bf397618a")
- };
- dojox.uuid.Uuid.prototype.getTimestamp = function(/* String? */returnType) {
- // summary:
- // If this is a version 1 UUID (a time-based UUID), this method returns
- // the timestamp value encoded in the UUID. The caller can ask for the
- // timestamp to be returned either as a JavaScript Date object or as a
- // 15-character string of hex digits.
- // returnType: Any of these five values: "string", String, "hex",
- // "date", Date
- // returns:
- // Returns the timestamp value as a JavaScript Date object or a
- // 15-character string of hex digits.
- // examples:
- // var uuid = new
- // dojox.uuid.Uuid("b4308fb0-86cd-11da-a72b-0800200c9a66");
- // var date, string, hexString;
- // date = uuid.getTimestamp(); // returns a JavaScript Date
- // date = uuid.getTimestamp(Date); //
- // string = uuid.getTimestamp(String); // "Mon, 16 Jan 2006 20:21:41
- // GMT"
- // hexString = uuid.getTimestamp("hex"); // "1da86cdb4308fb0"
- // exceptions:
- // Throws an Error if this is not a version 1 UUID.
- if (!returnType) {
- returnType = null
- };
- switch (returnType) {
- case "string" :
- case String :
- return this.getTimestamp(Date).toUTCString(); // String (e.g.
- // "Mon, 16 Jan
- // 2006 20:21:41
- // GMT")
- break;
- case "hex" :
- // Return a 15-character string of hex digits containing the
- // timestamp for this UUID, with the high-order bits first.
- if (!this._timestampAsHexString) {
- this._timestampAsHexString = dojox.uuid.getTimestamp(this,
- "hex");
- }
- return this._timestampAsHexString; // String (e.g.
- // "1da86cdb4308fb0")
- break;
- case null : // no returnType was specified, so default to Date
- case "date" :
- case Date :
- // Return a JavaScript Date object.
- if (!this._timestampAsDate) {
- this._timestampAsDate = dojox.uuid.getTimestamp(this, Date);
- }
- return this._timestampAsDate; // Date
- break;
- default :
- // we got passed something other than a valid returnType
- dojox.uuid.assert(false,
- "The getTimestamp() method dojox.uuid.Uuid was passed a bogus returnType: "
- + returnType);
- break;
- }
- };
- }
|