// ------------------------
  // Constructors
  // ------------------------
  public DB2CurrentUserPrivileges(
      DBRProgressMonitor monitor,
      JDBCSession session,
      String currentAuthId,
      DB2DataSource db2DataSource)
      throws SQLException {
    // DF: There is no easy way to get this information from DB2 v9.1
    // WE consider the user has no system authorities
    listAuthorities = new ArrayList<>();
    if (db2DataSource.isAtLeastV9_5()) {
      try (JDBCPreparedStatement dbStat = session.prepareStatement(SEL_AUTHORITIES)) {
        dbStat.setString(1, currentAuthId);
        try (JDBCResultSet dbResult = dbStat.executeQuery()) {
          while (dbResult.next()) {
            listAuthorities.add(dbResult.getString(1));
          }
        }
      }
    }

    listObjectPrivileges = new ArrayList<>();
    try (JDBCPreparedStatement dbStat = session.prepareStatement(SEL_OBJECTS)) {
      dbStat.setString(1, currentAuthId);
      dbStat.setString(2, currentAuthId);
      try (JDBCResultSet dbResult = dbStat.executeQuery()) {
        while (dbResult.next()) {
          listObjectPrivileges.add(dbResult.getString(1));
        }
      }
    }

    // Cache Authorities
    userIsAuthorisedForApplications = computeUserIsAuthorisedForApplications();
    userIsAuthorisedForDBCFG = computeUserIsAuthorisedForDBCFG();
    userIsAuthorisedForAdminister = userIsAuthorisedForApplications || userIsAuthorisedForDBCFG;

    userIsAuthorisedForContainers = computeUserIsAuthorisedForContainers();
  }
Пример #2
0
 @Override
 public String getViewDDL(DBRProgressMonitor monitor, GenericTable sourceObject)
     throws DBException {
   GenericDataSource dataSource = sourceObject.getDataSource();
   try (JDBCSession session =
       DBUtils.openMetaSession(monitor, dataSource, "Read H2 view source")) {
     try (JDBCPreparedStatement dbStat =
         session.prepareStatement(
             "SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS "
                 + "WHERE TABLE_SCHEMA=? AND TABLE_NAME=?")) {
       dbStat.setString(1, sourceObject.getContainer().getName());
       dbStat.setString(2, sourceObject.getName());
       try (JDBCResultSet dbResult = dbStat.executeQuery()) {
         if (dbResult.nextRow()) {
           return dbResult.getString(1);
         }
         return "-- H2 view definition not found";
       }
     }
   } catch (SQLException e) {
     throw new DBException(e, dataSource);
   }
 }