@@ -25,6 +25,7 @@ public class DatabaseService {
2525
2626    private  final  PmProcessListRepository  processListRepo ;
2727    private  final  PpomSessionRepository  sessionRepo ;
28+     private  final  SyslogLevelCounter  syslogLevelCounter ;
2829
2930    @ ConfigProperty (name  = "syslog.base.path" , defaultValue  = "/" )
3031    String  syslogBasePath ;
@@ -47,9 +48,12 @@ public class DatabaseService {
4748    @ ConfigProperty (name  = "syslog.smb.password" , defaultValue  = "" )
4849    String  smbPassword ;
4950
50-     public  DatabaseService (PmProcessListRepository  processListRepo , PpomSessionRepository  sessionRepo ) {
51+     public  DatabaseService (PmProcessListRepository  processListRepo ,
52+                            PpomSessionRepository  sessionRepo ,
53+                            SyslogLevelCounter  syslogLevelCounter ) {
5154        this .processListRepo  = processListRepo ;
5255        this .sessionRepo  = sessionRepo ;
56+         this .syslogLevelCounter  = syslogLevelCounter ;
5357    }
5458
5559    @ Transactional 
@@ -81,8 +85,22 @@ private LoggedUserData loggedJoinedData(Object[] row) {
8185        String  syslogPath  = (String ) row [4 ];
8286
8387        String  loginDateIso  = loginDate  != null  ? DateTimeFormatter .ISO_INSTANT .format (loginDate .toInstant ()) : null ;
88+         SyslogLevelStats  levels  = resolveSyslogLevels (syslogPath );
8489
85-         return  new  LoggedUserData (processId , userName , nodeName , loginDateIso , syslogPath );
90+         return  new  LoggedUserData (processId , userName , nodeName , loginDateIso , syslogPath , levels );
91+     }
92+ 
93+     private  SyslogLevelStats  resolveSyslogLevels (String  syslogPath ) {
94+         if  (syslogPath  == null  || syslogPath .isBlank ()) {
95+             return  SyslogLevelStats .empty ();
96+         }
97+ 
98+         try  (InputStream  stream  = downloadSyslogFile (syslogPath )) {
99+             return  syslogLevelCounter .countLevels (stream );
100+         } catch  (Exception  e ) {
101+             System .out .println ("[DatabaseService] Unable to analyze syslog '"  + syslogPath  + "': "  + e .getMessage ());
102+             return  SyslogLevelStats .empty ();
103+         }
86104    }
87105
88106    public  InputStream  getFileStream (String  pmSyslogPath , long  start , long  length ) throws  Exception  {
0 commit comments