summaryrefslogtreecommitdiffstats
path: root/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/model/Result.java
blob: 216ae3af88a9c9f4b19bfb1d3bb339d78946b93f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*-
 * ============LICENSE_START==========================================
 * ONAP Portal
 * ===================================================================
 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 * ===================================================================
 *
 * Unless otherwise specified, all software contained herein is licensed
 * under the Apache License, Version 2.0 (the "License");
 * you may not use this software 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.
 *
 * Unless otherwise specified, all documentation contained herein is licensed
 * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
 * you may not use this documentation except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *             https://creativecommons.org/licenses/by/4.0/
 *
 * Unless required by applicable law or agreed to in writing, documentation
 * 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.
 *
 * ============LICENSE_END============================================
 *
 * 
 */
package org.onap.portalapp.model;

public class Result {
	private String result;
	
	public Result(String result) {
		this.result = result;
	}

	public String getResult() {
		return result;
	}

	public void setResult(String result) {
		this.result = result;
	}
	
}
r: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
/*-
 * ============LICENSE_START==========================================
 * ONAP Portal
 * ===================================================================
 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 * ===================================================================
 *
 * Unless otherwise specified, all software contained herein is licensed
 * under the Apache License, Version 2.0 (the "License");
 * you may not use this software 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.
 *
 * Unless otherwise specified, all documentation contained herein is licensed
 * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
 * you may not use this documentation except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *             https://creativecommons.org/licenses/by/4.0/
 *
 * Unless required by applicable law or agreed to in writing, documentation
 * 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.
 *
 * ============LICENSE_END============================================
 *
 * 
 */
'use strict';

