From dcb28b4c8a3c3190001a2459bc36a607799d02f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Wed, 16 Nov 2011 19:59:51 +0200 Subject: [PATCH] added more wrapper types --- querydsl-scala/.cache | Bin 0 -> 31346 bytes querydsl-scala/pom.xml | 2 +- .../com/mysema/query/scala/Helpers.scala | 51 ++++++++++++++++++ .../com/mysema/query/scala/Queries.scala | 28 ---------- .../{QueriesTest.scala => HelpersTest.scala} | 2 +- 5 files changed, 53 insertions(+), 30 deletions(-) create mode 100644 querydsl-scala/.cache create mode 100644 querydsl-scala/src/main/scala/com/mysema/query/scala/Helpers.scala delete mode 100644 querydsl-scala/src/main/scala/com/mysema/query/scala/Queries.scala rename querydsl-scala/src/test/scala/com/mysema/query/scala/{QueriesTest.scala => HelpersTest.scala} (95%) diff --git a/querydsl-scala/.cache b/querydsl-scala/.cache new file mode 100644 index 0000000000000000000000000000000000000000..df3c359d062dd545e783d9728eeb7456361e91df GIT binary patch literal 31346 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 - 2.8.1 + 2.9.1 3.5.1-Final 4.0.2.GA diff --git a/querydsl-scala/src/main/scala/com/mysema/query/scala/Helpers.scala b/querydsl-scala/src/main/scala/com/mysema/query/scala/Helpers.scala new file mode 100644 index 000000000..25b5e0cd4 --- /dev/null +++ b/querydsl-scala/src/main/scala/com/mysema/query/scala/Helpers.scala @@ -0,0 +1,51 @@ +package com.mysema.query.scala + +import scala.collection.JavaConversions._ +import com.mysema.query._ +import com.mysema.query.types._ + +object Helpers { + + implicit def toRichSimpleProjectable[T](p: SimpleProjectable[T]) = new RichSimpleProjectable(p) + + implicit def toRichProjectable(p: Projectable) = new RichProjectable(p) + +} + +class RichSimpleProjectable[T](private val p: SimpleProjectable[T]) { + + def select: List[T] = p.list.toList + + def single: Option[T] = Option(p.singleResult()) + + def unique: Option[T] = Option(p.uniqueResult()) + +} + +class RichProjectable(private val p: Projectable) { + + def select[T](expr: Expression[T]): List[T] = p.list(expr).toList + + def select[T,U](expr1: Expression[T], expr2: Expression[U]): List[(T,U)] = { + p.list(expr1, expr2).toList map(r => (r(0).asInstanceOf[T], r(1).asInstanceOf[U])) + } + + def select[T,U,V](expr1: Expression[T], expr2: Expression[U], expr3: Expression[V]): List[(T,U,V)] = { + p.list(expr1, expr2, expr3).toList map(r => (r(0).asInstanceOf[T], r(1).asInstanceOf[U], r(2).asInstanceOf[V])) + } + + def select[T,U,V,W](expr1: Expression[T], expr2: Expression[U], expr3: Expression[V], expr4: Expression[W]): List[(T,U,V,W)] = { + p.list(expr1, expr2, expr3, expr4) + .map(r => (r(0).asInstanceOf[T], r(1).asInstanceOf[U], r(2).asInstanceOf[V], r(3).asInstanceOf[W])).toList + } + + // TODO : generalize this + def selectGrouped[K,T,V](expr1: Expression[K], expr2: Expression[T], expr3: Expression[V]): List[(T,List[V])] = { + select(expr1, expr2, expr3).groupBy(_._1).map(_._2).map(r => (r(0)._2, r.map(_._3))).toList + } + + def single[T](expr: Expression[T]): Option[T] = Option(p.singleResult(expr)) + + def unique[T](expr: Expression[T]): Option[T] = Option(p.uniqueResult(expr)) + +} diff --git a/querydsl-scala/src/main/scala/com/mysema/query/scala/Queries.scala b/querydsl-scala/src/main/scala/com/mysema/query/scala/Queries.scala deleted file mode 100644 index c6dfb8ca5..000000000 --- a/querydsl-scala/src/main/scala/com/mysema/query/scala/Queries.scala +++ /dev/null @@ -1,28 +0,0 @@ -package com.mysema.query.scala; - -import com.mysema.query._; -import com.mysema.query.types._; - -object Queries { - - implicit def toScalaProjectable(qry: Projectable) = new ScalaProjectable(qry) - - implicit def toScalaProjectable[T](qry: SimpleProjectable[T]) = new SimpleScalaProjectable[T](qry); - -} - -class ScalaProjectable(val qry: Projectable) { - - def unique[T](e: Expression[T]) = Option(qry.uniqueResult(e)) - - def single[T](e: Expression[T]) = Option(qry.singleResult(e)) - -} - -class SimpleScalaProjectable[T](val qry: SimpleProjectable[T]) { - - def unique = Option(qry.uniqueResult()) - - def single = Option(qry.singleResult()) - -} \ No newline at end of file diff --git a/querydsl-scala/src/test/scala/com/mysema/query/scala/QueriesTest.scala b/querydsl-scala/src/test/scala/com/mysema/query/scala/HelpersTest.scala similarity index 95% rename from querydsl-scala/src/test/scala/com/mysema/query/scala/QueriesTest.scala rename to querydsl-scala/src/test/scala/com/mysema/query/scala/HelpersTest.scala index 502eb6657..53a06422d 100644 --- a/querydsl-scala/src/test/scala/com/mysema/query/scala/QueriesTest.scala +++ b/querydsl-scala/src/test/scala/com/mysema/query/scala/HelpersTest.scala @@ -2,7 +2,7 @@ package com.mysema.query.scala; //import com.mysema.query._ import com.mysema.query.types._ -import com.mysema.query.scala.Queries._ +import com.mysema.query.scala.Helpers._ import com.mysema.query.scala.Conversions._ import com.mysema.query.jpa.impl.JPAQuery