All Downloads are FREE. Search and download functionalities are using the official Maven repository.

xx.gaeds_2.9.2.0.2.0.source-code.Key.scala Maven / Gradle / Ivy

The newest version!
package com.github.hexx.gaeds

import scala.collection.JavaConverters._
import com.google.appengine.api.datastore.{ KeyFactory, Key => LLKey, KeyRange => LLKeyRange }

case class Key[T <: Mapper[T]: ClassManifest](val key: LLKey) extends Ordered[Key[T]] {
  assert(key != null)
  def id = key.getId
  def kind = key.getKind
  def name = key.getName
  def namespace = key.getNamespace
  def isComplete = key.isComplete
  def parent[U <: Mapper[U]: ClassManifest]: Option[Key[U]] = Option(key.getParent).map(Key[U](_))

  def get = Datastore.get(this)
  def getAync = Datastore.getAsync(this)
  def delete = Datastore.delete(this)
  def deleteAsync = Datastore.deleteAsync(this)
  def encode = Datastore.keyToString(this)
  def builder = Datastore.keyBuilder(this)

  def toWebSafeString = KeyFactory keyToString key

  override def toString = key.toString
  override def compare(that: Key[T]) = key compareTo that.key
}

object Key {
  def fromWebSafeString[T <: Mapper[T]: ClassManifest](s: String) = Key(KeyFactory stringToKey s)
}

case class KeyRange[T <: Mapper[T]: ClassManifest](range: LLKeyRange) extends Iterable[Key[T]] {
  override def iterator = range.iterator.asScala.map(Key(_))
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy