All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.com.ibm.as400.access.UserList Maven / Gradle / Ivy

///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename:  UserList.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2004 International Business Machines Corporation and
// others.  All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////

package com.ibm.as400.access;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.beans.PropertyVetoException;
import java.beans.VetoableChangeListener;
import java.beans.VetoableChangeSupport;
import java.io.IOException;
import java.io.Serializable;
import java.util.Enumeration;

/**
 Represents a list of user profiles on the system.
 

Implementation note: This class internally uses the Open List APIs (such as QGYOLAUS). @see com.ibm.as400.access.User @see com.ibm.as400.access.UserGroup **/ public class UserList implements Serializable { static final long serialVersionUID = 5L; /** Selection value indicating that the list contains all user profiles and group profiles. **/ public static final String ALL = "*ALL"; /** Selection value indicating that the list contains only user profiles that are not group profiles. These are user profiles that do not have a group identifier specified. **/ public static final String USER = "*USER"; /** Selection value indicating that the list contains only user profiles that are group profiles. These are user profiles that have a group identifier specified. **/ public static final String GROUP = "*GROUP"; /** Selection value indicating that the list contains only user profiles that are members of a specified group. **/ public static final String MEMBER = "*MEMBER"; /** Selection value indicating that no group profile is specified. **/ public static final String NONE = "*NONE"; /** Selection value indicating that the list contains only user profiles that are not group profiles. These are user profiles that do not have a group identifier specified. **/ public static final String NOGROUP = "*NOGROUP"; // The system where the users are located. private AS400 system_ = null; // The selection criteria for which users are returned. private String userInfo_ = ALL; // The secection criteria for the group profile whose members are returned. private String groupInfo_ = NONE; // The profile names to include in the list. private String userProfile_ = ALL; // Length of the user list. private int length_ = 0; // Handle that references the user space used by the open list APIs. private byte[] handle_ = null; // If the user or group info has changed, close the old handle before loading the new one. private boolean closeHandle_ = false; // List of property change event bean listeners. private transient PropertyChangeSupport propertyChangeListeners_ = null; // Set on first add. // List of vetoable change event bean listeners. private transient VetoableChangeSupport vetoableChangeListeners_ = null; // Set on first add. /** Constructs a UserList object. The {@link #setSystem system} must be set before calling any of the methods that connect to the system. The userInfo parameter defaults to {@link #ALL ALL}, the groupInfo parameter defaults to {@link #NONE NONE}, and the userProfile parameter defaults to {@link #ALL ALL}. **/ public UserList() { super(); if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Constructing UserList object."); } /** Constructs a UserList object. The userInfo parameter defaults to {@link #ALL ALL}, the groupInfo parameter defaults to {@link #NONE NONE}, and the userProfile parameter defaults to {@link #ALL ALL}. @param system The system object representing the system on which the users exists. **/ public UserList(AS400 system) { super(); if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Constructing UserList object, system: " + system); if (system == null) { Trace.log(Trace.ERROR, "Parameter 'system' is null."); throw new NullPointerException("system"); } system_ = system; } /** Constructs a UserList object. The userProfile parameter defaults to {@link #ALL ALL}. @param system The system object representing the system on which the users exists. @param userInfo The users to be returned. Possible values are:

  • {@link #ALL ALL} - All user profiles and group profiles are returned.
  • {@link #USER USER} - Only user profiles that are not group profiles are returned. These are user profiles that do not have a group identifier specified.
  • {@link #GROUP GROUP} - Only user profiles that are group profiles are returned. These are user profiles that have a group identifier specified.
  • {@link #MEMBER MEMBER} - User profiles that are members of the group specified for groupInfo are returned.
@param groupInfo The group profile whose members are to be returned. Possible values are:
  • {@link #NONE NONE} - No group profile is specified.
  • {@link #NOGROUP NOGROUP} - Users who are not a member of any group are returned.
  • The group profile name - Users who are a member of this group are returned.
**/ public UserList(AS400 system, String userInfo, String groupInfo) { super(); if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Constructing UserList object, system: " + system + ", user info: " + userInfo + ", group info: " + groupInfo); if (system == null) { Trace.log(Trace.ERROR, "Parameter 'system' is null."); throw new NullPointerException("system"); } if (userInfo == null) { Trace.log(Trace.ERROR, "Parameter 'userInfo' is null."); throw new NullPointerException("userInfo"); } if (groupInfo == null) { Trace.log(Trace.ERROR, "Parameter 'groupInfo' is null."); throw new NullPointerException("groupInfo"); } if (groupInfo.length() > 10) { Trace.log(Trace.ERROR, "Length of parameter 'groupInfo' is not valid: '" + groupInfo + "'"); throw new ExtendedIllegalArgumentException("groupInfo (" + groupInfo + ")", ExtendedIllegalArgumentException.LENGTH_NOT_VALID); } if (!userInfo.equals(ALL) && !userInfo.equals(USER) && !userInfo.equals(GROUP) && !userInfo.equals(MEMBER)) { Trace.log(Trace.ERROR, "Value of parameter 'userInfo' is not valid: " + userInfo); throw new ExtendedIllegalArgumentException("userInfo (" + userInfo + ")", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID); } if (userInfo.equals(MEMBER) && groupInfo.equals(NONE)) { Trace.log(Trace.ERROR, "Value of parameter 'groupInfo' is not valid: " + groupInfo); throw new ExtendedIllegalArgumentException("groupInfo (" + groupInfo + ")", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID); } if (!userInfo.equals(MEMBER) && !groupInfo.equals(NONE)) { Trace.log(Trace.ERROR, "Value of parameter 'groupInfo' is not valid: " + groupInfo); throw new ExtendedIllegalArgumentException("groupInfo (" + groupInfo + ")", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID); } system_ = system; userInfo_ = userInfo; groupInfo_ = groupInfo; } /** Constructs a UserList object. @param system The system object representing the system on which the users exists. @param userInfo The users to be returned. Possible values are:
  • {@link #ALL ALL} - All user profiles and group profiles are returned.
  • {@link #USER USER} - Only user profiles that are not group profiles are returned. These are user profiles that do not have a group identifier specified.
  • {@link #GROUP GROUP} - Only user profiles that are group profiles are returned. These are user profiles that have a group identifier specified.
  • {@link #MEMBER MEMBER} - User profiles that are members of the group specified for groupInfo are returned.
@param groupInfo The group profile whose members are to be returned. Possible values are:
  • {@link #NONE NONE} - No group profile is specified.
  • {@link #NOGROUP NOGROUP} - Users who are not a member of any group are returned.
  • The group profile name - Users who are a member of this group are returned.
@param userProfile The profile names to include in the list. Possible values are:
  • {@link #ALL ALL} - All profiles are returned.
  • The user profile name - If a generic profile name is specifed, the profiles that match the the generic name are returned. If a simple profile name is specified, only that profile is returned.
**/ public UserList(AS400 system, String userInfo, String groupInfo, String userProfile) { this(system, userInfo, groupInfo); if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Constructing UserList object, userProfile: " + userProfile); if (userProfile == null) { Trace.log(Trace.ERROR, "Parameter 'userProfile' is null."); throw new NullPointerException("userProfile"); } if (userProfile.length() > 10) { Trace.log(Trace.ERROR, "Length of parameter 'userProfile' is not valid: '" + userProfile + "'"); throw new ExtendedIllegalArgumentException("userProfile (" + userProfile + ")", ExtendedIllegalArgumentException.LENGTH_NOT_VALID); } userProfile_ = userProfile; } /** Adds a PropertyChangeListener. The specified PropertyChangeListener's propertyChange() method will be called each time the value of any bound property is changed. @param listener The listener. @see #removePropertyChangeListener **/ public void addPropertyChangeListener(PropertyChangeListener listener) { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Adding property change listener."); if (listener == null) { Trace.log(Trace.ERROR, "Parameter 'listener' is null."); throw new NullPointerException("listener"); } synchronized (this) { // If first add. if (propertyChangeListeners_ == null) { propertyChangeListeners_ = new PropertyChangeSupport(this); } propertyChangeListeners_.addPropertyChangeListener(listener); } } /** Adds a VetoableChangeListener. The specified VetoableChangeListener's vetoableChange() method will be called each time the value of any constrained property is changed. @param listener The listener. @see #removeVetoableChangeListener **/ public void addVetoableChangeListener(VetoableChangeListener listener) { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Adding vetoable change listener."); if (listener == null) { Trace.log(Trace.ERROR, "Parameter 'listener' is null."); throw new NullPointerException("listener"); } synchronized (this) { // If first add. if (vetoableChangeListeners_ == null) { vetoableChangeListeners_ = new VetoableChangeSupport(this); } vetoableChangeListeners_.addVetoableChangeListener(listener); } } /** Closes the user list on the system. This releases any system resources previously in use by this user list. @exception AS400SecurityException If a security or authority error occurs. @exception ErrorCompletingRequestException If an error occurs before the request is completed. @exception InterruptedException If this thread is interrupted. @exception IOException If an error occurs while communicating with the system. @exception ObjectDoesNotExistException If the object does not exist on the system. @see #load **/ public synchronized void close() throws AS400SecurityException, ErrorCompletingRequestException, InterruptedException, IOException, ObjectDoesNotExistException { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Closing user list, handle: ", handle_); if (handle_ == null) return; try { ListUtilities.closeList(system_, handle_); } finally { handle_ = null; closeHandle_ = false; } } /** Returns the group profile whose members are to be returned. @return The group profile whose members are to be returned. Possible values are:
  • {@link #NONE NONE} - No group profile is specified.
  • {@link #NOGROUP NOGROUP} - Users who are not a member of any group are returned.
  • The group profile name - Users who are a member of this group are returned.
**/ public String getGroupInfo() { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Getting group info: " + groupInfo_); return groupInfo_; } /** Returns the number of users in the user list. This method implicitly calls {@link #load load()}. @return The number of users, or 0 if no list was retrieved. @see #load **/ public synchronized int getLength() { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Getting user list length."); try { if (handle_ == null || closeHandle_) load(); } catch (Exception e) { Trace.log(Trace.ERROR, "Exception caught getting length of user list:", e); if (e instanceof ExtendedIllegalStateException) throw (ExtendedIllegalStateException)e; } if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Length:", length_); return length_; } /** Returns the system object representing the system on which the users exist. @return The system object representing the system on which the users exist. If the system has not been set, null is returned. **/ public AS400 getSystem() { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Getting system: " + system_); return system_; } /** Returns the description of which users are returned. @return The description of which users are returned. Possible values are:
  • {@link #ALL ALL} - All user profiles and group profiles are returned.
  • {@link #USER USER} - Only user profiles that are not group profiles are returned. These are user profiles that do not have a group identifier specified.
  • {@link #GROUP GROUP} - Only user profiles that are group profiles are returned. These are user profiles that have a group identifier specified.
  • {@link #MEMBER MEMBER} - User profiles that are members of the group specified for the group info are returned.
**/ public String getUserInfo() { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Getting user info: " + userInfo_); return userInfo_; } /** Returns the user profile names of which users are returned. @return The profile names of which users are returned. Possible values are:
  • {@link #ALL ALL} - All profiles are returned.
  • The user profile name - If a generic profile name is specifed, the profiles that match the the generic name are returned. If a simple profile name is specified, only that profile is returned.
**/ public String getUserProfile() { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Getting user profile: " + userProfile_); return userProfile_; } /** Returns the list of users in the user list. @return An Enumeration of {@link com.ibm.as400.access.User User} and/or {@link com.ibm.as400.access.UserGroup UserGroup} objects. @exception AS400SecurityException If a security or authority error occurs. @exception ErrorCompletingRequestException If an error occurs before the request is completed. @exception InterruptedException If this thread is interrupted. @exception IOException If an error occurs while communicating with the system. @exception ObjectDoesNotExistException If the system object does not exist. @exception RequestNotSupportedException If the requested function is not supported because the system is not at the correct level. @see #close @see #load **/ public synchronized Enumeration getUsers() throws AS400SecurityException, ErrorCompletingRequestException, InterruptedException, IOException, ObjectDoesNotExistException, RequestNotSupportedException { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Retrieving user list."); // Need to get the length. if (handle_ == null || closeHandle_) load(); return new UserEnumeration(this, length_); } /** Returns a subset of the list of users. This method allows the user to retrieve the user list from the system in pieces. If a call to {@link #load load()} is made (either implicitly or explicitly), then the users at a given list offset will change, so a subsequent call to getUsers() with the same listOffset and number will most likely not return the same Users as the previous call. @param listOffset The offset in the list of users (0-based). This value must be greater than or equal to 0 and less than the list length; or specify -1 to retrieve all of the users. Note: Prior to JTOpen 7.2, this parameter was incorrectly described. @param number The number of users to retrieve out of the list, starting at the specified listOffset. This value must be greater than or equal to 0 and less than or equal to the list length. If the listOffset is -1, this parameter is ignored. @return The array of retrieved {@link com.ibm.as400.access.User User} and/or {@link com.ibm.as400.access.UserGroup UserGroup} objects. The length of this array may not necessarily be equal to number, depending upon the size of the list on the system, and the specified listOffset. @exception AS400SecurityException If a security or authority error occurs. @exception ErrorCompletingRequestException If an error occurs before the request is completed. @exception InterruptedException If this thread is interrupted. @exception IOException If an error occurs while communicating with the system. @exception ObjectDoesNotExistException If the object does not exist on the system. @see com.ibm.as400.access.Job @see #close @see #load **/ public synchronized User[] getUsers(int listOffset, int number) throws AS400SecurityException, ErrorCompletingRequestException, InterruptedException, IOException, ObjectDoesNotExistException { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Retrieving user list, list offset: " + listOffset + ", number:", number); if (listOffset < -1) { throw new ExtendedIllegalArgumentException("listOffset (" + listOffset + ")", ExtendedIllegalArgumentException.RANGE_NOT_VALID); } if (number < 0 && listOffset != -1) { throw new ExtendedIllegalArgumentException("number (" + number + ")", ExtendedIllegalArgumentException.RANGE_NOT_VALID); } if (handle_ == null || closeHandle_) load(); // this sets the length_ variable if (length_ == 0 || (number == 0 && listOffset != -1)) { return new User[0]; } if (listOffset == -1) { number = length_; // request entire list listOffset = 0; // ... starting at beginning of list } else if (listOffset >= length_) { if (Trace.traceOn_) Trace.log(Trace.WARNING, "Value of parameter 'listOffset' is beyond end of list:", listOffset + " (list length: " + length_ + ")"); return new User[0]; } else if (listOffset + number > length_) { number = length_ - listOffset; } // AUTU0150 format has 62 bytes per user. int lengthOfReceiverVariable = number * 62; // Retrieve the entries in the list that was built by the most recent load(). byte[] data = ListUtilities.retrieveListEntries(system_, handle_, lengthOfReceiverVariable, number, listOffset, null); Converter conv = new Converter(system_.getCcsid(), system_); User[] users = new User[number]; for (int i = 0, offset = 0; i < users.length; ++i, offset += 62) { String profileName = conv.byteArrayToString(data, offset, 10).trim(); // 0xF1 = group profile. boolean isGroupProfile = data[offset + 10] == (byte)0xF1; // 0xF1 = group that has members. boolean groupHasMember = data[offset + 11] == (byte)0xF1; String textDescription = conv.byteArrayToString(data, offset + 12, 50).trim(); users[i] = isGroupProfile ? new UserGroup(system_, profileName, groupHasMember, textDescription) : new User(system_, profileName, groupHasMember, textDescription); } return users; } /** Loads the list of users on the system. This method informs the system to build a list of users. This method blocks until the system returns the total number of users it has compiled. A subsequent call to {@link #getUsers getUsers()} will retrieve the actual user information and attributes for each user in the list from the system.

This method updates the list length. @exception AS400SecurityException If a security or authority error occurs. @exception ErrorCompletingRequestException If an error occurs before the request is completed. @exception InterruptedException If this thread is interrupted. @exception IOException If an error occurs while communicating with the system. @exception ObjectDoesNotExistException If the object does not exist on the system. @see #getLength @see #close **/ public synchronized void load() throws AS400SecurityException, ErrorCompletingRequestException, InterruptedException, IOException, ObjectDoesNotExistException { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Loading user list."); if (system_ == null) { Trace.log(Trace.ERROR, "Cannot connect to server before setting system."); throw new ExtendedIllegalStateException("system", ExtendedIllegalStateException.PROPERTY_NOT_SET); } // Close the previous list. if (closeHandle_) close(); // Generate text objects based on system CCSID. Converter conv = new Converter(system_.getCcsid(), system_); byte[] selectionCriteria = new byte[] { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 }; conv.stringToByteArray(userInfo_, selectionCriteria); byte[] groupProfileName = new byte[] { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 }; conv.stringToByteArray(groupInfo_.toUpperCase().trim(), groupProfileName); byte[] profileName = new byte[] { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 }; conv.stringToByteArray(userProfile_.toUpperCase().trim(), profileName); // Setup program parameters. ProgramParameter[] parameters = new ProgramParameter[] { // Receiver variable, output, char(*). new ProgramParameter(0), // Length of receiver variable, input, binary(4). new ProgramParameter(new byte[] { 0x00, 0x00, 0x00, 0x00 } ), // List information, output, char(80). new ProgramParameter(ListUtilities.LIST_INFO_LENGTH), // Number of records to return, input, binary(4). // Special value '-1' indicates that "all records are built synchronously in the list". new ProgramParameter(new byte[] { (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF } ), // Format name, input, char(8), EBCDIC 'AUTU0150'. new ProgramParameter(new byte[] { (byte)0xC1, (byte)0xE4, (byte)0xE3, (byte)0xE4, (byte)0xF0, (byte)0xF1, (byte)0xF5, (byte)0xF0 } ), // Selection criteria, input, char(10). new ProgramParameter(selectionCriteria), // Group profile name, input, char(10). new ProgramParameter(groupProfileName), // Error code, I/0, char(*). new ErrorCodeParameter(), // Profile name, input, char(10). new ProgramParameter(profileName), }; // Call the program. ProgramCall pc = new ProgramCall(system_, "/QSYS.LIB/QGY.LIB/QGYOLAUS.PGM", parameters); if (!pc.run()) { throw new AS400Exception(pc.getMessageList()); } // List information returned byte[] listInformation = parameters[2].getOutputData(); handle_ = new byte[4]; System.arraycopy(listInformation, 8, handle_, 0, 4); // Wait for the list-building to complete. listInformation = ListUtilities.waitForListToComplete(system_, handle_, listInformation); length_ = BinaryConverter.byteArrayToInt(listInformation, 0); if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Loaded user list, length: " + length_ + ", handle: ", Trace.toHexString(handle_)); } /** Removes the PropertyChangeListener. If the PropertyChangeListener is not on the list, nothing is done. @param listener The listener object. **/ public void removePropertyChangeListener(PropertyChangeListener listener) { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Removing property change listener."); if (listener == null) { Trace.log(Trace.ERROR, "Parameter 'listener' is null."); throw new NullPointerException("listener"); } // If we have listeners. if (propertyChangeListeners_ != null) { propertyChangeListeners_.removePropertyChangeListener(listener); } } /** Removes the VetoableChangeListener. If the VetoableChangeListener is not on the list, nothing is done. @param listener The listener object. **/ public void removeVetoableChangeListener(VetoableChangeListener listener) { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Removing vetoable change listener."); if (listener == null) { Trace.log(Trace.ERROR, "Parameter 'listener' is null."); throw new NullPointerException("listener"); } // If we have listeners. if (vetoableChangeListeners_ != null) { vetoableChangeListeners_.removeVetoableChangeListener(listener); } } /** Sets the group profile whose members are to be returned.

This must be set to a group profile name or {@link #NOGROUP NOGROUP} if group info is set to {@link #MEMBER MEMBER}. This must be set to {@link #NONE NONE} if group info is not set to {@link #MEMBER MEMBER}. @param groupInfo The group profile whose members are to be returned. Possible values are:

  • {@link #NONE NONE} - No group profile is specified.
  • {@link #NOGROUP NOGROUP} - Users who are not a member of any group are returned.
  • The group profile name - Users who are a member of this group are returned.
@exception PropertyVetoException If any of the registered listeners vetos the property change. **/ public void setGroupInfo(String groupInfo) throws PropertyVetoException { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Setting group info: " + groupInfo); if (groupInfo == null) { Trace.log(Trace.ERROR, "Parameter 'groupInfo' is null."); throw new NullPointerException("groupInfo"); } if (groupInfo.length() > 10) { Trace.log(Trace.ERROR, "Length of parameter 'groupInfo' is not valid: '" + groupInfo + "'"); throw new ExtendedIllegalArgumentException("groupInfo (" + groupInfo + ")", ExtendedIllegalArgumentException.LENGTH_NOT_VALID); } if (propertyChangeListeners_ == null && vetoableChangeListeners_ == null) { synchronized (this) { groupInfo_ = groupInfo; if (handle_ != null) closeHandle_ = true; } } else { String oldValue = groupInfo_; String newValue = groupInfo; if (vetoableChangeListeners_ != null) { vetoableChangeListeners_.fireVetoableChange("groupInfo", oldValue, newValue); } synchronized (this) { groupInfo_ = groupInfo; if (handle_ != null) closeHandle_ = true; } if (propertyChangeListeners_ != null) { propertyChangeListeners_.firePropertyChange("groupInfo", oldValue, newValue); } } } /** Sets the system object representing the system on which the users exist. The system cannot be changed once a connection to the system has been established. @param system The system object representing the system on which the users exists. @exception PropertyVetoException If any of the registered listeners vetos the property change. **/ public void setSystem(AS400 system) throws PropertyVetoException { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Setting system: " + system); if (system == null) { Trace.log(Trace.ERROR, "Parameter 'system' is null."); throw new NullPointerException("system"); } if (handle_ != null) { Trace.log(Trace.ERROR, "Cannot set property 'system' after connect."); throw new ExtendedIllegalStateException("system", ExtendedIllegalStateException.PROPERTY_NOT_CHANGED); } if (propertyChangeListeners_ == null && vetoableChangeListeners_ == null) { system_ = system; } else { AS400 oldValue = system_; AS400 newValue = system; if (vetoableChangeListeners_ != null) { vetoableChangeListeners_.fireVetoableChange("system", oldValue, newValue); } system_ = system; if (propertyChangeListeners_ != null) { propertyChangeListeners_.firePropertyChange("system", oldValue, newValue); } } } /** Sets which users are returned. @param userInfo A description of which users are returned. Possible values are:
  • {@link #ALL ALL} - All user profiles and group profiles are returned.
  • {@link #USER USER} - Only user profiles that are not group profiles are returned. These are user profiles that do not have a group identifier specified.
  • {@link #GROUP GROUP} - Only user profiles that are group profiles are returned. These are user profiles that have a group identifier specified.
  • {@link #MEMBER MEMBER} - User profiles that are members of the group specified for the group info are returned.
@exception PropertyVetoException If any of the registered listeners vetos the property change. **/ public void setUserInfo(String userInfo) throws PropertyVetoException { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Setting user info: " + userInfo); if (userInfo == null) { Trace.log(Trace.ERROR, "Parameter 'userInfo' is null."); throw new NullPointerException("userInfo"); } if (!userInfo.equals(ALL) && !userInfo.equals(USER) && !userInfo.equals(GROUP) && !userInfo.equals(MEMBER)) { Trace.log(Trace.ERROR, "Value of parameter 'userInfo' is not valid: " + userInfo); throw new ExtendedIllegalArgumentException("userInfo", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID); } if (propertyChangeListeners_ == null && vetoableChangeListeners_ == null) { synchronized (this) { userInfo_ = userInfo; if (handle_ != null) closeHandle_ = true; } } else { String oldValue = userInfo_; String newValue = userInfo; if (vetoableChangeListeners_ != null) { vetoableChangeListeners_.fireVetoableChange("userInfo", oldValue, newValue); } synchronized (this) { userInfo_ = userInfo; if (handle_ != null) closeHandle_ = true; } if (propertyChangeListeners_ != null) { propertyChangeListeners_.firePropertyChange("userInfo", oldValue, newValue); } } } /** Sets which profile names to include in the list. @param userProfile The profile names to include in the list. Possible values are:
  • {@link #ALL ALL} - All profiles are returned.
  • The user profile name - If a generic profile name is specifed, the profiles that match the the generic name are returned. If a simple profile name is specified, only that profile is returned.
**/ public void setUserProfile(String userProfile) { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Setting user profile: " + userProfile); if (userProfile == null) { Trace.log(Trace.ERROR, "Parameter 'userProfile' is null."); throw new NullPointerException("userProfile"); } if (userProfile.length() > 10) { Trace.log(Trace.ERROR, "Length of parameter 'userProfile' is not valid: '" + userProfile + "'"); throw new ExtendedIllegalArgumentException("userProfile (" + userProfile + ")", ExtendedIllegalArgumentException.LENGTH_NOT_VALID); } synchronized (this) { userProfile_ = userProfile; if (handle_ != null) closeHandle_ = true; } } /** Closes the list on the system when this object is garbage collected. **/ protected void finalize() throws Throwable { if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Finalize method for user list invoked."); if (handle_ != null) try { close(); } catch (Throwable t) {} super.finalize(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy