From 5885562b720c9f894298f23dcd8a728828e59279 Mon Sep 17 00:00:00 2001
From: thomaswoehlke <thomas.woehlke@gmail.com>
Date: Mon, 8 Feb 2021 10:31:04 +0100
Subject: [PATCH] ### 0.0.14 Release * Fixed #69 Branch: ISSUE_66_ATTEMPT_01 *
 Fixed #70 load package.json from Bootstrap-Template sb-admin-angular into
 statics * Fixed #67 implement Flask-Login (wontfix) * Issue #159 merge Branch
 ISSUE_66_ATTEMPT_01 to master

---
 BACKLOG.md                                    |  46 +++---
 src/covid19/blueprints/rki/rki_model.py       |   4 +-
 .../blueprints/rki/rki_model_import.py        |   4 +-
 src/covid19/blueprints/rki/rki_service.py     | 155 +++++++++++++++---
 .../blueprints/rki/rki_service_download.py    |  17 +-
 .../blueprints/rki/rki_service_import.py      |   7 +-
 .../blueprints/rki/rki_service_update.py      |  56 +++----
 src/covid19/services.py                       |   4 +-
 8 files changed, 202 insertions(+), 91 deletions(-)

diff --git a/BACKLOG.md b/BACKLOG.md
index 10896021..1f490f92 100644
--- a/BACKLOG.md
+++ b/BACKLOG.md
@@ -160,7 +160,7 @@
 * Issue #120 implement EuropeServiceUpdate.update_fact_table_initial_only
 * Issue #121 implement EuropeServiceUpdate.update_star_schema_incremental
 * Issue #122 implement EuropeServiceUpdate.update_star_schema_initial
-* Issue #123 split RkiService into two Services, one for bundeslaender and one for landkreise
+* Issue #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise
 * Issue #124 rename RkiBundeslaender to RkiBundeslaender
 * Issue #125 implement RkiLandkreise
 * Issue #126 implement RkiBundeslaenderImport
@@ -169,30 +169,30 @@
 * Issue #129 change to ORM ClassHierarchy in: RkiLandkreiseImport.get_new_dates_as_array
 * Issue #130 remove RkiGermanyDataImportTable
 * Issue #131 change to ORM ClassHierarchy in: RkiGermanyDataImportTable.get_new_dates_as_array
-* Issue #132 refactor RkiService to new method scheme introduced 07.02.2021
-* Issue #133 implement RkiService.task_database_drop_create
-* Issue #134 implement RkiService.run_update_dimension_tables_only
-* Issue #135 implement RkiService.run_update_fact_table_incremental_only
-* Issue #136 implement RkiService.run_update_fact_table_initial_only
-* Issue #137 implement RkiService.run_update_star_schema_incremental
-* Issue #138 implement RkiService.run_update_star_schema_initial
-* Issue #139 refactor RkiServiceDownload to new method scheme introduced 07.02.2021
+* Issue #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+* Issue #133 implement RkiBundeslaenderService.task_database_drop_create
+* Issue #134 implement RkiBundeslaenderService.run_update_dimension_tables_only
+* Issue #135 implement RkiBundeslaenderService.run_update_fact_table_incremental_only
+* Issue #136 implement RkiBundeslaenderService.run_update_fact_table_initial_only
+* Issue #137 implement RkiBundeslaenderService.run_update_star_schema_incremental
+* Issue #138 implement RkiBundeslaenderService.run_update_star_schema_initial
+* Issue #139 refactor RkiBundeslaenderServiceDownload to new method scheme introduced 07.02.2021
 * Issue #140 move WhoGlobalDataImportTable to RKI in: rk_service_import.py
-* Issue #141 implement RkiServiceUpdate.update_dimension_tables_only
-* Issue #142 implement RkiServiceUpdate.update_fact_table_incremental_only
-* Issue #143 implement RkiServiceUpdate.update_fact_table_initial_only
-* Issue #144 implement RkiServiceUpdate.update_star_schema_incremental
-* Issue #145 implement RkiServiceUpdate.update_star_schema_initial
+* Issue #141 implement RkiBundeslaenderServiceUpdate.update_dimension_tables_only
+* Issue #142 implement RkiBundeslaenderServiceUpdate.update_fact_table_incremental_only
+* Issue #143 implement RkiBundeslaenderServiceUpdate.update_fact_table_initial_only
+* Issue #144 implement RkiBundeslaenderServiceUpdate.update_star_schema_incremental
+* Issue #145 implement RkiBundeslaenderServiceUpdate.update_star_schema_initial
 * Issue #146 add Tasks and URLs for starting Tasks to rki_views
