docs: public List<CmsOrganizationalUnit> getResourceOus(CmsDbContext dbc, CmsUUID projectId, CmsResource resource)
      throws CmsDbSqlException {
  
          List<CmsOrganizationalUnit> ous = new ArrayList<CmsOrganizationalUnit>();
          String resName = resource.getRootPath();
          if (resource.isFolder() && !resName.endsWith("/")) {
              resName += "/";
          }
  
          Connection conn = null;
          PreparedStatement stmt = null;
          ResultSet res = null;
          List<CmsRelation> rels = new ArrayList<CmsRelation>();
  
          try {
              conn = m_sqlManager.getConnection(dbc);
              stmt = m_sqlManager.getPreparedStatementForSql(
                  conn,
                  m_sqlManager.readQuery(projectId, "C_READ_RESOURCE_OUS"));
              stmt.setInt(1, CmsRelationType.OU_RESOURCE.getId());
              stmt.setString(2, resName);
              res = stmt.executeQuery();
              while (res.next()) {
                  rels.add(internalReadRelation(res));
              }
          } catch (SQLException e) {
              throw new CmsDbSqlException(
                  Messages.get().container(Messages.ERR_GENERIC_SQL_1, CmsDbSqlException.getErrorQuery(stmt)),
                  e);
          } finally {
              m_sqlManager.closeAll(dbc, conn, stmt, res);
          }
  
          for (CmsRelation rel : rels) {
              try {
                  ous.add(
                      m_driverManager.readOrganizationalUnit(
                          dbc,
                          rel.getSourcePath().substring(CmsUserDriver.ORGUNIT_BASE_FOLDER.length())));
              } catch (CmsException e) {
                  // should never happen
                  if (LOG.isErrorEnabled()) {
                      LOG.error(e.getLocalizedMessage(), e);
                  }
              }
          }
          return ous;
      }