jtopenlite.com.ibm.jtopenlite.command.program.security.RetrieveAuthorizedUsers Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400 Show documentation
Show all versions of jt400 Show documentation
The Open Source version of the IBM Toolbox for Java
///////////////////////////////////////////////////////////////////////////////
//
// JTOpenLite
//
// Filename: RetrieveAuthorizedUsers.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) 2011-2012 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.jtopenlite.command.program.security;
import com.ibm.jtopenlite.*;
import com.ibm.jtopenlite.command.*;
/**
* Use the
*
* QSYRAUTU
* API to retrieve authorized users.
*
* To utilize the output of the API, the user of this class must implement a
* RetrieveAuthorizedUsersListener to process the API output.
**/
public class RetrieveAuthorizedUsers implements Program
{
private static final byte[] ZERO = new byte[4];
public static final int FORMAT_AUTU0100 = 0;
public static final int FORMAT_AUTU0150 = 1;
public static final int FORMAT_AUTU0200 = 2;
public static final int FORMAT_AUTU0250 = 3;
public static final String SELECTION_ALL = "*ALL";
public static final String SELECTION_USER = "*USER";
public static final String SELECTION_GROUP = "*GROUP";
public static final String SELECTION_MEMBER = "*MEMBER";
public static final String STARTING_PROFILE_FIRST = "*FIRST";
public static final String GROUP_NONE = "*NONE";
public static final String GROUP_NO_GROUP = "*NOGROUP";
public static final String ENDING_PROFILE_LAST = "*LAST";
private int inputFormat_;
private int inputLength_;
private String inputSelection_;
private String inputStart_;
private boolean inputIncludeStart_;
private String inputGroup_;
private String inputEnd_;
private int bytesReturned_;
private int bytesAvailable_;
private int numberOfProfileNames_;
private RetrieveAuthorizedUsersListener listener_;
private byte[] tempData_;
public RetrieveAuthorizedUsers(int format, int lengthOfReceiverVariable, String selectionCriteria, String startingProfileName, boolean includeStartingProfile, String groupProfileName, String endingProfileName)
{
inputFormat_ = format;
inputLength_ = lengthOfReceiverVariable <= 0 ? 1 : lengthOfReceiverVariable;
inputSelection_ = selectionCriteria == null ? SELECTION_ALL : selectionCriteria;
inputStart_ = startingProfileName == null ? STARTING_PROFILE_FIRST : startingProfileName;
inputIncludeStart_ = includeStartingProfile;
inputGroup_ = groupProfileName == null ? GROUP_NONE : groupProfileName;
inputEnd_ = endingProfileName;
}
public final byte[] getTempDataBuffer()
{
int maxSize = 0;
for (int i=0; i maxSize) maxSize = len;
len = getParameterInputLength(i);
if (len > maxSize) maxSize = len;
}
if (tempData_ == null || tempData_.length < maxSize)
{
tempData_ = new byte[maxSize];
}
return tempData_;
}
public String getProgramName()
{
return "QSYRAUTU";
}
public String getProgramLibrary()
{
return "QSYS";
}
public int getNumberOfParameters()
{
return (inputEnd_ == null ? 9 : 10);
}
public void newCall()
{
bytesReturned_ = 0;
bytesAvailable_ = 0;
numberOfProfileNames_ = 0;
}
public void setFormat(int format)
{
inputFormat_ = format;
}
public int getFormat()
{
return inputFormat_;
}
public int getLengthOfReceiverVariable()
{
return inputLength_;
}
public void setLengthOfReceiverVariable(int lengthOfReceiverVariable)
{
inputLength_ = lengthOfReceiverVariable <= 0 ? 1 : lengthOfReceiverVariable;
}
public int getBytesReturned()
{
return bytesReturned_;
}
public int getBytesAvailable()
{
return bytesAvailable_;
}
public int getNumberOfProfileNames()
{
return numberOfProfileNames_;
}
public int getParameterInputLength(final int parmIndex)
{
switch (parmIndex)
{
case 0: return 0;
case 1: return 4;
case 2: return 0;
case 3: return 8;
case 4: return 10;
case 5: return 10;
case 6: return 1;
case 7: return 10;
case 8: return 4;
case 9: return 10;
}
return 0;
}
public int getParameterOutputLength(final int parmIndex)
{
switch (parmIndex)
{
case 0: return inputLength_;
case 2: return 16;
case 8: return 4;
}
return 0;
}
private String getFormatName()
{
switch (inputFormat_)
{
case FORMAT_AUTU0100: return "AUTU0100";
case FORMAT_AUTU0150: return "AUTU0150";
case FORMAT_AUTU0200: return "AUTU0200";
case FORMAT_AUTU0250: return "AUTU0250";
}
return null;
}
public int getParameterType(final int parmIndex)
{
switch (parmIndex)
{
case 0: return Parameter.TYPE_OUTPUT;
case 2: return Parameter.TYPE_OUTPUT;
case 8: return Parameter.TYPE_INPUT_OUTPUT;
}
return Parameter.TYPE_INPUT;
}
public byte[] getParameterInputData(final int parmIndex)
{
final byte[] tempData = getTempDataBuffer();
switch (parmIndex)
{
case 1: Conv.intToByteArray(inputLength_, tempData, 0); return tempData;
case 3: Conv.stringToEBCDICByteArray37(getFormatName(), tempData, 0); return tempData;
case 4: Conv.stringToBlankPadEBCDICByteArray(inputSelection_, tempData, 0, 10); return tempData;
case 5: Conv.stringToBlankPadEBCDICByteArray(inputStart_, tempData, 0, 10); return tempData;
case 6: tempData[0] = inputIncludeStart_ ? (byte)0xF1 : (byte)0xF0; return tempData;
case 7: Conv.stringToBlankPadEBCDICByteArray(inputGroup_, tempData, 0, 10); return tempData;
case 8: return ZERO;
case 9: Conv.stringToBlankPadEBCDICByteArray(inputEnd_, tempData, 0, 10); return tempData;
}
return null;
}
public void setListener(RetrieveAuthorizedUsersListener listener)
{
listener_ = listener;
}
public void setParameterOutputData(final int parmIndex, final byte[] data, final int maxLength)
{
switch (parmIndex)
{
case 2:
bytesReturned_ = Conv.byteArrayToInt(data, 0);
bytesAvailable_ = Conv.byteArrayToInt(data, 4);
numberOfProfileNames_ = Conv.byteArrayToInt(data, 8);
// int entryLength = Conv.byteArrayToInt(data, 12);
break;
case 0:
if (listener_ == null)
{
return;
}
int numRead = 0;
final char[] c = new char[50];
while (numRead < maxLength)
{
int remaining = maxLength - numRead;
switch (inputFormat_)
{
case FORMAT_AUTU0100:
if (remaining >= 12)
{
String profileName = Conv.ebcdicByteArrayToString(data, numRead, 10, c);
numRead += 10;
int userOrGroupIndicator = data[numRead++] & 0x00FF;
int groupMembersIndicator = data[numRead++] & 0x00FF;
listener_.newEntry(profileName, userOrGroupIndicator == 0x00F1, groupMembersIndicator == 0x00F1, null, null);
}
else
{
numRead += remaining;
}
break;
case FORMAT_AUTU0150:
if (remaining >= 62)
{
String profileName = Conv.ebcdicByteArrayToString(data, numRead, 10, c);
numRead += 10;
int userOrGroupIndicator = data[numRead++] & 0x00FF;
int groupMembersIndicator = data[numRead++] & 0x00FF;
String textDescription = Conv.ebcdicByteArrayToString(data, numRead, 50, c);
numRead += 50;
listener_.newEntry(profileName, userOrGroupIndicator == 0x00F1, groupMembersIndicator == 0x00F1, textDescription, null);
}
else
{
numRead += remaining;
}
break;
case FORMAT_AUTU0200:
if (remaining >= 176)
{
String profileName = Conv.ebcdicByteArrayToString(data, numRead, 10, c);
numRead += 10;
int userOrGroupIndicator = data[numRead++] & 0x00FF;
int groupMembersIndicator = data[numRead++] & 0x00FF;
int numberOfGroupProfiles = Conv.byteArrayToInt(data, numRead);
numRead += 4;
String[] groupProfiles = new String[numberOfGroupProfiles];
if (numberOfGroupProfiles > 0)
{
for (int i=0; i= 228)
{
String profileName = Conv.ebcdicByteArrayToString(data, numRead, 10, c);
numRead += 10;
int userOrGroupIndicator = data[numRead++] & 0x00FF;
int groupMembersIndicator = data[numRead++] & 0x00FF;
String textDescription = Conv.ebcdicByteArrayToString(data, numRead, 50, c);
numRead += 50;
numRead += 2;
int numberOfGroupProfiles = Conv.byteArrayToInt(data, numRead);
numRead += 4;
String[] groupProfiles = new String[numberOfGroupProfiles];
if (numberOfGroupProfiles > 0)
{
groupProfiles = new String[numberOfGroupProfiles];
for (int i=0; i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy