📄 leafpriv.java
字号:
String[] privs = user.getPrivs(); if (privs!=null) { int len = privs.length; for (int i=0; i<len; i++) { if (privs[i].equals(PrivDb.PRIV_ADMIN)) { logger.info("canUserDo: has admin pirv"); return true; } } } UserGroupDb[] groups = user.getGroups(); RoleDb[] roles = user.getRoles(); for (int i = 0; i < groups.length; i++) if (groups[i].getCode().equals(groups[i].ADMINISTRATORS)) return true; logger.info("privType=" + privType + " dirCode=" + dirCode + " name=" + lf.getName() + " code=" + lf.getCode() + " parentCode=" + lf.getParentCode()); if (canUserDo(lf, user, groups, roles, privType)) return true; String parentCode = lf.getParentCode(); while (!parentCode.equals(Leaf.PARENT_CODE_NONE)) { logger.info("canUserDo: dirCode=" + dirCode + " parentCode=" + parentCode + " privType=" + privType); Leaf plf = lf.getLeaf(parentCode); if (plf==null || !plf.isLoaded()) return false; if (canUserDo(plf, user, groups, roles, privType)) return true; parentCode = plf.getParentCode(); } return false; } public boolean canUserAppend(String username) { return canUserDo(username, this.PRIV_APPEND); } public boolean canUserDel(String username) { return canUserDo(username, this.PRIV_DEL); } public boolean canUserModify(String username) { return canUserDo(username, this.PRIV_MODIFY); } public boolean canUserExamine(String username) { return canUserDo(username, this.PRIV_EXAMINE); } public boolean add(String dirCode) throws ErrMsgException { return add(UserGroupDb.EVERYONE, TYPE_USERGROUP); } public boolean add(String name, int type) throws ErrMsgException { Conn conn = new Conn(connname); boolean r = false; try { PreparedStatement ps = conn.prepareStatement(QUERY_ADD); ps.setString(1, name); ps.setInt(2, type); ps.setInt(3, see); ps.setInt(4, append); ps.setInt(5, del); ps.setInt(6, modify); ps.setInt(7, examine); ps.setString(8, dirCode); r = conn.executePreUpdate() == 1 ? true : false; Leaf lf = new Leaf(); lf = lf.getLeaf(dirCode); if (lf!=null && lf.isLoaded()) { lf.setShared(true); lf.update(); } } catch (SQLException e) { logger.error("add:" + e.getMessage()); throw new ErrMsgException("请检查节点是否已存在!"); } finally { if (conn!=null) { conn.close(); conn = null; } } return r; } public LeafPriv getLeafPriv(int id) { LeafPriv leafPriv = null; try { leafPriv = new LeafPriv(id); } catch (Exception e) { logger.error(e.getMessage()); } return leafPriv; } public boolean delPrivsOfDir() { RMConn rmconn = new RMConn(connname); boolean r = false; try { String sql = "delete from netdisk_dir_priv where dir_code=?"; PreparedStatement ps = rmconn.prepareStatement(sql); ps.setString(1, dirCode); r = rmconn.executePreUpdate() == 1 ? true : false; } catch (SQLException e) { logger.error(e.getMessage()); return false; } return r; } public boolean delPrivsOfUserOrGroup(String username) { RMConn rmconn = new RMConn(connname); boolean r = false; try { String sql = "delete from netdisk_dir_priv where name=?"; PreparedStatement ps = rmconn.prepareStatement(sql); ps.setString(1, username); r = rmconn.executePreUpdate() == 1 ? true : false; } catch (SQLException e) { logger.error(e.getMessage()); return false; } return r; } public boolean del() { boolean r = false; PreparedStatement ps = null; ResultSet rs = null; String sql = "select count(id) from netdisk_dir_priv where dir_code=?"; Conn conn = new Conn(connname); try { ps = conn.prepareStatement(QUERY_DEL); ps.setInt(1, id); r = conn.executePreUpdate() == 1 ? true : false; if (ps!=null) { ps.close(); ps = null; } ps = conn.prepareStatement(sql); ps.setString(1, dirCode); rs = conn.executePreQuery(); if (rs!=null && rs.next()) { int count = rs.getInt(1); if (count==0) { Leaf lf = new Leaf(); lf = lf.getLeaf(dirCode); lf.setShared(false); lf.update(); } } } catch (SQLException e) { logger.error(e.getMessage()); return false; } finally { if (rs != null) { try { rs.close(); } catch (Exception e) {} rs = null; } if (ps != null) { try { ps.close(); } catch (Exception e) {} ps = null; } if (conn!=null) { conn.close(); conn = null; } } return r; } public int getSee() { return see; } public void setSee(int see) { this.see = see; } public int getAppend() { return append; } public void setAppend(int a) { this.append = a; } public int getDel() { return del; } public void setDel(int d) { this.del = d; } public int getModify() { return modify; } public int getExamine() { return examine; } public void setModify(int m) { this.modify = m; } public void setExamine(int examine) { this.examine = examine; } public ListResult list(String listsql, int curPage, int pageSize) throws ErrMsgException { int total = 0; ResultSet rs = null; Vector result = new Vector(); Conn conn = new Conn(connname); try { String countsql = SQLFilter.getCountSql(listsql); rs = conn.executeQuery(countsql); if (rs != null && rs.next()) { total = rs.getInt(1); } if (rs != null) { rs.close(); rs = null; } if (total != 0) conn.setMaxRows(curPage * pageSize); rs = conn.executeQuery(listsql); if (rs == null) { return null; } else { rs.setFetchSize(pageSize); int absoluteLocation = pageSize * (curPage - 1) + 1; if (rs.absolute(absoluteLocation) == false) { return null; } do { LeafPriv lp = getLeafPriv(rs.getInt(1)); result.addElement(lp); } while (rs.next()); } } catch (SQLException e) { logger.error(e.getMessage()); throw new ErrMsgException("数据库出错!"); } finally { if (rs != null) { try { rs.close(); } catch (Exception e) {} rs = null; } if (conn != null) { conn.close(); conn = null; } } ListResult lr = new ListResult(); lr.setResult(result); lr.setTotal(total); return lr; } public Vector list() { ResultSet rs = null; Conn conn = new Conn(connname); Vector result = new Vector(); PreparedStatement ps = null; try { ps = conn.prepareStatement(QUERY_LIST); ps.setString(1, dirCode); rs = ps.executeQuery(); if (rs == null) { return null; } else { while (rs.next()) { LeafPriv lp = getLeafPriv(rs.getInt(1)); result.addElement(lp); } } } catch (Exception e) { logger.error("list: " + e.getMessage()); } finally { if (conn != null) { conn.close(); conn = null; } } return result; } private boolean loaded = false; private int examine = 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -