1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.project;
\r
14 import java.util.Set;
\r
16 import org.simantics.project.features.registry.GroupReference;
\r
19 * Utilities for constructing {@link GroupFilter} instances.
\r
21 * @author Tuukka Lehtonen
\r
23 public final class GroupFilters {
\r
25 public static GroupFilter constant(final boolean answer) {
\r
26 return new GroupFilter() {
\r
28 public boolean accept(GroupReference ref) {
\r
34 private static final GroupFilter ACCEPT_ALL = constant(true);
\r
35 private static final GroupFilter DENY_ALL = constant(false);
\r
37 public static GroupFilter acceptAll() {
\r
41 public static GroupFilter denyAll() {
\r
46 * Constructs a group filter that accepts only equal matches of all the
\r
47 * group references provided in the argument set.
\r
49 * @param refs the group references to accept
\r
50 * @return a filter accepting the specified set of group references
\r
52 public static GroupFilter containsEqual(final Set<GroupReference> refs) {
\r
53 return new GroupFilter() {
\r
55 public boolean accept(GroupReference ref) {
\r
56 return refs.contains(ref);
\r
62 * Constructs a group filter that accepts groups that include one or
\r
63 * more of the specified groups. Inclusion means that:
\r
65 * <li>group ID's are equal</li>
\r
66 * <li>if tested group has a version or version range it must include
\r
67 * the version in the group of the specified set</li>
\r
73 public static GroupFilter includesVersion(final Set<GroupReference> refs) {
\r
74 return new GroupFilter() {
\r
76 public boolean accept(GroupReference range) {
\r
77 for (GroupReference ref : refs)
\r
78 if (range.includes(ref))
\r