-* Issue #147 refactor RkiServiceUpdate.__update_who_date_reported 
-* Issue #148 refactor RkiServiceUpdate.__update_who_region
-* Issue #149 refactor RkiServiceUpdate.__update_who_country
-* Issue #150 refactor RkiServiceUpdate.__update_who_global_data
-* Issue #151 refactor RkiServiceUpdate.__update_who_global_data_short
-* Issue #152 refactor RkiServiceUpdate.__update_who_global_data_initial
-* Issue #153 refactor RkiServiceUpdate.update_db
-* Issue #154 refactor RkiServiceUpdate.update_db_short
-* Issue #155 refactor RkiServiceUpdate.update_db_initial
+* Issue #147 refactor RkiBundeslaenderServiceUpdate.__update_who_date_reported 
+* Issue #148 refactor RkiBundeslaenderServiceUpdate.__update_who_region
+* Issue #149 refactor RkiBundeslaenderServiceUpdate.__update_who_country
+* Issue #150 refactor RkiBundeslaenderServiceUpdate.__update_who_global_data
+* Issue #151 refactor RkiBundeslaenderServiceUpdate.__update_who_global_data_short
+* Issue #152 refactor RkiBundeslaenderServiceUpdate.__update_who_global_data_initial
+* Issue #153 refactor RkiBundeslaenderServiceUpdate.update_db
+* Issue #154 refactor RkiBundeslaenderServiceUpdate.update_db_short
+* Issue #155 refactor RkiBundeslaenderServiceUpdate.update_db_initial
 * Issue #156 run_web.sh
 * Issue #157 run_worker.sh 
 * Issue #162 rename table vaccination_germany_timeline into vaccination_data
diff --git a/src/covid19/blueprints/rki/rki_model.py b/src/covid19/blueprints/rki/rki_model.py
index 1e99b6cc..3938e7be 100644
--- a/src/covid19/blueprints/rki/rki_model.py
+++ b/src/covid19/blueprints/rki/rki_model.py
@@ -100,7 +100,7 @@ class RkiCountry(db.Model):
         ).order_by(cls.country).paginate(page, per_page=ITEMS_PER_PAGE)
 
 
-# TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
+# TODO: #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise
 # TODO: #124 rename RkiBundeslaender to RkiBundeslaender
 class RkiBundeslaender(db.Model):
     __tablename__ = 'rki_bundeslsaender'
@@ -171,7 +171,7 @@ class RkiBundeslaender(db.Model):
             ).paginate(page, per_page=ITEMS_PER_PAGE)
 
 
-# TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
+# TODO: #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise
 # TODO: #125 implement RkiLandkreise
 class RkiLandkreise(db.Model):
     __tablename__ = 'rki_landkreise'
diff --git a/src/covid19/blueprints/rki/rki_model_import.py b/src/covid19/blueprints/rki/rki_model_import.py
index 582c474b..280ea122 100644
--- a/src/covid19/blueprints/rki/rki_model_import.py
+++ b/src/covid19/blueprints/rki/rki_model_import.py
@@ -3,7 +3,7 @@ from database import db, ITEMS_PER_PAGE
 # OBJECTID_1,LAN_ew_AGS,LAN_ew_GEN,LAN_ew_BEZ,LAN_ew_EWZ,OBJECTID,Fallzahl,Aktualisierung,AGS_TXT,GlobalID,faelle_100000_EW,Death,cases7_bl_per_100k,cases7_bl,death7_bl,cases7_bl_per_100k_txt,AdmUnitId,SHAPE_Length,SHAPE_Area
 
 
-# TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
+# TODO: #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise
 # TODO: #126 implement RkiBundeslaenderImport
 class RkiBundeslaenderImport(db.Model):
     __tablename__ = 'rki_bundeslsaender_import'
@@ -55,7 +55,7 @@ class RkiBundeslaenderImport(db.Model):
         return self
 
 
-# TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
+# TODO: #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise
 # TODO: #128 add fields from csv to RkiLandkreiseImport
 class RkiLandkreiseImport(db.Model):
     __tablename__ = 'rki_landkreise_import'
