| 
					
				 | 
			
			
				@@ -4,59 +4,66 @@ import { LoggingService } from "../dependencies/fisloggingservice/services/loggi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { MessageSynchronisationServiceInterface, MessageSynchronisationServiceSetting } from "../type/datatype"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export class MessageSyncrhonizationService implements MessageSynchronisationServiceInterface { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    settings:MessageSynchronisationServiceSetting 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    sourceSrc:LoggingService = new LoggingService() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    targetSrc:LoggingService = new LoggingService() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    settings: MessageSynchronisationServiceSetting 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sourceSrc: LoggingService = new LoggingService() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    targetSrc: LoggingService = new LoggingService() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public async init(settings: MessageSynchronisationServiceSetting): Promise<void> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        console.log(settings) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.settings = settings; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.sourceSrc.init(settings.incomingSource);  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.targetSrc.init(settings.target);  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // Wrap promise so that init must be instantiated with resolve before proceeding with subscribe method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let promiseInit : Promise<void> = new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.sourceSrc.init(settings.incomingSource).then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.targetSrc.init(settings.target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }).then(() => resolve()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            catch (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                console.error(e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return promiseInit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public subscribe(obs: Observable<string>): Observable<any> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let returnObs:Subject<BaseMessage> = new Subject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public subscribe(obs: Observable<string>): Observable<any> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let subjectOutput = new Subject() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        obs.subscribe({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            next: element => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let data = JSON.parse(element) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                console.log(data.header.messageID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // filter all source tags[0] log data   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // this.logSrv1.filter( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //    this.settings.incomingSource.tags[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //    ) = set1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // filter all target tags[0] log data     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // this.logSrv2.filter( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //    this.settings.target.tags[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //    ) = set2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Compare set1 and set2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // >> found missing message "4" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Send missing messages "4" ( in a loop)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //returnObs.next(message "4") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        obs.subscribe( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                next:(data)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                     // filter all source tags[0] log data   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // this.logSrv1.filter( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //    this.settings.incomingSource.tags[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //    ) = set1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // filter all target tags[0] log data     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // this.logSrv2.filter( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //    this.settings.target.tags[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //    ) = set2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // Compare set1 and set2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // >> found missing message "5x" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // Send missing messages "5x" ( in a loop)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //returnObs.next(message "5x")  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let set1 = this.sourceSrc.filter( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { msgTag: this.settings.incomingSource.tags[0] }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let set2 = this.targetSrc.filter( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { msgTag: this.settings.target.tags[0] } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        console.log(obs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.compareResult(set1, set2).then((data)  => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data.forEach(element => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                subjectOutput.next(element) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return subjectOutput.asObservable() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // compare results and return differences 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private async compareResult(args: Promise<any>, args2: Promise<any>): Promise<any[]> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let dataset3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await args.then((data) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            args2.then((data2) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                data.forEach((element) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    data2.forEach((element2) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        dataset3 = '' // missing messages 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return dataset3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |