public UUID[] queryUserFocusFilters(String user) { Set<UUID> filterIdSet = new LinkedHashSet<UUID>(); PreparedStatement pstm = null; ResultSet rs = null; Connection conn = null; try { conn = DbPoolConnection.getInstance().getReadConnection(); pstm = conn.prepareStatement("SELECT filter_id FROM user_focus_filter" + " WHERE user = ?"); pstm.setString(1, user); rs = pstm.executeQuery(); while (rs.next()) { UUID id = DataAccessFactory.getInstance().createUUID(rs.getObject("filter_id").toString()); filterIdSet.add(id); } } catch (Exception e) { e.printStackTrace(); } finally { DbPoolConnection.getInstance().closeResultSet(rs); DbPoolConnection.getInstance().closeStatment(pstm); DbPoolConnection.getInstance().closeConn(conn); } return filterIdSet.toArray(new UUID[0]); }
public ErrorCode addUserFocusFilter(String user, UUID filterId) { ErrorCode errorCode = ErrorCode.unknownFail; PreparedStatement pstm = null; Connection conn = null; try { conn = DbPoolConnection.getInstance().getConnection(); pstm = conn.prepareStatement("INSERT INTO user_focus_filter SET user = ?, filter_id = ?"); pstm.setString(1, user); pstm.setLong(2, Long.parseLong(filterId.getValue())); if (pstm.executeUpdate() > 0) errorCode = ErrorCode.success; } catch (Exception e) { e.printStackTrace(); errorCode = ErrorCode.dbFail; } finally { DbPoolConnection.getInstance().closeStatment(pstm); DbPoolConnection.getInstance().closeConn(conn); } return errorCode; }
public Map<String, String> queryFilterIdAndName(String userName) { Map<String, String> idNameMap = new LinkedHashMap<String, String>(); Statement stat = null; Connection conn = null; ResultSet rs = null; try { conn = DbPoolConnection.getInstance().getReadConnection(); stat = conn.createStatement(); String sql = "select id ,name from filter where is_valid=1 "; if (userName != null && userName.length() > 0) { sql += " and id in (select DISTINCT filter_id from user_focus_filter where user = '******') "; } sql += " order by name"; rs = stat.executeQuery(sql); while (rs.next()) { idNameMap.put(rs.getString("id"), rs.getString("name")); } } catch (Exception e) { e.printStackTrace(); } finally { DbPoolConnection.getInstance().closeAll(rs, stat, conn); } // 添加系统过滤器 idNameMap.putAll(ConfigUtil.allSysFilterMap); return idNameMap; }
public List<Filter> queryAllFilters() { List<Filter> filterList = new ArrayList<Filter>(); PreparedStatement pstm = null; Connection conn = null; ResultSet rs = null; try { conn = DbPoolConnection.getInstance().getReadConnection(); pstm = conn.prepareStatement("SELECT * FROM filter WHERE is_valid = true"); rs = pstm.executeQuery(); while (rs.next()) { UUID id = DataAccessFactory.getInstance().createUUID(Long.toString(rs.getLong("id"))); Timestamp createTime = rs.getTimestamp("create_time"); String createUser = rs.getString("create_user"); Filter filter = new FilterImpl(id, createUser, createTime, null); filter.setName(rs.getString("name")); filter.setXml(rs.getString("xml")); filter.setAnd(rs.getBoolean("is_and")); filter.setPublic(rs.getBoolean("is_public")); filter.setVisible(rs.getBoolean("is_visible")); filterList.add(filter); } } catch (Exception e) { e.printStackTrace(); } finally { DbPoolConnection.getInstance().closeResultSet(rs); DbPoolConnection.getInstance().closeStatment(pstm); DbPoolConnection.getInstance().closeConn(conn); } return filterList; }
public Filter addFilter(Filter filter) { Filter newFilter = null; PreparedStatement pstm = null; Connection conn = null; try { conn = DbPoolConnection.getInstance().getConnection(); pstm = conn.prepareStatement( "INSERT INTO filter" + " SET id = ?" + ", name = ?" + ", xml = ?" + ", create_user = ?" + ", create_time = ?" + ", is_and = ?" + ", is_public = ?" + ", is_visible = ?" + ", father_id = ?"); pstm.setLong(1, Long.parseLong(filter.getId().getValue())); pstm.setString(2, filter.getName()); pstm.setString(3, filter.getXml()); pstm.setString(4, filter.getCreateUser()); pstm.setTimestamp(5, filter.getCreateTime()); pstm.setBoolean(6, filter.isAnd()); pstm.setBoolean(7, filter.isPublic()); pstm.setBoolean(8, filter.isVisible()); if (filter.getFatherId() != null) pstm.setLong(9, Long.parseLong(filter.getFatherId().getValue())); else pstm.setNull(9, java.sql.Types.NULL); pstm.executeUpdate(); newFilter = filter; } catch (Exception e) { e.printStackTrace(); } finally { DbPoolConnection.getInstance().closeStatment(pstm); DbPoolConnection.getInstance().closeConn(conn); } return newFilter; }
public ErrorCode removeFilter(UUID id) { ErrorCode errorCode = ErrorCode.unknownFail; PreparedStatement pstm = null; Connection conn = null; try { conn = DbPoolConnection.getInstance().getConnection(); pstm = conn.prepareStatement("DELETE FROM filter" + " WHERE id = ?"); pstm.setLong(1, Long.parseLong(id.getValue())); if (pstm.executeUpdate() > 0) errorCode = ErrorCode.success; } catch (Exception e) { e.printStackTrace(); errorCode = ErrorCode.dbFail; } finally { DbPoolConnection.getInstance().closeStatment(pstm); DbPoolConnection.getInstance().closeConn(conn); } return errorCode; }
public Filter queryFilter(UUID id) { if (id == null) { return null; } Filter filter = null; PreparedStatement pstm = null; Connection conn = null; ResultSet rs = null; try { conn = DbPoolConnection.getInstance().getReadConnection(); pstm = conn.prepareStatement("SELECT * FROM filter" + " WHERE id = ?"); pstm.setLong(1, Long.parseLong(id.getValue())); rs = pstm.executeQuery(); if (rs.next()) { String createUser = rs.getString("create_user"); Timestamp createTime = rs.getTimestamp("create_time"); UUID fatherId = null; if (rs.getObject("father_id") != null) fatherId = DataAccessFactory.getInstance().createUUID(rs.getObject("father_id").toString()); filter = new FilterImpl(id, createUser, createTime, fatherId); filter.setName(rs.getString("name")); filter.setXml(rs.getString("xml")); filter.setAnd(rs.getBoolean("is_and")); filter.setPublic(rs.getBoolean("is_public")); filter.setVisible(rs.getBoolean("is_visible")); } } catch (Exception e) { e.printStackTrace(); } finally { DbPoolConnection.getInstance().closeResultSet(rs); DbPoolConnection.getInstance().closeStatment(pstm); DbPoolConnection.getInstance().closeConn(conn); } return filter; }
public ErrorCode updateFilter(Filter filter) { ErrorCode errorCode = ErrorCode.unknownFail; PreparedStatement pstm = null; Connection conn = null; try { conn = DbPoolConnection.getInstance().getConnection(); pstm = conn.prepareStatement( "update filter" + " SET name = ?" + ", xml = ?" + ", is_and = ?" + ", is_public = ?" + ", is_visible = ?" + ", is_valid = ?" + " WHERE id = ?"); pstm.setString(1, filter.getName()); pstm.setString(2, filter.getXml()); pstm.setBoolean(3, filter.isAnd()); pstm.setBoolean(4, filter.isPublic()); pstm.setBoolean(5, filter.isVisible()); pstm.setBoolean(6, filter.isValid()); pstm.setLong(7, Long.parseLong(filter.getId().getValue())); if (pstm.executeUpdate() > 0) errorCode = ErrorCode.success; } catch (Exception e) { e.printStackTrace(); errorCode = ErrorCode.dbFail; } finally { DbPoolConnection.getInstance().closeStatment(pstm); DbPoolConnection.getInstance().closeConn(conn); } return errorCode; }
public Map<String, String> getFilterIdNameMap(String userName) { Map<String, String> idNameMap = new HashMap<String, String>(); PreparedStatement pstm = null; Connection conn = null; ResultSet rs = null; try { conn = DbPoolConnection.getInstance().getReadConnection(); pstm = conn.prepareStatement( "SELECT id,name FROM filter WHERE create_user = ? and xml !=null order by name"); pstm.setString(1, userName); rs = pstm.executeQuery(); while (rs.next()) { idNameMap.put(rs.getString("id"), rs.getString("name")); } } catch (Exception e) { e.printStackTrace(); } finally { DbPoolConnection.getInstance().closeAll(rs, pstm, conn); } return idNameMap; }
public List<String> queryFocusUsersByFilter(UUID filterId) { List<String> userList = new ArrayList<String>(); PreparedStatement pstm = null; Connection conn = null; ResultSet rs = null; try { conn = DbPoolConnection.getInstance().getReadConnection(); pstm = conn.prepareStatement("SELECT USER FROM user_focus_filter where filter_id=?"); pstm.setLong(1, Long.parseLong(filterId.getValue())); rs = pstm.executeQuery(); while (rs.next()) { userList.add(rs.getString("user")); } } catch (Exception e) { e.printStackTrace(); } finally { DbPoolConnection.getInstance().closeResultSet(rs); DbPoolConnection.getInstance().closeStatment(pstm); DbPoolConnection.getInstance().closeConn(conn); } return userList; }
public Filter[] queryFilters(String user) { DataAccessSession das = DataAccessFactory.getInstance().getSysDas(); List<Filter> filterList = new ArrayList<Filter>(); PreparedStatement pstm = null; Connection conn = null; ResultSet rs = null; try { conn = DbPoolConnection.getInstance().getReadConnection(); pstm = conn.prepareStatement( "SELECT * FROM filter WHERE (create_user = ? OR is_public = true AND create_user != ?)" + " AND father_id IS NULL AND is_valid = true ORDER BY name"); pstm.setString(1, user); pstm.setString(2, DataAccessFactory.sysUser); rs = pstm.executeQuery(); while (rs.next()) { UUID id = DataAccessFactory.getInstance().createUUID(rs.getObject("id").toString()); String createUser = rs.getString("create_user"); Timestamp createTime = rs.getTimestamp("create_time"); Filter filter = new FilterImpl(id, createUser, createTime, null); filter.setName(rs.getString("name")); filter.setXml(rs.getString("xml")); filter.setAnd(rs.getBoolean("is_and")); filter.setPublic(rs.getBoolean("is_public")); filter.setVisible(rs.getBoolean("is_visible")); filterList.add(filter); } } catch (Exception e) { e.printStackTrace(); } finally { DbPoolConnection.getInstance().closeResultSet(rs); DbPoolConnection.getInstance().closeStatment(pstm); DbPoolConnection.getInstance().closeConn(conn); } Map<UUID, Boolean> templateAllowMap = new HashMap<UUID, Boolean>(); Map<UUID, List<Template>> allTemplateTypeMap = new HashMap<UUID, List<Template>>(); Map<UUID, Template> allTemplateMap = new HashMap<UUID, Template>(); Map<UUID, Flow> allFlowMap = new HashMap<UUID, Flow>(); Iterator<Filter> filterItr = filterList.iterator(); while (filterItr.hasNext()) { Filter filter = filterItr.next(); Document xmlDoc = null; try { xmlDoc = XMLUtil.string2Document(filter.getXml(), "UTF-8"); } catch (Exception e) { e.printStackTrace(); System.err.println("error filter id: " + filter.getId()); } if (xmlDoc == null) { filterItr.remove(); continue; } Node queryNode = XMLUtil.getSingleNode(xmlDoc, "query"); Node templateTypeNode = XMLUtil.getSingleNode(queryNode, "templateType"); List<Node> templateNodeList = XMLUtil.getNodes(queryNode, "template"); List<Template> templateList = new ArrayList<Template>(); if (templateNodeList.size() == 0) { String templateTypeIdStr = XMLUtil.getAttribute(templateTypeNode, "id"); UUID templateTypeId = DataAccessFactory.getInstance().createUUID(templateTypeIdStr); if (allTemplateTypeMap.get(templateTypeId) == null) { List<Template> templateTypeList = das.queryTemplates(templateTypeId); for (Template template : templateTypeList) { allTemplateMap.put(template.getId(), template); } } templateList.addAll(allTemplateTypeMap.get(templateTypeId)); } else { for (Node templateNode : templateNodeList) { String templateIdStr = XMLUtil.getAttribute(templateNode, "id"); UUID templateId = DataAccessFactory.getInstance().createUUID(templateIdStr); if (allTemplateMap.get(templateId) == null) { Template tmp = das.queryTemplate(templateId); allTemplateMap.put(templateId, tmp); } Template template = allTemplateMap.get(templateId); if (template != null) { templateList.add(template); } } } boolean filterAllow = false; for (Template template : templateList) { if (templateAllowMap.containsKey(template.getId())) { if (templateAllowMap.get(template.getId())) { filterAllow = true; break; } continue; } if (allFlowMap.get(template.getFlowId()) == null) { Flow tmp = das.queryFlow(template.getFlowId()); allFlowMap.put(template.getFlowId(), tmp); } Flow flow = allFlowMap.get(template.getFlowId()); if (flow == null) { templateAllowMap.put(template.getId(), false); continue; } Role[] roleArray = flow.queryUserNodeRoles(user, template.getId()); if (roleArray != null && roleArray.length > 0) { filterAllow = true; templateAllowMap.put(template.getId(), true); break; } if (flow.isActionEveryoneRole(Action.readUUID) || flow.isActionEveryoneRole(Action.editUUID)) { filterAllow = true; templateAllowMap.put(template.getId(), true); break; } Action[] actionArray = flow.getActions(); if (actionArray != null) { for (Action action : actionArray) { if (flow.isActionEveryoneRole(action.getId())) { filterAllow = true; templateAllowMap.put(template.getId(), true); break; } } } if (filterAllow) { break; } templateAllowMap.put(template.getId(), false); } if (!filterAllow) filterItr.remove(); } return filterList.toArray(new Filter[filterList.size()]); }