From 2e44225d769a1b733ca17ae832940175ea4674f4 Mon Sep 17 00:00:00 2001
From: Claudinei <claudineigom18@gmail.com>
Date: Mon, 15 May 2017 09:42:23 -0300
Subject: [PATCH 1/3] updating code with search by resource type

---
 client/src/app/+search/search.component.html  | 26 +++++++++----------
 .../repository/AuditEventRepository.java      |  9 ++++---
 2 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/client/src/app/+search/search.component.html b/client/src/app/+search/search.component.html
index ffbeeca..2c085d8 100644
--- a/client/src/app/+search/search.component.html
+++ b/client/src/app/+search/search.component.html
@@ -17,32 +17,32 @@
           <input name="id" type="text" class="form-control" [(ngModel)]="filtro.id" placeholder="ID do Log">
 
           <br><span>Data Início: </span><br>
-          <input name="dataInicio" type="datetime-local" class="input form-control primary-border" [(ngModel)]="dateStart"
-                 placeholder="dd/mm/aaaa --:--">
+          <p-calendar name="dataInicio" dateFormat="dd.mm.yy" [(ngModel)]="dateStart" [maxDate]="dateEnd" [showTime]="true" [showIcon]="true"></p-calendar>
+
 
           <br><span>Data Fim: </span><br>
-          <input name="dataFim" type="datetime-local" class="input form-control primary-border" [(ngModel)]="dateEnd"
-                 placeholder="dd/mm/aaaa --:--">
+          <p-calendar name="dataFim" dateFormat="dd.mm.yy" [(ngModel)]="dateEnd" [minDate]="dateStart" [showTime]="true" [showIcon]="true"></p-calendar>
 
           <br><span>Ip: </span><br>
           <input name="ip" type="text" class="input form-control primary-border" [(ngModel)]="filtro.ip" placeholder="IP">
 
+          <br>Criticidade
+          <br><select name="securitySevel" class="form-control"
+                      [(ngModel)]="filtro.securityLevel">
 
-          <br><br><select name="securitySevel" class="form-control"
-                          [(ngModel)]="filtro.securityLevel">
-
-          <option value="" selected>---Criticidade---</option> <!-- not selected / blank option -->
+          <option value="">---Criticidade---</option> <!-- not selected / blank option -->
           <option *ngFor="let crit  of criticidades" value="{{crit}}"> {{crit}}</option>
 
         </select>
 
-          <select name="applicationName" class="form-control"
-                  [(ngModel)]="filtro.applicationName">
+          <br>Aplicação
+          <br><select name="applicationName" class="form-control"
+                      [(ngModel)]="filtro.applicationName">
 
-            <option value="" selected>---Aplicação---</option> <!-- not selected / blank option -->
-            <option *ngFor="let aplic  of aplicacoes" value="{{aplic}}"> {{aplic}}</option>
+          <option value="" selected>---Aplicação---</option> <!-- not selected / blank option -->
+          <option *ngFor="let aplic  of aplicacoes" value="{{aplic}}" > {{aplic}}</option>
 
-          </select>
+        </select>
 
           <br>Resource Types
           <br><select name="resourceTypes" class="form-control"
