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

📄 ufmobileuuid.java

📁 国内很牛的软件公司花费两年半开发的用EJB3开发的代码,采用STRUTS和EJB3,目前系统进行第二版.所以拿出来共享
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	     * The variant number has the following meaning:<p>
	     * <ul>
	     * <li>0    Reserved for NCS backward compatibility
	     * <li>2    The Leach-Salz variant (used by this class)
	     * <li>6    Reserved, Microsoft Corporation backward compatibility
	     * <li>7    Reserved for future definition
	     * </ul>
	     *
	     * @return  the variant number of this <tt>UUID</tt>.
	     */
	    public int variant() {
	        if (variant < 0) {
	            // This field is composed of a varying number of bits
	            if ((leastSigBits >>> 63) == 0) {
	                variant = 0;
	            } else if ((leastSigBits >>> 62) == 2) {
	                variant = 2;
	            } else {
	                variant = (int)(leastSigBits >>> 61);
	            }
	        }
	        return variant;
	    }

	    /**
	     * The timestamp value associated with this UUID.
	     *
	     * <p>The 60 bit timestamp value is constructed from the time_low,
	     * time_mid, and time_hi fields of this <tt>UUID</tt>. The resulting 
	     * timestamp is measured in 100-nanosecond units since midnight, 
	     * October 15, 1582 UTC.<p>
	     *
	     * The timestamp value is only meaningful in a time-based UUID, which
	     * has version type 1. If this <tt>UUID</tt> is not a time-based UUID then
	     * this method throws UnsupportedOperationException.
	     * 
	     * @throws UnsupportedOperationException if this UUID is not a 
	     *         version 1 UUID.
	     */
	    public long timestamp() {
	        if (version() != 1) {
	            throw new UnsupportedOperationException("Not a time-based UUID");
	        }
	        long result = timestamp;
	        if (result < 0) {
	            result = (mostSigBits & 0x0000000000000FFFL) << 48;
	            result |= ((mostSigBits >> 16) & 0xFFFFL) << 32;
	            result |= mostSigBits >>> 32;
	            timestamp = result;
	        }
	        return result;
	    }

	    /**
	     * The clock sequence value associated with this UUID.
	     *
	     * <p>The 14 bit clock sequence value is constructed from the clock
	     * sequence field of this UUID. The clock sequence field is used to
	     * guarantee temporal uniqueness in a time-based UUID.<p>
	     *
	     * The  clockSequence value is only meaningful in a time-based UUID, which
	     * has version type 1. If this UUID is not a time-based UUID then
	     * this method throws UnsupportedOperationException.
	     * 
	     * @return  the clock sequence of this <tt>UUID</tt>.
	     * @throws UnsupportedOperationException if this UUID is not a 
	     *         version 1 UUID.
	     */
	    public int clockSequence() {
	        if (version() != 1) {
	            throw new UnsupportedOperationException("Not a time-based UUID");
	        }
	        if (sequence < 0) {
	            sequence = (int)((leastSigBits & 0x3FFF000000000000L) >>> 48);
	        }
	        return sequence;
	    }

	    /**
	     * The node value associated with this UUID.
	     *
	     * <p>The 48 bit node value is constructed from the node field of
	     * this UUID. This field is intended to hold the IEEE 802 address 
	     * of the machine that generated this UUID to guarantee spatial
	     * uniqueness.<p>
	     *
	     * The node value is only meaningful in a time-based UUID, which
	     * has version type 1. If this UUID is not a time-based UUID then
	     * this method throws UnsupportedOperationException.
	     * 
	     * @return  the node value of this <tt>UUID</tt>.
	     * @throws UnsupportedOperationException if this UUID is not a
	     *         version 1 UUID.
	     */
	    public long node() {
	        if (version() != 1) {
	            throw new UnsupportedOperationException("Not a time-based UUID");
	        }
	        if (node < 0) {
	            node = leastSigBits & 0x0000FFFFFFFFFFFFL;
	        }
	        return node;
	    }

	    // Object Inherited Methods

	    /**
	     * Returns a <code>String</code> object representing this
	     * <code>UUID</code>.
	     * 
	     * <p>The UUID string representation is as described by this BNF : 
	     * <pre>
	     *  UUID                   = <time_low> "-" <time_mid> "-"
	     *                           <time_high_and_version> "-"
	     *                           <variant_and_sequence> "-"
	     *                           <node>
	     *  time_low               = 4*<hexOctet>
	     *  time_mid               = 2*<hexOctet>
	     *  time_high_and_version  = 2*<hexOctet>
	     *  variant_and_sequence   = 2*<hexOctet>
	     *  node                   = 6*<hexOctet>
	     *  hexOctet               = <hexDigit><hexDigit>
	     *  hexDigit               =
	     *        "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
	     *        | "a" | "b" | "c" | "d" | "e" | "f"
	     *        | "A" | "B" | "C" | "D" | "E" | "F"
	     * </pre>
	     *
	     * @return  a string representation of this <tt>UUID</tt>.
	     */
	    public String toString() {
		return (digits(mostSigBits >> 32, 8) + 
			digits(mostSigBits >> 16, 4) + 
			digits(mostSigBits, 4) + 
			digits(leastSigBits >> 48, 4) + 
			digits(leastSigBits, 12));
	    }

	    /** Returns val represented by the specified number of hex digits. */
	    private static String digits(long val, int digits) {
		long hi = 1L << (digits * 4);
		return Long.toHexString(hi | (val & (hi - 1))).substring(1);
	    }

	    /**
	     * Returns a hash code for this <code>UUID</code>.
	     *
	     * @return  a hash code value for this <tt>UUID</tt>. 
	     */
	    public int hashCode() {
	        if (hashCode == -1) {
	            hashCode = (int)((mostSigBits >> 32) ^
	                             mostSigBits ^
	                             (leastSigBits >> 32) ^
	                             leastSigBits);
	        }
	        return hashCode;
	    }

	    /**
	     * Compares this object to the specified object.  The result is
	     * <tt>true</tt> if and only if the argument is not
	     * <tt>null</tt>, is a <tt>UUID</tt> object, has the same variant,
	     * and contains the same value, bit for bit, as this <tt>UUID</tt>.
	     *
	     * @param   obj   the object to compare with.
	     * @return  <code>true</code> if the objects are the same;
	     *          <code>false</code> otherwise.
	     */
	    public boolean equals(Object obj) {
		if (!(obj instanceof UFMobileUUID))
		    return false;
	        if (((UFMobileUUID)obj).variant() != this.variant())
	            return false;
	        UFMobileUUID id = (UFMobileUUID)obj;
		return (mostSigBits == id.mostSigBits &&
	                leastSigBits == id.leastSigBits);
	    }

	    // Comparison Operations

	    /**
	     * Compares this UUID with the specified UUID.
	     * 
	     * <p>The first of two UUIDs follows the second if the most significant
	     * field in which the UUIDs differ is greater for the first UUID.
	     *
	     * @param  val <tt>UUID</tt> to which this <tt>UUID</tt> is to be compared.
	     * @return -1, 0 or 1 as this <tt>UUID</tt> is less than, equal
	     *         to, or greater than <tt>val</tt>.
	     */
	    public int compareTo(UFMobileUUID val) {
	        // The ordering is intentionally set up so that the UUIDs
	        // can simply be numerically compared as two numbers
	        return (this.mostSigBits < val.mostSigBits ? -1 : 
	                (this.mostSigBits > val.mostSigBits ? 1 :
	                 (this.leastSigBits < val.leastSigBits ? -1 :
	                  (this.leastSigBits > val.leastSigBits ? 1 :
	                   0))));
	    }

	    /**
	     * Reconstitute the <tt>UUID</tt> instance from a stream (that is,
	     * deserialize it). This is necessary to set the transient fields
	     * to their correct uninitialized value so they will be recomputed
	     * on demand.
	     */
	    private void readObject(java.io.ObjectInputStream in)
	        throws java.io.IOException, ClassNotFoundException {

	        in.defaultReadObject();

	        // Set "cached computation" fields to their initial values
	        version = -1;
	        variant = -1;
	        timestamp = -1;
	        sequence = -1;
	        node = -1;
	        hashCode = -1;
	    }
	}

⌨️ 快捷键说明

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