diff --git a/src/main/java/org/bonitasoft/log/event/BEvent.java b/src/main/java/org/bonitasoft/log/event/BEvent.java index d1cc7d4..13aaa0f 100644 --- a/src/main/java/org/bonitasoft/log/event/BEvent.java +++ b/src/main/java/org/bonitasoft/log/event/BEvent.java @@ -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; @@ -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 getJson(final boolean withHtml) { - final Map json = new HashMap(); + public Map getJson(final boolean withHtml) { + final Map json = new HashMap(); json.put("number", getNumber()); json.put("level", getLevel().toString()); json.put("packageName", stringToJson(getPackageName())); @@ -269,6 +270,25 @@ public Map 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 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 @@ -277,20 +297,9 @@ public Map getJson(final boolean withHtml) { */ public String getHtml() { final StringBuffer htmlEvent = new StringBuffer(); - htmlEvent.append("
" + getTitle()); - htmlEvent.append(""); + htmlEvent.append("
"); + htmlEvent.append( getHtmlTitle()); if (getParameters() != null) { htmlEvent.append("
" + getParameters() + ""); if (getCause() != null) { @@ -315,6 +324,24 @@ public String getHtml() { } + public String getHtmlTitle() { + final StringBuffer htmlEvent = new StringBuffer(); + htmlEvent.append("" + getTitle()); + htmlEvent.append(""); + return htmlEvent.toString(); + } + /** * this method is mainly for debugging */ @@ -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("\\\"", "\""); + } } diff --git a/src/main/java/org/bonitasoft/log/event/BEventFactory.java b/src/main/java/org/bonitasoft/log/event/BEventFactory.java index 47d8a96..5c2bedc 100644 --- a/src/main/java/org/bonitasoft/log/event/BEventFactory.java +++ b/src/main/java/org/bonitasoft/log/event/BEventFactory.java @@ -22,12 +22,13 @@ public static boolean isError(final List listEvents) { * @return */ public static String getHtml(final List listEvents) { - String table = ""; + StringBuffer tableHtml= new StringBuffer(); + tableHtml.append("
"); for (final BEvent event : listEvents) { - table += ""; + tableHtml.append(""); } - table += "
" + event.getHtml() + "
" + event.getHtml() + "
"; - return table; + tableHtml.append(""); + return tableHtml.toString(); } /** * create the list in a synthetic way, as a list of events @@ -35,15 +36,19 @@ public static String getHtml(final List listEvents) { * @return */ public static String getSyntheticHtml(final List listEvents) { - String table = ""; + StringBuffer tableHtml= new StringBuffer(); + + tableHtml.append( "
"); + tableHtml.append( ""); + for (final BEvent event : listEvents) { - table += "" + tableHtml.append( "" +"" +"" - + ""; + + ""); } - table += "
TitleLevelParameters
" + event.getTitle() + "
"+event.getHtmlTitle() + "" + event.getLevel().toString() + "" + event.getParameters() + "
"; - return table; + tableHtml.append( ""); + return tableHtml.toString(); } /** * add the event in the list only if this event is a new one, in order to remove the duplication.