package org.llittlewings.hazelcast.indexing; import java.util.Arrays; import java.util.Collection; import java.util.List; import com.hazelcast.core.IMap; import com.hazelcast.core.PartitionService; import com.hazelcast.query.SqlPredicate; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; public class QueryTest extends HazelcastTestSupport { @Test public void testQuery() { List<Book> books = Arrays.asList( new Book("978-4774169316", "Javaエンジニア養成読本", 2138), new Book("978-4798124605", "Beginning Java EE 6 GlassFish 3で始めるエンタープライズJava", 4536), new Book("978-4873117188", "Javaパフォーマンス", 4212) ); withHazelcast(3, hazelcast -> { IMap<String, Book> map = hazelcast.getMap("default"); books.stream().forEach(b -> map.put(b.getIsbn(), b)); PartitionService ps = hazelcast.getPartitionService(); System.out.printf( "%s:%s => %s%n", "978-4774169316", "Javaエンジニア養成読本", ps.getPartition("978-4774169316").getOwner() ); System.out.printf( "%s:%s => %s%n", "978-4798124605", "Beginning Java EE 6 GlassFish 3で始めるエンタープライズJava", ps.getPartition("978-4798124605").getOwner() ); System.out.printf( "%s:%s => %s%n", "978-4873117188", "Javaパフォーマンス", ps.getPartition("978-4873117188").getOwner() ); SqlPredicate titleQuery = new SqlPredicate("title = 'Javaエンジニア養成読本'"); Collection<Book> booksByTitleQuery = map.values(titleQuery); assertThat(booksByTitleQuery) .hasSize(1) .containsOnly(new Book("978-4774169316", "Javaエンジニア養成読本", 2138)); SqlPredicate titleWithLikeQuery = new SqlPredicate("title LIKE '%Java%' AND title LIkE '%養成読本'"); Collection<Book> booksByTitleWithLikeQuery = map.values(titleWithLikeQuery); assertThat(booksByTitleWithLikeQuery) .hasSize(1) .containsOnly(new Book("978-4774169316", "Javaエンジニア養成読本", 2138)); SqlPredicate priceQuery = new SqlPredicate("price > 4000"); Collection<Book> booksByPriceQuery = map.values(priceQuery); assertThat(booksByPriceQuery) .hasSize(2) .containsSequence( new Book("978-4873117188", "Javaパフォーマンス", 4212), new Book("978-4798124605", "Beginning Java EE 6 GlassFish 3で始めるエンタープライズJava", 4536) ); }); } }