Skip to content

Commit

Permalink
Improve synthetic event, add a getinstanceFormJson event
Browse files Browse the repository at this point in the history
  • Loading branch information
pierre-yves-monnet committed Jul 7, 2019
1 parent 5c389e2 commit 4c91b63
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 25 deletions.
65 changes: 49 additions & 16 deletions src/main/java/org/bonitasoft/log/event/BEvent.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.bonitasoft.log.event;

import java.io.PrintWriter;
import java.io.Serializable;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
Expand Down Expand Up @@ -248,12 +249,12 @@ public void log(Logger logger) {
/* */
/* ******************************************************************************** */
/**
* return the Json
* return a Map, which can be used to JSON the event or serialize it
*
* @return
*/
public Map<String, Object> getJson(final boolean withHtml) {
final Map<String, Object> json = new HashMap<String, Object>();
public Map<String, Serializable> getJson(final boolean withHtml) {
final Map<String, Serializable> json = new HashMap<String, Serializable>();
json.put("number", getNumber());
json.put("level", getLevel().toString());
json.put("packageName", stringToJson(getPackageName()));
Expand All @@ -269,6 +270,25 @@ public Map<String, Object> getJson(final boolean withHtml) {
return json;

}
/**
* opposite function, assuming this is the previous function which generate the map.
* @param mapEvent
* @return
*/
public static BEvent getInstanceFormJson( Map<String,Serializable> mapEvent)
{

String packageName = jsonToString( mapEvent.get("packageName"));
long number = (Long) mapEvent.get("number");
Level level = Level.valueOf( (String) mapEvent.get("level") );
String title = jsonToString( mapEvent.get("title"));
String cause = jsonToString( mapEvent.get("cause") );
String consequence = jsonToString( mapEvent.get("consequence"));
String action = jsonToString( mapEvent.get("action") );

BEvent event = new BEvent( packageName, number, level, title, cause, consequence, action);
return event;
}

/**
* return a piece of HTML to display the event, using bootstrap classes
Expand All @@ -277,20 +297,9 @@ public Map<String, Object> getJson(final boolean withHtml) {
*/
public String getHtml() {
final StringBuffer htmlEvent = new StringBuffer();
htmlEvent.append("<div style=\"border:1px solid black;padding-right: 20px;\"><a href='#' ");
if (getLevel() == Level.CRITICAL || getLevel() == Level.ERROR) {
htmlEvent.append("class=\"label label-danger\" style=\"color:white;\" ");
} else if (getLevel() == Level.APPLICATIONERROR) {
htmlEvent.append("class=\"label label-warning\" style=\"color:white;\" ");
} else if (getLevel() == Level.SUCCESS) {
htmlEvent.append("class=\"label label-success\" style=\"color:white;\" ");
} else {
htmlEvent.append("class=\"label label-info\" style=\"color:white;\" ");
}
htmlEvent.append("\" title=\"" + getKey() + "\"");
htmlEvent.append(">" + getTitle());
htmlEvent.append("</a>");
htmlEvent.append("<div style=\"border:1px solid black;padding-right: 20px;\">");

htmlEvent.append( getHtmlTitle());
if (getParameters() != null) {
htmlEvent.append("<br><span style=\"margin-left:30px;\">" + getParameters() + "</span>");
if (getCause() != null) {
Expand All @@ -315,6 +324,24 @@ public String getHtml() {

}

public String getHtmlTitle() {
final StringBuffer htmlEvent = new StringBuffer();
htmlEvent.append("<a href='#' ");
if (getLevel() == Level.CRITICAL || getLevel() == Level.ERROR) {
htmlEvent.append("class=\"label label-danger\" style=\"color:white;\" ");
} else if (getLevel() == Level.APPLICATIONERROR) {
htmlEvent.append("class=\"label label-warning\" style=\"color:white;\" ");
} else if (getLevel() == Level.SUCCESS) {
htmlEvent.append("class=\"label label-success\" style=\"color:white;\" ");
} else {
htmlEvent.append("class=\"label label-info\" style=\"color:white;\" ");
}
htmlEvent.append("\" title=\"" + getKey() + "\"");
htmlEvent.append(">" + getTitle());
htmlEvent.append("</a>");
return htmlEvent.toString();
}

/**
* this method is mainly for debugging
*/
Expand Down Expand Up @@ -377,4 +404,10 @@ private String stringToJson(final String source) {
}
return source.replaceAll("\"", "\\\"");
}
private static String jsonToString(final Object source) {
if (source == null) {
return "";
}
return source.toString().replaceAll("\\\"", "\"");
}
}
23 changes: 14 additions & 9 deletions src/main/java/org/bonitasoft/log/event/BEventFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,28 +22,33 @@ public static boolean isError(final List<BEvent> listEvents) {
* @return
*/
public static String getHtml(final List<BEvent> listEvents) {
String table = "<table>";
StringBuffer tableHtml= new StringBuffer();
tableHtml.append("<table>");
for (final BEvent event : listEvents) {
table += "<tr><td>" + event.getHtml() + "</td></tr>";
tableHtml.append("<tr><td>" + event.getHtml() + "</td></tr>");
}
table += "</table>";
return table;
tableHtml.append("</table>");
return tableHtml.toString();
}
/**
* create the list in a synthetic way, as a list of events
* @param listEvents
* @return
*/
public static String getSyntheticHtml(final List<BEvent> listEvents) {
String table = "<table>";
StringBuffer tableHtml= new StringBuffer();

tableHtml.append( "<table style=\"border:1px solid black;border-spacing: 10px 0px;border-collapse: separate;\">");
tableHtml.append( "<tr><td>Title</td><td>Level</td><td>Parameters</td></tr>");

for (final BEvent event : listEvents) {
table += "<tr><td> <span title=\""+event.getKey()+"\">" + event.getTitle() + "</td>"
tableHtml.append( "<tr><td>"+event.getHtmlTitle() + "</td>"
+"<td>" + event.getLevel().toString() + "</td>"
+"<td>" + event.getParameters() + "</td>"
+ "</tr>";
+ "</tr>");
}
table += "</table>";
return table;
tableHtml.append( "</table>");
return tableHtml.toString();
}
/**
* add the event in the list only if this event is a new one, in order to remove the duplication.
Expand Down

0 comments on commit 4c91b63

Please sign in to comment.