import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import com.hazelcast.query.EntryObject;
import com.hazelcast.query.Predicate;
import com.hazelcast.query.PredicateBuilder;
import com.hazelcast.query.Predicates;
import java.util.HashSet;
import java.util.Set;
import static com.hazelcast.query.Predicates.and;
import static com.hazelcast.query.Predicates.equal;
import static com.hazelcast.query.Predicates.not;
import static com.hazelcast.query.Predicates.or;
@SuppressWarnings("unused")
public class PredicateMember {
private HazelcastInstance hz = Hazelcast.newHazelcastInstance();
private IMap<String, Person> personMap = hz.getMap("personMap");
public static void main(String[] args) {
new PredicateMember().run();
}
private void run() {
personMap.put("1", new Person("Peter", true, 36));
personMap.put("2", new Person("John", true, 50));
personMap.put("3", new Person("Marry", false, 20));
personMap.put("4", new Person("Mike", true, 35));
personMap.put("5", new Person("Rob", true, 60));
personMap.put("6", new Person("Jane", false, 43));
Set<Person> set = hz.getSet("foo");
Person p = new Person("Peter", true, 37);
set.add(p);
Person p1 = set.iterator().next();
Person p2 = set.iterator().next();
System.out.println("Get with name Peter");
for (Person person : getWithName("Peter")) {
System.out.println(person);
}
System.out.println("Get not with name Peter");
for (Person person : getNotWithName("Peter")) {
System.out.println(person);
}
System.out.println("Find name Peter and age 36");
for (Person person : getWithNameAndAge("Peter", 36)) {
System.out.println(person);
}
System.out.println("Find name Peter and age 37");
for (Person person : getWithNameAndAge("Peter", 37)) {
System.out.println(person);
}
}
private Set<Person> getWithNameNaive(String name) {
Set<Person> result = new HashSet<Person>();
for (Person person : personMap.values()) {
if (person.getName().equals(name)) {
result.add(person);
}
}
return result;
}
private Set<Person> getNotWithName(String name) {
Predicate namePredicate = equal("name", name);
Predicate predicate = not(namePredicate);
return (Set<Person>) personMap.values(predicate);
}
private Set<Person> getWithName(String name) {
Predicate predicate = Predicates.equal("name", name);
return (Set<Person>) personMap.values(predicate);
}
private Set<Person> getWithNameAndAgeSimplified(String name, int age) {
EntryObject e = new PredicateBuilder().getEntryObject();
Predicate predicate = e.get("name").equal(name).and(e.get("age").equal(age));
return (Set<Person>) personMap.values(predicate);
}
private Set<Person> getWithNameAndAge(String name, int age) {
Predicate namePredicate = equal("name", name);
Predicate agePredicate = equal("age", age);
Predicate predicate = and(namePredicate, agePredicate);
return (Set<Person>) personMap.values(predicate);
}
private Set<Person> getWithNameOrAge(String name, int age) {
Predicate namePredicate = equal("name", name);
Predicate agePredicate = equal("age", age);
Predicate predicate = or(namePredicate, agePredicate);
return (Set<Person>) personMap.values(predicate);
}
}