diff --git a/src/covid19/blueprints/rki/rki_service.py b/src/covid19/blueprints/rki/rki_service.py
index cac1cec2..182fbda1 100644
--- a/src/covid19/blueprints/rki/rki_service.py
+++ b/src/covid19/blueprints/rki/rki_service.py
@@ -1,22 +1,23 @@
 from flask import flash
 
 from database import app
-from covid19.blueprints.rki.rki_service_download import RkiServiceDownload
-from covid19.blueprints.rki.rki_service_import import RkiServiceImport
-from covid19.blueprints.rki.rki_service_update import RkiServiceUpdate
+from covid19.blueprints.rki.rki_service_download import RkiBundeslaenderServiceDownload
+from covid19.blueprints.rki.rki_service_import import RkiBundeslaenderServiceImport
+from covid19.blueprints.rki.rki_service_update import RkiBundeslaenderServiceUpdate
 
 
-# TODO: #132 refactor RkiService to new method scheme introduced 07.02.2021
-class RkiService:
+# TODO: #123 split RkiService into two Services: RkiBundeslaenderService and RkiLandkreiseService
+# TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+class RkiBundeslaenderService:
     def __init__(self, database):
         app.logger.debug("------------------------------------------------------------")
         app.logger.debug(" RKI Service [init]")
         app.logger.debug("------------------------------------------------------------")
         self.__database = database
         self.limit_nr = 20
-        self.service_download = RkiServiceDownload(database)
-        self.service_import = RkiServiceImport(database)
-        self.service_update = RkiServiceUpdate(database)
+        self.service_download = RkiBundeslaenderServiceDownload(database)
+        self.service_import = RkiBundeslaenderServiceImport(database)
+        self.service_update = RkiBundeslaenderServiceUpdate(database)
         app.logger.debug("------------------------------------------------------------")
         app.logger.info(" RKI Service [ready]")
 
@@ -26,8 +27,8 @@ class RkiService:
         return self
 
     def task_database_drop_create(self):
-        # TODO: #132 refactor RkiService to new method scheme introduced 07.02.2021
-        # TODO: #133 implement RkiService.task_database_drop_create
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #133 implement RkiBundeslaenderService.task_database_drop_create
         return self
 
     def run_download_only(self):
@@ -39,31 +40,31 @@ class RkiService:
         return self
 
     def run_update_dimension_tables_only(self):
-        # TODO: #132 refactor RkiService to new method scheme introduced 07.02.2021
-        # TODO: #134 implement RkiService.run_update_dimension_tables_only
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #134 implement RkiBundeslaenderService.run_update_dimension_tables_only
         return self
 
     def run_update_fact_table_incremental_only(self):
-        # TODO: #132 refactor RkiService to new method scheme introduced 07.02.2021
-        # TODO: #135 implement RkiService.run_update_fact_table_incremental_only
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #135 implement RkiBundeslaenderService.run_update_fact_table_incremental_only
         return self
 
     def run_update_fact_table_initial_only(self):
-        # TODO: #132 refactor RkiService to new method scheme introduced 07.02.2021
-        # TODO: #136 implement RkiService.run_update_fact_table_initial_only
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #136 implement RkiBundeslaenderService.run_update_fact_table_initial_only
         return self
 
     def run_update_star_schema_incremental(self):
-        # TODO: #132 refactor RkiService to new method scheme introduced 07.02.2021
-        # TODO: #137 implement RkiService.run_update_star_schema_incremental
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #137 implement RkiBundeslaenderService.run_update_star_schema_incremental
         return self
 
     def run_update_star_schema_initial(self):
-        # TODO: #132 refactor RkiService to new method scheme introduced 07.02.2021
-        # TODO: #138 implement RkiService.run_update_star_schema_initial
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #138 implement RkiBundeslaenderService.run_update_star_schema_initial
         return self
 
-    # TODO: #132 refactor RkiService to new method scheme introduced 07.02.2021
+    # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
     def run_download(self):
         app.logger.info(" run update [begin]")
         app.logger.info("------------------------------------------------------------")
@@ -73,7 +74,7 @@ class RkiService:
         app.logger.info("------------------------------------------------------------")
         return success
 
-    # TODO: #132 refactor RkiService to new method scheme introduced 07.02.2021
+    # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
     def run_update(self, import_file=True):
         app.logger.info(" run update [begin]")
         app.logger.info("------------------------------------------------------------")
@@ -85,7 +86,7 @@ class RkiService:
         app.logger.info("------------------------------------------------------------")
         return self
 
-    # TODO: #132 refactor RkiService to new method scheme introduced 07.02.2021
+    # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
     def run_update_short(self, import_file=True):
         app.logger.info(" run update short [begin]")
         app.logger.info("------------------------------------------------------------")
@@ -97,7 +98,7 @@ class RkiService:
         app.logger.info("------------------------------------------------------------")
         return self
 
-    # TODO: #132 refactor RkiService to new method scheme introduced 07.02.2021
+    # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
     def run_update_initial(self, import_file=True):
         app.logger.info(" run update initial [begin]")
         app.logger.info("------------------------------------------------------------")
@@ -108,3 +109,109 @@ class RkiService:
         app.logger.info(" run update initial [done]")
         app.logger.info("------------------------------------------------------------")
         return self
+
+
+# TODO: #123 split RkiService into two Services: RkiBundeslaenderService and RkiLandkreiseService
+# TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+class RkiLandkreiseService:
+    def __init__(self, database):
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug(" RKI Service [init]")
+        app.logger.debug("------------------------------------------------------------")
+        self.__database = database
+        self.limit_nr = 20
+        self.service_download = RkiBundeslaenderServiceDownload(database)
+        self.service_import = RkiBundeslaenderServiceImport(database)
+        self.service_update = RkiBundeslaenderServiceUpdate(database)
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.info(" RKI Service [ready]")
+
+    def pretask_database_drop_create(self):
+        flash("rki_service.run_download started")
+        self.service_download.download_file()
+        return self
+
+    def task_database_drop_create(self):
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #133 implement RkiBundeslaenderService.task_database_drop_create
+        return self
+
+    def run_download_only(self):
+        self.service_download.download_file()
+        return self
+
+    def run_import_only(self):
+        self.service_import.import_file()
+        return self
+
+    def run_update_dimension_tables_only(self):
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #134 implement RkiBundeslaenderService.run_update_dimension_tables_only
+        return self
+
+    def run_update_fact_table_incremental_only(self):
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #135 implement RkiBundeslaenderService.run_update_fact_table_incremental_only
+        return self
+
+    def run_update_fact_table_initial_only(self):
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #136 implement RkiBundeslaenderService.run_update_fact_table_initial_only
+        return self
+
+    def run_update_star_schema_incremental(self):
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #137 implement RkiBundeslaenderService.run_update_star_schema_incremental
+        return self
+
+    def run_update_star_schema_initial(self):
+        # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+        # TODO: #138 implement RkiBundeslaenderService.run_update_star_schema_initial
+        return self
+
+    # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+    def run_download(self):
+        app.logger.info(" run update [begin]")
+        app.logger.info("------------------------------------------------------------")
+        success = self.service_download.download_file()
+        app.logger.info("")
+        app.logger.info(" run update [done]")
+        app.logger.info("------------------------------------------------------------")
+        return success
+
+    # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+    def run_update(self, import_file=True):
+        app.logger.info(" run update [begin]")
+        app.logger.info("------------------------------------------------------------")
+        if import_file:
+            self.service_import.import_file()
+        self.service_update.update_db()
+        app.logger.info("")
+        app.logger.info(" run update [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+    def run_update_short(self, import_file=True):
+        app.logger.info(" run update short [begin]")
+        app.logger.info("------------------------------------------------------------")
+        if import_file:
+            self.service_import.import_file()
+        self.service_update.update_db_short()
+        app.logger.info("")
+        app.logger.info(" run update short [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    # TODO: #132 refactor RkiBundeslaenderService to new method scheme introduced 07.02.2021
+    def run_update_initial(self, import_file=True):
+        app.logger.info(" run update initial [begin]")
+        app.logger.info("------------------------------------------------------------")
+        if import_file:
+            self.service_import.import_file()
+        self.service_update.update_db_initial()
+        app.logger.info("")
+        app.logger.info(" run update initial [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
diff --git a/src/covid19/blueprints/rki/rki_service_download.py b/src/covid19/blueprints/rki/rki_service_download.py
index 9fd52e79..5bed00cc 100644
--- a/src/covid19/blueprints/rki/rki_service_download.py
+++ b/src/covid19/blueprints/rki/rki_service_download.py
@@ -5,9 +5,11 @@ from flask import flash
 
 from database import app
 
-# TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
-# TODO: #139 refactor RkiServiceDownload to new method scheme introduced 07.02.2021
-class RkiServiceDownload:
+
+# RkiBundeslaenderServiceDownload
+# TODO: #123 split RkiService into two Services: RkiBundeslaenderService and RkiLandkreiseService
+# TODO: #139 refactor RkiBundeslaenderServiceDownload to new method scheme introduced 07.02.2021
+class RkiBundeslaenderServiceDownload:
     def __init__(self, database):
         app.logger.debug("------------------------------------------------------------")
         app.logger.debug(" RKI Service Download [init]")
@@ -25,15 +27,16 @@ class RkiServiceDownload:
         app.logger.debug("------------------------------------------------------------")
         app.logger.debug(" RKI Service Download [ready]")
 
-    # TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
+    # TODO: #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise
     def __download_file(self, datascope, cvsfile_name, url_src):
-        src_cvsfile_path = ".." + os.sep + ".." + os.sep + "data" + os.sep + cvsfile_name
+        data_path = ".." + os.sep + ".." + os.sep + "data" + os.sep
+        src_cvsfile_path = data_path + cvsfile_name
         app.logger.info(" download - RKI "+datascope+" [begin] ")
         app.logger.info("------------------------------------------------------------")
         app.logger.info(" FILE: "+cvsfile_name+" <- "+url_src)
         app.logger.info("------------------------------------------------------------")
         try:
-            os.makedirs(cvsfile_name, exist_ok=True)
+            os.makedirs(data_path, exist_ok=True)
             if os.path.isfile(src_cvsfile_path):
                 os.remove(src_cvsfile_path)
             data_file = wget.download(url_src, src_cvsfile_path)
@@ -59,7 +62,7 @@ class RkiServiceDownload:
             flash(msg)
         return self
 
-    # TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
+    # TODO: #123 split RkiService into two Services: RkiBundeslaenderService and RkiLandkreiseService
     def download_file(self):
         app.logger.info(" download - RKI [begin] ")
         app.logger.info("------------------------------------------------------------")
diff --git a/src/covid19/blueprints/rki/rki_service_import.py b/src/covid19/blueprints/rki/rki_service_import.py
index 65999fa3..e53e008c 100644
--- a/src/covid19/blueprints/rki/rki_service_import.py
+++ b/src/covid19/blueprints/rki/rki_service_import.py
@@ -8,8 +8,9 @@ from database import db, app
 # TODO: #140 move WhoGlobalDataImportTable to RKI in: rk_service_import.py
 from covid19.blueprints.who.who_model_import import WhoGlobalDataImportTable
 
-# TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
-class RkiServiceImport:
+
+# TODO: #123 split RkiService into two Services: RkiBundeslaenderService and RkiLandkreiseService
+class RkiBundeslaenderServiceImport:
     def __init__(self, database):
         app.logger.debug("------------------------------------------------------------")
         app.logger.debug(" RKI Service Import [init]")
@@ -23,7 +24,7 @@ class RkiServiceImport:
         app.logger.debug("------------------------------------------------------------")
         app.logger.debug(" RKI Service Import [ready]")
 
-    # TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
+    # TODO: #123 split RkiService into two Services: RkiBundeslaenderService and RkiLandkreiseService
     def import_file(self):
         app.logger.info(" import RKI [begin]")
         app.logger.info("------------------------------------------------------------")
diff --git a/src/covid19/blueprints/rki/rki_service_update.py b/src/covid19/blueprints/rki/rki_service_update.py
index dad79879..5930a409 100644
--- a/src/covid19/blueprints/rki/rki_service_update.py
+++ b/src/covid19/blueprints/rki/rki_service_update.py
@@ -2,12 +2,12 @@ from database import db, app
 
 from covid19.blueprints.rki.rki_model import RkiRegion, RkiDateReported, RkiCountry, RkiBundeslaender
 from covid19.blueprints.rki.rki_model_import import RkiBundeslaenderImport, RkiLandkreiseImport
-from covid19.blueprints.rki.rki_model_import import RkiGermanyDataImportTable
 
 rki_service_update = None
 
-# TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
-class RkiServiceUpdate:
+
+# TODO: #123 split RkiService into two Services: RkiBundeslaenderService and RkiLandkreiseService
+class RkiBundeslaenderServiceUpdate:
     def __init__(self, database):
         app.logger.debug("------------------------------------------------------------")
         app.logger.debug(" RKI Service Update [init]")
@@ -17,7 +17,7 @@ class RkiServiceUpdate:
         app.logger.debug("------------------------------------------------------------")
         app.logger.debug(" RKI Service Update [ready]")
 
-    # TODO: #147 refactor RkiServiceUpdate.__update_who_date_reported
+    # TODO: #147 refactor RkiBundeslaenderServiceUpdate.__update_who_date_reported
     def __update_who_date_reported(self):
         app.logger.info(" update who_date_reported [begin]")
         app.logger.info("------------------------------------------------------------")
@@ -38,12 +38,12 @@ class RkiServiceUpdate:
         app.logger.info("------------------------------------------------------------")
         return self
 
-    # TODO: #148 refactor RkiServiceUpdate.__update_who_region
+    # TODO: #148 refactor RkiBundeslaenderServiceUpdate.__update_who_region
     def __update_who_region(self):
         app.logger.info(" update who_region [begin]")
         app.logger.info("------------------------------------------------------------")
         i = 0
-        for i_who_region, in db.session.query(RkiGermanyDataImportTable.who_region).distinct():
+        for i_who_region, in db.session.query(RkiBundeslaenderImport.who_region).distinct():
             c = db.session.query(RkiRegion).filter(RkiRegion.region == i_who_region).count()
             if c == 0:
                 o = RkiRegion(region=i_who_region)
@@ -60,7 +60,7 @@ class RkiServiceUpdate:
         app.logger.info("------------------------------------------------------------")
         return self
 
-    # TODO: #149 refactor RkiServiceUpdate.__update_who_country
+    # TODO: #149 refactor RkiBundeslaenderServiceUpdate.__update_who_country
     def __update_who_country(self):
         app.logger.info(" update who_country [begin]")
         app.logger.info("------------------------------------------------------------")
@@ -102,7 +102,7 @@ class RkiServiceUpdate:
         app.logger.info("------------------------------------------------------------")
         return self
 
-    # TODO: #150 refactor RkiServiceUpdate.__update_who_global_data
+    # TODO: #150 refactor RkiBundeslaenderServiceUpdate.__update_who_global_data
     def __update_who_global_data(self):
         app.logger.info(" update WHO [begin]")
         app.logger.info("------------------------------------------------------------")
@@ -111,7 +111,7 @@ class RkiServiceUpdate:
         #
         #
         i = 0
-        result = RkiGermanyDataImportTable.get_all()
+        result = RkiBundeslaenderImport.get_all()
         for result_item in result:
             my_country = countries[result_item.country_code]
             my_date_reported = dates_reported[result_item.date_reported]
@@ -138,15 +138,15 @@ class RkiServiceUpdate:
         app.logger.info("------------------------------------------------------------")
         return self
 
-    # TODO: #151 refactor RkiServiceUpdate.__update_who_global_data_short
+    # TODO: #151 refactor RkiBundeslaenderServiceUpdate.__update_who_global_data_short
     def __update_who_global_data_short(self):
         app.logger.info(" update RKI short [begin]")
         app.logger.info("------------------------------------------------------------")
-        new_dates_reported_from_import = RkiGermanyDataImportTable.get_new_dates_as_array()
+        new_dates_reported_from_import = RkiBundeslaenderImport.get_new_dates_as_array()
         i = 0
         for my_date_reported in new_dates_reported_from_import:
             my_date = RkiDateReported.find_by_date_reported(my_date_reported)
-            for result_item in RkiGermanyDataImportTable.get_for_one_day(my_date_reported):
+            for result_item in RkiBundeslaenderImport.get_for_one_day(my_date_reported):
                 my_country = RkiCountry.find_by_country_code(result_item.country_code)
                 o = RkiBundeslaender(
                     cases_new=int(result_item.new_cases),
@@ -169,16 +169,16 @@ class RkiServiceUpdate:
         app.logger.info("------------------------------------------------------------")
         return self
 
-    # TODO: #152 refactor RkiServiceUpdate.__update_who_global_data_initial
+    # TODO: #152 refactor RkiBundeslaenderServiceUpdate.__update_who_global_data_initial
     def __update_who_global_data_initial(self):
         app.logger.info(" update RKI initial [begin]")
         app.logger.info("------------------------------------------------------------")
         RkiBundeslaender.remove_all()
-        new_dates_reported_from_import = RkiGermanyDataImportTable.get_new_dates_as_array()
+        new_dates_reported_from_import = RkiBundeslaenderImport.get_new_dates_as_array()
         i = 0
         for my_date_reported in new_dates_reported_from_import:
             my_date = RkiDateReported.find_by_date_reported(my_date_reported)
-            for result_item in RkiGermanyDataImportTable.get_for_one_day(my_date_reported):
+            for result_item in RkiBundeslaenderImport.get_for_one_day(my_date_reported):
                 my_country = RkiCountry.find_by_country_code(result_item.country_code)
                 o = RkiBundeslaender(
                     cases_new=int(result_item.new_cases),
@@ -201,7 +201,7 @@ class RkiServiceUpdate:
         app.logger.info("------------------------------------------------------------")
         return self
 
-    # TODO: #153 refactor RkiServiceUpdate.update_db
+    # TODO: #153 refactor RkiBundeslaenderServiceUpdate.update_db
     def update_db(self):
         app.logger.info(" update db [begin]")
         app.logger.info("------------------------------------------------------------")
@@ -213,7 +213,7 @@ class RkiServiceUpdate:
         app.logger.info("------------------------------------------------------------")
         return self
 
-    # TODO: #154 refactor RkiServiceUpdate.update_db_short
+    # TODO: #154 refactor RkiBundeslaenderServiceUpdate.update_db_short
     def update_db_short(self):
         app.logger.info(" update db short [begin]")
         app.logger.info("------------------------------------------------------------")
@@ -225,7 +225,7 @@ class RkiServiceUpdate:
         app.logger.info("------------------------------------------------------------")
         return self
 
-    # TODO: #155 refactor RkiServiceUpdate.update_db_initial
+    # TODO: #155 refactor RkiBundeslaenderServiceUpdate.update_db_initial
     def update_db_initial(self):
         app.logger.info(" update db initial [begin]")
         app.logger.info("------------------------------------------------------------")
@@ -238,27 +238,27 @@ class RkiServiceUpdate:
         return self
 
     def update_dimension_tables_only(self):
-        #TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
-        #TODO: #141 implement RkiServiceUpdate.update_dimension_tables_only
+        #TODO: #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise
+        #TODO: #141 implement RkiBundeslaenderServiceUpdate.update_dimension_tables_only
         return self
 
     def update_fact_table_incremental_only(self):
-        #TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
-        #TODO: #142 implement RkiServiceUpdate.update_fact_table_incremental_only
+        #TODO: #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise
+        #TODO: #142 implement RkiBundeslaenderServiceUpdate.update_fact_table_incremental_only
         return self
 
     def update_fact_table_initial_only(self):
-        #TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
-        #TODO: #143 implement RkiServiceUpdate.update_fact_table_initial_only
+        #TODO: #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise
+        #TODO: #143 implement RkiBundeslaenderServiceUpdate.update_fact_table_initial_only
         return self
 
     def update_star_schema_incremental(self):
-        #TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
-        #TODO: #144 implement RkiServiceUpdate.update_star_schema_incremental
+        #TODO: #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise
+        #TODO: #144 implement RkiBundeslaenderServiceUpdate.update_star_schema_incremental
         return self
 
     def update_star_schema_initial(self):
-        #TODO: #123 split RkiService into two Services, one for bundeslaender and one for landkreise
-        #TODO: #145 implement RkiServiceUpdate.update_star_schema_initial
+        #TODO: #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise
+        #TODO: #145 implement RkiBundeslaenderServiceUpdate.update_star_schema_initial
         return self
 
diff --git a/src/covid19/services.py b/src/covid19/services.py
index 382724df..9a31532d 100644
--- a/src/covid19/services.py
+++ b/src/covid19/services.py
@@ -3,7 +3,7 @@ from database import db
 from covid19.blueprints.common.common_service import CommonService
 from covid19.blueprints.who.who_service import WhoService
 from covid19.blueprints.europe.europe_service import EuropeService
-from covid19.blueprints.rki.rki_service import RkiService
+from covid19.blueprints.rki.rki_service import RkiBundeslaenderService
 from covid19.blueprints.vaccination.vaccination_service import VaccinationService
 from covid19.blueprints.admin.admin_service import AdminService
 
@@ -14,7 +14,7 @@ from covid19.blueprints.admin.admin_service import AdminService
 common_service = CommonService(db)
 who_service = WhoService(db)
 europe_service = EuropeService(db)
-rki_service = RkiService(db)
+rki_service = RkiBundeslaenderService(db)
 vaccination_service = VaccinationService(db)
 admin_service = AdminService(db)
 db.create_all()
-- 
GitLab