src/main/scala/radview/model/Cdr.scala
author Tomas Zeman <tzeman@volny.cz>
Sun, 03 Apr 2011 15:55:02 +0200
changeset 2 cf829ec742b3
child 7 6e3d323f9ec5
permissions -rw-r--r--
Main project functionality
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     1
/*
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     2
 * Copyright 2011 Tomas Zeman <tzeman@volny.cz>
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     3
 *
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     4
 * Licensed under the Apache License, Version 2.0 (the "License");
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     5
 * you may not use this file except in compliance with the License.
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     6
 * You may obtain a copy of the License at
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     7
 *
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     8
 *     http://www.apache.org/licenses/LICENSE-2.0
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     9
 *
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    10
 * Unless required by applicable law or agreed to in writing, software
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    11
 * distributed under the License is distributed on an "AS IS" BASIS,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    13
 * See the License for the specific language governing permissions and
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    14
 * limitations under the License.
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    15
 */
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    16
package radview.model
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    17
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    18
import java.util.Date
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    19
import net.liftweb.common._
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    20
import net.liftweb.mapper._
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    21
import radview.snippet.SessionSnippet
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    22
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    23
/*
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    24
  Table: v_radacct
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    25
 */
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    26
object Cdr extends Cdr with LongKeyedMetaMapper[Cdr] with Loggable {
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    27
  override def dbTableName = "v_radacct"
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    28
  override def dbDefaultConnectionIdentifier = RadAcctConnectionIdentifier
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    29
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    30
  def bySession(s: CdrSession) = findAll(By(sid, s.sid),
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    31
    OrderBy(radacctid, Ascending))
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    32
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    33
  def fieldsForList = List(sid, ts, inBytes, outBytes, statusType, acctuniqueid,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    34
    username, groupname, realm, nasipaddress, nasportid, nasporttype,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    35
    acctsessiontime, acctauthentic, serviceType, framedProto, framedIp,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    36
    statusType, cell)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    37
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    38
  import java.sql.{Date => SqlDate}
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    39
  implicit def d2sqlD(d: Date): SqlDate = new SqlDate(d.getTime)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    40
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    41
  private def diff(col: MappedField[_, _]) = String.format(
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    42
    "MAX(%1$s) - MIN(%1$s) AS %1$s", col.dbColumnName)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    43
  private def min(col: MappedField[_, _]) = String.format(
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    44
    "MIN(%1$s) AS %1$s", col.dbColumnName)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    45
  private def max(col: MappedField[_, _]) = String.format(
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    46
    "MAX(%1$s) AS %1$s", col.dbColumnName)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    47
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    48
  def sessions(from: Date, to: Date, field: MappedField[_, Cdr],
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    49
    value: String) = findAllByPreparedStatement { sc =>
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    50
      val selectS = List(sid.dbColumnName, diff(inBytes), diff(outBytes))
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    51
      val sql = String.format(
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    52
        "SELECT %s FROM %s WHERE %s = ? AND %s BETWEEN ? AND ? GROUP BY %s",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    53
        selectS mkString ",", dbTableName, field.dbColumnName,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    54
        ts.dbColumnName, sid.dbColumnName)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    55
      logger.debug(sql + "; params: " + from + ", " + to + ", " +
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    56
        field.dbColumnName + "=" + value)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    57
      val stm = sc.connection.prepareStatement(sql)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    58
      stm.setString(1, value)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    59
      stm.setDate(2, from)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    60
      stm.setDate(3, to)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    61
      stm
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    62
    }
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    63
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    64
  def session(sessionId: String): Box[CdrSession] =
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    65
    Box(sessions(List(sessionId)))
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    66
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    67
  def sessions(sessionIds: List[String]): List[CdrSession] = sessionIds match {
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    68
    case Nil => Nil
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    69
    case xs =>
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    70
      val cdr1 = findAllByPreparedStatement { sc =>
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    71
        val selectS = List(sid.dbColumnName, diff(inBytes), diff(outBytes),
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    72
          min(radacctid), max(ts))
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    73
        val sql = String.format(
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    74
          "SELECT %s FROM %s WHERE %s IN (%s) GROUP BY %s",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    75
          selectS.mkString(","), dbTableName, sid.dbColumnName,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    76
          sessionIds.map(r=>"?").mkString(","), sid.dbColumnName)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    77
        logger.debug(sql)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    78
        val stm = sc.connection.prepareStatement(sql)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    79
        sessionIds.zipWithIndex.map { r => stm.setString(r._2 + 1, r._1) }
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    80
        stm
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    81
      }
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    82
      val cdr2 = Cdr.findAll(ByList(radacctid, cdr1 map { _.radacctid.is }))
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    83
      val tsMap = Map[String, Cdr]() ++ (cdr2 map { c => (c.sid.is, c) })
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    84
      for {
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    85
        c1 <- cdr1
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    86
        c2 <- tsMap.get(c1.sid.is)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    87
      } yield {
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    88
        CdrSession(c1.sid, c2.ts, c1.ts, c1.inBytes, c1.outBytes, c2.cell)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    89
      }
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    90
  }
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    91
}
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    92
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    93
class Cdr extends LongKeyedMapper[Cdr] with CellAware {
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    94
  def getSingleton = Cdr
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    95
  def primaryKeyField = radacctid
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    96
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    97
  object radacctid extends MappedLongIndex(this) {
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    98
    override def dbColumnName = "radacctid"
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    99
  }
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   100
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   101
  object sid extends MappedPoliteStringColName(this, 64, "acctsessionid",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   102
    "Session Id") {
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   103
    override def asHtml =
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   104
      <a href={SessionSnippet.url(is)}>{super.asHtml}</a>
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   105
  }
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   106
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   107
  object acctuniqueid extends MappedPoliteStringColName(this, 32,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   108
    "acctuniqueid", "Unique Id")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   109
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   110
  object username extends MappedPoliteStringColName(this, 64, "username",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   111
    "User")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   112
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   113
  object groupname extends MappedPoliteStringColName(this, 64, "groupname",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   114
    "Group")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   115
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   116
  object realm extends MappedPoliteStringColName(this, 64, "realm", "Realm")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   117
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   118
  object nasipaddress extends MappedPoliteStringColName(this, 15,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   119
    "nasipaddress", "NAS IP")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   120
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   121
  object nasportid extends MappedPoliteStringColName(this, 15, "nasportid",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   122
    "NAS Port Id")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   123
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   124
  object nasporttype extends MappedPoliteStringColName(this, 32,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   125
    "nasporttype", "NAS Port Type")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   126
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   127
  object acctsessiontime extends MappedIntColName(this, "acctsessiontime",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   128
    "Session Time")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   129
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   130
  object acctauthentic extends MappedPoliteStringColName(this, 32,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   131
    "acctauthentic", "Authenticator")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   132
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   133
  object inBytes extends MappedLongColName(this, "acctinputoctets",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   134
    "Input bytes")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   135
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   136
  object outBytes extends MappedLongColName(this, "acctoutputoctets",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   137
    "Output bytes")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   138
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   139
  object calledNo extends MappedPoliteStringColName(this, 50,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   140
    "calledstationid", "Called No.")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   141
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   142
  object callingNo extends MappedLongColName(this, "callingstationid",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   143
    "Calling No.")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   144
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   145
  object termCause extends MappedPoliteStringColName(this, 32,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   146
    "acctterminatecause", "Termination Cause")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   147
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   148
  object serviceType extends MappedPoliteStringColName(this, 32,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   149
    "servicetype", "Service Type")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   150
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   151
  object framedProto extends MappedPoliteStringColName(this, 32,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   152
    "framedprotocol", "Framed Protocol")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   153
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   154
  object framedIp extends MappedPoliteStringColName(this, 15,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   155
    "framedipaddress", "Framed IP")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   156
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   157
  object startDelay extends MappedIntColName(this, "acctstartdelay",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   158
    "Start Delay")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   159
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   160
  object stopDelay extends MappedIntColName(this, "acctstopdelay",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   161
    "Stop Delay")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   162
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   163
  object corrId extends MappedPoliteStringColName(this, 64,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   164
    "3GPP2_Correlation_Id", "3GPP2 Correlation Id")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   165
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   166
  object statusType extends MappedPoliteStringColName(this, 15,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   167
    "Acct_Status_Type", "Status Type")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   168
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   169
  object ts extends MappedDateTime(this) {
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   170
    override def dbColumnName = "Event_Timestamp"
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   171
    override def displayName = "Timestamp"
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   172
  }
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   173
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   174
  object releaseInd extends MappedIntColName(this, "3GPP2_Release_Indicator",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   175
    "3GPP2 Release Indicator")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   176
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   177
  object activeTime extends MappedIntColName(this, "3GPP2_Active_Time",
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   178
    "3GPP2 Active Time")
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   179
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   180
}
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   181
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   182
case class CdrSession(sid: String, start: Date, end: Date, inBytes: Long,
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   183
  outBytes: Long, cellId: String) {
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   184
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   185
  def cell: Box[Cell] = Cell.findByKey(cellId)
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   186
}
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   187
cf829ec742b3 Main project functionality
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   188
// vim: set ts=2 sw=2 et: