Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
C
caosdb-server
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
caosdb
Software
caosdb-server
Commits
00275630
Verified
Commit
00275630
authored
Jul 29, 2021
by
Timm Fitschen
Browse files
Options
Downloads
Patches
Plain Diff
WIP: delete insert
parent
2dbcc909
No related branches found
No related tags found
2 merge requests
!44
Release 0.6
,
!43
Merge f-GRPC-main to dev
Pipeline
#10903
failed
Jul 29, 2021
Stage: info
Stage: test
Stage: deploy
Changes
3
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
caosdb-proto
+1
-1
1 addition, 1 deletion
caosdb-proto
pom.xml
+1
-1
1 addition, 1 deletion
pom.xml
src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java
+127
-19
127 additions, 19 deletions
.../org/caosdb/server/grpc/EntityTransactionServiceImpl.java
with
129 additions
and
21 deletions
caosdb-proto
@
8febce70
Subproject commit
4845aa8e479b85b50a130530bbc96a0cab4f8688
Subproject commit
8febce70a96b3322d61a74e4567ade8b33f75369
This diff is collapsed.
Click to expand it.
pom.xml
+
1
−
1
View file @
00275630
...
...
@@ -25,7 +25,7 @@
<modelVersion>
4.0.0
</modelVersion>
<groupId>
org.caosdb
</groupId>
<artifactId>
caosdb-server
</artifactId>
<version>
0.5.0-GRPC0.0.
6
</version>
<version>
0.5.0-GRPC0.0.
7
</version>
<packaging>
jar
</packaging>
<name>
CaosDB Server
</name>
<scm>
...
...
This diff is collapsed.
Click to expand it.
src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java
+
127
−
19
View file @
00275630
...
...
@@ -6,24 +6,35 @@ import java.util.LinkedList;
import
java.util.List
;
import
java.util.UUID
;
import
org.apache.shiro.SecurityUtils
;
import
org.caosdb.api.entity.v1alpha1.ByIdRequest
;
import
org.caosdb.api.entity.v1alpha1.Entity
;
import
org.caosdb.api.entity.v1alpha1.Entity.Builder
;
import
org.caosdb.api.entity.v1alpha1.EntityTransactionServiceGrpc.EntityTransactionServiceImplBase
;
import
org.caosdb.api.entity.v1alpha1.FullEntityRequest
;
import
org.caosdb.api.entity.v1alpha1.IdResponse
;
import
org.caosdb.api.entity.v1alpha1.MessageCode
;
import
org.caosdb.api.entity.v1alpha1.MultiTransactionRequest
;
import
org.caosdb.api.entity.v1alpha1.MultiTransactionResponse
;
import
org.caosdb.api.entity.v1alpha1.Parent
;
import
org.caosdb.api.entity.v1alpha1.
Retrieve
Request
;
import
org.caosdb.api.entity.v1alpha1.
QueryOrId
Request
;
import
org.caosdb.api.entity.v1alpha1.RetrieveResponse
;
import
org.caosdb.api.entity.v1alpha1.TransactionRequest
;
import
org.caosdb.api.entity.v1alpha1.TransactionRequest.WrappedRequestsCase
;
import
org.caosdb.api.entity.v1alpha1.TransactionResponse
;
import
org.caosdb.api.entity.v1alpha1.Version
;
import
org.caosdb.server.entity.DeleteEntity
;
import
org.caosdb.server.entity.EntityInterface
;
import
org.caosdb.server.entity.InsertEntity
;
import
org.caosdb.server.entity.MagicTypes
;
import
org.caosdb.server.entity.Message
;
import
org.caosdb.server.entity.RetrieveEntity
;
import
org.caosdb.server.entity.Role
;
import
org.caosdb.server.entity.container.ParentContainer
;
import
org.caosdb.server.entity.container.PropertyContainer
;
import
org.caosdb.server.entity.container.RetrieveContainer
;
import
org.caosdb.server.entity.container.WritableContainer
;
import
org.caosdb.server.entity.wrapper.Property
;
import
org.caosdb.server.transaction.Retrieve
;
import
org.caosdb.server.transaction.WriteTransaction
;
import
org.caosdb.server.utils.EntityStatus
;
import
org.caosdb.server.utils.ServerMessages
;
...
...
@@ -69,15 +80,7 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
if
(
from
.
hasParents
())
{
builder
.
addAllParents
(
convert
(
from
.
getParents
()));
}
if
(
from
.
hasMessage
(
Message
.
MessageType
.
Error
.
toString
()))
{
builder
.
addAllErrors
(
convert
(
from
.
getMessages
(
Message
.
MessageType
.
Error
.
toString
())));
}
if
(
from
.
hasMessage
(
Message
.
MessageType
.
Warning
.
toString
()))
{
builder
.
addAllErrors
(
convert
(
from
.
getMessages
(
Message
.
MessageType
.
Warning
.
toString
())));
}
if
(
from
.
hasMessage
(
Message
.
MessageType
.
Info
.
toString
()))
{
builder
.
addAllErrors
(
convert
(
from
.
getMessages
(
Message
.
MessageType
.
Info
.
toString
())));
}
appendMessages
(
from
,
builder
);
return
builder
.
build
();
}
...
...
@@ -104,6 +107,8 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
// TODO move to Message class.
if
(
m
.
equals
(
ServerMessages
.
ENTITY_DOES_NOT_EXIST
))
{
return
MessageCode
.
MESSAGE_CODE_ENTITY_DOES_NOT_EXIST
;
}
else
if
(
m
.
equals
(
ServerMessages
.
ENTITY_HAS_NO_PROPERTIES
))
{
return
MessageCode
.
MESSAGE_CODE_ENTITY_HAS_NO_PROPERTIES
;
}
throw
new
UnsupportedOperationException
(
"Unkown message code: "
+
m
.
toString
());
}
...
...
@@ -191,11 +196,11 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
};
}
public
Integer
getId
(
final
ByIdRequest
request
)
{
return
Integer
.
parseInt
(
request
.
getId
()
);
public
Integer
getId
(
final
String
id
)
{
return
Integer
.
parseInt
(
id
);
}
public
RetrieveResponse
retrieve
(
final
RetrieveRequest
r
equest
)
throws
Exception
{
public
RetrieveResponse
retrieve
(
final
QueryOrIdRequest
queryOrIdR
equest
)
throws
Exception
{
Entity
responseEntity
=
null
;
final
org
.
caosdb
.
api
.
entity
.
v1alpha1
.
RetrieveResponse
.
Builder
builder
=
...
...
@@ -203,7 +208,7 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
final
RetrieveContainer
container
=
new
RetrieveContainer
(
SecurityUtils
.
getSubject
(),
getTimestamp
(),
getSRID
(),
null
);
try
{
final
RetrieveEntity
entity
=
new
RetrieveEntity
(
getId
(
r
equest
.
get
By
Id
()));
final
RetrieveEntity
entity
=
new
RetrieveEntity
(
getId
(
queryOrIdR
equest
.
getId
()));
container
.
add
(
entity
);
final
Retrieve
transaction
=
new
Retrieve
(
container
);
...
...
@@ -212,7 +217,7 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
}
catch
(
final
NumberFormatException
e
)
{
// ID wasn't an integer - the server doesn't support string id's yet, so that entity cannot
// exist.
responseEntity
=
entityDoesNotExist
(
request
.
getById
()
.
getId
());
responseEntity
=
entityDoesNotExist
(
queryOrIdRequest
.
getId
());
}
builder
.
setEntity
(
responseEntity
);
...
...
@@ -234,11 +239,114 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
return
System
.
currentTimeMillis
();
}
public
MultiTransactionResponse
transaction
(
final
MultiTransactionRequest
request
)
throws
Exception
{
final
TransactionResponse
response
=
singleTransaction
(
request
.
getRequests
(
0
));
return
MultiTransactionResponse
.
newBuilder
().
addResponses
(
response
).
build
();
}
public
TransactionResponse
singleTransaction
(
final
TransactionRequest
request
)
throws
Exception
{
final
WrappedRequestsCase
requestCase
=
request
.
getWrappedRequestsCase
();
switch
(
requestCase
)
{
case
RETRIEVE_REQUEST:
return
TransactionResponse
.
newBuilder
()
.
setRetrieveResponse
(
retrieve
(
request
.
getRetrieveRequest
()))
.
build
();
case
INSERT_REQUEST:
return
TransactionResponse
.
newBuilder
()
.
setInsertResponse
(
insert
(
request
.
getInsertRequest
()))
.
build
();
case
DELETE_REQUEST:
return
TransactionResponse
.
newBuilder
()
.
setDeleteResponse
(
delete
(
request
.
getDeleteRequest
()))
.
build
();
default
:
throw
new
UnsupportedOperationException
(
"Not implemented"
);
}
}
private
IdResponse
delete
(
final
QueryOrIdRequest
deleteRequest
)
throws
Exception
{
final
String
id
=
deleteRequest
.
getId
();
final
org
.
caosdb
.
api
.
entity
.
v1alpha1
.
IdResponse
.
Builder
builder
=
IdResponse
.
newBuilder
();
builder
.
setId
(
id
);
final
WritableContainer
container
=
new
WritableContainer
(
SecurityUtils
.
getSubject
(),
getTimestamp
(),
getSRID
(),
null
);
try
{
final
DeleteEntity
entity
=
new
DeleteEntity
(
getId
(
id
));
container
.
add
(
entity
);
final
WriteTransaction
transaction
=
new
WriteTransaction
(
container
);
transaction
.
execute
();
appendMessages
(
entity
,
builder
);
}
catch
(
final
NumberFormatException
e
)
{
// ID wasn't an integer - the server doesn't support string id's yet, so that entity cannot
// exist.
builder
.
addEntityErrors
(
convert
(
ServerMessages
.
ENTITY_DOES_NOT_EXIST
));
}
return
builder
.
build
();
}
private
IdResponse
insert
(
final
FullEntityRequest
insertRequest
)
throws
Exception
{
final
Entity
insertEntity
=
insertRequest
.
getEntity
();
final
org
.
caosdb
.
api
.
entity
.
v1alpha1
.
IdResponse
.
Builder
builder
=
IdResponse
.
newBuilder
();
final
WritableContainer
container
=
new
WritableContainer
(
SecurityUtils
.
getSubject
(),
getTimestamp
(),
getSRID
(),
null
);
final
InsertEntity
entity
=
convert
(
insertEntity
);
container
.
add
(
entity
);
final
WriteTransaction
transaction
=
new
WriteTransaction
(
container
);
transaction
.
execute
();
builder
.
setId
(
Integer
.
toString
(
entity
.
getId
()));
appendMessages
(
entity
,
builder
);
return
builder
.
build
();
}
private
void
appendMessages
(
final
EntityInterface
from
,
final
org
.
caosdb
.
api
.
entity
.
v1alpha1
.
Entity
.
Builder
builder
)
{
if
(
from
.
hasMessage
(
Message
.
MessageType
.
Error
.
toString
()))
{
builder
.
addAllErrors
(
convert
(
from
.
getMessages
(
Message
.
MessageType
.
Error
.
toString
())));
}
if
(
from
.
hasMessage
(
Message
.
MessageType
.
Warning
.
toString
()))
{
builder
.
addAllWarnings
(
convert
(
from
.
getMessages
(
Message
.
MessageType
.
Warning
.
toString
())));
}
if
(
from
.
hasMessage
(
Message
.
MessageType
.
Info
.
toString
()))
{
builder
.
addAllInfos
(
convert
(
from
.
getMessages
(
Message
.
MessageType
.
Info
.
toString
())));
}
}
private
void
appendMessages
(
final
EntityInterface
from
,
final
org
.
caosdb
.
api
.
entity
.
v1alpha1
.
IdResponse
.
Builder
builder
)
{
if
(
from
.
hasMessage
(
Message
.
MessageType
.
Error
.
toString
()))
{
builder
.
addAllEntityErrors
(
convert
(
from
.
getMessages
(
Message
.
MessageType
.
Error
.
toString
())));
}
if
(
from
.
hasMessage
(
Message
.
MessageType
.
Warning
.
toString
()))
{
builder
.
addAllEntityWarnings
(
convert
(
from
.
getMessages
(
Message
.
MessageType
.
Warning
.
toString
())));
}
if
(
from
.
hasMessage
(
Message
.
MessageType
.
Info
.
toString
()))
{
builder
.
addAllEntityInfos
(
convert
(
from
.
getMessages
(
Message
.
MessageType
.
Info
.
toString
())));
}
}
private
InsertEntity
convert
(
final
Entity
insertEntity
)
{
final
InsertEntity
entity
=
new
InsertEntity
(
insertEntity
.
getName
().
isEmpty
()
?
null
:
insertEntity
.
getName
(),
Role
.
parse
(
insertEntity
.
getRole
()));
// TODO (other basic attributes, properties, parents)
return
entity
;
}
@Override
public
void
retrieve
(
final
RetrieveRequest
request
,
final
StreamObserver
<
RetrieveResponse
>
responseObserver
)
{
public
void
multiTransaction
(
final
MultiTransactionRequest
request
,
final
StreamObserver
<
MultiTransactionResponse
>
responseObserver
)
{
try
{
final
Retrieve
Response
response
=
retrieve
(
request
);
final
MultiTransaction
Response
response
=
transaction
(
request
);
responseObserver
.
onNext
(
response
);
responseObserver
.
onCompleted
();
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment