# HG changeset patch # User Tomas Zeman # Date 1302788144 -7200 # Node ID 930d0b9e5169f7a9a2d0f10ee3a4fa07788f4c29 # Parent 2637add66b57ff687cf999c8d264a7a012da2124 e367ba493db4fdaf Release Indicator - relevant only for Stop packets diff -r 2637add66b57 -r 930d0b9e5169 src/main/scala/radview/model/Cdr.scala --- a/src/main/scala/radview/model/Cdr.scala Tue Apr 12 19:16:13 2011 +0200 +++ b/src/main/scala/radview/model/Cdr.scala Thu Apr 14 15:35:44 2011 +0200 @@ -69,7 +69,7 @@ case xs => val cdr1 = findAllByPreparedStatement { sc => val selectS = List(sid.dbColumnName, diff(inBytes), diff(outBytes), - min(radacctid), max(ts)) + max(radacctid), min(ts)) val sql = String.format( "SELECT %s FROM %s WHERE %s IN (%s) GROUP BY %s", selectS.mkString(","), dbTableName, sid.dbColumnName, @@ -85,8 +85,7 @@ c1 <- cdr1 c2 <- tsMap.get(c1.sid.is) } yield { - CdrSession(c1.sid, c2.ts, c1.ts, c1.inBytes, c1.outBytes, c2.cell, - c2.callingNo) + CdrSession(c1.sid, c1.ts, c2.ts, c1.inBytes, c1.outBytes, c2) } } } @@ -174,7 +173,10 @@ object releaseInd extends MappedIntColName(this, "3GPP2_Release_Indicator", "3GPP2 Release Indicator") { - override def asHtml = Text(ReleaseIndicator.lookup(is).openOr(is.toString)) + override def asHtml = Text(statusType.is.toLowerCase match { + case "stop" => ReleaseIndicator.lookup(is).openOr(is.toString) + case _ => "" + }) } object activeTime extends MappedIntColName(this, "3GPP2_Active_Time", @@ -191,9 +193,9 @@ } case class CdrSession(sid: String, start: Date, end: Date, inBytes: Long, - outBytes: Long, cellId: String, callingNo: Long) { + outBytes: Long, stop: Cdr) { - def cell: Box[Cell] = Cell.findByKey(cellId) + def cell: Box[Cell] = stop.cell.obj } // vim: set ts=2 sw=2 et: diff -r 2637add66b57 -r 930d0b9e5169 src/main/scala/radview/snippet/SessionSnippet.scala --- a/src/main/scala/radview/snippet/SessionSnippet.scala Tue Apr 12 19:16:13 2011 +0200 +++ b/src/main/scala/radview/snippet/SessionSnippet.scala Thu Apr 14 15:35:44 2011 +0200 @@ -87,8 +87,11 @@ ) map { r: (String, Any) => AttrRow(Text(r._1), Text(r._2.toString)) } - Panel(l1 :+ AttrRow(Text("Cell"), s.cell.map { c => - A(CellSnippet.url(CellView(c)), c.btsName.is) } openOr NodeSeq.Empty)) + val l2 = s.cell.toList.flatMap { c => List( + AttrRow(Text("Cell"), s.stop.cell.asHtml), + AttrRow(Text(Cdr.releaseInd.displayName), s.stop.releaseInd.asHtml) + )} + Panel(l1 ++ l2) } } @@ -97,7 +100,7 @@ object CdrSessionTable { def apply(l: Iterable[CdrSession]): (NodeSeq => NodeSeq) = { val accounts: Map[String, RadCheckSub] = Map() ++ - (RadCheckSub.byImsi(l.map { _.callingNo.toString }.toList.distinct). + (RadCheckSub.byImsi(l.map { _.stop.callingNo.toString }.toList.distinct). map { r => (r.imsi.is, r) }) Table[CdrSession](List( @@ -110,7 +113,7 @@ Column(Cdr.outBytes.displayName + " [MB]", { s: CdrSession => Bytes.mb(s.outBytes) }, "td-right"), Column(RadCheckSub.imsi.displayName, - { s: CdrSession => accounts.get(s.callingNo.toString).map { r => + { s: CdrSession => accounts.get(s.stop.callingNo.toString).map { r => A(AccountSnippet.url(ViewAccount(r)), r.imsi.asHtml) } getOrElse NodeSeq.Empty }) ), l)