(function () {
	
    class UserbarCtrl {
        constructor(userProfileService,userbarUpdateService, $log, $rootScope , $interval,$scope,$timeout,dashboardService) {
            this.$log = $log;
            var debug = false;
            this.userProfileService = userProfileService;
            this.$rootScope = $rootScope;
            $rootScope.isAdminPortalAdmin = false;
            $scope.updateRate = 10000; //default online user bar refreshing rate
            var intervalPromise = null;
            $scope.myservice = userbarUpdateService;
            $scope.userList=this.userLists;
            var websocket = '';
            var currentUser = '';
            var remoteUser = '';
            var f = '';
           
        	
            function socketSetup(initialPageVisit,_currentUser, _remoteUser, _f) {
            	


            	if( true) {
            		  
            		var href = window.location.href;
            	    var hostPatt = new RegExp(window.location.host +"/[^/]*");
            	    var res = hostPatt.exec(href);
            	    var protocol = window.location.protocol.replace("http","ws");
            	      var signalingServerPath = protocol + "//" + res + "/opencontact";
            		  var wsUri = signalingServerPath;
            		  console.log("Connecting to " + wsUri);
            		  websocket = new WebSocket(wsUri);
            		  //localStorage.notifySocket = JSON.stringify(websocket);
            		  //window.top.notifySocket = websocket;
            		  
            		  currentUser = _currentUser;
            		  remoteUser = _remoteUser;
            		  f = socketSend;
            		 
            		  
            	}
            	
            	//var websocket = JSON.parse(localStorage.notifySocket || "{}") ;
            	if( websocket != null) {
            		websocket.onopen = function(evt) { onOpen(evt); };
            		websocket.onmessage = function(evt) { onMessage(evt); };
            		websocket.onerror = function(evt) { onError(evt); };
            	
            	}
            	
            	//if(f != undefined)
            	 // f();
            	
            	//window.top.notifySocket.send("");
            }
            
            function socketSend(currentUser, remoteUser) {
            	


           	 websocket.send(JSON.stringify({
                    from: currentUser,
                    to: remoteUser
                }));
           	
           	//window.top.notifySocket.send("");
           }




           function onOpen(evt) {
               console.log("onOpen");
               //writeToScreen("CONNECTED");
               
               if(f != undefined)
           		f(currentUser, remoteUser);
               
           }

           function onMessage(evt) {
               if (typeof evt.data == "string") {
                   writeToScreen("RECEIVED (text): " + evt.data);
                   var chatObject = JSON.parse(evt.data);
                   if(confirm("User " + chatObject.from + " is requesting a chat session with you. Please click ok to accept")== true) {
                	   
                	   var url = userProfileService.getSortedUserIdCombination(chatObject.from, chatObject.to);
                	   var win = window.open(url, '_blank');
	              	   win.focus();
                   } else {
                	   //
                   }
                
                   
               } else {
                   writeToScreen("RECEIVED (binary): " + evt.data);
               }
           }

           function onError(evt) {
               writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data);
           }

           function writeToScreen(message) {
        	   console.log(message);
           }
            
            function updateActiveUsers() {
            	// $log.debug('UserbarCtrl::updateActiveUsers: intervalPromise is ' + intervalPromise);
				// $log.info("UserbarCtrl:updateActiveUsers invoked.")
            	// decrement the counter every time updateActiveUser is called;
				userbarUpdateService.decrementRefreshCount();
            	userProfileService.getActiveUser()
                .then(res=> {
                	if (debug)
                		$log.debug('UserbarCtrl::updateActiveUsers: service returned ' + JSON.stringify(res));
                	if (res==null) {
                		$log.error('UserbarCtrl::updateActiveUsers: failed to get active user');
                		$scope.stop();
                	} else {
                		$scope.userList = [];
                		// defend against huge list that should never happen.
                		var maxItems = 25;
                		if (res.length < maxItems)
                			maxItems = res.length;
                		for (var i=0; i < maxItems; i++) {
                			var data= {
                					userId:res[i],
                					linkQ:userProfileService.getSortedUserIdCombination(userProfileService.userProfile.orgUserId , res[i])
                			}
                			$scope.userList.push(data);
                		}      		
                		if (debug)
                			$log.debug('UserbarCtrl::updateActiveUsers: user list ' + JSON.stringify($scope.userList));
                	}   	
                }).catch(err=> {
                	$log.error('UserbarCtrl::updateActiveUsers: caught exception: ' + err);
                	// Do not show stale result
                	$scope.userList = [];
                	$scope.stop(); 	
                }).finally(() => {
                   	var footerOff = $('#online-userbar').offset().top;
            		var headOff = $('#footer').offset().top;
            		var userbarHeight= parseInt($(".online-user-container").css('height'),10);
            		var defaultOffSet = 45;
            		$(".online-user-container").css({
        				"height" : headOff - footerOff-defaultOffSet
        			});
                });      
            }
            
			$scope.start = function(rate) {
				// stops any running interval to avoid two intervals running at the same time
				$scope.stop(); 	
				// store the interval promise
				intervalPromise = $interval(updateActiveUsers, rate);
			};

			$scope.stop = function() {
				if (intervalPromise != null) {
					$interval.cancel(intervalPromise);
					intervalPromise = null;
				}
			};

			$scope.$watch('myservice.getRefreshCount()', function (newVal,oldVal) {
				//$log.info("refresh "+$scope.myservice.refreshCount + " more time(s)");
				if (newVal<=0) {
					// $log.info("UserbarCtrl: stopped refreshing online users");
					$scope.stop();
				} else if (newVal== $scope.myservice.maxCount){
					// $log.info("UserbarCtrl: start refreshing online users at every "+($scope.updateRate/1000)+" sec");
					// initial update of activate users
					updateActiveUsers();
					$scope.start($scope.updateRate);
				}
			});

            // Load the active users.
            //updateActiveUsers();
            dashboardService.getOnlineUserUpdateRate().then(res=> {
            	// $log.info('getting Online User Update Rate init***********************', res);
            	if (res == null || res.response == null) {
            		$log.error('UserbarCtlr: failed to get online user update rate or duration, check system.properties file.');
            	} else {
           			// $log.debug('UserbarCtlr: got online User Update Rate ' + res.response);            		
            		var rate = parseInt(res.response.onlineUserUpdateRate);
					// var updateRate = parseInt(res.response.onlineUserUpdateRate);
					var duration = parseInt(res.response.onlineUserUpdateDuration);
					userbarUpdateService.setMaxRefreshCount(parseInt(duration/rate)+1);
					userbarUpdateService.setRefreshCount(userbarUpdateService.maxCount);
					// $scope.refreshCount = userbarUpdateService.getRefreshCount();

           			if (rate != NaN && duration != NaN) {
           				// $log.debug('UserbarCtlr: scheduling function at interval ' + millis);
						$scope.updateRate=rate;
						$scope.start($scope.updateRate);
           			}            			
            	}
            }).catch(err=> {
            	$log.error('UserbarCtlr: getOnlineUserUpdateRate() failed: ' + err);
            });
        }
    }
    UserbarCtrl.$inject = ['userProfileService', 'userbarUpdateService', '$log', '$rootScope','$interval','$scope','$timeout','dashboardService'];
    angular.module('ecompApp').controller('UserbarCtrl', UserbarCtrl);
})();