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
38814e02
Verified
Commit
38814e02
authored
Nov 21, 2022
by
Timm Fitschen
Browse files
Options
Downloads
Patches
Plain Diff
MAINT: clean-up CaosDBToGrpcConverters
parent
7648d2a6
No related branches found
No related tags found
2 merge requests
!80
Release 0.9
,
!72
F grpc select
Pipeline
#30754
passed
Nov 21, 2022
Stage: info
Stage: test
Stage: deploy
Changes
2
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
caosdb-proto
+1
-1
1 addition, 1 deletion
caosdb-proto
src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java
+89
-110
89 additions, 110 deletions
...n/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java
with
90 additions
and
111 deletions
caosdb-proto
@
13d083b8
Subproject commit
96e7a1fb667ed1bb3b2602af6c69724519bf5118
Subproject commit
13d083b84400507f6f1967a099e2af006af2a231
This diff is collapsed.
Click to expand it.
src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java
+
89
−
110
View file @
38814e02
...
...
@@ -617,34 +617,49 @@ public class CaosDBToGrpcConverters {
return
result
;
}
private
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
Builder
getSelectedValue
(
Selection
s
,
EntityInterface
e
)
{
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
Builder
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
String
selector
=
s
.
getSelector
();
/**
* Handle special selectors like "id", "name", "value", "parent",...
*
* @return a {@link org.caosdb.api.entity.v1.Value.Builder}, if the selector has been handled.
* Return null when the caller must handle the selector otherwise.
*/
private
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
Builder
handleSpecialSelectors
(
String
selector
,
EntityInterface
e
)
{
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
Builder
result
=
null
;
switch
(
selector
)
{
case
"value"
:
try
{
e
.
parseValue
();
}
catch
(
Message
m
)
{
throw
new
TransactionException
(
m
);
}
if
(
e
.
hasValue
())
{
return
convert
(
e
.
getValue
());
}
break
;
case
"version"
:
if
(
e
.
hasVersion
())
{
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
e
.
getVersion
().
getId
()));
return
result
;
}
break
;
case
"name"
:
if
(
e
.
hasName
())
{
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
e
.
getName
()));
return
result
;
}
break
;
case
"id"
:
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
e
.
getId
().
toString
()));
return
result
;
case
"description"
:
if
(
e
.
hasDescription
())
{
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
e
.
getDescription
()));
return
result
;
}
...
...
@@ -653,24 +668,28 @@ public class CaosDBToGrpcConverters {
case
"unit"
:
final
String
unit
=
getStringUnit
(
e
);
if
(
unit
!=
null
)
{
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
unit
));
return
result
;
}
break
;
case
"datatype"
:
if
(
e
.
hasDatatype
())
{
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
e
.
getDatatype
().
toString
()));
return
result
;
}
break
;
case
"path"
:
if
(
e
.
hasFileProperties
()
&&
e
.
getFileProperties
().
hasPath
())
{
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
e
.
getFileProperties
().
getPath
()));
return
result
;
}
break
;
case
"parent"
:
if
(
e
.
hasParents
())
{
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
CollectionValues
.
Builder
parents
=
CollectionValues
.
newBuilder
();
for
(
org
.
caosdb
.
server
.
entity
.
wrapper
.
Parent
p
:
e
.
getParents
())
{
parents
.
addValues
(
ScalarValue
.
newBuilder
().
setStringValue
(
p
.
getName
()));
...
...
@@ -680,6 +699,16 @@ public class CaosDBToGrpcConverters {
}
break
;
default
:
break
;
}
return
null
;
}
private
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
Builder
getSelectedValue
(
Selection
s
,
EntityInterface
e
)
{
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
Builder
result
=
null
;
String
selector
=
s
.
getSelector
();
result
=
handleSpecialSelectors
(
selector
,
e
);
if
(
result
==
null
)
{
// selector for a normal property
List
<
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
Builder
>
results
=
new
LinkedList
<>();
for
(
Property
p
:
e
.
getProperties
())
{
...
...
@@ -695,72 +724,15 @@ public class CaosDBToGrpcConverters {
results
.
add
(
convert
(
p
.
getValue
()));
}
else
{
// with subselection, e.g. p1.unit, site.geolocation.longitude
switch
(
s
.
getSubselection
().
getSelector
())
{
case
"name"
:
if
(
p
.
hasName
())
{
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
p
.
getName
()));
results
.
add
(
result
);
}
break
;
case
"id"
:
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
p
.
getId
().
toString
()));
results
.
add
(
result
);
break
;
case
"version"
:
if
(
p
.
hasVersion
())
{
result
.
setScalarValue
(
convertStringValue
(
p
.
getVersion
().
getId
()));
return
result
;
}
break
;
case
"description"
:
if
(
p
.
hasDescription
())
{
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
p
.
getDescription
()));
results
.
add
(
result
);
}
break
;
case
"unit"
:
final
String
property_unit
=
getStringUnit
(
p
);
if
(
property_unit
!=
null
)
{
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
property_unit
));
results
.
add
(
result
);
}
break
;
case
"datatype"
:
if
(
p
.
hasDatatype
())
{
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
.
setScalarValue
(
convertStringValue
(
p
.
getDatatype
().
toString
()));
results
.
add
(
result
);
}
break
;
case
"value"
:
if
(
p
.
hasValue
())
{
try
{
p
.
parseValue
();
}
catch
(
Message
m
)
{
throw
new
TransactionException
(
m
);
}
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
result
=
convert
(
p
.
getValue
());
results
.
add
(
result
);
}
break
;
default
:
String
subselection
=
s
.
getSubselection
().
getSelector
();
result
=
handleSpecialSelectors
(
subselection
,
p
);
if
(
result
==
null
)
{
// normal property
Value
v
=
p
.
getValue
();
if
(
v
instanceof
ReferenceValue
)
{
EntityInterface
referenced_entity
=
((
ReferenceValue
)
v
).
getEntity
();
result
=
getSelectedValue
(
s
.
getSubselection
(),
referenced_entity
);
results
.
add
(
result
);
}
else
if
(
v
instanceof
CollectionValue
)
{
for
(
Value
i
:
(
CollectionValue
)
v
)
{
if
(
i
instanceof
ReferenceValue
)
{
...
...
@@ -778,11 +750,14 @@ public class CaosDBToGrpcConverters {
result
=
getSelectedValue
(
s
.
getSubselection
(),
p
);
results
.
add
(
result
);
}
break
;
}
else
{
results
.
add
(
result
);
}
}
}
}
if
(
results
.
size
()
>
1
)
{
// There have been multiple matching properties
CollectionValues
.
Builder
values
=
CollectionValues
.
newBuilder
();
...
...
@@ -800,7 +775,11 @@ public class CaosDBToGrpcConverters {
// There has been exactly one matching property
result
=
results
.
get
(
0
);
}
return
result
;
}
if
(
result
==
null
)
{
// no matching property found
result
=
org
.
caosdb
.
api
.
entity
.
v1
.
Value
.
newBuilder
();
}
return
result
;
}
...
...
...
...
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