Skip to content

Commit 021bb0b

Browse files
committed
add freeze and unfreeze view port messages
1 parent 836efc4 commit 021bb0b

8 files changed

Lines changed: 87 additions & 1 deletion

File tree

vuu/src/main/scala/org/finos/vuu/client/ClientHelperFns.scala

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,14 @@ object ClientHelperFns {
6666
vsClient.send(JsonViewServerMessage(requestId, sessionId, token, user, DisableViewPortRequest(vpId)))
6767
}
6868

69+
def freezeViewPort(sessionId: String, token: String, user: String, requestId: String, vpId: String)(implicit vsClient: ViewServerClient): Unit = {
70+
vsClient.send(JsonViewServerMessage(requestId, sessionId, token, user, FreezeViewPortRequest(vpId)))
71+
}
72+
73+
def unfreezeViewPort(sessionId: String, token: String, user: String, requestId: String, vpId: String)(implicit vsClient: ViewServerClient): Unit = {
74+
vsClient.send(JsonViewServerMessage(requestId, sessionId, token, user, UnfreezeViewPortRequest(vpId)))
75+
}
76+
6977
def closeTreeNodeAsync(sessionId: String, token: String, user: String, requestId: String, vpId: String, treeKey: String)(implicit vsClient: ViewServerClient): Unit = {
7078
vsClient.send(JsonViewServerMessage(requestId, sessionId, token, user, CloseTreeNodeRequest(vpId, treeKey)))
7179
}
@@ -79,7 +87,7 @@ object ClientHelperFns {
7987
}
8088

8189
def rpcTableUpdate(sessionId: String, token: String, user: String, table: ViewPortTable, key: String, data: Map[String, Any])(implicit vsClient: ViewServerClient): Unit = {
82-
vsClient.send(JsonViewServerMessage(RequestId.oneNew().toString, sessionId, token, user, RpcUpdate(table, key, data)))
90+
vsClient.send(JsonViewServerMessage(RequestId.oneNew(), sessionId, token, user, RpcUpdate(table, key, data)))
8391
}
8492

8593
def getViewPortMenusAsync(sessionId: String, token: String, user: String, vpId: String)(implicit vsClient: ViewServerClient): Unit = {

vuu/src/main/scala/org/finos/vuu/core/CoreServerApiHandler.scala

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,28 @@ class CoreServerApiHandler(val viewPortContainer: ViewPortContainer,
170170
}
171171
}
172172

173+
override def process(msg: FreezeViewPortRequest)(ctx: RequestContext): Option[ViewServerMessage] = {
174+
Try(viewPortContainer.freezeViewPort(msg.viewPortId)) match {
175+
case Success(_) =>
176+
logger.debug("View port froze")
177+
vsMsg(FreezeViewPortSuccess(msg.viewPortId))(ctx)
178+
case Failure(e) =>
179+
logger.warn("Failed to freeze viewport", e)
180+
vsMsg(FreezeViewPortReject(msg.viewPortId))(ctx)
181+
}
182+
}
183+
184+
override def process(msg: UnfreezeViewPortRequest)(ctx: RequestContext): Option[ViewServerMessage] = {
185+
Try(viewPortContainer.unfreezeViewPort(msg.viewPortId)) match {
186+
case Success(_) =>
187+
logger.debug("View port unfroze")
188+
vsMsg(UnfreezeViewPortSuccess(msg.viewPortId))(ctx)
189+
case Failure(e) =>
190+
logger.warn("Failed to unfreeze viewport", e)
191+
vsMsg(UnfreezeViewPortReject(msg.viewPortId))(ctx)
192+
}
193+
}
194+
173195
def vsMsg(body: MessageBody)(ctx: RequestContext): Option[JsonViewServerMessage] = {
174196
Some(VsMsg(ctx.requestId, ctx.session.sessionId, ctx.token, ctx.session.user, body))
175197
}

vuu/src/main/scala/org/finos/vuu/net/ClientConnectionCreator.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ class DefaultMessageHandler(val channel: Channel,
145145
case req: RemoveViewPortRequest => serverApi.process(req)(ctx)
146146
case req: EnableViewPortRequest => serverApi.process(req)(ctx)
147147
case req: DisableViewPortRequest => serverApi.process(req)(ctx)
148+
case req: FreezeViewPortRequest => serverApi.process(req)(ctx)
149+
case req: UnfreezeViewPortRequest => serverApi.process(req)(ctx)
148150
case req: GetViewPortMenusRequest => serverApi.process(req)(ctx)
149151
case req: ViewPortMenuSelectionRpcCall => serverApi.process(req)(ctx)
150152
case req: ViewPortMenuRowRpcCall => serverApi.process(req)(ctx)

vuu/src/main/scala/org/finos/vuu/net/Messages.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,18 @@ case class EnableViewPortSuccess(viewPortId: String) extends MessageBody
102102

103103
case class EnableViewPortReject(viewPortId: String) extends MessageBody
104104

105+
case class FreezeViewPortRequest(viewPortId: String) extends MessageBody
106+
107+
case class FreezeViewPortSuccess(viewPortId: String) extends MessageBody
108+
109+
case class FreezeViewPortReject(viewPortId: String) extends MessageBody
110+
111+
case class UnfreezeViewPortRequest(viewPortId: String) extends MessageBody
112+
113+
case class UnfreezeViewPortSuccess(viewPortId: String) extends MessageBody
114+
115+
case class UnfreezeViewPortReject(viewPortId: String) extends MessageBody
116+
105117
case class ChangeViewPortRequest(viewPortId: String, columns: Array[String], sort: SortSpec = SortSpec(List()), groupBy: Array[String] = Array(), filterSpec: FilterSpec = null, aggregations: Array[Aggregations] = Array()) extends MessageBody
106118

107119
case class ChangeViewPortSuccess(viewPortId: String, columns: Array[String], sort: SortSpec = SortSpec(List()), groupBy: Array[String] = Array(), filterSpec: FilterSpec = null, aggregations: Array[Aggregations] = Array()) extends MessageBody

vuu/src/main/scala/org/finos/vuu/net/ServerApi.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ trait ServerApi {
77

88
def process(msg: EnableViewPortRequest)(ctx: RequestContext): Option[ViewServerMessage]
99

10+
def process(msg: FreezeViewPortRequest)(ctx: RequestContext): Option[ViewServerMessage]
11+
12+
def process(msg: UnfreezeViewPortRequest)(ctx: RequestContext): Option[ViewServerMessage]
13+
1014
def process(msg: ChangeViewPortRequest)(ctx: RequestContext): Option[ViewServerMessage]
1115

1216
def process(msg: CreateViewPortRequest)(ctx: RequestContext): Option[ViewServerMessage]

vuu/src/main/scala/org/finos/vuu/net/json/CoreJsonSerializationMixin.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ import org.finos.vuu.net._
1717
new Type(value = classOf[EnableViewPortRequest], name = "ENABLE_VP"),
1818
new Type(value = classOf[EnableViewPortSuccess], name = "ENABLE_VP_SUCCESS"),
1919
new Type(value = classOf[EnableViewPortReject], name = "ENABLE_VP_REJECT"),
20+
new Type(value = classOf[FreezeViewPortRequest], name = "FREEZE_VP"),
21+
new Type(value = classOf[FreezeViewPortSuccess], name = "FREEZE_VP_SUCCESS"),
22+
new Type(value = classOf[FreezeViewPortReject], name = "FREEZE_VP_REJECT"),
23+
new Type(value = classOf[UnfreezeViewPortRequest], name = "UNFREEZE_VP"),
24+
new Type(value = classOf[UnfreezeViewPortSuccess], name = "UNFREEZE_VP_SUCCESS"),
25+
new Type(value = classOf[UnfreezeViewPortReject], name = "UNFREEZE_VP_REJECT"),
2026
new Type(value = classOf[RemoveViewPortRequest], name = "REMOVE_VP"),
2127
new Type(value = classOf[RemoveViewPortSuccess], name = "REMOVE_VP_SUCCESS"),
2228
new Type(value = classOf[RemoveViewPortReject], name = "REMOVE_VP_REJECT"),

vuu/src/main/scala/org/finos/vuu/viewport/ViewPort.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ trait ViewPort {
7272

7373
def setEnabled(enabled: Boolean): Unit
7474

75+
def freeze(): Unit
76+
77+
def unfreeze(): Unit
78+
7579
def isEnabled: Boolean
7680

7781
def hasGroupBy: Boolean = getGroupBy != NoGroupBy
@@ -203,6 +207,14 @@ class ViewPortImpl(val id: String,
203207

204208
override def isEnabled: Boolean = this.enabled
205209

210+
override def freeze(): Unit = {
211+
212+
}
213+
214+
override def unfreeze(): Unit = {
215+
216+
}
217+
206218
@volatile
207219
private var viewPortVisualLink: Option[ViewPortVisualLink] = None
208220

vuu/src/main/scala/org/finos/vuu/viewport/ViewPortContainer.scala

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,26 @@ class ViewPortContainer(val tableContainer: TableContainer, val providerContaine
317317
}
318318
}
319319

320+
def freezeViewPort(vpId: String): Unit = {
321+
this.viewPorts.get(vpId) match {
322+
case null =>
323+
logger.error(s"Could not find viewport to freeze $vpId")
324+
case vp: ViewPort =>
325+
vp.freeze()
326+
logger.debug(s"Froze $vpId in container")
327+
}
328+
}
329+
330+
def unfreezeViewPort(vpId: String): Unit = {
331+
this.viewPorts.get(vpId) match {
332+
case null =>
333+
logger.error(s"Could not find viewport to unfreeze $vpId")
334+
case vp: ViewPort =>
335+
vp.unfreeze()
336+
logger.debug(s"Unfroze $vpId in container")
337+
}
338+
}
339+
320340
override def openGroupByKey(vpId: String, treeKey: String): String = {
321341
Try(this.openNode(vpId, treeKey)) match {
322342
case Success(_) => "Done"

0 commit comments

Comments
 (0)