1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.appender.db.jpa.converter;
18
19 import javax.persistence.AttributeConverter;
20 import javax.persistence.Converter;
21
22 import org.apache.logging.log4j.Marker;
23 import org.apache.logging.log4j.MarkerManager;
24
25
26
27
28
29 @Converter(autoApply = false)
30 public class MarkerAttributeConverter implements AttributeConverter<Marker, String> {
31 @Override
32 public String convertToDatabaseColumn(final Marker marker) {
33 StringBuilder builder = new StringBuilder(marker.getName());
34 Marker parent = marker.getParent();
35 int levels = 0;
36 boolean hasParent = false;
37 while (parent != null) {
38 levels++;
39 hasParent = true;
40 builder.append("[ ").append(parent.getName());
41 parent = parent.getParent();
42 }
43 for (int i = 0; i < levels; i++) {
44 builder.append(" ]");
45 }
46 if (hasParent) {
47 builder.append(" ]");
48 }
49 return builder.toString();
50 }
51
52 @Override
53 public Marker convertToEntityAttribute(final String s) {
54 int bracket = s.indexOf("[");
55
56 return bracket < 1 ? MarkerManager.getMarker(s) : MarkerManager.getMarker(s.substring(0, bracket));
57 }
58 }