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