Skip to content
Snippets Groups Projects
Verified Commit f9f61a86 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

WIP: query

parent c864fcfc
No related branches found
No related tags found
2 merge requests!44Release 0.6,!43Merge f-GRPC-main to dev
Pipeline #11439 passed
...@@ -212,36 +212,49 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa ...@@ -212,36 +212,49 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
public MultiTransactionResponse retrieve(final MultiTransactionRequest request) throws Exception { public MultiTransactionResponse retrieve(final MultiTransactionRequest request) throws Exception {
final MultiTransactionResponse.Builder builder = MultiTransactionResponse.newBuilder(); final MultiTransactionResponse.Builder builder = MultiTransactionResponse.newBuilder();
final RetrieveContainer container = final RetrieveContainer container =
new RetrieveContainer(SecurityUtils.getSubject(), getTimestamp(), getSRID(), null); new RetrieveContainer(
SecurityUtils.getSubject(), getTimestamp(), getSRID(), new HashMap<>());
for (final TransactionRequest sub_request : request.getRequestsList()) { for (final TransactionRequest sub_request : request.getRequestsList()) {
final String id = sub_request.getRetrieveRequest().getId(); if (sub_request.getRetrieveRequest().hasQuery()
try { && !sub_request.getRetrieveRequest().getQuery().getQuery().isBlank()) {
final RetrieveEntity entity = new RetrieveEntity(getId(id)); container.getFlags().put("query", sub_request.getRetrieveRequest().getQuery().getQuery());
container.add(entity); } else {
} catch (final NumberFormatException e) { final String id = sub_request.getRetrieveRequest().getId();
// We handle this after the retrieval if (!id.isBlank()) {
try {
final RetrieveEntity entity = new RetrieveEntity(getId(id));
container.add(entity);
} catch (final NumberFormatException e) {
// We handle this after the retrieval
}
}
} }
} }
final Retrieve transaction = new Retrieve(container); final Retrieve transaction = new Retrieve(container);
transaction.execute(); transaction.execute();
for (final EntityInterface entity : container) {
builder
.addResponsesBuilder()
.setRetrieveResponse(RetrieveResponse.newBuilder().setEntity(convert(entity)));
}
// Add those entities which have not been retrieved because the have a string id
for (final TransactionRequest sub_request : request.getRequestsList()) { for (final TransactionRequest sub_request : request.getRequestsList()) {
final String id = sub_request.getRetrieveRequest().getId(); final String id = sub_request.getRetrieveRequest().getId();
try { if (!id.isBlank()) {
final EntityInterface entity = container.getEntityById(getId(id)); try {
getId(id);
builder.addResponses( } catch (final NumberFormatException e) {
TransactionResponse.newBuilder() // ID wasn't an integer - the server doesn't support string id's yet, so that entity
.setRetrieveResponse(RetrieveResponse.newBuilder().setEntity(convert(entity)))); // cannot
} catch (final NumberFormatException e) { // exist.
// ID wasn't an integer - the server doesn't support string id's yet, so that entity cannot builder.addResponses(
// exist. TransactionResponse.newBuilder()
builder.addResponses( .setRetrieveResponse(
TransactionResponse.newBuilder() RetrieveResponse.newBuilder().setEntity(entityDoesNotExist(id))));
.setRetrieveResponse( }
RetrieveResponse.newBuilder().setEntity(entityDoesNotExist(id))));
} }
} }
return builder.build(); return builder.build();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment