From 3278fe690f41e5dc5bf2fc75eb2b94412fd8031a Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Tue, 13 Dec 2022 17:06:27 +0100
Subject: [PATCH] WIP: file storage refactoring: link

---
 src/main/java/org/caosdb/server/entity/Role.java   | 3 +++
 src/main/java/org/caosdb/server/query/CQLLexer.g4  | 4 ++++
 src/main/java/org/caosdb/server/query/CQLParser.g4 | 1 +
 src/main/java/org/caosdb/server/query/Query.java   | 1 +
 4 files changed, 9 insertions(+)

diff --git a/src/main/java/org/caosdb/server/entity/Role.java b/src/main/java/org/caosdb/server/entity/Role.java
index 53bc3a47..992ddc6e 100644
--- a/src/main/java/org/caosdb/server/entity/Role.java
+++ b/src/main/java/org/caosdb/server/entity/Role.java
@@ -35,6 +35,7 @@ public enum Role {
   Domain,
   File,
   Directory,
+  Link,
   Property,
   DataType,
   QueryTemplate;
@@ -74,6 +75,8 @@ public enum Role {
         return new FileToElementStrategy(toString());
       case Directory:
         return new FileToElementStrategy(toString());
+      case Link:
+        return new FileToElementStrategy(toString());
       default:
         return new EntityToElementStrategy(toString());
     }
diff --git a/src/main/java/org/caosdb/server/query/CQLLexer.g4 b/src/main/java/org/caosdb/server/query/CQLLexer.g4
index 1b113a27..aa4a080e 100644
--- a/src/main/java/org/caosdb/server/query/CQLLexer.g4
+++ b/src/main/java/org/caosdb/server/query/CQLLexer.g4
@@ -347,6 +347,10 @@ DIRECTORY:
 	[Dd][Ii][Rr][Ee][Cc][Tt][Oo][Rr]([Yy]|[Ii][Ee][Ss]) WHITE_SPACE_f?
 ;
 
+LINK:
+    [Ll][Ii][Nn][Kk]([Ss])? WHITE_SPACE_f?
+;
+
 ENTITY:
     [Ee][Nn][Tt][Ii][Tt]([Yy]|[Ii][Ee][Ss]) WHITE_SPACE_f?
 ;
diff --git a/src/main/java/org/caosdb/server/query/CQLParser.g4 b/src/main/java/org/caosdb/server/query/CQLParser.g4
index a9656ca1..2bb92a65 100644
--- a/src/main/java/org/caosdb/server/query/CQLParser.g4
+++ b/src/main/java/org/caosdb/server/query/CQLParser.g4
@@ -100,6 +100,7 @@ role returns [Query.Role r]:
     | PROPERTY {$r = Query.Role.PROPERTY;}
     | FILE {$r = Query.Role.FILE;}
     | DIRECTORY {$r = Query.Role.DIRECTORY;}
+    | LINK {$r = Query.Role.LINK;}
     | QUERYTEMPLATE {$r = Query.Role.QUERYTEMPLATE;}
     | ENTITY {$r = Query.Role.ENTITY;}
 ;
diff --git a/src/main/java/org/caosdb/server/query/Query.java b/src/main/java/org/caosdb/server/query/Query.java
index ac1a41a2..5c07b9dd 100644
--- a/src/main/java/org/caosdb/server/query/Query.java
+++ b/src/main/java/org/caosdb/server/query/Query.java
@@ -161,6 +161,7 @@ public class Query implements QueryInterface, ToElementable, TransactionInterfac
     ENTITY,
     FILE,
     DIRECTORY,
+    LINK,
     QUERYTEMPLATE
   }
 
-- 
GitLab