d80ede6fc2b87b73 Base entity
authorTomas Zeman <tzeman@volny.cz>
Fri, 10 Feb 2012 09:53:02 +0100
changeset 3 ce369fc04c27
parent 2 3c3845bff341
child 4 bb4478e1cff7
d80ede6fc2b87b73 Base entity
.vimrc
project/build/FisProject.scala
src/main/scala/fis/base/model/Entity.scala
--- a/.vimrc	Tue May 03 12:16:30 2011 +0200
+++ b/.vimrc	Fri Feb 10 09:53:02 2012 +0100
@@ -1,6 +1,6 @@
 set backupdir=~/tmp
 set directory=~/tmp
-set tags=tags,~/scala-2.8.1.tags,~/lift-2.3.tags,~/joda-time-1.6.2.tags,~/jse6.tags
+set tags=tags,~/scala-2.8.1.tags,~/lift-2.3.tags,~/joda-time-1.6.2.tags,~/squeryl-0.9.4-RC6.tags,~/jse6.tags
 set et
 set ts=2
 set sw=2
--- a/project/build/FisProject.scala	Tue May 03 12:16:30 2011 +0200
+++ b/project/build/FisProject.scala	Fri Feb 10 09:53:02 2012 +0100
@@ -31,7 +31,7 @@
   val jetty6 = "org.mortbay.jetty" % "jetty" % "6.1.23" % "test"
 
   // testing
-  val scalatest = "org.scalatest" % "scalatest" % "1.1" % "test"
+  val scalatest = "org.scalatest" % "scalatest" % "1.3" % "test"
   val h2 = "com.h2database" % "h2" % "1.2.142" % "test"
 
   // use local mvn repo
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/scala/fis/base/model/Entity.scala	Fri Feb 10 09:53:02 2012 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2011 Tomas Zeman <tzeman@volny.cz>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package fis.base.model
+
+import net.liftweb.record.Record
+import net.liftweb.record.field._
+import net.liftweb.squerylrecord.KeyedRecord
+import org.squeryl.annotations.Column
+
+/**
+ * Base data/model entity trait, common for all FIS entities.
+ */
+trait Entity[OwnerType <: Record[OwnerType]] extends KeyedRecord[Long] {
+  @Column(name="id")
+  val idField = new LongField(this.asInstanceOf[OwnerType])
+  val name = new StringField(this.asInstanceOf[OwnerType], "")
+  val note = new OptionalTextareaField(this.asInstanceOf[OwnerType], 10240)
+
+  /** Display representation of this entity. */
+  def linkName = name.get
+}
+
+import net.liftweb.common.Box
+import net.liftweb.squerylrecord.RecordTypeMode._
+import org.squeryl.Table
+
+/**
+ * Base meta entity definitions.
+ */
+trait MetaEntity[T <: Entity[_]] {
+
+  def getTable: Table[T]
+
+  def findByKey(id: Long): Box[T] = getTable.lookup(id)
+}
+
+/**
+ * Generic FIS entity holder.
+ */
+trait EntityHolder[T <: Entity[_]] {
+  def entity: T
+}
+
+/**
+ * Converter interface mixin.
+ */
+trait Converter0[T] {
+  def cvt: T
+}
+
+/**
+ * Generic converter interface.
+ */
+trait Converter1[F,T] {
+  def cvt(f: F): T
+}
+
+// vim: set ts=2 sw=2 et: