📄 profileid.java
字号:
package javax.slee.profile;import java.io.Serializable;import javax.slee.Address;import javax.slee.AddressPlan;/** * The <code>ProfileID</code> class defines an indentifer that can be used to * reference profiles. For example a profile specification's CMP interface * may contain attributes of the type <code>ProfileID</code>, allowing profile's of * that type to reference other profiles. */public class ProfileID implements Serializable { /** * Create a <code>ProfileID</code> object using a profile table name and profile name. * @param profileTableName the name of the profile table. * @param profileName the name of the profile within the profile table. * @throws NullPointerException if either argument is <code>null</code>. * @throws IllegalArgumentException if <code>profileTableName</code> includes the '<tt>/</tt>' * character. This character is not permitted in profile table names. */ public ProfileID(String profileTableName, String profileName) throws NullPointerException, IllegalArgumentException { setProfileID(profileTableName, profileName); } /** * Create a <code>ProfileID</code> object from an address. The address must have the * address plan of {@link javax.slee.AddressPlan#SLEE_PROFILE}. * @param address the address of the profile. * @throws NullPointerException if <code>address</code> is <code>null</code>. * @throws IllegalArgumentException if the address plan of the address is not * <code>AddressPlan.SLEE_PROFILE</code>, or the address string does not * contain a profile identifier with the correct encoding: * <tt><profile-table-name</<profile-name></tt>. */ public ProfileID(Address address) throws NullPointerException, IllegalArgumentException { if (address == null) throw new NullPointerException("address is null"); if (!address.getAddressPlan().equals(AddressPlan.SLEE_PROFILE)) throw new IllegalArgumentException("address must have the SLEE_PROFILE address plan"); String addressString = address.getAddressString(); int div = addressString.indexOf('/'); if (div < 0) throw new IllegalArgumentException("address string does not contain a '/' seperator character"); this.profileTableName = addressString.substring(0, div); this.profileName = addressString.substring(div + 1); this.address = address; } /** * Get the name of the profile table referenced by this identifier. * @return the profile table name. */ public final String getProfileTableName() { return profileTableName; } /** * Get the name of the profile referenced by this identifier. * @return the profile name. */ public final String getProfileName() { return profileName; } /** * Set the profile table and profile referenced by this profile identifier to new * values. * @param profileTableName the name of the profile table. * @param profileName the name of the profile within the profile table. * @throws NullPointerException if either argument is <code>null</code>. * @throws IllegalArgumentException if <code>profileTableName</code> includes the * '<tt>/</tt>' character. This character is not permitted in profile table names. */ public final void setProfileID(String profileTableName, String profileName) throws NullPointerException, IllegalArgumentException { if (profileTableName == null) throw new NullPointerException("profileTableName is null"); if (profileName == null) throw new NullPointerException("profileName is null"); if (profileTableName.indexOf('/') >= 0) throw new IllegalArgumentException("profileTableName cannot contain the '/' character"); this.profileTableName = profileTableName; this.profileName = profileName; this.address = null; } /** * Get an <code>Address</code> object containing the address form of the profile * identified by this profile identifier. * @return an <code>Address</code> object containing the address form of the profile * identified by this profile identifier. */ public Address toAddress() { if (address == null) { address = new Address(AddressPlan.SLEE_PROFILE, profileTableName + '/' + profileName); } return address; } /** * Compare this profile identifier for equality with another object. * @param obj the object to compare this with. * @return <code>true</code> if <code>obj</code> is an instance of this class and the * profile table name and profile name are equal. */ public boolean equals(Object obj) { if (obj == this) return true; if (!(obj instanceof ProfileID)) return false; ProfileID that = (ProfileID)obj; return this.profileTableName.equals(that.profileTableName) && this.profileName.equals(that.profileName); } /** * Get a hash code value for this profile identifer. The hash code is the logical * OR of the hashcodes of the profile table name and profile name. * @return a hash code for this profile identifier. */ public int hashCode() { return profileTableName.hashCode() | profileName.hashCode(); } /** * Get a string representation for this profile identifier. * @return a string representation for this profile identifer. */ public String toString() { StringBuffer buf = new StringBuffer(); buf.append("ProfileID[table=") .append(profileTableName) .append(",profile=") .append(profileName) .append("]"); return buf.toString(); } private String profileTableName; private String profileName; private transient Address address;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -