Skip to content

Commit 0290333

Browse files
authored
Merge pull request #1682 from steve-community/improve-query-functionality
Improve query functionality
2 parents 1a36916 + d89ae17 commit 0290333

15 files changed

+75
-44
lines changed

src/main/java/de/rwth/idsg/steve/repository/OcppTagRepository.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* @since 19.08.2014
3232
*/
3333
public interface OcppTagRepository {
34-
List<OcppTag.Overview> getOverview(OcppTagQueryForm form);
34+
List<OcppTag.OcppTagOverview> getOverview(OcppTagQueryForm form);
3535

3636
Result<OcppTagActivityRecord> getRecords();
3737
Result<OcppTagActivityRecord> getRecords(List<String> idTagList);

src/main/java/de/rwth/idsg/steve/repository/dto/OcppTag.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public final class OcppTag {
3535
@Getter
3636
@Builder
3737
@ToString
38-
public static final class Overview {
38+
public static final class OcppTagOverview {
3939
@Schema(description = "PK of the OCPP tag")
4040
private final Integer ocppTagPk;
4141

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

+4
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ private Result<Record5<Integer, String, String, String, DateTime>> getOverviewIn
158158
selectQuery.addConditions(includes(CHARGE_BOX.CHARGE_BOX_ID, form.getChargeBoxId()));
159159
}
160160

161+
if (form.isSetNote()) {
162+
selectQuery.addConditions(includes(CHARGE_BOX.NOTE, form.getNote()));
163+
}
164+
161165
switch (form.getHeartbeatPeriod()) {
162166
case ALL:
163167
break;

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

+10-5
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
import de.rwth.idsg.steve.SteveException;
2222
import de.rwth.idsg.steve.repository.OcppTagRepository;
23-
import de.rwth.idsg.steve.repository.dto.OcppTag.Overview;
23+
import de.rwth.idsg.steve.repository.dto.OcppTag.OcppTagOverview;
2424
import de.rwth.idsg.steve.web.dto.OcppTagForm;
2525
import de.rwth.idsg.steve.web.dto.OcppTagQueryForm;
2626
import jooq.steve.db.tables.OcppTagActivity;
@@ -43,6 +43,7 @@
4343
import java.util.List;
4444
import java.util.stream.Collectors;
4545

46+
import static de.rwth.idsg.steve.utils.CustomDSL.includes;
4647
import static de.rwth.idsg.steve.utils.DateTimeUtils.humanize;
4748
import static de.rwth.idsg.steve.utils.DateTimeUtils.toDateTime;
4849
import static jooq.steve.db.tables.OcppTag.OCPP_TAG;
@@ -65,7 +66,7 @@ public OcppTagRepositoryImpl(DSLContext ctx) {
6566

6667
@Override
6768
@SuppressWarnings("unchecked")
68-
public List<Overview> getOverview(OcppTagQueryForm form) {
69+
public List<OcppTagOverview> getOverview(OcppTagQueryForm form) {
6970
SelectQuery selectQuery = ctx.selectQuery();
7071
selectQuery.addFrom(OCPP_TAG_ACTIVITY);
7172

@@ -98,6 +99,10 @@ public List<Overview> getOverview(OcppTagQueryForm form) {
9899
selectQuery.addConditions(OCPP_TAG_ACTIVITY.PARENT_ID_TAG.eq(form.getParentIdTag()));
99100
}
100101

102+
if (form.isNoteSet()) {
103+
selectQuery.addConditions(includes(OCPP_TAG_ACTIVITY.NOTE, form.getNote()));
104+
}
105+
101106
switch (form.getExpired()) {
102107
case ALL:
103108
break;
@@ -253,10 +258,10 @@ private void processBooleanType(SelectQuery selectQuery,
253258
}
254259

255260
private static class UserMapper
256-
implements RecordMapper<Record10<Integer, Integer, String, String, DateTime, Boolean, Boolean, Integer, Long, String>, Overview> {
261+
implements RecordMapper<Record10<Integer, Integer, String, String, DateTime, Boolean, Boolean, Integer, Long, String>, OcppTagOverview> {
257262
@Override
258-
public Overview map(Record10<Integer, Integer, String, String, DateTime, Boolean, Boolean, Integer, Long, String> r) {
259-
return Overview.builder()
263+
public OcppTagOverview map(Record10<Integer, Integer, String, String, DateTime, Boolean, Boolean, Integer, Long, String> r) {
264+
return OcppTagOverview.builder()
260265
.ocppTagPk(r.value1())
261266
.parentOcppTagPk(r.value2())
262267
.idTag(r.value3())

src/main/java/de/rwth/idsg/steve/service/OcppTagService.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import static de.rwth.idsg.steve.utils.OcppTagActivityRecordUtils.isExpired;
2323

2424
import com.google.common.base.Strings;
25-
import de.rwth.idsg.steve.SteveException;
2625
import de.rwth.idsg.steve.repository.OcppTagRepository;
2726
import de.rwth.idsg.steve.repository.dto.OcppTag;
2827
import de.rwth.idsg.steve.service.dto.UnidentifiedIncomingObject;
@@ -56,7 +55,7 @@ public class OcppTagService {
5655
private final OcppTagRepository ocppTagRepository;
5756
private final AuthTagService authTagService;
5857

59-
public List<OcppTag.Overview> getOverview(OcppTagQueryForm form) {
58+
public List<OcppTag.OcppTagOverview> getOverview(OcppTagQueryForm form) {
6059
return ocppTagRepository.getOverview(form);
6160
}
6261

src/main/java/de/rwth/idsg/steve/web/api/OcppTagsRestController.java

+10-10
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
package de.rwth.idsg.steve.web.api;
2020

2121
import de.rwth.idsg.steve.SteveException;
22-
import de.rwth.idsg.steve.repository.dto.OcppTag;
22+
import de.rwth.idsg.steve.repository.dto.OcppTag.OcppTagOverview;
2323
import de.rwth.idsg.steve.service.OcppTagService;
2424
import de.rwth.idsg.steve.web.api.ApiControllerAdvice.ApiErrorResponse;
2525
import de.rwth.idsg.steve.web.dto.OcppTagForm;
26-
import de.rwth.idsg.steve.web.dto.OcppTagQueryForm;
26+
import de.rwth.idsg.steve.web.dto.OcppTagQueryForm.OcppTagQueryFormForApi;
2727
import io.swagger.v3.oas.annotations.Operation;
2828
import io.swagger.v3.oas.annotations.media.Content;
2929
import io.swagger.v3.oas.annotations.media.Schema;
@@ -80,7 +80,7 @@ public class OcppTagsRestController {
8080
)
8181
@GetMapping(value = "")
8282
@ResponseBody
83-
public List<OcppTag.Overview> get(OcppTagQueryForm.ForApi params) {
83+
public List<OcppTagOverview> get(OcppTagQueryFormForApi params) {
8484
log.debug("Read request for query: {}", params);
8585

8686
var response = ocppTagService.getOverview(params);
@@ -100,7 +100,7 @@ public List<OcppTag.Overview> get(OcppTagQueryForm.ForApi params) {
100100
)
101101
@GetMapping("/{ocppTagPk}")
102102
@ResponseBody
103-
public OcppTag.Overview getOne(@PathVariable("ocppTagPk") Integer ocppTagPk) {
103+
public OcppTagOverview getOne(@PathVariable("ocppTagPk") Integer ocppTagPk) {
104104
log.debug("Read request for ocppTagPk: {}", ocppTagPk);
105105

106106
var response = getOneInternal(ocppTagPk);
@@ -123,7 +123,7 @@ public OcppTag.Overview getOne(@PathVariable("ocppTagPk") Integer ocppTagPk) {
123123
@PostMapping
124124
@ResponseBody
125125
@ResponseStatus(HttpStatus.CREATED)
126-
public OcppTag.Overview create(@RequestBody @Valid OcppTagForm params) {
126+
public OcppTagOverview create(@RequestBody @Valid OcppTagForm params) {
127127
log.debug("Create request: {}", params);
128128

129129
int ocppTagPk = ocppTagService.addOcppTag(params);
@@ -145,7 +145,7 @@ public OcppTag.Overview create(@RequestBody @Valid OcppTagForm params) {
145145
)
146146
@PutMapping("/{ocppTagPk}")
147147
@ResponseBody
148-
public OcppTag.Overview update(@PathVariable("ocppTagPk") Integer ocppTagPk, @RequestBody @Valid OcppTagForm params) {
148+
public OcppTagOverview update(@PathVariable("ocppTagPk") Integer ocppTagPk, @RequestBody @Valid OcppTagForm params) {
149149
params.setOcppTagPk(ocppTagPk); // the one from incoming params does not matter
150150
log.debug("Update request: {}", params);
151151

@@ -169,7 +169,7 @@ public OcppTag.Overview update(@PathVariable("ocppTagPk") Integer ocppTagPk, @Re
169169
)
170170
@DeleteMapping("/{ocppTagPk}")
171171
@ResponseBody
172-
public OcppTag.Overview delete(@PathVariable("ocppTagPk") Integer ocppTagPk) {
172+
public OcppTagOverview delete(@PathVariable("ocppTagPk") Integer ocppTagPk) {
173173
log.debug("Delete request for ocppTagPk: {}", ocppTagPk);
174174

175175
var response = getOneInternal(ocppTagPk);
@@ -179,11 +179,11 @@ public OcppTag.Overview delete(@PathVariable("ocppTagPk") Integer ocppTagPk) {
179179
return response;
180180
}
181181

182-
private OcppTag.Overview getOneInternal(int ocppTagPk) {
183-
OcppTagQueryForm.ForApi params = new OcppTagQueryForm.ForApi();
182+
private OcppTagOverview getOneInternal(int ocppTagPk) {
183+
OcppTagQueryFormForApi params = new OcppTagQueryFormForApi();
184184
params.setOcppTagPk(ocppTagPk);
185185

186-
List<OcppTag.Overview> results = ocppTagService.getOverview(params);
186+
List<OcppTagOverview> results = ocppTagService.getOverview(params);
187187
if (results.isEmpty()) {
188188
throw new SteveException.NotFound("Could not find this ocppTag");
189189
}

src/main/java/de/rwth/idsg/steve/web/api/TransactionsRestController.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public class TransactionsRestController {
7070
)
7171
@GetMapping(value = "")
7272
@ResponseBody
73-
public List<Transaction> get(@Valid TransactionQueryForm.ForApi params) {
73+
public List<Transaction> get(@Valid TransactionQueryForm.TransactionQueryFormForApi params) {
7474
log.debug("Read request for query: {}", params);
7575

7676
if (params.isReturnCSV()) {

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

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package de.rwth.idsg.steve.web.dto;
2020

21+
import com.google.common.base.Strings;
2122
import de.rwth.idsg.steve.ocpp.OcppVersion;
2223
import lombok.Getter;
2324
import lombok.RequiredArgsConstructor;
@@ -35,6 +36,7 @@ public class ChargePointQueryForm {
3536

3637
private String chargeBoxId;
3738
private String description;
39+
private String note;
3840
private OcppVersion ocppVersion;
3941
private QueryPeriodType heartbeatPeriod;
4042

@@ -57,6 +59,10 @@ public boolean isSetChargeBoxId() {
5759
return chargeBoxId != null;
5860
}
5961

62+
public boolean isSetNote() {
63+
return !Strings.isNullOrEmpty(note);
64+
}
65+
6066
@RequiredArgsConstructor
6167
public enum QueryPeriodType {
6268
ALL("All"),

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

+11-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package de.rwth.idsg.steve.web.dto;
2020

21+
import com.google.common.base.Strings;
2122
import io.swagger.v3.oas.annotations.media.Schema;
2223
import lombok.Getter;
2324
import lombok.RequiredArgsConstructor;
@@ -53,6 +54,9 @@ public class OcppTagQueryForm {
5354
@Schema(description = "Return blocked, not blocked, or all Ocpp tags? Defaults to ALL")
5455
private BooleanType blocked = BooleanType.FALSE;
5556

57+
@Schema(description = "Query by the note associated with the OCPP tag. The value of this field does not have to exactly match the note. A substring is also accepted.")
58+
private String note;
59+
5660
@Schema(hidden = true)
5761
public boolean isOcppTagPkSet() {
5862
return ocppTagPk != null;
@@ -68,6 +72,11 @@ public boolean isParentIdTagSet() {
6872
return parentIdTag != null;
6973
}
7074

75+
@Schema(hidden = true)
76+
public boolean isNoteSet() {
77+
return !Strings.isNullOrEmpty(note);
78+
}
79+
7180
public BooleanType getExpired() {
7281
return Objects.requireNonNullElse(expired, BooleanType.ALL);
7382
}
@@ -107,9 +116,9 @@ public static BooleanType fromValue(String v) {
107116
}
108117

109118
@ToString(callSuper = true)
110-
public static class ForApi extends OcppTagQueryForm {
119+
public static class OcppTagQueryFormForApi extends OcppTagQueryForm {
111120

112-
public ForApi () {
121+
public OcppTagQueryFormForApi() {
113122
super();
114123
setExpired(BooleanType.ALL);
115124
setInTransaction(BooleanType.ALL);

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,9 @@ public static QueryPeriodType fromValue(String v) {
119119
}
120120

121121
@ToString(callSuper = true)
122-
public static class ForApi extends TransactionQueryForm {
122+
public static class TransactionQueryFormForApi extends TransactionQueryForm {
123123

124-
public ForApi() {
124+
public TransactionQueryFormForApi() {
125125
super();
126126
setType(QueryType.ALL);
127127
setPeriodType(QueryPeriodType.ALL);

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

+4
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@
9898
</form:select>
9999
</td>
100100
</tr>
101+
<tr>
102+
<td>Note:</td>
103+
<td><form:input path="note"/></td>
104+
</tr>
101105
<tr>
102106
<td></td>
103107
<td id="add_space">

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

+4
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@
112112
</form:select>
113113
</td>
114114
</tr>
115+
<tr>
116+
<td>Note:</td>
117+
<td><form:input path="note"/></td>
118+
</tr>
115119
<tr>
116120
<td></td>
117121
<td id="add_space">

src/test/java/de/rwth/idsg/steve/issues/Issue1219.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ private void realTest() {
9494
var repository = new OcppTagRepositoryImpl(ctx);
9595

9696
long start = System.currentTimeMillis();
97-
List<OcppTag.Overview> values = repository.getOverview(new OcppTagQueryForm());
97+
List<OcppTag.OcppTagOverview> values = repository.getOverview(new OcppTagQueryForm());
9898
long stop = System.currentTimeMillis();
9999

100100
System.out.println("took " + Duration.millis(stop - start));

0 commit comments

Comments
 (0)