/** * Add a filter that uses the == operator. */ public static void addFilterEqual(IMutableSearch search, String property, Object value) { addFilter(search, Filter.equal(property, value)); }
@Override public ShortAdminRule getRuleByPriority(long priority) throws BadRequestServiceEx { Search searchCriteria = new Search(AdminRule.class); searchCriteria.addFilter(Filter.equal("priority", priority)); List<AdminRule> found = ruleDAO.search(searchCriteria); if(found.isEmpty()) return null; if(found.size() > 1) { LOGGER.error("Unexpected rule count for priority " + priority + " : " + found); } return new ShortAdminRule(found.get(0)); }
@Override public void deleteRulesByUser(String username) throws NotFoundServiceEx { Search searchCriteria = new Search(Rule.class); searchCriteria.addFilter(Filter.equal("username", username)); List<Rule> list = ruleDAO.search(searchCriteria); if(LOGGER.isInfoEnabled()) LOGGER.info("Removing "+list.size()+" rules for user " + username); for (Rule rule : list) { if(LOGGER.isInfoEnabled()) LOGGER.info("Removing rule for user " + username+": " + rule); ruleDAO.remove(rule); } }
@Override public void deleteRulesByUser(String username) throws NotFoundServiceEx { Search searchCriteria = new Search(AdminRule.class); searchCriteria.addFilter(Filter.equal("username", username)); List<AdminRule> list = ruleDAO.search(searchCriteria); if(LOGGER.isInfoEnabled()) LOGGER.info("Removing "+list.size()+" AdminRule for user " + username); for (AdminRule rule : list) { if(LOGGER.isInfoEnabled()) LOGGER.info("Removing rule for user " + username+": " + rule); ruleDAO.remove(rule); } }
@Override public ShortRule getRuleByPriority(long priority) throws BadRequestServiceEx { Search searchCriteria = new Search(Rule.class); searchCriteria.addFilter(Filter.equal("priority", priority)); List<Rule> found = ruleDAO.search(searchCriteria); if(found.isEmpty()) return null; if(found.size() > 1) { LOGGER.error("Unexpected rule count for priority " + priority + " : " + found); } return new ShortRule(found.get(0)); }
@Override public void deleteRulesByRole(String rolename) throws NotFoundServiceEx { Search searchCriteria = new Search(AdminRule.class); searchCriteria.addFilter(Filter.equal("rolename", rolename)); List<AdminRule> list = ruleDAO.search(searchCriteria); for (AdminRule rule : list) { if(LOGGER.isInfoEnabled()) LOGGER.info("Removing rule for role " + rolename+": " + rule); ruleDAO.remove(rule); } }
@Override public void deleteRulesByInstance(long instanceId) throws NotFoundServiceEx { Search searchCriteria = new Search(AdminRule.class); searchCriteria.addFilter(Filter.equal("instance.id", instanceId)); List<AdminRule> list = ruleDAO.search(searchCriteria); for (AdminRule rule : list) { if(LOGGER.isInfoEnabled()) LOGGER.info("Removing AdminRule for instance " + instanceId+": " + rule); ruleDAO.remove(rule); } }
@Override public void deleteRulesByInstance(long instanceId) throws NotFoundServiceEx { Search searchCriteria = new Search(Rule.class); searchCriteria.addFilter(Filter.equal("instance.id", instanceId)); List<Rule> list = ruleDAO.search(searchCriteria); for (Rule rule : list) { if(LOGGER.isInfoEnabled()) LOGGER.info("Removing rule for instance " + instanceId+": " + rule); ruleDAO.remove(rule); } }
@Override public void deleteRulesByRole(String rolename) throws NotFoundServiceEx { Search searchCriteria = new Search(Rule.class); searchCriteria.addFilter(Filter.equal("rolename", rolename)); List<Rule> list = ruleDAO.search(searchCriteria); for (Rule rule : list) { if(LOGGER.isInfoEnabled()) LOGGER.info("Removing rule for role " + rolename+": " + rule); ruleDAO.remove(rule); } }
@Override public List<SecurityRule> findUserSecurityRule(String name, long resourceId) { Search searchCriteria = new Search(StoredData.class); searchCriteria.addField("resource.security"); Filter securityFilter = Filter.some( "resource.security", Filter.and(Filter.equal("resource.security.resource.id", resourceId), Filter.equal("resource.security.user.name", name))); searchCriteria.addFilter(securityFilter); return super.search(searchCriteria); }
@Override public List<SecurityRule> findUserSecurityRule(String userName, long categoryId) { Search searchCriteria = new Search(Category.class); searchCriteria.addField("security"); Filter securityFilter = Filter.some( "security", Filter.and(Filter.equal("category.id", categoryId), Filter.equal("user.name", userName))); searchCriteria.addFilter(securityFilter); return super.search(searchCriteria); }
@Override public List<SecurityRule> findGroupSecurityRule(List<String> userGroups, long categoryId) { Search searchCriteria = new Search(Category.class); searchCriteria.addField("security"); Filter securityFilter = Filter.some( "security", Filter.and(Filter.equal("category.id", categoryId), Filter.equal("user.groups.groupName", userGroups))); searchCriteria.addFilter(securityFilter); return super.search(searchCriteria); }
/** * @param userName * @param resourceId * @return List<SecurityRule> * @deprecated move to SecurityDAO */ @Deprecated @Override public List<SecurityRule> findUserSecurityRule(String userName, long resourceId) { Search searchCriteria = new Search(Resource.class); searchCriteria.addField("security"); Filter securityFilter = Filter.some( "security", Filter.and(Filter.equal("resource.id", resourceId), Filter.equal("user.name", userName))); searchCriteria.addFilter(securityFilter); return super.search(searchCriteria); }
@Override public Resource findByName(String resourceName) { Search searchCriteria = new Search(Resource.class); Filter filter = Filter.equal("name", resourceName); searchCriteria.addFilter(filter); Resource foundResource = null; try { foundResource = super.searchUnique(searchCriteria); } catch (NoResultException ex) { // I ignore the exception and return null on purpose, mimicking the behavior of ResourceDAO#find(java.lang.Long) foundResource = null; } return foundResource; }
/** * @param resourceId * @return List<SecurityRule> * @deprecated move to SecurityDAO */ @Deprecated @Override public List<SecurityRule> findSecurityRules(long resourceId) { Search searchCriteria = new Search(Resource.class); searchCriteria.addField("security"); Filter securityFilter = Filter.some("security", Filter.equal("resource.id", resourceId)); searchCriteria.addFilter(securityFilter); return super.search(searchCriteria); }
@Deprecated @Override public List<SecurityRule> findGroupSecurityRule(List<String> groupNames, long resourceId) { Search searchCriteria = new Search(Resource.class); searchCriteria.addField("security"); Filter securityFilter = Filter.some("security", Filter.equal("resource.id", resourceId)); //Advanced filters Filters doesn't work, I don't know why... // Filter securityFilter = Filter.some( // "security", // Filter.and(Filter.equal("resource.id", resourceId), // Filter.in("group.groupName", groupNames), // Filter.isNotEmpty("group"))); searchCriteria.addFilter(securityFilter); List<SecurityRule> rules = super.search(searchCriteria); //WORKAROUND List<SecurityRule> filteredRules = new ArrayList<SecurityRule>(); for(SecurityRule sr : rules){ if(sr.getGroup() != null && groupNames.contains(sr.getGroup().getGroupName())){ filteredRules.add(sr); } } return filteredRules; }
private void addCriteria(Search searchCriteria, String fieldName, IdNameFilter filter) { switch (filter.getType()) { case ANY: break; // no filtering case DEFAULT: searchCriteria.addFilterNull(fieldName); break; case IDVALUE: searchCriteria.addFilterOr( Filter.isNull(fieldName), Filter.equal(fieldName + ".id", filter.getId())); break; case NAMEVALUE: searchCriteria.addFilterOr( Filter.isNull(fieldName), Filter.equal(fieldName + ".name", filter.getName())); break; default: throw new AssertionError(); } }
private void addStringCriteria(Search searchCriteria, String fieldName, TextFilter filter) { switch (filter.getType()) { case ANY: break; // no filtering case DEFAULT: searchCriteria.addFilterNull(fieldName); break; case NAMEVALUE: searchCriteria.addFilterOr( Filter.isNull(fieldName), Filter.equal(fieldName, filter.getText())); break; case IDVALUE: default: throw new AssertionError(); } }
/** * @param resourceId * @return List<Attribute> */ @Override public List<Attribute> findAttributes(long resourceId) { Search searchCriteria = new Search(Resource.class); searchCriteria.addField("attribute"); Filter securityFilter = Filter.some("attribute", Filter.equal("resource.id", resourceId)); searchCriteria.addFilter(securityFilter); return super.search(searchCriteria); }
@Override public List<SecurityRule> findGroupSecurityRule(List<String> userGroups, long resourceId) { Search searchCriteria = new Search(StoredData.class); //get all the security rules searchCriteria.addField("resource.security"); Filter securityFilter = Filter.some( "resource.security",Filter.equal("resource.security.resource.id", resourceId) ); searchCriteria.addFilter(securityFilter); List<SecurityRule> rules = super.search(searchCriteria); //WORKAROUND (See ResourceDAOImpl) List<SecurityRule> filteredRules = new ArrayList<SecurityRule>(); for(SecurityRule sr : rules){ if(sr.getGroup() != null && userGroups.contains(sr.getGroup().getGroupName())){ filteredRules.add(sr); } } return filteredRules; }