# HG changeset patch # User Tomas Zeman # Date 1328863982 -3600 # Node ID ce369fc04c277732fdfdb80cab5dbc8bf3a385cf # Parent 3c3845bff3411417868b086308fd50a15093e3be d80ede6fc2b87b73 Base entity diff -r 3c3845bff341 -r ce369fc04c27 .vimrc --- 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 diff -r 3c3845bff341 -r ce369fc04c27 project/build/FisProject.scala --- 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 diff -r 3c3845bff341 -r ce369fc04c27 src/main/scala/fis/base/model/Entity.scala --- /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 + * + * 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: