/** * Calculate the the intersection of the keys * * @param map */ protected Set<Object> intersection(Map map) { Set<Object> result = new HashSet<>(); Set<Object> ruleKeys = new HashSet<>(); for (Comparable<?> rule : ruleDAO.getRules()) { ruleKeys.add(keyFor(rule)); } if (ruleKeys.isEmpty() || map.isEmpty()) return result; for (Object key : ruleKeys) { if (map.containsKey(key)) result.add(key); } return result; }
/** * Calculate the keys not contained in the rule data access object * * @param map */ protected Set<Object> nonExistingKeys(Map map) { List<Comparable<?>> rules = ruleDAO.getRules(); if (rules.isEmpty()) return map.keySet(); Set<Object> result = new HashSet<>(); Set<Object> ruleKeys = new HashSet<>(); for (Comparable<?> rule : rules) { ruleKeys.add(keyFor(rule)); } for (Object key : map.keySet()) { if (!ruleKeys.contains(key)) result.add(key); } return result; }
public RuleMap<String, String> getMap() throws Exception { RuleMap<String, String> result = new RuleMap<>(); for (Comparable<?> rule : ruleDAO.getRules()) { addRuleToMap(rule, result); } return result; }
@DeleteMapping(path = "/**") public void rulesDelete(HttpServletRequest request) throws UnsupportedEncodingException { checkUserIsAdmin(); String thePath = request.getPathInfo(); String ruleString = thePath.substring(getBasePath().length() + 1); ruleString = URLDecoder.decode(ruleString, "utf-8"); String msg = validateRuleKey(ruleString); if (msg != null) throw new RestException(msg, HttpStatus.UNPROCESSABLE_ENTITY); Comparable<?> rule = null; for (Comparable<?> ruleCandidate : ruleDAO.getRules()) { if (ruleString.equals(keyFor(ruleCandidate))) { rule = ruleCandidate; break; } } if (rule == null) { throw new ResourceNotFoundException("Rule not found: " + ruleString); } try { ruleDAO.removeRule(rule); ruleDAO.storeRules(); } catch (Exception e) { throw createRestException(e); } }