Skip to content

Commit 3e5600d

Browse files
committed
add OcppTagFilter filter to users overview query
1 parent 98e7bdf commit 3e5600d

File tree

3 files changed

+49
-9
lines changed

3 files changed

+49
-9
lines changed

src/main/java/de/rwth/idsg/steve/repository/impl/UserRepositoryImpl.java

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,16 +64,39 @@ public class UserRepositoryImpl implements UserRepository {
6464
@Override
6565
public List<User.Overview> getOverview(UserQueryForm form) {
6666
var ocppTagsPerUser = getOcppTagsInternal(form.getUserPk(), form.getOcppIdTag());
67+
var userResults = getOverviewInternal(form);
68+
69+
List<User.Overview> userOverviews = new ArrayList<>();
70+
for (var r : userResults) {
71+
var tags = ocppTagsPerUser.getOrDefault(r.value1(), List.of());
72+
73+
var user = User.Overview.builder()
74+
.userPk(r.value1())
75+
.name(r.value2() + " " + r.value3())
76+
.phone(r.value4())
77+
.email(r.value5())
78+
.ocppTagEntries(tags)
79+
.build();
80+
81+
// TODO: Improve later. This is not efficient, because we filter after fetching all results. However, this
82+
// should be acceptable since the number of users (and tags) are usually not very high, and this
83+
// overview query will probably not be in the hot path.
84+
switch (form.getOcppTagFilter()) {
85+
case OnlyUsersWithTags -> {
86+
if (!tags.isEmpty()) {
87+
userOverviews.add(user);
88+
}
89+
}
90+
case OnlyUsersWithoutTags -> {
91+
if (tags.isEmpty()) {
92+
userOverviews.add(user);
93+
}
94+
}
95+
default -> userOverviews.add(user);
96+
}
97+
}
6798

68-
return getOverviewInternal(form)
69-
.map(r -> User.Overview.builder()
70-
.userPk(r.value1())
71-
.name(r.value2() + " " + r.value3())
72-
.phone(r.value4())
73-
.email(r.value5())
74-
.ocppTagEntries(ocppTagsPerUser.getOrDefault(r.value1(), List.of()))
75-
.build()
76-
);
99+
return userOverviews;
77100
}
78101

79102
@Override

src/main/java/de/rwth/idsg/steve/web/dto/UserQueryForm.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public class UserQueryForm {
3939
private String name;
4040
private String email;
4141

42+
private OcppTagFilter ocppTagFilter = OcppTagFilter.All;
43+
4244
public boolean isSetUserPk() {
4345
return userPk != null;
4446
}
@@ -54,4 +56,11 @@ public boolean isSetName() {
5456
public boolean isSetEmail() {
5557
return email != null;
5658
}
59+
60+
public enum OcppTagFilter {
61+
All,
62+
OnlyUsersWithTags,
63+
OnlyUsersWithoutTags
64+
}
65+
5766
}

src/main/resources/webapp/WEB-INF/views/data-man/users.jsp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@
3636
<td>Ocpp ID Tag:</td>
3737
<td><form:input path="ocppIdTag"/></td>
3838
</tr>
39+
<tr>
40+
<td>Ocpp ID Tag Relationship:</td>
41+
<td>
42+
<form:select path="ocppTagFilter">
43+
<form:options items="${ocppTagFilter}"/>
44+
</form:select>
45+
</td>
46+
</tr>
3947
<tr>
4048
<td>Name:</td>
4149
<td><form:input path="name"/></td>

0 commit comments

Comments
 (0)