/* * Copyright (c) 2010 Mysema Ltd. * All rights reserved. * */ package com.mysema.rdfbean.sesame.query; import java.util.Arrays; import java.util.Collection; import org.junit.Before; import org.junit.Test; import com.mysema.query.types.Expression; import com.mysema.query.types.expr.BooleanExpression; import com.mysema.query.types.path.MapPath; import com.mysema.rdfbean.domains.SimpleDomain.SimpleType; import com.mysema.rdfbean.domains.SimpleDomain.SimpleType2; import com.mysema.rdfbean.sesame.SessionTestBase; import com.mysema.rdfbean.testutil.SessionConfig; @SessionConfig({ SimpleType.class, SimpleType2.class }) public class MapQueriesTest extends SessionTestBase { protected QSimpleType v1 = new QSimpleType("v1"); protected QSimpleType v2 = new QSimpleType("v2"); private SimpleType2 instance; @Before public void setUp() { instance = session.from(QSimpleType2.simpleType2).limit(1).uniqueResult(QSimpleType2.simpleType2); } @Test public void MapFilters() { for (BooleanExpression f : mapFilters(v1.mapProperty, v2.mapProperty, "", instance)) { System.err.println("\n" + f); session.from(v1, v2).where(f).list(v1.directProperty); } } @Test public void MapProjections() { for (Expression<?> pr : mapProjections(v1.mapProperty, v2.mapProperty, "", instance)) { System.err.println("\n" + pr); session.from(v1, v2).list(pr); } } private static <K, V> Collection<BooleanExpression> mapFilters(MapPath<K, V, ?> expr, MapPath<K, V, ?> other, K knownKey, V knownValue) { return Arrays.<BooleanExpression> asList( expr.isEmpty(), expr.isNotEmpty(), expr.containsKey(knownKey), expr.containsValue(knownValue), expr.get(knownKey).eq(knownValue) ); } private static <K, V> Collection<Expression<?>> mapProjections(MapPath<K, V, ?> expr, MapPath<K, V, ?> other, K knownKey, V knownValue) { return Arrays.<Expression<?>> asList( expr.get(knownKey) ); } }