KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > datadictionarysystem > BrowserUserPrivilegeTable


1 package com.daffodilwoods.daffodildb.server.datadictionarysystem;
2
3 import java.util.*;
4
5 import com.daffodilwoods.daffodildb.server.sql99.common.*;
6 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*;
7 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*;
8 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
9 import com.daffodilwoods.database.general.*;
10 import com.daffodilwoods.database.resource.*;
11 import com.daffodilwoods.database.utility.*;
12
13 public class BrowserUserPrivilegeTable implements _PrivilegeTable {
14    int rights;
15    ArrayList column_rights;
16    QualifiedIdentifier tableName;
17    PreparedStatementGetter preparedStatementGetter;
18    _ColumnCharacteristics columnCharacterisitics;
19    booleanvalueexpression condition;
20    String JavaDoc authorizationIdentifier;
21
22    public BrowserUserPrivilegeTable(_DataDictionary data_dictionary,
23                                     PreparedStatementGetter preparedStatementGetter0,
24                                     QualifiedIdentifier table_name) throws DException {
25       preparedStatementGetter = preparedStatementGetter0;
26       condition = QueryGetter.getPrivilegeCondition();
27       tableName = table_name;
28       if (table_name != null) {
29          if (table_name.catalog.equalsIgnoreCase(SystemTables.systemCatalog)) {
30             rights = SystemTables.isSystemTable(table_name.getIdentifier()) &&
31                 table_name.getIdentifier().equalsIgnoreCase(SystemTables.dualSystemTable.toString()) ? SELECT :
32                 SystemTables.isSystemTable(table_name.getIdentifier()) ? NOACCESS : RIGHTWITHGRANTOPTION;
33          } else
34             rights = RIGHTWITHGRANTOPTION;
35          columnCharacterisitics = data_dictionary.getColumnCharacteristics(table_name, true);
36          int columnCount = columnCharacterisitics.getColumnCount();
37          column_rights = new ArrayList(columnCount);
38          for (int i = columnCount; i-- > 0; )
39             column_rights.add(null);
40       }
41    }
42
43    public boolean hasTablePrivileges(int parm1) throws DException {
44       if (SystemTables.isSystemTable(tableName.toString())) {
45          if (tableName.getIdentifier().equalsIgnoreCase(SystemTables.dualSystemTable.toString()))
46             if (parm1 == SELECT)
47                return true;
48          return false;
49       } else
50          return rights == RIGHTWITHGRANTOPTION;
51    }
52
53    public boolean hasColumnPrivileges(int operationType, int[] columnIndexes) throws DException {
54      if(columnIndexes == null){
55        int columnCount = columnCharacterisitics.getColumnCount();
56        columnIndexes = new int[columnCount-5];
57        for (int i = 0; i < columnCount-5; i++) {
58          columnIndexes[i] = i+5;
59        }
60      }
61      for (int i = 0; i < columnIndexes.length; i++) {
62          boolean be = hasColumnRights(columnIndexes[i], operationType);
63          if (!be)
64             return false;
65       }
66       return true;
67    }
68
69    private boolean hasColumnRights(int column_index, int operationType) throws DException {
70       Object JavaDoc obj = column_rights.get(column_index);
71       if (obj == null)
72          obj = setColumnRights(column_index, operationType);
73       int[] col_rig = (int[]) obj;
74       return col_rig[operationType] != NOACCESS;
75    }
76
77    private synchronized int[] setColumnRights(int columnIndex,
78                                               int operationType) throws DException {
79       String JavaDoc col_Name = columnCharacterisitics.getColumnName(columnIndex);
80       int[] colrights = null;
81       if (rights == NOACCESS)
82          colrights = new int[] {
83              NOACCESS, NOACCESS, NOACCESS, NOACCESS, NOACCESS, NOACCESS, NOACCESS
84          };
85       else {
86          if (P.indexOfIgnoreCase(SystemFields.systemFields, col_Name) == 0 ||
87              P.indexOfIgnoreCase(SystemFields.systemFields, col_Name) == 1 ||
88              P.indexOfIgnoreCase(SystemFields.systemFields, col_Name) == 2 ||
89              P.indexOfIgnoreCase(SystemFields.systemFields, col_Name) == 3 ||
90              P.indexOfIgnoreCase(SystemFields.systemFields, col_Name) == 4) {
91             if (col_Name.equalsIgnoreCase(SystemFields.systemFields[SystemFields.rowId]) ||
92                 col_Name.equalsIgnoreCase(SystemFields.systemFields[SystemFields.sessionId]) ||
93                 col_Name.equalsIgnoreCase(SystemFields.systemFields[SystemFields.transactionId]) ||
94                 col_Name.equalsIgnoreCase(SystemFields.systemFields[SystemFields.invalidSessionId]) ||
95                 col_Name.equalsIgnoreCase(SystemFields.systemFields[SystemFields.invalidTransactionId])) {
96                colrights = new int[] {
97                    NOACCESS, NOACCESS, NOACCESS, RIGHTWITHGRANTOPTION, NOACCESS,
98                    RIGHTWITHGRANTOPTION, NOACCESS
99                };
100             } else {
101                colrights = new int[] {
102                    NOACCESS, NOACCESS, NOACCESS, NOACCESS, NOACCESS, NOACCESS,
103                    NOACCESS
104                };
105             }
106          } else if (tableName.getIdentifier().equalsIgnoreCase(SystemTables.dualSystemTable.toString())) {
107             colrights = new int[] {
108                 NOACCESS, NOACCESS, NOACCESS, RIGHTWITHGRANTOPTION, NOACCESS, NOACCESS,
109                 NOACCESS
110             };
111          } else {
112             colrights = new int[] {
113                 RIGHTWITHGRANTOPTION, RIGHTWITHGRANTOPTION, NOACCESS,
114                 RIGHTWITHGRANTOPTION, NOACCESS, RIGHTWITHGRANTOPTION, NOACCESS
115             };
116          }
117       }
118       column_rights.set(columnIndex, colrights);
119       return colrights;
120    }
121
122    public ParameterisedCondition getPrivilegeCondition() throws DException {
123       ParameterisedCondition pc = new ParameterisedCondition();
124       pc.setBVE(condition);
125       VariableValues vv = new VariableValues(preparedStatementGetter.serverSession);
126       pc.setVariableValues(vv);
127       return pc;
128    }
129
130    public boolean hasExecutionRights(String JavaDoc parm1, String JavaDoc parm2, String JavaDoc parm3) throws DException {
131       return true;
132    }
133
134    public int getColumnPrivilegesType(int columnIndex, int operationType) throws DException {
135       Object JavaDoc obj = column_rights.get(columnIndex);
136       if (obj == null)
137          obj = setColumnRights(columnIndex, operationType);
138       int[] col_rig = (int[]) obj;
139       return col_rig[operationType];
140    }
141
142    public boolean hasColumnPrivilegesWithGrantOption(int columnIndex, int operationType) throws DException {
143       Object JavaDoc obj = column_rights.get(columnIndex);
144       if (obj == null)
145          obj = setColumnRights(columnIndex, operationType);
146       int[] col_rig = (int[]) obj;
147       return col_rig[operationType] == RIGHTWITHGRANTOPTION;
148    }
149 }
150
Popular Tags