Skip to content

Commit 01c0d51

Browse files
hernaldourbinaoleg-odysseus
authored andcommitted
ATL-8: Adding accesstrends regexp update
1 parent 462d81d commit 01c0d51

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

src/main/java/org/ohdsi/webapi/statistic/controller/StatisticController.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public enum ResponseFormat {
4141
}};
4242

4343
private static final List<String[]> ACCESS_TRENDS_CSV_RESULT_HEADER = new ArrayList<String[]>() {{
44-
add(new String[]{"Date", "Endpoint"});
44+
add(new String[]{"Date", "Endpoint", "UserID"});
4545
}};
4646

4747
public StatisticController(StatisticService service) {
@@ -107,7 +107,7 @@ private Response prepareAccessTrendsResponse(List<AccessTrendDto> trends, String
107107
List<String[]> data = trends.stream()
108108
.flatMap(trend ->
109109
new ArrayList<String[]>() {{
110-
add(new String[]{trend.getExecutionDate().toString(), trend.getEndpointName()});
110+
add(new String[]{trend.getExecutionDate().toString(), trend.getEndpointName(), trend.getUserID()});
111111
}}.stream()
112112
)
113113
.collect(Collectors.toList());

src/main/java/org/ohdsi/webapi/statistic/service/StatisticService.java

+9-8
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@
2121
import java.text.SimpleDateFormat;
2222
import java.time.LocalDate;
2323
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;
2529
import java.util.regex.Matcher;
2630
import java.util.regex.Pattern;
2731
import java.util.stream.Collectors;
@@ -72,9 +76,8 @@ public class StatisticService {
7276
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.*$");
7377

7478
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-.*$";
7680

77-
private static final Pattern PLP_USER_REGEXP = Pattern.compile("- ([a-zA-Z0-9_]+) \\d+:\\d+:\\d+:\\d+:\\d+:\\d+:\\d+:\\d+");
7881
private static final String COHORT_GENERATION_NAME = "Cohort Generation";
7982

8083
private static final String CHARACTERIZATION_GENERATION_NAME = "Characterization Generation";
@@ -87,8 +90,6 @@ public class StatisticService {
8790

8891
private static final String PLP_GENERATION_NAME = "Prediction Generation";
8992

90-
private static final String PLP_USERNAME = "Username";
91-
9293
private static final Map<String, Pattern> patternMap = new HashMap<>();
9394

9495
static {
@@ -98,7 +99,6 @@ public class StatisticService {
9899
patternMap.put(IR_GENERATION_NAME, IR_GENERATION_REGEXP);
99100
patternMap.put(PLE_GENERATION_NAME, PLE_GENERATION_REGEXP);
100101
patternMap.put(PLP_GENERATION_NAME, PLP_GENERATION_REGEXP);
101-
patternMap.put(PLP_USERNAME, PLP_USER_REGEXP);
102102
}
103103

104104
public StatisticService() {
@@ -147,21 +147,22 @@ private List<AccessTrendDto> extractAccessTrends(Path path, List<EndpointDto> en
147147
List<Pattern> patterns = endpoints.stream()
148148
.map(endpointPair -> {
149149
String method = endpointPair.getMethod();
150+
150151
String endpoint = endpointPair.getUrlPattern().replaceAll("\\{\\}", ".*");
151152
String regexpStr = ENDPOINT_REGEXP.replace("{METHOD_PLACEHOLDER}", method);
152153
regexpStr = regexpStr.replace("{ENDPOINT_PLACEHOLDER}", endpoint);
153154

154155
return Pattern.compile(regexpStr);
155156
})
157+
156158
.collect(Collectors.toList());
157159
try (Stream<String> stream = Files.lines(path)) {
158160
return stream
159161
.map(str -> {
160-
Matcher userMatcher = PLP_USER_REGEXP.matcher(str);
161162
return patterns.stream()
162163
.map(pattern -> pattern.matcher(str))
163164
.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))
165166
.findFirst();
166167
})
167168
.filter(Optional::isPresent)

0 commit comments

Comments
 (0)