/** * Create a new Filter using the OR operator. * * <p> * This takes a variable number of parameters. Any number of * <code>Filter</code>s can be specified. */ public static Filter or(Filter... filters) { Filter filter = and(filters); filter.property = "OR"; filter.operator = OP_OR; return filter; }
/** * Add a filter that uses the AND operator. * * <p> * This takes a variable number of parameters. Any number of <code>Filter * </code>s can be * specified. */ public static void addFilterAnd(IMutableSearch search, Filter... filters) { addFilter(search, Filter.and(filters)); }
@Override public void visit(AndFilter filter) throws BadRequestServiceEx, InternalErrorServiceEx { trgFilter = Filter.and(); for (SearchFilter searchFilter : filter.getFilters()) { SearchConverter sc = new SearchConverter(); searchFilter.accept(sc); trgFilter.add(sc.trgFilter); } }
@Override public Filter visitAfter(Filter filter) { if (filter.isTakesSingleValue() || filter.isTakesListOfValues()) { return Filter.and(filter, Filter.isNotNull(filter.getProperty())); } else { return filter; } } }, false);
/** * Modify the search by adding the given filters using OR semantics */ public static void mergeFiltersOr(IMutableSearch search, List<Filter> filters) { List<Filter> list = search.getFilters(); if (list == null) { list = new ArrayList<Filter>(); search.setFilters(list); } if (list.size() == 0 || search.isDisjunction()) { search.setDisjunction(true); list.addAll(filters); } else { search.setFilters(new ArrayList<Filter>()); // add the previous filters with an AND Filter orFilter = Filter.and(); orFilter.setValue(list); addFilter(search, orFilter); // add the new filters with or search.setDisjunction(true); search.getFilters().addAll(filters); } }
/** * @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 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); }
@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); }
/** * Add security filtering in order to filter out resources the user has not read access to */ public void addReadSecurityConstraints(Search searchCriteria, User user) { // no further constraints for admin user if(user.getRole() == Role.ADMIN) { return; } Filter userFiltering = Filter.equal("user.name", user.getName()); if(! user.getGroups().isEmpty()) { List<Long> groupsId = new ArrayList<>(); for (UserGroup group : user.getGroups()) { groupsId.add(group.getId()); } userFiltering = Filter.or( userFiltering, Filter.in("group.id", groupsId)); } Filter securityFilter = Filter.some( "security", Filter.and( Filter.equal("canRead", true), userFiltering ) ); searchCriteria.addFilter(securityFilter); }
trgFilter = Filter.some("attribute", Filter.and(Filter.equal("name", filter.getName()), new Filter(fieldValueName, value, trg_op)));