From e4ff95032dbda0e66a44a26ea67c629673ba6d57 Mon Sep 17 00:00:00 2001
From: "thomas.woehlke" <thomas.woehlke@rub.de>
Date: Sun, 14 Mar 2021 20:59:36 +0100
Subject: [PATCH] uml

---
 .../{who/useCases.txt => admin_use_cases.txt} |   0
 docs/blueprints/application_use_cases.txt     |  18 ++
 docs/blueprints/ecdc_use_cases.txt            |  66 +++++
 docs/blueprints/owid_use_cases.txt            |  50 ++++
 docs/blueprints/rki_vaccination_use_cases.txt |  50 ++++
 docs/blueprints/who_use_cases.txt             |  82 +++++++
 src/covid19/blueprints/ecdc/ecdc_views.py     | 226 +++++++++---------
 7 files changed, 382 insertions(+), 110 deletions(-)
 rename docs/blueprints/{who/useCases.txt => admin_use_cases.txt} (100%)
 create mode 100644 docs/blueprints/application_use_cases.txt
 create mode 100644 docs/blueprints/ecdc_use_cases.txt
 create mode 100644 docs/blueprints/owid_use_cases.txt
 create mode 100644 docs/blueprints/rki_vaccination_use_cases.txt
 create mode 100644 docs/blueprints/who_use_cases.txt

diff --git a/docs/blueprints/who/useCases.txt b/docs/blueprints/admin_use_cases.txt
similarity index 100%
rename from docs/blueprints/who/useCases.txt
rename to docs/blueprints/admin_use_cases.txt
diff --git a/docs/blueprints/application_use_cases.txt b/docs/blueprints/application_use_cases.txt
new file mode 100644
index 00000000..4b267021
--- /dev/null
+++ b/docs/blueprints/application_use_cases.txt
@@ -0,0 +1,18 @@
+@startuml
+left to right direction
+actor Guest as g
+package Professional {
+  actor Chef as c
+  actor "Food Critic" as fc
+}
+package Restaurant {
+  usecase "Eat Food" as UC1
+  usecase "Pay for Food" as UC2
+  usecase "Drink" as UC3
+  usecase "Review" as UC4
+}
+fc --> UC4
+g --> UC1
+g --> UC2
+g --> UC3
+@enduml
\ No newline at end of file
diff --git a/docs/blueprints/ecdc_use_cases.txt b/docs/blueprints/ecdc_use_cases.txt
new file mode 100644
index 00000000..f903f1d3
--- /dev/null
+++ b/docs/blueprints/ecdc_use_cases.txt
@@ -0,0 +1,66 @@
+@startuml
+left to right direction
+actor Visitor as vu
+package user {
+	actor SysAdmin as su
+	actor Admin as au
+}
+package ecdc {
+	usecase url_ecdc_info as UC1
+	usecase url_ecdc_tasks as UC2
+	usecase url_ecdc_data_imported as UC3
+	usecase url_ecdc_date_reported_all as UC4
+	usecase url_ecdc_date_reported_one_notification_rate as UC5
+	usecase url_ecdc_date_reported_one_deaths_weekly as UC6
+	usecase url_ecdc_date_reported_one_cases_weekly as UC7
+	usecase url_ecdc_continent_all as UC8
+	usecase url_ecdc_continent_one as UC9
+	usecase url_ecdc_country_all as UC10
+	usecase url_ecdc_country_one as UC11
+	usecase url_ecdc_country_germany as UC12
+}
+package ecdc_admin_web {
+	usecase task_ecdc_download_only as UC50
+	usecase task_who_import_only as UC51
+	usecase task_who_update_dimension_tables_only as UC52
+	usecase task_who_update_fact_table_initial_only as UC53
+	usecase task_who_update_fact_table_incremental_only as UC54
+	usecase task_who_update_star_schema_initial as UC55
+	usecase task_who_update_star_schema_incremental as UC56
+}
+package ecdc_tasks {
+	usecase task_ecdc_download_only as UC100
+	usecase task_ecdc_import_only as UC101
+	usecase task_ecdc_update_dimension_tables_only as UC102
+	usecase task_ecdc_update_fact_table_incremental_only as UC103
+	usecase task_ecdc_update_fact_table_incremental_only as UC104
+	usecase task_ecdc_update_fact_table_initial_only as UC105
+	usecase task_ecdc_update_star_schema_incremental as UC106
+}
+vu --> UC1
+vu --> UC2
+vu --> UC3
+vu --> UC4
+vu --> UC5
+vu --> UC6
+vu --> UC7
+vu --> UC8
+vu --> UC9
+vu --> UC10
+vu --> UC11
+vu --> UC12
+au --> UC50
+au --> UC51
+au --> UC52
+au --> UC53
+au --> UC54
+au --> UC55
+au --> UC56
+UC50 --> UC100
+UC51 --> UC101
+UC52 --> UC102
+UC53 --> UC103
+UC54 --> UC104
+UC55 --> UC105
+UC56 --> UC106
+@enduml
\ No newline at end of file
diff --git a/docs/blueprints/owid_use_cases.txt b/docs/blueprints/owid_use_cases.txt
new file mode 100644
index 00000000..0654cfe6
--- /dev/null
+++ b/docs/blueprints/owid_use_cases.txt
@@ -0,0 +1,50 @@
+@startuml
+left to right direction
+actor Visitor as vu
+package user {
+	actor SysAdmin as su
+	actor Admin as au
+}
+package owid {
+	usecase url_vaccination_info as UC1
+	usecase url_vaccination_tasks as UC2
+	usecase url_vaccination_imported as UC3
+	usecase url_vaccination_data as UC4
+}
+package owid_admin_web {
+	usecase task_who_download_only as UC50
+	usecase task_who_import_only as UC51
+	usecase task_who_update_dimension_tables_only as UC52
+	usecase task_who_update_fact_table_initial_only as UC53
+	usecase task_who_update_fact_table_incremental_only as UC54
+	usecase task_who_update_star_schema_initial as UC55
+	usecase task_who_update_star_schema_incremental as UC56
+}
+package owid_tasks {
+	usecase url_vaccination_task_download_only as UC100
+	usecase url_vaccination_task_import_only as UC101
+	usecase url_vaccination_task_update_dimensiontables_only as UC102
+	usecase url_vaccination_task_update_facttable_incremental_only as UC103
+	usecase url_vaccination_task_update_facttable_initial_only as UC104
+	usecase url_vaccination_task_update_starschema_initial as UC105
+	usecase url_vaccination_task_update_starschema_incremental as UC106
+}
+vu --> UC1
+vu --> UC2
+vu --> UC3
+vu --> UC4
+au --> UC50
+au --> UC51
+au --> UC52
+au --> UC53
+au --> UC54
+au --> UC55
+au --> UC56
+UC50 --> UC100
+UC51 --> UC101
+UC52 --> UC102
+UC53 --> UC103
+UC54 --> UC104
+UC55 --> UC105
+UC56 --> UC106
+@enduml
\ No newline at end of file
diff --git a/docs/blueprints/rki_vaccination_use_cases.txt b/docs/blueprints/rki_vaccination_use_cases.txt
new file mode 100644
index 00000000..20b950e7
--- /dev/null
+++ b/docs/blueprints/rki_vaccination_use_cases.txt
@@ -0,0 +1,50 @@
+@startuml
+left to right direction
+actor Visitor as vu
+package user {
+	actor SysAdmin as su
+	actor Admin as au
+}
+package rki_vaccination {
+	usecase url_vaccination_info as UC1
+	usecase url_vaccination_tasks as UC2
+	usecase url_vaccination_imported as UC3
+	usecase url_vaccination_data as UC4
+}
+package rki_vaccination_admin_web {
+	usecase task_who_download_only as UC50
+	usecase task_who_import_only as UC51
+	usecase task_who_update_dimension_tables_only as UC52
+	usecase task_who_update_fact_table_initial_only as UC53
+	usecase task_who_update_fact_table_incremental_only as UC54
+	usecase task_who_update_star_schema_initial as UC55
+	usecase task_who_update_star_schema_incremental as UC56
+}
+package rki_vaccination_tasks {
+	usecase url_vaccination_task_download_only as UC100
+	usecase url_vaccination_task_import_only as UC101
+	usecase url_vaccination_task_update_dimensiontables_only as UC102
+	usecase url_vaccination_task_update_facttable_incremental_only as UC103
+	usecase url_vaccination_task_update_facttable_initial_only as UC104
+	usecase url_vaccination_task_update_starschema_initial as UC105
+	usecase url_vaccination_task_update_starschema_incremental as UC106
+}
+vu --> UC1
+vu --> UC2
+vu --> UC3
+vu --> UC4
+au --> UC50
+au --> UC51
+au --> UC52
+au --> UC53
+au --> UC54
+au --> UC55
+au --> UC56
+UC50 --> UC100
+UC51 --> UC101
+UC52 --> UC102
+UC53 --> UC103
+UC54 --> UC104
+UC55 --> UC105
+UC56 --> UC106
+@enduml
\ No newline at end of file
diff --git a/docs/blueprints/who_use_cases.txt b/docs/blueprints/who_use_cases.txt
new file mode 100644
index 00000000..c238522b
--- /dev/null
+++ b/docs/blueprints/who_use_cases.txt
@@ -0,0 +1,82 @@
+@startuml
+left to right direction
+actor Visitor as vu
+package user {
+  actor SysAdmin as su
+  actor Admin as au
+}
+package who {
+  usecase url_who_info as UC1
+  usecase url_who_tasks as UC2
+  usecase url_who_imported as UC3
+  usecase url_who_date_reported_all as UC4
+  usecase url_who_date_reported as UC5
+  usecase url_who_date_reported_cases_new as UC6
+  usecase url_who_date_reported_cases_cumulative as UC7
+  usecase url_who_date_reported_deaths_new as UC8
+  usecase url_who_date_reported_deaths_cumulative as UC9
+  usecase url_who_region_all as UC10
+  usecase url_who_region as UC11
+  usecase url_who_country_all as UC12
+  usecase url_who_country as UC13
+  usecase url_who_country_cases_new as UC14
+  usecase url_who_country_cases_cumulative as UC15
+  usecase url_who_country_deaths_new as UC16
+  usecase url_who_country_deaths_cumulative as UC17
+  usecase url_who_germany as UC18
+  usecase url_who_region_all as UC19
+  usecase url_who_region_all as UC20
+}
+package who_admin_web {
+	usecase url_task_who_download_only as UC50
+	usecase url_task_who_import_only as UC51
+	usecase url_task_who_update_dimension_tables_only as UC52
+	usecase url_task_who_update_fact_table_initial_only as UC53
+	usecase url_task_who_update_fact_table_incremental_only as UC54
+	usecase url_task_who_update_star_schema_initial as UC55
+	usecase url_task_who_update_star_schema_incremental as UC56
+}
+package who_tasks {
+  usecase task_who_download_only as UC100
+  usecase task_who_import_only as UC101
+  usecase task_who_update_dimension_tables_only as UC102
+  usecase task_who_update_fact_table_initial_only as UC103
+  usecase task_who_update_fact_table_incremental_only as UC104
+  usecase task_who_update_star_schema_initial as UC105
+  usecase task_who_update_star_schema_incremental as UC106
+}
+vu --> UC1
+vu --> UC2
+vu --> UC3
+vu --> UC4
+vu --> UC5
+vu --> UC6
+vu --> UC7
+vu --> UC8
+vu --> UC9
+vu --> UC10
+vu --> UC11
+vu --> UC12
+vu --> UC13
+vu --> UC14
+vu --> UC15
+vu --> UC16
+vu --> UC17
+vu --> UC18
+vu --> UC19
+vu --> UC20
+au --> UC50
+au --> UC51
+au --> UC52
+au --> UC53
+au --> UC54
+au --> UC55
+au --> UC56
+UC50 --> UC100
+UC51 --> UC101
+UC52 --> UC102
+UC53 --> UC103
+UC54 --> UC104
+UC55 --> UC105
+UC56 --> UC106
+@enduml
\ No newline at end of file
diff --git a/src/covid19/blueprints/ecdc/ecdc_views.py b/src/covid19/blueprints/ecdc/ecdc_views.py
index 0eccb92c..79f33d86 100644
--- a/src/covid19/blueprints/ecdc/ecdc_views.py
+++ b/src/covid19/blueprints/ecdc/ecdc_views.py
@@ -21,116 +21,9 @@ admin.add_view(ModelView(EcdcCountry, db.session, category="ECDC"))
 admin.add_view(ModelView(EcdcData, db.session, category="ECDC"))
 
 
-##################################################################################################################
-#
-# Europe
-#
-##################################################################################################################
-
-
-@celery.task(bind=True)
-def task_ecdc_download_only(self):
-    logger = get_task_logger(__name__)
-    self.update_state(state=states.STARTED)
-    logger.info("------------------------------------------------------------")
-    logger.info(" Received: task_ecdc_download_only [OK] ")
-    logger.info("------------------------------------------------------------")
-    ecdc_service.run_download_only()
-    self.update_state(state=states.SUCCESS)
-    result = "OK (task_ecdc_download_only)"
-    return result
-
-
-@celery.task(bind=True)
-def task_ecdc_import_only(self):
-    logger = get_task_logger(__name__)
-    self.update_state(state=states.STARTED)
-    logger.info("------------------------------------------------------------")
-    logger.info(" Received: task_ecdc_import_only [OK] ")
-    logger.info("------------------------------------------------------------")
-    ecdc_service.run_import_only()
-    self.update_state(state=states.SUCCESS)
-    result = "OK (task_ecdc_import_only)"
-    return result
-
-
-@celery.task(bind=True)
-def task_ecdc_update_dimension_tables_only(self):
-    logger = get_task_logger(__name__)
-    self.update_state(state=states.STARTED)
-    logger.info("------------------------------------------------------------")
-    logger.info(" Received: task_ecdc_update_dimension_tables_only [OK] ")
-    logger.info("------------------------------------------------------------")
-    ecdc_service.run_update_dimension_tables_only()
-    self.update_state(state=states.SUCCESS)
-    result = "OK (task_ecdc_update_dimension_tables_only)"
-    return result
-
-
-@celery.task(bind=True)
-def task_ecdc_update_fact_table_incremental_only(self):
-    logger = get_task_logger(__name__)
-    self.update_state(state=states.STARTED)
-    logger.info("------------------------------------------------------------")
-    logger.info(" Received: task_ecdc_update_fact_table_incremental_only [OK] ")
-    logger.info("------------------------------------------------------------")
-    ecdc_service.run_update_fact_table_incremental_only()
-    self.update_state(state=states.SUCCESS)
-    result = "OK (task_ecdc_update_fact_table_incremental_only)"
-    return result
-
-
-@celery.task(bind=True)
-def task_ecdc_update_fact_table_incremental_only(self):
-    logger = get_task_logger(__name__)
-    self.update_state(state=states.STARTED)
-    logger.info("------------------------------------------------------------")
-    logger.info(" Received: task_ecdc_update_fact_table_incremental_only [OK] ")
-    logger.info("------------------------------------------------------------")
-    ecdc_service.run_update_fact_table_incremental_only()
-    self.update_state(state=states.SUCCESS)
-    result = "OK (task_ecdc_update_fact_table_incremental_only)"
-    return result
-
-
-@celery.task(bind=True)
-def task_ecdc_update_fact_table_initial_only(self):
-    logger = get_task_logger(__name__)
-    self.update_state(state=states.STARTED)
-    logger.info("------------------------------------------------------------")
-    logger.info(" Received: task_ecdc_update_fact_table_initial_only [OK] ")
-    logger.info("------------------------------------------------------------")
-    ecdc_service.run_update_fact_table_initial_only()
-    self.update_state(state=states.SUCCESS)
-    result = "OK (task_ecdc_update_fact_table_initial_only)"
-    return result
-
-
-@celery.task(bind=True)
-def task_ecdc_update_star_schema_incremental(self):
-    logger = get_task_logger(__name__)
-    self.update_state(state=states.STARTED)
-    logger.info("------------------------------------------------------------")
-    logger.info(" Received: task_ecdc_update_star_schema_incremental [OK] ")
-    logger.info("------------------------------------------------------------")
-    ecdc_service.run_update_star_schema_incremental()
-    self.update_state(state=states.SUCCESS)
-    result = "OK (task_ecdc_update_star_schema_incremental)"
-    return result
-
-
-@celery.task(bind=True)
-def task_ecdc_update_star_schema_initial(self):
-    logger = get_task_logger(__name__)
-    self.update_state(state=states.STARTED)
-    logger.info("------------------------------------------------------------")
-    logger.info(" Received: task_ecdc_update_star_schema_initial [OK] ")
-    logger.info("------------------------------------------------------------")
-    ecdc_service.run_update_star_schema_initial()
-    self.update_state(state=states.SUCCESS)
-    result = "OK (task_ecdc_update_star_schema_initial)"
-    return result
-
+# ---------------------------------------------------------------------------------------------------------------
+#  Url Routes Frontend
+# ---------------------------------------------------------------------------------------------------------------
 
 @app_ecdc.route('/info')
 def url_ecdc_info():
