com.ibm.as400.vaccess.PermissionTableModelRoot 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
The newest version!
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: PermissionTableModelRoot.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-2000 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.vaccess;
import java.util.Enumeration;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import com.ibm.as400.access.ExtendedIllegalArgumentException;
import com.ibm.as400.access.Permission;
import com.ibm.as400.access.RootPermission;
import com.ibm.as400.access.Trace;
import com.ibm.as400.access.UserPermission;
/**
* The PermissionTableModelRoot class provides the TableModel for a specified JTable,
* and provides methods to add a user to the table or remove a user from the table.
**/
class PermissionTableModelRoot extends DefaultTableModel
{
private static final String copyright = "Copyright (C) 1997-2000 International Business Machines Corporation and others.";
/**
* Private variable representing the object of Permission.
**/
private Permission permission_;
/**
* Private variable representing the vector that stores userPermission object
* of the specified Permisssions.
**/
private Vector userPermissions_;
/**
* Private variable representing the object of JTable.
**/
private JTable table_;
/**
* Private variable representing the object of MainPanel.
**/
private PermissionMainPanel mainPanel_;
/**
* Private variable representing the number of selected column in the table.
**/
private int selectedColumn_ = 1;
/**
* The following three private variables representing the value of the authorities.
**/
private boolean read = false;
private boolean write = false;
private boolean execute = false;
/**
* The String Array storing the column name of the table.
*/
private String[] columnNames_ ;
/**
* The following two private variables representing message and title in the exception dialog.
**/
private static String addUserExceptionDialogMessage_;
private static String addUserExceptionDialogTitle_;
/**
* Constructs a PermissionTableModelRoot object.
* @param mainPanel The object of the PermissionMainPanel object.
* @param permission The object of the Permission object.
*/
public PermissionTableModelRoot(PermissionMainPanel mainPanel,Permission permission)
{
initializeTable();
mainPanel_ = mainPanel;
permission_ = permission;
Enumeration userPermissions = permission_.getUserPermissions();
userPermissions_ = new Vector();
while(userPermissions.hasMoreElements())
{
userPermissions_.addElement(userPermissions.nextElement());
}
}
/**
* Add a new user permission in the specified permission.
* @param name The user name.
*/
public void addRow(String name)
{
try
{
permission_.addAuthorizedUser(name);
mainPanel_.getApplyButton().setEnabled(true);
table_.clearSelection();
// Gets the new data after adding the specified user.
Enumeration userPermissions = permission_.getUserPermissions();
userPermissions_ = new Vector();
while(userPermissions.hasMoreElements())
{
userPermissions_.addElement(userPermissions.nextElement());
}
int updatedRow = userPermissions_.size()-1;
fireTableRowsInserted(updatedRow, updatedRow);
}
catch(ExtendedIllegalArgumentException e)
{
Trace.log(Trace.ERROR,"Error in addRow : "+e);
mainPanel_.fireError(e);
}
}
/**
* Returns the lowest common denominator class in the column.
* @param column The index of column.
* @return The common ancestor class of the object values in the model.
*/
public Class getColumnClass(int column)
{
return getValueAt(0,column).getClass();
}
/**
* Returns the number of columns in the table.
* @return The number of columns in the table.
*/
public int getColumnCount()
{
return columnNames_.length;
}
/**
* Returns the name of the column at column. This is used to initialize the table's
* column header name.
* @return The row number of the table.
*/
public String getColumnName(int column)
{
return columnNames_[column];
}
/**
* Returns the number of records in the table.
* @return The number of records in the table.
*/
public int getRowCount()
{
if (userPermissions_==null)
return 0;
return userPermissions_.size();
}
/**
* Returns an attribute value for the cell at column and row.
* @param row The index of row.
* @param column The index of column.
* @return The object that is at row, column.
*/
public Object getValueAt(int row, int column)
{
if (row >= userPermissions_.size())
return null;
if(selectedColumn_ >0)
{
table_.clearSelection();
} else
{
if(table_.getSelectedRow()>=0
&& table_.getSelectedRowCount() > 0) //@B0A
mainPanel_.getRemoveButton().setEnabled(true);
}
RootPermission user=null;
user = (RootPermission)userPermissions_.elementAt(row);
String authorityValue = user.getDataAuthority().toUpperCase();
Object value = null;
switch(column)
{
case 0 :
value = new PermissionNameCellObject(user.getUserID(),user.getGroupIndicator());
break;
case 1 :
value = Boolean.valueOf(authorityValue.indexOf("R") > -1);
break;
case 2 :
value = Boolean.valueOf(authorityValue.indexOf("W") > -1);
break;
case 3 :
value = Boolean.valueOf((authorityValue.indexOf("X") > -1) &&
(authorityValue.indexOf("E") == -1));
break;
case 4 :
value = Boolean.valueOf(user.isManagement());
break;
case 5 :
value = Boolean.valueOf(user.isExistence());
break;
case 6 :
value = Boolean.valueOf(user.isAlter());
break;
case 7 :
value = Boolean.valueOf(user.isReference());
break;
case 8 :
value = Boolean.valueOf(user.isFromAuthorizationList());
break;
}
return value;
}
/**
* Defines the column name.
**/
private void initializeTable()
{
columnNames_ = new String[9];
columnNames_[0] = ResourceLoader.getText("OBJECT_USER_NAME");
columnNames_[1] = ResourceLoader.getText("OBJECT_AUTHORITY_READ");
columnNames_[2] = ResourceLoader.getText("OBJECT_AUTHORITY_WRITE");
columnNames_[3] = ResourceLoader.getText("OBJECT_AUTHORITY_EXECUTE");
columnNames_[4] = ResourceLoader.getText("OBJECT_AUTHORITY_MANAGEMENT");
columnNames_[5] = ResourceLoader.getText("OBJECT_AUTHORITY_EXISTENCE");
columnNames_[6] = ResourceLoader.getText("OBJECT_AUTHORITY_ALTER");
columnNames_[7] = ResourceLoader.getText("OBJECT_AUTHORITY_REFERENCE");
columnNames_[8] = ResourceLoader.getText("OBJECT_FROM_AUTHORIZATION_LIST");
addUserExceptionDialogMessage_ = ResourceLoader.getText("OBJECT_ADD_USER_EXCEPTION_DIALOG_MESSAGE");
addUserExceptionDialogTitle_ = ResourceLoader.getText("OBJECT_ADD_USER_EXCEPTION_DIALOG_TITLE");
}
/**
* Returns true if the cell at row and column is editable. Otherwise, setValueAt() on the cell will not
* change the value of that cell.
* @param row The index of row.
* @param column The index of column.
* @return True if the cell is editable.
*/
public boolean isCellEditable(int row,int column)
{
selectedColumn_ = column;
switch (column)
{
case 0 :
return false;
case 8 :
UserPermission user = (UserPermission)userPermissions_.elementAt(row);
if (mainPanel_.getAutList().toUpperCase().equals("*NONE") ||
!user.getUserID().toUpperCase().equals("*PUBLIC"))
{
return false;
}
default :
return true;
}
}
/**
* Removes the specified record from the table.
* @param row The index of row.
*/
public void removeRow(int row)
{
table_.clearSelection();
RootPermission user = (RootPermission)userPermissions_.elementAt(row);
permission_.removeAuthorizedUser(user.getUserID());
Enumeration userPermissions = permission_.getUserPermissions();
userPermissions_ = new Vector();
while(userPermissions.hasMoreElements())
{
userPermissions_.addElement(userPermissions.nextElement());
}
fireTableRowsDeleted(row, row);
}
/**
Used so the main panel can set the authorization list checkbox on
*PUBLIC to false.
**/
void resetPublicAuthorizationList()
{
UserPermission up = permission_.getUserPermission("*PUBLIC");
int row = userPermissions_.indexOf(up);
if (row >= 0)
{
setValueAt(Boolean.FALSE, row, 8);
}
}
/**
* Sets the JTable object.
* @param table The JTable object.
**/
public void setTableInstance(JTable table)
{
table_ = table;
}
/**
* Sets an attribute value for the record in the cell at column and row.
* @param aValue The new value.
* @param row The index of row.
* @param column The index of column.
*/
public void setValueAt(Object aValue,int row,int column)
{
mainPanel_.getRemoveButton().setEnabled(false);
boolean value;
RootPermission user = (RootPermission)userPermissions_.elementAt(row);
String authorityValue = user.getDataAuthority().trim();
if (authorityValue.equals("*EXCLUDE")||
authorityValue.equals("*NONE"))
{
read = false;
write = false;
execute = false;
} else
{
if(authorityValue.indexOf("R")>-1)
read = true;
else
read = false;
if(authorityValue.indexOf("W")>-1)
write = true;
else
write = false;
if(authorityValue.indexOf("X")>-1)
execute = true;
else
execute = false;
}
String string="*";
switch(column)
{
case 1 :
read = ((Boolean)aValue).booleanValue();
if (read)
string += "R";
if (write)
string += "W";
if (execute)
string += "X";
if (string.equals("*"))
string += "NONE";
user.setDataAuthority(string);
break;
case 2 :
write = ((Boolean)aValue).booleanValue();
if (read)
string += "R";
if (write)
string += "W";
if (execute)
string += "X";
if (string.equals("*"))
string += "NONE";
user.setDataAuthority(string);
break;
case 3 :
execute = ((Boolean)aValue).booleanValue();
if (read)
string += "R";
if (write)
string += "W";
if (execute)
string += "X";
if (string.equals("*"))
string += "NONE";
user.setDataAuthority(string);
break;
case 4 :
value = ((Boolean)aValue).booleanValue();
user.setManagement(value);
break;
case 5 :
value = ((Boolean)aValue).booleanValue();
user.setExistence(value);
break;
case 6 :
value = ((Boolean)aValue).booleanValue();
user.setAlter(value);
break;
case 7 :
value = ((Boolean)aValue).booleanValue();
user.setReference(value);
break;
case 8 :
value = ((Boolean)aValue).booleanValue();
user.setFromAuthorizationList(value);
break;
}
// We don't call fireTableCellUpdated because more than one
// cell could have changed due to one of the above sets().
fireTableRowsUpdated(row, row);
mainPanel_.getApplyButton().setEnabled(true);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy