diff -cr rhdb-admin/ChangeLog rhdb-admin.incr/ChangeLog
*** rhdb-admin/ChangeLog 2004-06-09 01:34:47.000000000 -0400
--- rhdb-admin.incr/ChangeLog 2004-06-09 15:01:17.000000000 -0400
***************
*** 2,7 ****
--- 2,18 ----
* src/com/redhat/rhdb/admin/CheckBoxPanel.java: Added intialization
code for checkbox/boolean arrays to prevent NullPointerException's.
+ * src/com/redhat/rhdb/admin/CreateTableDialog.form: Changed by the
+ IDE.
+ * src/com/redhat/rhdb/admin/CreateTableDialog.java: Replaced
+ individual privilege checkboxes with the new PrivilegesCheckBoxPanel.
+ (adjustPrivilegeBoxes): Scaffolding function. Enabled/disables
+ privilege checkboxes as needed.
+ (adjustWithGrantBoxes): Scaffolding function. Enabled/disables
+ WITH GRANT OPTION checkboxes (if visible) as needed.
+ (addPrivilegeDef): Change function to work with the new
+ PrivilegesCheckBoxPanel widget.
+ (okAction): Ditto.
* src/com/redhat/rhdb/admin/EditPrivilegesDialog.form: Changed by the
IDE.
* src/com/redhat/rhdb/admin/EditPrivilegesDialog.java: Added
***************
*** 68,73 ****
--- 79,86 ----
(getUpdateDatabasePrivString): Ditto.
(getUpdateSchemaPrivString): Ditto.
(getUpdateTablePrivString): Ditto.
+ * src/com/redhat/rhdb/admin/TableUpdate.java (createTable): Fixed
+ function to work with the new WITH GRANT OPTION option.
* src/com/redhat/rhdb/admin/pgsql/AbstractRhdb73DatabaseMetaData.java
(getDatabasePrivileges): Change function to return 2 more fields,
GRANTOR and IS_GRANTABLE (as defined in JDBC specs for
diff -cr rhdb-admin/src/com/redhat/rhdb/admin/CreateTableDialog.form rhdb-admin.incr/src/com/redhat/rhdb/admin/CreateTableDialog.form
*** rhdb-admin/src/com/redhat/rhdb/admin/CreateTableDialog.form 2004-01-13 19:53:50.000000000 -0500
--- rhdb-admin.incr/src/com/redhat/rhdb/admin/CreateTableDialog.form 2004-06-09 14:27:54.000000000 -0400
***************
*** 1213,1218 ****
--- 1213,1221 ----
+
+
+
***************
*** 1233,1238 ****
--- 1236,1244 ----
+
+
+
***************
*** 1250,1255 ****
--- 1256,1264 ----
+
+
+
***************
*** 1262,1351 ****
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
--- 1271,1288 ----
!
!
!
!
!
!
!
!
diff -cr rhdb-admin/src/com/redhat/rhdb/admin/CreateTableDialog.java rhdb-admin.incr/src/com/redhat/rhdb/admin/CreateTableDialog.java
*** rhdb-admin/src/com/redhat/rhdb/admin/CreateTableDialog.java 2003-11-21 13:30:22.000000000 -0500
--- rhdb-admin.incr/src/com/redhat/rhdb/admin/CreateTableDialog.java 2004-06-09 14:27:54.000000000 -0400
***************
*** 43,48 ****
--- 43,61 ----
okAction = af.getAction(ActionFactory.ACTION_OK);
cancelAction = af.getAction(ActionFactory.ACTION_CANCEL);
+ AdminDatabaseMetaData dbmd;
+
+ try {
+ dbmd = backendClient.getAdminDatabaseMetaData(node.getParentClusterName(), node.getParentDatabaseName());
+ validPrivileges = dbmd.getValidTablePrivileges();
+ grantOptionString = dbmd.getGrantOptionString();
+ } catch (Exception e) {
+
+ closeDialog();
+ e.printStackTrace();
+ throw new DialogRaiseException(invocationNode, e);
+ }
+
initComponents();
// Add the listbox with 3 buttons...
***************
*** 70,76 ****
// Populate the fields in the dialog
- AdminDatabaseMetaData dbmd;
SchemaQualifiedSelectionBoxModel tabModel = new DefaultSchemaQualifiedSelectionBoxModel();
SchemaQualifiedSelectionBoxModel typModel = new DefaultSchemaQualifiedSelectionBoxModel();
--- 83,88 ----
***************
*** 368,380 ****
jspPrivilegesGroups = new javax.swing.JScrollPane();
jlstPrivilegesGroups = new javax.swing.JList();
jpPrivilegesPrivilegeTypes = new javax.swing.JPanel();
! jcbPrivilegesSelect = new javax.swing.JCheckBox();
! jcbPrivilegesInsert = new javax.swing.JCheckBox();
! jcbPrivilegesUpdate = new javax.swing.JCheckBox();
! jcbPrivilegesDelete = new javax.swing.JCheckBox();
! jcbPrivilegesRule = new javax.swing.JCheckBox();
! jcbPrivilegesReferences = new javax.swing.JCheckBox();
! jcbPrivilegesTrigger = new javax.swing.JCheckBox();
jlPrivilegesUsers = new javax.swing.JLabel();
jlPrivilegesGroups = new javax.swing.JLabel();
jbPrivilegesAddPrivileges = new javax.swing.JButton();
--- 380,386 ----
jspPrivilegesGroups = new javax.swing.JScrollPane();
jlstPrivilegesGroups = new javax.swing.JList();
jpPrivilegesPrivilegeTypes = new javax.swing.JPanel();
! pcbpPriv = new PrivilegesCheckBoxPanel(validPrivileges, "", grantOptionString);
jlPrivilegesUsers = new javax.swing.JLabel();
jlPrivilegesGroups = new javax.swing.JLabel();
jbPrivilegesAddPrivileges = new javax.swing.JButton();
***************
*** 1306,1311 ****
--- 1312,1323 ----
jpPrivilegesPrivToGrant.setBorder(new javax.swing.border.TitledBorder(AdminResources.getString(AdminResources.DLG_CREATE_TABLE_PRIVILEGES_PRIV_TO_GRANT)));
jcbPrivilegesPublic.setText(AdminResources.getString(AdminResources.PRIVILEGE_PUBLIC));
+ jcbPrivilegesPublic.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jcbPrivilegesPublicActionPerformed(evt);
+ }
+ });
+
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 0, 3, 0);
***************
*** 1313,1318 ****
--- 1325,1336 ----
jlstPrivilegesUsers.setValueIsAdjusting(true);
jlstPrivilegesUsers.setAutoscrolls(false);
+ jlstPrivilegesUsers.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+ public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
+ jlstPrivilegesUsersValueChanged(evt);
+ }
+ });
+
jspPrivilegesUsers.setViewportView(jlstPrivilegesUsers);
gridBagConstraints = new java.awt.GridBagConstraints();
***************
*** 1326,1331 ****
--- 1344,1355 ----
jlstPrivilegesGroups.setValueIsAdjusting(true);
jlstPrivilegesGroups.setAutoscrolls(false);
+ jlstPrivilegesGroups.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+ public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
+ jlstPrivilegesGroupsValueChanged(evt);
+ }
+ });
+
jspPrivilegesGroups.setViewportView(jlstPrivilegesGroups);
gridBagConstraints = new java.awt.GridBagConstraints();
***************
*** 1339,1406 ****
jpPrivilegesPrivilegeTypes.setLayout(new java.awt.GridBagLayout());
- jcbPrivilegesSelect.setText(AdminResources.getString(AdminResources.PRIVILEGE_SELECT));
gridBagConstraints = new java.awt.GridBagConstraints();
! gridBagConstraints.gridx = 0;
! gridBagConstraints.gridy = 0;
! gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
! gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
! gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 10);
! jpPrivilegesPrivilegeTypes.add(jcbPrivilegesSelect, gridBagConstraints);
!
! jcbPrivilegesInsert.setText(AdminResources.getString(AdminResources.PRIVILEGE_INSERT));
! gridBagConstraints = new java.awt.GridBagConstraints();
! gridBagConstraints.gridx = 0;
! gridBagConstraints.gridy = 1;
! gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
! gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
! gridBagConstraints.insets = new java.awt.Insets(1, 20, 0, 10);
! jpPrivilegesPrivilegeTypes.add(jcbPrivilegesInsert, gridBagConstraints);
!
! jcbPrivilegesUpdate.setText(AdminResources.getString(AdminResources.PRIVILEGE_UPDATE));
! gridBagConstraints = new java.awt.GridBagConstraints();
! gridBagConstraints.gridx = 0;
! gridBagConstraints.gridy = 2;
! gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
! gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
! gridBagConstraints.insets = new java.awt.Insets(1, 20, 0, 10);
! jpPrivilegesPrivilegeTypes.add(jcbPrivilegesUpdate, gridBagConstraints);
!
! jcbPrivilegesDelete.setText(AdminResources.getString(AdminResources.PRIVILEGE_DELETE));
! gridBagConstraints = new java.awt.GridBagConstraints();
! gridBagConstraints.gridx = 0;
! gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
! gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
! gridBagConstraints.insets = new java.awt.Insets(1, 20, 0, 10);
! jpPrivilegesPrivilegeTypes.add(jcbPrivilegesDelete, gridBagConstraints);
!
! jcbPrivilegesRule.setText(AdminResources.getString(AdminResources.PRIVILEGE_RULE));
! gridBagConstraints = new java.awt.GridBagConstraints();
! gridBagConstraints.gridx = 0;
! gridBagConstraints.gridy = 4;
! gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
! gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
! gridBagConstraints.insets = new java.awt.Insets(1, 20, 0, 10);
! jpPrivilegesPrivilegeTypes.add(jcbPrivilegesRule, gridBagConstraints);
!
! jcbPrivilegesReferences.setText(AdminResources.getString(AdminResources.PRIVILEGE_REFERENCES));
! gridBagConstraints = new java.awt.GridBagConstraints();
! gridBagConstraints.gridx = 0;
! gridBagConstraints.gridy = 5;
! gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
! gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
! gridBagConstraints.insets = new java.awt.Insets(1, 20, 0, 10);
! jpPrivilegesPrivilegeTypes.add(jcbPrivilegesReferences, gridBagConstraints);
!
! jcbPrivilegesTrigger.setText(AdminResources.getString(AdminResources.PRIVILEGE_TRIGGER));
! gridBagConstraints = new java.awt.GridBagConstraints();
! gridBagConstraints.gridx = 0;
! gridBagConstraints.gridy = 6;
! gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
! gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
! gridBagConstraints.insets = new java.awt.Insets(1, 20, 0, 10);
! jpPrivilegesPrivilegeTypes.add(jcbPrivilegesTrigger, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
--- 1363,1373 ----
jpPrivilegesPrivilegeTypes.setLayout(new java.awt.GridBagLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
! gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
! gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
! jpPrivilegesPrivilegeTypes.add(pcbpPriv, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
***************
*** 1533,1538 ****
--- 1500,1545 ----
setBounds((screenSize.width-800)/2, (screenSize.height-635)/2, 800, 635);
}//GEN-END:initComponents
+ private void jlstPrivilegesUsersValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jlstPrivilegesUsersValueChanged
+ adjustWithGrantBoxes();
+ adjustPrivilegeBoxes();
+ }//GEN-LAST:event_jlstPrivilegesUsersValueChanged
+
+ private void jcbPrivilegesPublicActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcbPrivilegesPublicActionPerformed
+ adjustWithGrantBoxes();
+ adjustPrivilegeBoxes();
+ }//GEN-LAST:event_jcbPrivilegesPublicActionPerformed
+
+ private void jlstPrivilegesGroupsValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jlstPrivilegesGroupsValueChanged
+ adjustWithGrantBoxes();
+ adjustPrivilegeBoxes();
+ }//GEN-LAST:event_jlstPrivilegesGroupsValueChanged
+
+ /**
+ * Adjusts privilege boxes (disables if no user/group/public is selected)
+ */
+
+ private void adjustPrivilegeBoxes() {
+ if (!jcbPrivilegesPublic.isSelected() &&
+ jlstPrivilegesGroups.getSelectedIndices().length == 0 &&
+ jlstPrivilegesUsers.getSelectedIndices().length == 0) {
+ pcbpPriv.setEnabled(false);
+ } else {
+ pcbpPriv.setEnabled(true);
+ }
+ }
+
+ /**
+ * Adjusts the availability of the WITH GRANT OPTION checkboxes.
+ */
+
+ private void adjustWithGrantBoxes() {
+ if (jcbPrivilegesPublic.isSelected() || jlstPrivilegesGroups.getSelectedIndices().length > 0)
+ pcbpPriv.setSecondaryCBEnabled(false);
+ else
+ pcbpPriv.setSecondaryCBEnabled(true);
+ }
+
private void clearConstraintFields(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearConstraintFields
// Add your handling code here:
resetAllTCFields();
***************
*** 1641,1685 ****
private int addPrivilegeDef(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addPrivilegeDef
String selectedPrivileges = "";
boolean minPrivReceiversSpecified = false;
! if (jcbPrivilegesSelect.isSelected()) {
! selectedPrivileges += " SELECT";
! }
!
! if (jcbPrivilegesInsert.isSelected()) {
! selectedPrivileges += " INSERT";
! }
!
! if (jcbPrivilegesUpdate.isSelected()) {
! selectedPrivileges += " UPDATE";
! }
! if (jcbPrivilegesDelete.isSelected()) {
! selectedPrivileges += " DELETE";
! }
! if (jcbPrivilegesRule.isSelected()) {
! selectedPrivileges += " RULE";
}
! if (jcbPrivilegesReferences.isSelected()) {
! selectedPrivileges += " REFERENCES";
! }
! if (jcbPrivilegesTrigger.isSelected()) {
! selectedPrivileges += " TRIGGER";
}
! // return if no privileges have been selected
! if (selectedPrivileges.length() == 0) {
! MessageBox.error(this, AdminResources.getString(AdminResources.WORD_ERROR), AdminResources.getString(AdminResources.DLG_CREATE_TABLE_ERR_PLS_SELECT_PRIVILEGE_TO_ADD));
return -1;
}
!
for (int i=0; i < jlstPrivilegesUsers.getSelectedValues().length; i++) {
! String toAdd = AdminMiscFunctions.getDoubleQuotedIdentifier((String) jlstPrivilegesUsers.getSelectedValues()[i]) + "(" + selectedPrivileges + ")";
! ((DefaultListModel) jlstPrivileges.getModel()).addElement(toAdd);
minPrivReceiversSpecified = true;
}
--- 1648,1695 ----
private int addPrivilegeDef(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addPrivilegeDef
String selectedPrivileges = "";
+ String selectedwithGrantPrivileges = "";
boolean minPrivReceiversSpecified = false;
! String[] selectedPrivStrings;
! selectedPrivStrings = pcbpPriv.getPrimaryOnlySelectedBoxes();
! for (int i=0; i < selectedPrivStrings.length; i++) {
! selectedPrivileges += selectedPrivStrings[i];
!
! if (i < selectedPrivStrings.length-1)
! selectedPrivileges += " ";
}
! selectedPrivStrings = pcbpPriv.getSelectedSecondaryBoxes();
! for (int i=0; i < selectedPrivStrings.length; i++) {
! selectedwithGrantPrivileges += selectedPrivStrings[i];
!
! if (i < selectedPrivStrings.length-1)
! selectedwithGrantPrivileges += " ";
}
! // return if no privileges have been selected
! if (selectedPrivileges.length() + selectedwithGrantPrivileges.length() == 0) {
! MessageBox.error(this, AdminResources.getString(AdminResources.WORD_ERROR), AdminResources.getString(AdminResources.DLG_CREATE_TABLE_ERR_PLS_SELECT_PRIVILEGE_TO_ADD));
return -1;
}
!
for (int i=0; i < jlstPrivilegesUsers.getSelectedValues().length; i++) {
! String toAdd;
!
! if (selectedPrivileges.length() > 0) {
! toAdd = AdminMiscFunctions.getDoubleQuotedIdentifier((String) jlstPrivilegesUsers.getSelectedValues()[i]) + "(" + selectedPrivileges + ")";
! ((DefaultListModel) jlstPrivileges.getModel()).addElement(toAdd);
! }
!
! if (selectedwithGrantPrivileges.length() > 0) {
! toAdd = AdminMiscFunctions.getDoubleQuotedIdentifier((String) jlstPrivilegesUsers.getSelectedValues()[i]) + "(WITH GRANT OPTION " + selectedwithGrantPrivileges + ")";
! ((DefaultListModel) jlstPrivileges.getModel()).addElement(toAdd);
! }
!
minPrivReceiversSpecified = true;
}
***************
*** 1702,1720 ****
// Clear all the checkboxes
jcbPrivilegesPublic.setSelected(false);
- jcbPrivilegesSelect.setSelected(false);
- jcbPrivilegesUpdate.setSelected(false);
- jcbPrivilegesInsert.setSelected(false);
- jcbPrivilegesDelete.setSelected(false);
- jcbPrivilegesRule.setSelected(false);
- jcbPrivilegesReferences.setSelected(false);
- jcbPrivilegesTrigger.setSelected(false);
jlstPrivilegesUsers.getSelectionModel().clearSelection();
jlstPrivilegesGroups.getSelectionModel().clearSelection();
return 0;
!
}//GEN-LAST:event_addPrivilegeDef
private void enableTCForeignKeyFields(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_enableTCForeignKeyFields
--- 1712,1724 ----
// Clear all the checkboxes
+ pcbpPriv.reset();
jcbPrivilegesPublic.setSelected(false);
jlstPrivilegesUsers.getSelectionModel().clearSelection();
jlstPrivilegesGroups.getSelectionModel().clearSelection();
return 0;
!
}//GEN-LAST:event_addPrivilegeDef
private void enableTCForeignKeyFields(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_enableTCForeignKeyFields
***************
*** 2353,2361 ****
// if privileges are defined but not added
! if (jcbPrivilegesSelect.isSelected() || jcbPrivilegesInsert.isSelected() || jcbPrivilegesUpdate.isSelected() || jcbPrivilegesDelete.isSelected()
! || jcbPrivilegesRule.isSelected() || jcbPrivilegesReferences.isSelected() || jcbPrivilegesTrigger.isSelected()) {
!
int i= JOptionPane.showConfirmDialog(
this,
--- 2357,2363 ----
// if privileges are defined but not added
! if (pcbpPriv.getPrimaryOnlySelectedBoxes().length + pcbpPriv.getSelectedSecondaryBoxes().length != 0) {
int i= JOptionPane.showConfirmDialog(
this,
***************
*** 2895,2900 ****
--- 2897,2905 ----
ConstraintColumnChooserDialog cccdTCPKConsColChooser;
ConstraintColumnChooserDialog cccdTCUConsColChooser;
+ String[] validPrivileges = new String[0];
+ String grantOptionString = "";
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private com.redhat.rhdb.admin.AdminComboBox acbCCCheckTime;
private com.redhat.rhdb.admin.AdminComboBox acbCCDeferrable;
***************
*** 2923,2936 ****
private javax.swing.JButton jbTCAddTC;
private javax.swing.JButton jbTCClearFields;
private javax.swing.JButton jbUnique;
- private javax.swing.JCheckBox jcbPrivilegesDelete;
- private javax.swing.JCheckBox jcbPrivilegesInsert;
private javax.swing.JCheckBox jcbPrivilegesPublic;
- private javax.swing.JCheckBox jcbPrivilegesReferences;
- private javax.swing.JCheckBox jcbPrivilegesRule;
- private javax.swing.JCheckBox jcbPrivilegesSelect;
- private javax.swing.JCheckBox jcbPrivilegesTrigger;
- private javax.swing.JCheckBox jcbPrivilegesUpdate;
private javax.swing.JLabel jlCCCheckTime;
private javax.swing.JLabel jlCCConstraintName;
private javax.swing.JLabel jlCCDeferrable;
--- 2928,2934 ----
***************
*** 3009,3014 ****
--- 3007,3013 ----
private javax.swing.JTextField jtfTCPrimaryKey;
private javax.swing.JTextField jtfTCUnique;
private javax.swing.JTabbedPane jtpCreateOptionTabs;
+ private com.redhat.rhdb.admin.PrivilegesCheckBoxPanel pcbpPriv;
private com.redhat.rhdb.admin.SchemaQualifiedSelectionBox sqsbCCRefTable;
private com.redhat.rhdb.admin.SchemaQualifiedSelectionBox sqsbDataType;
private com.redhat.rhdb.admin.SchemaQualifiedSelectionBox sqsbTCRefTable;
diff -cr rhdb-admin/src/com/redhat/rhdb/admin/PrivilegesCheckBoxPanel.java rhdb-admin.incr/src/com/redhat/rhdb/admin/PrivilegesCheckBoxPanel.java
*** rhdb-admin/src/com/redhat/rhdb/admin/PrivilegesCheckBoxPanel.java 2004-06-09 01:51:41.000000000 -0400
--- rhdb-admin.incr/src/com/redhat/rhdb/admin/PrivilegesCheckBoxPanel.java 2004-06-09 13:47:10.000000000 -0400
***************
*** 531,537 ****
hasSecondaryCBEnabled = enabled;
for (int i=0; i < jchSecondaryButtons.length; i++) {
jchSecondaryButtons[i].setSelected(false);
! jchSecondaryButtons[i].setEnabled(enabled);
}
}
--- 531,537 ----
hasSecondaryCBEnabled = enabled;
for (int i=0; i < jchSecondaryButtons.length; i++) {
jchSecondaryButtons[i].setSelected(false);
! jchSecondaryButtons[i].setEnabled(jchButtons[i].isSelected() && enabled);
}
}
diff -cr rhdb-admin/src/com/redhat/rhdb/admin/TableUpdate.java rhdb-admin.incr/src/com/redhat/rhdb/admin/TableUpdate.java
*** rhdb-admin/src/com/redhat/rhdb/admin/TableUpdate.java 2004-05-04 13:07:57.000000000 -0400
--- rhdb-admin.incr/src/com/redhat/rhdb/admin/TableUpdate.java 2004-06-09 14:33:24.000000000 -0400
***************
*** 117,123 ****
String user = grantLine.substring(0, grantLine.lastIndexOf('('));
String privilegesToGrant = grantLine.substring((grantLine.lastIndexOf('(') + 1), (grantLine.length() - 1));
! String[] privilegeComponents = privilegesToGrant.trim().split(" ");
if (privilegeComponents.length == 0 || privilegeComponents[0].equals(""))
continue;
--- 117,141 ----
String user = grantLine.substring(0, grantLine.lastIndexOf('('));
String privilegesToGrant = grantLine.substring((grantLine.lastIndexOf('(') + 1), (grantLine.length() - 1));
! boolean isWithGrant = false;
! String grantOptionString = "";
! String[] privilegeComponents;
!
! // WITH GRANT OPTION marker
!
! String withGrantOptionMarker = "WITH GRANT OPTION ";
!
! isWithGrant = privilegesToGrant.startsWith(withGrantOptionMarker);
!
! if (isWithGrant) {
! // Skip the "WITH GRANT OPTION" marker
!
! privilegesToGrant = privilegesToGrant.substring(withGrantOptionMarker.length());
! grantOptionString = " WITH GRANT OPTION ";
! privilegeComponents = privilegesToGrant.trim().split(" ");
! } else {
! privilegeComponents = privilegesToGrant.trim().split(" ");
! }
if (privilegeComponents.length == 0 || privilegeComponents[0].equals(""))
continue;
***************
*** 127,135 ****
for (int j=1; j < privilegeComponents.length; j++)
privilegesGrantString += ", " + privilegeComponents[j];
! privilegesString += " GRANT " + privilegesGrantString + " ON TABLE " + tableName + " TO " + user + ";\n";
}
!
try {
client.performUpdate((String) parameters.get(PARAM_CLUSTER_NAME), (String) parameters.get(PARAM_DB_NAME), "BEGIN");
--- 145,153 ----
for (int j=1; j < privilegeComponents.length; j++)
privilegesGrantString += ", " + privilegeComponents[j];
! privilegesString += " GRANT " + privilegesGrantString + " ON TABLE " + tableName + " TO " + user + grantOptionString + ";\n";
}
!
try {
client.performUpdate((String) parameters.get(PARAM_CLUSTER_NAME), (String) parameters.get(PARAM_DB_NAME), "BEGIN");