diff --git a/src/main/java/org/caosdb/server/entity/Entity.java b/src/main/java/org/caosdb/server/entity/Entity.java index 9c75e91d50e84bd06356c7f85eb1a1018232638b..dd80101f28ecc47aa099697dd6a6c8ffed1fb372 100644 --- a/src/main/java/org/caosdb/server/entity/Entity.java +++ b/src/main/java/org/caosdb/server/entity/Entity.java @@ -646,15 +646,7 @@ public abstract class Entity extends AbstractObservable implements EntityInterfa // Parse ID. Generate error if it isn't an integer. if (element.getAttribute("id") != null && !element.getAttributeValue("id").equals("")) { - try { - // check is integer compatible - Integer.parseInt(element.getAttributeValue("id")); - this.getId().setId(element.getAttributeValue("id")); - } catch (final NumberFormatException e) { - addInfo("Id was " + element.getAttributeValue("id") + "."); - addError(ServerMessages.PARSING_FAILED); - setEntityStatus(EntityStatus.UNQUALIFIED); - } + this.getId().setId(element.getAttributeValue("id")); } // Parse NAME. diff --git a/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java b/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java index 61724779d7d9ae466a5acc3eb8116a309db5a5f6..c8f56610f64deaadcddfbf10a1c0dfbdc43277b9 100644 --- a/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java +++ b/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java @@ -135,19 +135,11 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa } else { // or ID retrieves. final String id = sub_request.getRetrieveRequest().getId(); if (!id.isBlank()) { - /* - try { - */ final RetrieveEntity entity = new RetrieveEntity(new EntityID(id)); if (isFileDownload) { entity.setFlag("download_files", "true"); } container.add(entity); - /* - } catch (final NumberFormatException e) { - // We handle this after the retrieval - } - */ } } } @@ -197,34 +189,9 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa } } - // Add those entities which have not been retrieved because they have a string id - /*for (final TransactionRequest sub_request : request.getRequestsList()) { - final String id = sub_request.getRetrieveRequest().getId(); - if (!id.isBlank()) { - try { - grpcToCaosdb.getId(id); - } catch (final NumberFormatException e) { - // ID wasn't an integer - the server doesn't support string ids yet, so that entity - // cannot exist. - builder.addResponses( - TransactionResponse.newBuilder() - .setRetrieveResponse( - RetrieveResponse.newBuilder().setEntityResponse(entityDoesNotExist(id)))); - } - } - }*/ return builder.build(); } - /* - private EntityResponse entityDoesNotExist(final String id) { - return EntityResponse.newBuilder() - .addErrors(caosdbToGrpc.convert(ServerMessages.ENTITY_DOES_NOT_EXIST)) - .setEntity(Entity.newBuilder().setId(id)) - .build(); - } - */ - private String getSRID() { return UUID.randomUUID().toString(); } @@ -301,29 +268,16 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa final UpdateRequest updateRequest = subRequest.getUpdateRequest(); final Entity updateEntity = updateRequest.getEntityRequest().getEntity(); - try { - final UpdateEntity entity = - new UpdateEntity( - new EntityID(updateEntity.getId()), // ID is not handled by grpc convert - grpcToCaosdb.convert(updateEntity.getRole())); - grpcToCaosdb.convert(updateEntity, entity); - addFileUpload(container, entity, updateRequest.getEntityRequest()); - container.add(entity); - } catch (final NumberFormatException e) { - // ID wasn't an integer - return failedWriteDueToStringId(requests); - } + final UpdateEntity entity = + new UpdateEntity( + new EntityID(updateEntity.getId()), grpcToCaosdb.convert(updateEntity.getRole())); + grpcToCaosdb.convert(updateEntity, entity); + addFileUpload(container, entity, updateRequest.getEntityRequest()); + container.add(entity); break; case DELETE_REQUEST: final DeleteRequest deleteRequest = subRequest.getDeleteRequest(); - try { - final DeleteEntity entity = new DeleteEntity(new EntityID(deleteRequest.getId())); - container.add(entity); - - } catch (final NumberFormatException e) { - // ID wasn't an integer - return failedWriteDueToStringId(requests); - } + container.add(new DeleteEntity(new EntityID(deleteRequest.getId()))); break; default: throw new CaosDBException( @@ -363,69 +317,6 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa return builder.build(); } - /** - * Handle a request which contains string id (which cannot be converted to integer ids) and return - * a response which has the "ENTITY_DOES_NOT_EXIST" error for all entities with affected ids. - * - * <p>This does not attempt to execute a single request. - * - * @param request - * @return - */ - private MultiTransactionResponse failedWriteDueToStringId(final MultiTransactionRequest request) { - final org.caosdb.api.entity.v1.MultiTransactionResponse.Builder builder = - MultiTransactionResponse.newBuilder(); - for (final TransactionRequest subRequest : request.getRequestsList()) { - final IdResponse.Builder idResponse = IdResponse.newBuilder(); - switch (subRequest.getWrappedRequestsCase()) { - case INSERT_REQUEST: - builder - .addResponsesBuilder() - .setInsertResponse(InsertResponse.newBuilder().setIdResponse(idResponse)); - - break; - case UPDATE_REQUEST: - final UpdateRequest updateRequest = subRequest.getUpdateRequest(); - final Entity updateEntity = updateRequest.getEntityRequest().getEntity(); - - idResponse.setId(updateEntity.getId()); - /* - try { - grpcToCaosdb.getId(updateEntity.getId()); - } catch (final NumberFormatException e) { - // ID wasn't an integer - idResponse.addErrors(caosdbToGrpc.convert(ServerMessages.ENTITY_DOES_NOT_EXIST)); - } - */ - builder - .addResponsesBuilder() - .setUpdateResponse(UpdateResponse.newBuilder().setIdResponse(idResponse)); - break; - case DELETE_REQUEST: - final DeleteRequest deleteRequest = subRequest.getDeleteRequest(); - idResponse.setId(deleteRequest.getId()); - /* - try { - grpcToCaosdb.getId(deleteRequest.getId()); - } catch (final NumberFormatException e) { - // ID wasn't an integer - idResponse.addErrors(caosdbToGrpc.convert(ServerMessages.ENTITY_DOES_NOT_EXIST)); - } - */ - builder - .addResponsesBuilder() - .setDeleteResponse(DeleteResponse.newBuilder().setIdResponse(idResponse)); - break; - default: - throw new CaosDBException( - "Cannot process a " - + subRequest.getWrappedRequestsCase().name() - + " in a write request."); - } - } - return builder.build(); - } - private void addFileUpload( final WritableContainer container, final EntityInterface entity, diff --git a/src/main/java/org/caosdb/server/query/IDFilter.java b/src/main/java/org/caosdb/server/query/IDFilter.java index ce01f5f242f914c6f6f812f0875332f7ca004c07..c00890344d9c9ff4c91532543ae8f44f2ebda571 100644 --- a/src/main/java/org/caosdb/server/query/IDFilter.java +++ b/src/main/java/org/caosdb/server/query/IDFilter.java @@ -37,19 +37,11 @@ public class IDFilter implements EntityFilterInterface { private final String operator; private final String value; private final String aggregate; - private final Integer vInt; public IDFilter(final String o, final String v, final String a) { this.operator = o; this.value = v; this.aggregate = a; - Integer i; - try { - i = Integer.valueOf(v); - } catch (final NumberFormatException e) { - i = null; - } - this.vInt = i; } @Override @@ -79,7 +71,7 @@ public class IDFilter implements EntityFilterInterface { if (getValue() == null) { callIDFilter.setNull(4, INTEGER); } else { - callIDFilter.setInt(4, this.vInt); + callIDFilter.setString(4, this.getValue()); } // aggregate diff --git a/src/main/java/org/caosdb/server/query/POV.java b/src/main/java/org/caosdb/server/query/POV.java index ebc35a16b1495accf8cd4a114dd688c2b2529c1b..af5b446f6024f62d04788036a80bb5cfa41b8b97 100644 --- a/src/main/java/org/caosdb/server/query/POV.java +++ b/src/main/java/org/caosdb/server/query/POV.java @@ -383,8 +383,8 @@ public class POV implements EntityFilterInterface { query.getConnection().prepareCall("call initPOVRefidsTable(?,?)")) { // stmt = this.connection.prepareCall("call initPOV(?,?,?,?,?)"); // initPOVRefidsTable(in vInt INT, in vText VARCHAR(255)) - if (this.vInt != null && this.vInt > 0) { - stmt.setInt(1, this.vInt); + if (this.value != null) { + stmt.setString(1, this.value); } else { stmt.setNull(1, Types.INTEGER); }