@@ -277,6 +170,119 @@ def url_ecdc_country_germany(page=1):
         page_info=page_info)
 
 
+# ----------------------------------------------------------------------------------------------------------------
+#  Celery TASKS
+# ----------------------------------------------------------------------------------------------------------------
+
+
+@celery.task(bind=True)
+def task_ecdc_download_only(self):
+    logger = get_task_logger(__name__)
+    self.update_state(state=states.STARTED)
+    logger.info("------------------------------------------------------------")
+    logger.info(" Received: task_ecdc_download_only [OK] ")
+    logger.info("------------------------------------------------------------")
+    ecdc_service.run_download_only()
+    self.update_state(state=states.SUCCESS)
+    result = "OK (task_ecdc_download_only)"
+    return result
+
+
+@celery.task(bind=True)
+def task_ecdc_import_only(self):
+    logger = get_task_logger(__name__)
+    self.update_state(state=states.STARTED)
+    logger.info("------------------------------------------------------------")
+    logger.info(" Received: task_ecdc_import_only [OK] ")
+    logger.info("------------------------------------------------------------")
+    ecdc_service.run_import_only()
+    self.update_state(state=states.SUCCESS)
+    result = "OK (task_ecdc_import_only)"
+    return result
+
+
+@celery.task(bind=True)
+def task_ecdc_update_dimension_tables_only(self):
+    logger = get_task_logger(__name__)
+    self.update_state(state=states.STARTED)
+    logger.info("------------------------------------------------------------")
+    logger.info(" Received: task_ecdc_update_dimension_tables_only [OK] ")
+    logger.info("------------------------------------------------------------")
+    ecdc_service.run_update_dimension_tables_only()
+    self.update_state(state=states.SUCCESS)
+    result = "OK (task_ecdc_update_dimension_tables_only)"
+    return result
+
+
+@celery.task(bind=True)
+def task_ecdc_update_fact_table_incremental_only(self):
+    logger = get_task_logger(__name__)
+    self.update_state(state=states.STARTED)
+    logger.info("------------------------------------------------------------")
+    logger.info(" Received: task_ecdc_update_fact_table_incremental_only [OK] ")
+    logger.info("------------------------------------------------------------")
+    ecdc_service.run_update_fact_table_incremental_only()
+    self.update_state(state=states.SUCCESS)
+    result = "OK (task_ecdc_update_fact_table_incremental_only)"
+    return result
+
+
+@celery.task(bind=True)
+def task_ecdc_update_fact_table_incremental_only(self):
+    logger = get_task_logger(__name__)
+    self.update_state(state=states.STARTED)
+    logger.info("------------------------------------------------------------")
+    logger.info(" Received: task_ecdc_update_fact_table_incremental_only [OK] ")
+    logger.info("------------------------------------------------------------")
+    ecdc_service.run_update_fact_table_incremental_only()
+    self.update_state(state=states.SUCCESS)
+    result = "OK (task_ecdc_update_fact_table_incremental_only)"
+    return result
+
+
+@celery.task(bind=True)
+def task_ecdc_update_fact_table_initial_only(self):
+    logger = get_task_logger(__name__)
+    self.update_state(state=states.STARTED)
+    logger.info("------------------------------------------------------------")
+    logger.info(" Received: task_ecdc_update_fact_table_initial_only [OK] ")
+    logger.info("------------------------------------------------------------")
+    ecdc_service.run_update_fact_table_initial_only()
+    self.update_state(state=states.SUCCESS)
+    result = "OK (task_ecdc_update_fact_table_initial_only)"
+    return result
+
+
+@celery.task(bind=True)
+def task_ecdc_update_star_schema_incremental(self):
+    logger = get_task_logger(__name__)
+    self.update_state(state=states.STARTED)
+    logger.info("------------------------------------------------------------")
+    logger.info(" Received: task_ecdc_update_star_schema_incremental [OK] ")
+    logger.info("------------------------------------------------------------")
+    ecdc_service.run_update_star_schema_incremental()
+    self.update_state(state=states.SUCCESS)
+    result = "OK (task_ecdc_update_star_schema_incremental)"
+    return result
+
+
+@celery.task(bind=True)
+def task_ecdc_update_star_schema_initial(self):
+    logger = get_task_logger(__name__)
+    self.update_state(state=states.STARTED)
+    logger.info("------------------------------------------------------------")
+    logger.info(" Received: task_ecdc_update_star_schema_initial [OK] ")
+    logger.info("------------------------------------------------------------")
+    ecdc_service.run_update_star_schema_initial()
+    self.update_state(state=states.SUCCESS)
+    result = "OK (task_ecdc_update_star_schema_initial)"
+    return result
+
+# ----------------------------------------------------------------------------------------------------------------
+#  URL Routes for Celery TASKS
+# ----------------------------------------------------------------------------------------------------------------
+
+
 # TODO: #163 implement url_ecdc_task_update_star_schema_initial in europe_views.py
 @app_ecdc.route('/task/update/star_schema/initial')
 def url_ecdc_task_update_star_schema_initial():
-- 
GitLab