1
+ package com .navercorp .pinpoint .banner ;
2
+
3
+ import java .util .Collection ;
4
+ import java .util .Objects ;
5
+ import java .util .function .Consumer ;
6
+ import java .util .function .Function ;
7
+
8
+ public class PinpointBanner implements Banner {
9
+ private final Mode bannerMode ;
10
+ private final Collection <String > dumpKeys ;
11
+ private final Function <String , String > properties ;
12
+ private final Consumer <String > consoleWriter = System .out ::println ;
13
+ private final Consumer <String > loggerWriter ;
14
+
15
+ public PinpointBanner (Mode bannerMode ,
16
+ Collection <String > dumpKeys ,
17
+ Function <String , String > properties ,
18
+ Consumer <String > loggerWriter ) {
19
+ this .bannerMode = Objects .requireNonNull (bannerMode , "bannerMode" );
20
+ this .dumpKeys = Objects .requireNonNull (dumpKeys , "dumpKeys" );
21
+ this .properties = Objects .requireNonNull (properties , "properties" );
22
+ this .loggerWriter = Objects .requireNonNull (loggerWriter , "loggerWriter" );
23
+ }
24
+
25
+
26
+ @ Override
27
+ public void printBanner () {
28
+ switch (bannerMode ) {
29
+ case OFF :
30
+ return ;
31
+ case LOG :
32
+ loggerWriter .accept (buildBannerString ());
33
+ return ;
34
+ default :
35
+ consoleWriter .accept (buildBannerString ());
36
+ }
37
+ }
38
+
39
+ private String buildBannerString () {
40
+ StringBuilder banner = new StringBuilder (128 );
41
+ banner .append (BannerUtils .banner ());
42
+ banner .append (format ("Pinpoint Version" , BannerVersionTemplate .VERSION ));
43
+ banner .append (System .lineSeparator ());
44
+
45
+ for (String key : dumpKeys ) {
46
+ String value = properties .apply (key );
47
+ if (value != null ) {
48
+ banner .append (format (key , value ));
49
+ banner .append (System .lineSeparator ());
50
+ }
51
+ }
52
+ return banner .toString ();
53
+ }
54
+
55
+ protected String format (String key , String value ) {
56
+ return String .format (" :: %55s :: %35s" , key , value );
57
+ }
58
+
59
+ }
0 commit comments