From 8b928a4519d61fe3a68682311cd5fb843efa186e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <henrik@trineo.org>
Date: Fri, 18 Jan 2019 18:29:21 +0100
Subject: [PATCH] update

---
 src/caosadvancedtools/cfood.py   | 22 +++++++++++++++++++---
 src/caosadvancedtools/crawler.py | 28 +++++++++++++++++++---------
 2 files changed, 38 insertions(+), 12 deletions(-)

diff --git a/src/caosadvancedtools/cfood.py b/src/caosadvancedtools/cfood.py
index 6c2a1e26..6fbde84c 100644
--- a/src/caosadvancedtools/cfood.py
+++ b/src/caosadvancedtools/cfood.py
@@ -3,12 +3,15 @@
 """does something"""
 
 import argparse
-from argparse import RawTextHelpFormatter
 import re
-import caosdb as db
+from argparse import RawTextHelpFormatter
 from datetime import datetime
+
+import caosdb as db
 from caosdb.exceptions import TransactionError
 
+from something import get_entity
+
 
 class AbstractCFood(object):
     def __init__(self, pattern):
@@ -16,8 +19,10 @@ class AbstractCFood(object):
 
     def treat_match(self, filename, match):
         entities = self.create_identifiables(filename, match)
+
         for key, ent in entities.items():
-            existing = find_existing(ent)
+            existing = AbstractCFood.find_existing(ent)
+
             if existing is None:
                 print(key, "does not exist")
                 ent.insert()
@@ -35,6 +40,17 @@ class AbstractCFood(object):
     def update_identifiables(self, entities, filename, match):
         raise NotImplementedError()
 
+    @staticmethod
+    # move to api?
+    def set_parents(entity, names):
+        parents = [p.name for p in entity.get_parents()]
+
+        for p in parents:
+            entity.remove_parent(p)
+
+        for n in names:
+            entity.add_parent(get_entity(n))
+
     @staticmethod
     def find_existing(entity):
         query_string = "FIND Record "+ entity.get_parents()[0].name
diff --git a/src/caosadvancedtools/crawler.py b/src/caosadvancedtools/crawler.py
index 12947ba5..24374607 100644
--- a/src/caosadvancedtools/crawler.py
+++ b/src/caosadvancedtools/crawler.py
@@ -4,21 +4,31 @@
 
 import argparse
 from argparse import RawTextHelpFormatter
-from cfood import CFood
 
+import caosdb as db
+
+from cfood import CFood
 
 
 class Crawler(object):
     def __init__(self, food):
         self.food = food
+        self.report = db.Container()
+
+    def crawl(self, files):
+        for crawled_file in files:
+            if crawled_file.size == 0:
+                crawled_file.add_message(
+                    type="Warning", description="This file is empty. Shouldn't we delete it?")
+                self.report.append(f)
+
+                continue
+
+            for cfood in self.food:
+                match = cfood.pattern.match(crawled_file.path)
 
-    def crawl(self):
-        filename="path/to/file"
-        for cfood in self.food:
-            match =  cfood.pattern.match(filename)
-            if match is not None:
-                print("match")
-                cfood.treat_match(filename, match)
+                if match is not None:
+                    cfood.treat_match(crawled_file.path, match)
 
 
 def get_parser():
@@ -34,4 +44,4 @@ if __name__ == "__main__":
 
     f = CFood(pattern="(.*)to(.*)")
     c = Crawler(food=[f])
-    c.crawl()
+    c.crawl(["path/to/file"])
-- 
GitLab