diff --git a/src/main/java/br/pucminas/icei/audition/repository/AuditEventRepository.java b/src/main/java/br/pucminas/icei/audition/repository/AuditEventRepository.java
index 16966e8..34edf4f 100644
--- a/src/main/java/br/pucminas/icei/audition/repository/AuditEventRepository.java
+++ b/src/main/java/br/pucminas/icei/audition/repository/AuditEventRepository.java
@@ -49,11 +49,11 @@ public SearchResponse search(Map<String, Object> filtro, Long start, Long max,
     }
 
     public List<String> listApplicationNames() {
-        return em.createQuery("SELECT distinct e.applicationName from AuditEvent e").getResultList();
+        return em.createQuery("SELECT distinct e.applicationName from AuditEvent e order by e.applicationName").getResultList();
     }
 
     public List<String> listResourceTypes(){
-        return em.createQuery("SELECT distinct e.resource.resourceType from AuditEvent e").getResultList();
+        return em.createQuery("SELECT distinct e.resource.resourceType from AuditEvent e order by e.resource.resourceType").getResultList();
     }
 
     private SearchResponse buildQuery(Map<String, Object> filtro,
@@ -68,11 +68,14 @@ private SearchResponse buildQuery(Map<String, Object> filtro,
 
         List<Predicate> predicates = new ArrayList();
 
+
         Iterator it = filtro.entrySet().iterator();
         while (it.hasNext()) {
             Map.Entry pair = (Map.Entry) it.next();
             String key = (String) pair.getKey();
-            if (key == "action") {
+            if(key.equals("resourceType")){
+                predicates.add(cb.equal(root.get("resource").get(key), pair.getValue()));
+            }else if (key.equals("action")) {
                 predicates.add(cb.like(root.get(key), pair.getValue() + "%"));
             } else {
                 predicates.add(cb.equal(root.get(key), pair.getValue()));

From 129cec1bbe19d381692f6556827e5480f9c20d33 Mon Sep 17 00:00:00 2001
From: Claudinei <claudineigom18@gmail.com>
Date: Tue, 16 May 2017 09:15:59 -0300
Subject: [PATCH 2/3] delete print

---
 .../br/pucminas/icei/audition/controller/AuditController.java    | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/main/java/br/pucminas/icei/audition/controller/AuditController.java b/src/main/java/br/pucminas/icei/audition/controller/AuditController.java
index 8b9a333..3f3ec59 100644
--- a/src/main/java/br/pucminas/icei/audition/controller/AuditController.java
+++ b/src/main/java/br/pucminas/icei/audition/controller/AuditController.java
@@ -125,7 +125,6 @@ private Map<String, Object> deleteFilterDate(Map<String, Object> filtro){
             if(pair.getKey() == "dateStart" || pair.getKey() == "dateEnd"  || pair.getKey() == "timeStart" || pair.getKey() == "timeEnd") {
                 it.remove();
                 resp.remove(pair.getKey(), value);
-                System.out.println(pair.getKey() + " ---> " + pair.getValue());
             }
         }
 

From 2dfe59b166e390e479e1cbe69a7edd9c6185055c Mon Sep 17 00:00:00 2001
From: Claudinei <claudineigom18@gmail.com>
Date: Tue, 16 May 2017 11:20:46 -0300
Subject: [PATCH 3/3] description of log selected

---
 client/src/app/+search/search.component.html | 45 +++++++++++++++++++-
 client/src/app/+search/search.component.ts   |  8 +++-
 client/src/app/shared/shared.module.ts       |  3 +-
 3 files changed, 52 insertions(+), 4 deletions(-)

diff --git a/client/src/app/+search/search.component.html b/client/src/app/+search/search.component.html
index 2c085d8..5a49071 100644
--- a/client/src/app/+search/search.component.html
+++ b/client/src/app/+search/search.component.html
@@ -76,14 +76,16 @@
     <div class="container">
       <div class="table-responsive tablescroll">
 
-
         <p-dataTable [value]="eventos"
                      [rows]="10"
                      [paginator]="true"
                      [pageLinks]="3"
                      lazy="true"
                      [totalRecords]="totalRecords"
-                     (onLazyLoad)="onLazyLoad($event)">
+                     (onLazyLoad)="onLazyLoad($event)"
+                     selectionMode="single"
+                     [(selection)]="logSelecionado"
+                     (dblclick)="showDialog()">
           <p-header>Lista de Eventos</p-header>
           <p-column field="id" header="ID"></p-column>
           <p-column field="applicationName" header="Aplicação"></p-column>
@@ -101,6 +103,45 @@
 
     </div>
 
+    <p-dialog header="Descrição do Log Selecionado" [(visible)]="display">
+      <table class="table display">
+        <thead>
+        <tr>
+          <th> ID</th>
+          <th> Aplicação</th>
+          <th> Usuário</th>
+          <th> Ação</th>
+          <th> Resource Type</th>
+          <th> Resource Id</th>
+          <th> Data e Hora</th>
+          <th> IP</th>
+          <th> Criticidade</th>
+        </tr>
+
+        </thead>
+        <tbody>
+        <tr>
+          <td> {{ logSelecionado.id }}</td>
+          <td> {{ logSelecionado.applicationName }}</td>
+          <td> {{ logSelecionado.userName }}</td>
+          <td> {{ logSelecionado.action }}</td>
+          <td> {{ logSelecionado.resource.resourceType }}</td>
+          <td> {{ logSelecionado.resource.resourceId }}</td>
+          <td> {{ logSelecionado.dateTime[2] + '/' + logSelecionado.dateTime[1] + '/' +
+            logSelecionado.dateTime[0] + ' ' + logSelecionado.dateTime[3] + ':' + logSelecionado.dateTime[4] +
+            ':' + logSelecionado.dateTime[5]}}
+          </td>
+          <td> {{ logSelecionado.ip }}</td>
+          <td> {{ logSelecionado.securityLevel }}</td>
+
+        </tr>
+        </tbody>
+        <th> Descrição</th><br/>
+        <td> {{ logSelecionado.description}}</td>
+      </table>
+    </p-dialog>
+
+
     <!-- Modal Descrição -->
     <div id="details">
       <div class="modal fade" id="myModal" tabindex="-1" role="dialog"
diff --git a/client/src/app/+search/search.component.ts b/client/src/app/+search/search.component.ts
index d7d7f1e..02cb99b 100644
--- a/client/src/app/+search/search.component.ts
+++ b/client/src/app/+search/search.component.ts
@@ -2,7 +2,7 @@ import {Component, OnInit} from '@angular/core';
 import {Http, Headers, Response} from '@angular/http';
 import { saveAs } from 'file-saver';
 import {AppService} from "../app.service";
-import {Message} from 'primeng/primeng';
+import {Dialog, Message} from 'primeng/primeng';
 /**
  * This class represents the lazy loaded AboutComponent.
  */
@@ -27,6 +27,9 @@ export class SearchComponent implements OnInit {
   totalRecords = 0
   rows = 100
   down = false
+  selectedEvent
+  display: boolean = false;
+
   constructor(private http: Http, private appService: AppService) {
 
   }
@@ -115,4 +118,7 @@ export class SearchComponent implements OnInit {
       }
     });
   }
+  showDialog() {
+    this.display = true;
+  }
 }
diff --git a/client/src/app/shared/shared.module.ts b/client/src/app/shared/shared.module.ts
index e0ad9dc..9c6838b 100644
--- a/client/src/app/shared/shared.module.ts
+++ b/client/src/app/shared/shared.module.ts
@@ -7,7 +7,7 @@ import { BrowserAnimationsModule} from "@angular/platform-browser/animations"
 import { ToolbarComponent } from './toolbar/index';
 import { NavbarComponent } from './navbar/index';
 
-import { CalendarModule, PaginatorModule, DataTableModule, GrowlModule, SharedModule as PShared } from "primeng/primeng"
+import { CalendarModule, PaginatorModule, DataTableModule, GrowlModule, DialogModule, SharedModule as PShared } from "primeng/primeng"
 
 /**
  * Do not specify providers for modules that might be imported by a lazy loaded module.
@@ -27,6 +27,7 @@ import { CalendarModule, PaginatorModule, DataTableModule, GrowlModule, SharedMo
     PaginatorModule,
     DataTableModule,
     GrowlModule,
+    DialogModule,
     PShared
   ]
 })