This commit is contained in:
Timo Westkämper 2010-09-16 15:24:51 +00:00
parent 2e87b8523b
commit 20f752d809
3 changed files with 71 additions and 17 deletions

View File

@ -52,8 +52,7 @@ class PathFactoryImpl extends PathFactory {
// TODO
def createArrayPath[T](t: Class[Array[T with Object]], md: PathMetadata[_]) = null;
// TODO
def createEntityPath[T](t: Class[T], md: PathMetadata[_]) = Paths.simple(t, md);
def createEntityPath[T](t: Class[T], md: PathMetadata[_]) = Paths.entity(t, md);
def createSimplePath[T](t: Class[T], md: PathMetadata[_]) = Paths.simple(t, md);
@ -73,16 +72,12 @@ class PathFactoryImpl extends PathFactory {
def createStringPath(md: PathMetadata[_]) = Paths.string(md);
// TODO
def createListPath[T](t: Class[T], md: PathMetadata[_]) = null;
def createListPath[T](t: Class[T], md: PathMetadata[_]) = Paths.list(t, md);
// TODO
def createSetPath[T](t: Class[T], md: PathMetadata[_]) = null;
def createSetPath[T](t: Class[T], md: PathMetadata[_]) = Paths.set(t, md);
// TODO
def createCollectionPath[T](t: Class[T], md: PathMetadata[_]) = null;
def createCollectionPath[T](t: Class[T], md: PathMetadata[_]) = Paths.collection(t, md);
// TODO
def createMapPath[K,V](k: Class[K], v: Class[V], md: PathMetadata[_]) = null;
def createMapPath[K,V](k: Class[K], v: Class[V], md: PathMetadata[_]) = Paths.map(k, v, md);
}

View File

@ -59,7 +59,27 @@ trait SimpleExpression[T] extends Expression[T] {
}
trait CollectionExpression[T] extends SimpleExpression[T] {
trait CollectionExpression[T] extends SimpleExpression[java.util.Collection[T]] {
// TODO
}
trait SetExpression[T] extends SimpleExpression[java.util.Set[T]] {
// TODO
}
trait ListExpression[T] extends SimpleExpression[java.util.List[T]] {
// TODO
}
trait MapExpression[K,V] extends SimpleExpression[java.util.Map[K,V]] {
// TODO
}

View File

@ -11,6 +11,16 @@ object Paths {
def simple[T](t: Class[_ <: T], md: PathMetadata[_]) = new SimplePath[T](t, md);
def entity[T](t: Class[_ <: T], md: PathMetadata[_]) = new EntityPathImpl[T](t, md);
def collection[T](t: Class[_ <: T], md: PathMetadata[_]) = new CollectionPath[T](t, md);
def set[T](t: Class[_ <: T], md: PathMetadata[_]) = new SetPath[T](t, md);
def list[T](t: Class[_ <: T], md: PathMetadata[_]) = new ListPath[T](t, md);
def map[K,V](k: Class[_ <: K], v: Class[_ <: V], md: PathMetadata[_]) = new MapPath[K,V](k, v, md);
def comparable[T <: Comparable[_]](t: Class[_ <: T], md: PathMetadata[_]) = new ComparablePath[T](t, md);
def date[T <: Comparable[_]](t: Class[_ <: T], md: PathMetadata[_]) = new DatePath[T](t, md);
@ -35,6 +45,41 @@ class SimplePath[T](t: Class[_ <: T], md: PathMetadata[_] )
}
class EntityPathImpl[T](t: Class[_ <: T], md: PathMetadata[_] )
extends PathImpl[T](t, md) with SimpleExpression[T] with EntityPath[T] {
def this(t: Class[_ <: T], variable: String) = this(t, forVariable(variable));
}
class CollectionPath[T](t: Class[_ <: T], md: PathMetadata[_] )
extends PathImpl[java.util.Collection[T]](classOf[java.util.Collection[T]], md) with CollectionExpression[T]{
def this(t: Class[_ <: T], variable: String) = this(t, forVariable(variable));
}
class SetPath[T](t: Class[_ <: T], md: PathMetadata[_] )
extends PathImpl[java.util.Set[T]](classOf[java.util.Set[T]], md) with SetExpression[T]{
def this(t: Class[_ <: T], variable: String) = this(t, forVariable(variable));
}
class ListPath[T](t: Class[_ <: T], md: PathMetadata[_] )
extends PathImpl[java.util.List[T]](classOf[java.util.List[T]], md) with ListExpression[T]{
def this(t: Class[_ <: T], variable: String) = this(t, forVariable(variable));
}
class MapPath[K,V](k: Class[_ <: K], v: Class[_ <: V], md: PathMetadata[_] )
extends PathImpl[java.util.Map[K,V]](classOf[java.util.Map[K,V]], md) with MapExpression[K,V]{
def this(k: Class[_ <: K], v: Class[_ <: V], variable: String) = this(k, v, forVariable(variable));
}
class ComparablePath[T <: Comparable[_]](t: Class[_ <: T], md: PathMetadata[_] )
extends PathImpl[T](t, md) with ComparableExpression[T]{
@ -89,9 +134,3 @@ class EnumPath[T <: Enum[T]](t: Class[_ <: T], md: PathMetadata[_] )
def this(t: Class[_ <: T], variable: String) = this(t, forVariable(variable));
}
// TODO : ListPath
// TODO : SetPath
// TODO : CollectionPath