Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
GenericGroupSecurityDAO.java
Package: jforum-2.1.8-src.zip [view]
Upload User: gdxydsw
Upload Date: 2019-01-29
Package Size: 16721k
Code Size: 8k
Category:
Java Develop
Development Platform:
Java
- /*
- * Copyright (c) JForum Team
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
- * that the following conditions are met:
- *
- * 1) Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * 2) Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * 3) Neither the name of "Rafael Steil" nor
- * the names of its contributors may be used to endorse
- * or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
- * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
- * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
- * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
- *
- * This file creation date: 19/03/2004 - 18:44:56
- * The JForum Project
- * http://www.jforum.net
- */
- package net.jforum.dao.generic.security;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Iterator;
- import java.util.List;
- import net.jforum.JForumExecutionContext;
- import net.jforum.dao.GroupSecurityDAO;
- import net.jforum.dao.generic.AutoKeys;
- import net.jforum.entities.Group;
- import net.jforum.entities.User;
- import net.jforum.exceptions.DatabaseException;
- import net.jforum.repository.RolesRepository;
- import net.jforum.security.Role;
- import net.jforum.security.RoleCollection;
- import net.jforum.security.RoleValue;
- import net.jforum.security.RoleValueCollection;
- import net.jforum.util.DbUtils;
- import net.jforum.util.preferences.SystemGlobals;
- import org.apache.commons.lang.StringUtils;
- /**
- * @author Rafael Steil
- * @version $Id: GenericGroupSecurityDAO.java,v 1.16 2007/08/25 00:11:29 rafaelsteil Exp $
- */
- public class GenericGroupSecurityDAO extends AutoKeys implements GroupSecurityDAO
- {
- private List selectForumRoles(int forumId)
- {
- List l = new ArrayList();
- PreparedStatement p = null;
- ResultSet rs = null;
- try {
- p = JForumExecutionContext.getConnection().prepareStatement(
- SystemGlobals.getSql("PermissionControl.selectForumRoles"));
- p.setString(1, String.valueOf(forumId));
- rs = p.executeQuery();
- while (rs.next()) {
- l.add(new Integer(rs.getInt("role_id")));
- }
- }
- catch (SQLException e) {
- throw new DatabaseException(e);
- }
- finally {
- DbUtils.close(rs, p);
- }
- return l;
- }
- public void deleteForumRoles(int forumId)
- {
- PreparedStatement p = null;
- List roleIds = this.selectForumRoles(forumId);
- try {
- StringBuffer ids = new StringBuffer();
- for (Iterator iterator = roleIds.iterator(); iterator.hasNext();) {
- Integer id = (Integer)iterator.next();
- ids.append(id).append(',');
- }
- ids.append("-1");
- // Role values
- String sql = SystemGlobals.getSql("PermissionControl.deleteRoleValues");
- sql = StringUtils.replace(sql, "#IDS#", ids.toString());
- p = JForumExecutionContext.getConnection().prepareStatement(sql);
- p.setString(1, String.valueOf(forumId));
- p.executeUpdate();
- }
- catch (SQLException e) {
- throw new DatabaseException(e);
- }
- finally {
- DbUtils.close(p);
- }
- }
- /**
- * @see net.jforum.dao.security.SecurityDAO#deleteAllRoles(int)
- */
- public void deleteAllRoles(int groupId)
- {
- PreparedStatement p = null;
- try {
- p = JForumExecutionContext.getConnection().prepareStatement(
- SystemGlobals.getSql("PermissionControl.deleteAllRoleValues"));
- p.setInt(1, groupId);
- p.executeUpdate();
- p.close();
- p = JForumExecutionContext.getConnection().prepareStatement(
- SystemGlobals.getSql("PermissionControl.deleteAllGroupRoles"));
- p.setInt(1, groupId);
- p.executeUpdate();
- }
- catch (SQLException e) {
- throw new DatabaseException(e);
- }
- finally {
- DbUtils.close(p);
- }
- }
- /**
- * @see net.jforum.dao.security.SecurityDAO#addRole(int, net.jforum.security.Role)
- */
- public void addRole(int id, Role role)
- {
- this.addRole(id, role, null);
- }
- /**
- * @see net.jforum.dao.security.SecurityDAO#addRole(int, net.jforum.security.Role,
- * net.jforum.security.RoleValueCollection)
- */
- public void addRole(int id, Role role, RoleValueCollection roleValues)
- {
- this.setAutoGeneratedKeysQuery(SystemGlobals.getSql("PermissionControl.lastGeneratedRoleId"));
- SecurityCommon.executeAddRole(SystemGlobals.getSql("PermissionControl.addGroupRole"), id, role, roleValues,
- this.supportAutoGeneratedKeys(), this.getAutoGeneratedKeysQuery());
- }
- /**
- * @see net.jforum.dao.security.SecurityDAO#loadRoles(int)
- */
- public RoleCollection loadRoles(int groupId)
- {
- return this.loadRoles(new int[] { groupId });
- }
- protected RoleCollection loadRoles(int[] groupIds)
- {
- String sql = SystemGlobals.getSql("PermissionControl.loadGroupRoles");
- String groupIdAsString = SecurityCommon.groupIdAsString(groupIds);
- if ("".equals(groupIdAsString)) {
- // We suppose there is no "negative" group ids
- sql = sql.replaceAll("#IN#", "-1");
- }
- else {
- sql = sql.replaceAll("#IN#", groupIdAsString);
- }
- RoleCollection roles = new RoleCollection();
- PreparedStatement p = null;
- ResultSet rs = null;
- try {
- p = JForumExecutionContext.getConnection().prepareStatement(sql);
- rs = p.executeQuery();
- roles = SecurityCommon.loadRoles(rs);
- }
- catch (Exception e) {
- throw new DatabaseException(e);
- }
- finally {
- DbUtils.close(rs, p);
- }
- return roles;
- }
- /**
- * @see net.jforum.dao.GroupSecurityDAO#addRoleValue(int, net.jforum.security.Role, net.jforum.security.RoleValueCollection)
- */
- public void addRoleValue(int groupId, Role role, RoleValueCollection rvc)
- {
- PreparedStatement p = null;
- ResultSet rs = null;
- try {
- p = JForumExecutionContext.getConnection().prepareStatement(
- SystemGlobals.getSql("PermissionControl.getRoleIdByName"));
- p.setString(1, role.getName());
- p.setInt(2, groupId);
- int roleId = -1;
- rs = p.executeQuery();
- if (rs.next()) {
- roleId = rs.getInt("role_id");
- }
- rs.close();
- rs = null;
- p.close();
- p = null;
- if (roleId == -1) {
- this.addRole(groupId, role, rvc);
- }
- else {
- p = JForumExecutionContext.getConnection().prepareStatement(
- SystemGlobals.getSql("PermissionControl.addRoleValues"));
- p.setInt(1, roleId);
- for (Iterator iter = rvc.iterator(); iter.hasNext();) {
- RoleValue rv = (RoleValue) iter.next();
- p.setString(2, rv.getValue());
- p.executeUpdate();
- }
- }
- }
- catch (SQLException e) {
- throw new DatabaseException(e);
- }
- finally {
- DbUtils.close(rs, p);
- }
- }
- /**
- * @see net.jforum.dao.GroupSecurityDAO#loadRolesByUserGroups(net.jforum.entities.User)
- */
- public RoleCollection loadRolesByUserGroups(User user)
- {
- List groups = user.getGroupsList();
- // When the user is associated to more than one group, we
- // should check the merged roles
- int[] groupIds = this.getSortedGroupIds(groups);
- RoleCollection groupRoles = RolesRepository.getGroupRoles(groupIds);
- // Not cached yet? then do it now
- if (groupRoles == null) {
- groupRoles = this.loadRoles(groupIds);
- RolesRepository.addGroupRoles(groupIds, groupRoles);
- }
- return groupRoles;
- }
- private int[] getSortedGroupIds(List groups)
- {
- int[] groupsIds = new int[groups.size()];
- int i = 0;
- for (Iterator iter = groups.iterator(); iter.hasNext();) {
- groupsIds[i++] = ((Group)iter.next()).getId();
- }
- Arrays.sort(groupsIds);
- return groupsIds;
- }
- }