21
21
import java .text .SimpleDateFormat ;
22
22
import java .time .LocalDate ;
23
23
import java .time .ZoneId ;
24
- import java .util .*;
24
+ import java .util .HashMap ;
25
+ import java .util .List ;
26
+ import java .util .Map ;
27
+ import java .util .Optional ;
28
+ import java .util .Set ;
25
29
import java .util .regex .Matcher ;
26
30
import java .util .regex .Pattern ;
27
31
import java .util .stream .Collectors ;
@@ -72,9 +76,8 @@ public class StatisticService {
72
76
Pattern .compile ("^.*(\\ d{4}-\\ d{2}-\\ d{2})T\\ d{2}:\\ d{2}:\\ d{2}.*POST\\ s/WebAPI/prediction/\\ d+/generation/(.+)\\ s-\\ s.*status::String,startDate::Date,endDate::Date.*$" );
73
77
74
78
private static final String ENDPOINT_REGEXP =
75
- "^.*(\\ d{4}-\\ d{2}-\\ d{2})T\\ d{2}:\\ d{2}:\\ d{2}.*-\\ s({METHOD_PLACEHOLDER}\\ s.*{ENDPOINT_PLACEHOLDER})\\ s-.*$" ;
79
+ "^.*(\\ d{4}-\\ d{2}-\\ d{2})T( \\ d{2}:\\ d{2}:\\ d{2}).*- \\ s([ \\ w.-]+) \\ s .*-\\ s({METHOD_PLACEHOLDER}\\ s.*{ENDPOINT_PLACEHOLDER})\\ s-.*$" ;
76
80
77
- private static final Pattern PLP_USER_REGEXP = Pattern .compile ("- ([a-zA-Z0-9_]+) \\ d+:\\ d+:\\ d+:\\ d+:\\ d+:\\ d+:\\ d+:\\ d+" );
78
81
private static final String COHORT_GENERATION_NAME = "Cohort Generation" ;
79
82
80
83
private static final String CHARACTERIZATION_GENERATION_NAME = "Characterization Generation" ;
@@ -87,8 +90,6 @@ public class StatisticService {
87
90
88
91
private static final String PLP_GENERATION_NAME = "Prediction Generation" ;
89
92
90
- private static final String PLP_USERNAME = "Username" ;
91
-
92
93
private static final Map <String , Pattern > patternMap = new HashMap <>();
93
94
94
95
static {
@@ -98,7 +99,6 @@ public class StatisticService {
98
99
patternMap .put (IR_GENERATION_NAME , IR_GENERATION_REGEXP );
99
100
patternMap .put (PLE_GENERATION_NAME , PLE_GENERATION_REGEXP );
100
101
patternMap .put (PLP_GENERATION_NAME , PLP_GENERATION_REGEXP );
101
- patternMap .put (PLP_USERNAME , PLP_USER_REGEXP );
102
102
}
103
103
104
104
public StatisticService () {
@@ -147,21 +147,22 @@ private List<AccessTrendDto> extractAccessTrends(Path path, List<EndpointDto> en
147
147
List <Pattern > patterns = endpoints .stream ()
148
148
.map (endpointPair -> {
149
149
String method = endpointPair .getMethod ();
150
+
150
151
String endpoint = endpointPair .getUrlPattern ().replaceAll ("\\ {\\ }" , ".*" );
151
152
String regexpStr = ENDPOINT_REGEXP .replace ("{METHOD_PLACEHOLDER}" , method );
152
153
regexpStr = regexpStr .replace ("{ENDPOINT_PLACEHOLDER}" , endpoint );
153
154
154
155
return Pattern .compile (regexpStr );
155
156
})
157
+
156
158
.collect (Collectors .toList ());
157
159
try (Stream <String > stream = Files .lines (path )) {
158
160
return stream
159
161
.map (str -> {
160
- Matcher userMatcher = PLP_USER_REGEXP .matcher (str );
161
162
return patterns .stream ()
162
163
.map (pattern -> pattern .matcher (str ))
163
164
.filter (Matcher ::matches )
164
- .map (matcher -> new AccessTrendDto (matcher .group (2 ), LocalDate .parse (matcher .group (1 )), showUserInformation && userMatcher . find () ? userMatcher .group (1 ) : null ))
165
+ .map (matcher -> new AccessTrendDto (matcher .group (4 ), LocalDate .parse (matcher .group (1 )), showUserInformation ? matcher .group (3 ) : null ))
165
166
.findFirst ();
166
167
})
167
168
.filter (Optional ::isPresent )
0 commit comments