diff --git a/kontor-api/src/apis/base.py b/kontor-api/src/apis/base.py
index 35faadd..c632977 100644
--- a/kontor-api/src/apis/base.py
+++ b/kontor-api/src/apis/base.py
@@ -1,10 +1,9 @@
from fastapi import APIRouter
-from src.apis.version1 import comic, media, tysc, admin, metadata
+from src.apis.version1 import comic, media, tysc, admin
api_router = APIRouter(prefix="/api")
api_router.include_router(comic.router, prefix="/comics", tags=["comics"])
api_router.include_router(media.router, prefix="/media", tags=["media"])
api_router.include_router(tysc.router, prefix="/tysc", tags=["tysc"])
api_router.include_router(admin.router, prefix="/login", tags=["login"])
-api_router.include_router(metadata.router, prefix="/metadata", tags=["metadata"])
diff --git a/kontor-api/src/apis/version1/metadata.py b/kontor-api/src/apis/version1/metadata.py
deleted file mode 100644
index 2860880..0000000
--- a/kontor-api/src/apis/version1/metadata.py
+++ /dev/null
@@ -1,26 +0,0 @@
-from typing import List
-
-from fastapi import APIRouter
-
-from src.apis.utils import SessionDep
-from src.db.models.metadata import MetaDataTable, MetaDataColumn
-from src.db.repository.metadata import get_tables, get_columns
-from src.schema.admin import MetaDataTableResponse, MetaDataColumnResponse
-
-router = APIRouter()
-
-
-
-@router.get("/tables")
-def get_meta_data_tables(db: SessionDep) -> List[MetaDataTableResponse]:
- tables = db.query(MetaDataTable).all()
- response: List[MetaDataTableResponse] = get_tables(tables)
- return response
-
-
-
-@router.get("/columns")
-def get_meta_data_columns(db: SessionDep) -> List[MetaDataColumnResponse]:
- columns = db.query(MetaDataColumn).all()
- response: List[MetaDataColumnResponse] = get_columns(columns)
- return response
diff --git a/kontor-api/src/db/models/metadata.py b/kontor-api/src/db/models/metadata.py
deleted file mode 100644
index 466ae19..0000000
--- a/kontor-api/src/db/models/metadata.py
+++ /dev/null
@@ -1,39 +0,0 @@
-from sqlalchemy import Column, String, ForeignKey, Integer, Boolean
-from sqlalchemy.orm import relationship
-
-from src.db.models.base import Base, BaseMixin
-
-
-class MetaDataTable(Base, BaseMixin):
- __tablename__ = 'meta_data_table'
- table_name = Column(String, unique=True)
- table_columns = relationship("MetaDataColumn")
-
- def __repr__(self):
- return f'MetaDataTable({self.id} {self.table_name})'
-
- def __str__(self):
- return f'{self.table_name}({self.id})'
-
-
-class MetaDataColumn(Base, BaseMixin):
- __tablename__ = 'meta_data_column'
- column_name = Column(String, nullable=False)
- column_type = Column(String)
- column_order = Column(Integer)
- is_shown = Column(Boolean)
- column_label = Column(String)
- show_filter = Column(Boolean)
- filter_label = Column(String)
- ref_column = Column(String, nullable=True)
- table_id = Column(String, ForeignKey('meta_data_table.id'))
- table = relationship("MetaDataTable", back_populates="table_columns")
-
- def __repr__(self):
- if self.column_name is None:
- return f'MetaDataColumn({self.id} {self.table.table_name}.__)'
- else:
- return f'MetaDataColumn({self.id} {self.table.table_name}.{self.column_name})'
-
- def __str__(self):
- return f'{self.column_name}({self.id})'
diff --git a/kontor-api/src/db/repository/metadata.py b/kontor-api/src/db/repository/metadata.py
deleted file mode 100644
index 7e19330..0000000
--- a/kontor-api/src/db/repository/metadata.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from typing import List
-
-from src.db.models.metadata import MetaDataTable, MetaDataColumn
-from src.schema.admin import MetaDataTableResponse, MetaDataColumnResponse
-
-
-def get_tables(tables: List[MetaDataTable]) -> List[MetaDataTableResponse]:
- results: List[MetaDataTableResponse] = []
- for table in tables:
- result = MetaDataTableResponse(id=table.id, name=table.table_name)
- results.append(result)
- return results
-
-def get_columns(columns: List[MetaDataColumn]) -> List[MetaDataColumnResponse]:
- results: List[MetaDataColumnResponse] = []
- for column in columns:
- result = MetaDataColumnResponse(
- id=column.id,
- table_name=column.table.table_name,
- column_name=column.column_name,
- column_type=column.column_type,
- column_order=column.column_order,
- is_shown=column.is_shown,
- column_label=column.column_label,
- show_filter=column.show_filter,
- filter_label=column.filter_label,
- ref_column=column.ref_column
- )
- results.append(result)
- return results
diff --git a/kontor-api/src/schema/admin.py b/kontor-api/src/schema/admin.py
index 25beb3c..5efe689 100644
--- a/kontor-api/src/schema/admin.py
+++ b/kontor-api/src/schema/admin.py
@@ -6,21 +6,3 @@ from pydantic import BaseModel
class Token(BaseModel):
access_token: str
token_type: str
-
-class MetaDataTableResponse(BaseModel):
- id: str
- name: str
-
-class MetaDataColumnResponse(BaseModel):
- id: str
- table_name: str
- column_name: str
- column_sync_name: str
- column_type: str
- column_modifier: Optional[str]
- column_order: int
- is_shown: bool
- column_label: Optional[str]
- show_filter: bool
- filter_label: Optional[str]
- ref_column: Optional[str]
diff --git a/kontor-api/src/templates/admin/metadata.html b/kontor-api/src/templates/admin/metadata.html
deleted file mode 100644
index ca93b0b..0000000
--- a/kontor-api/src/templates/admin/metadata.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends "shared/base.html" %}
-
-{% block title %}
-
MetaData
-{% endblock %}
-
-{% block content %}
- {% with msg=msg %}
- {% include "components/alerts.html" %}
- {% endwith %}
-
- {% for table in data %}
-
- {% with obj=table %}
- {% include "components/metadatatable_cards.html" %}
- {% endwith %}
-
-
- {% endfor %}
-
-{% endblock %}
diff --git a/kontor-api/src/templates/admin/permissions.html b/kontor-api/src/templates/admin/permissions.html
new file mode 100644
index 0000000..fa40de2
--- /dev/null
+++ b/kontor-api/src/templates/admin/permissions.html
@@ -0,0 +1,38 @@
+{% extends "shared/base.html" %}
+
+{% block title %}
+ Permissions
+{% endblock %}
+
+{% block content %}
+ {% with msg=msg %}
+ {% include "components/alerts.html" %}
+ {% endwith %}
+
+{% endblock %}
diff --git a/kontor-api/src/templates/admin/profiles.html b/kontor-api/src/templates/admin/profiles.html
new file mode 100644
index 0000000..254ec84
--- /dev/null
+++ b/kontor-api/src/templates/admin/profiles.html
@@ -0,0 +1,43 @@
+{% extends "shared/base.html" %}
+
+{% block title %}
+ Profiles
+{% endblock %}
+
+{% block content %}
+ {% with msg=msg %}
+ {% include "components/alerts.html" %}
+ {% endwith %}
+
+
+
+
+
+ | Username |
+ First Name |
+ Last Name |
+ Actions |
+
+
+ {% for profile in profiles %}
+
+ | {{profile.user_name}} |
+ {{profile.first_name}} |
+ {{profile.last_name}} |
+ {{profile.email}} |
+ Edit |
+ Delete |
+
+ {% endfor %}
+
+
+
+
+
+{% endblock %}
diff --git a/kontor-api/src/templates/comic/comics.html b/kontor-api/src/templates/comic/comics.html
index df98d07..9e05d67 100644
--- a/kontor-api/src/templates/comic/comics.html
+++ b/kontor-api/src/templates/comic/comics.html
@@ -34,7 +34,9 @@
{% endfor %}
- Add Comic
+
{% endblock %}
diff --git a/kontor-api/src/templates/components/metadatatable_cards.html b/kontor-api/src/templates/components/metadatatable_cards.html
deleted file mode 100644
index be3c534..0000000
--- a/kontor-api/src/templates/components/metadatatable_cards.html
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
{{obj.table_name}}
-
-
- | Column Name |
- Column Type |
- Column Order |
- Is Shown |
- Column Label |
- Show Filter |
- Filter Label |
- Ref Column |
-
-
- {% for column in obj.table_columns %}
-
- | {{column.column_name}} |
- {{column.column_type}} |
- {{column.column_order}} |
- {% with check=column.is_shown %}{% include "components/check.html" %}{% endwith %} |
- {{column.column_label}} |
- {% with check=column.show_filter %}{% include "components/check.html" %}{% endwith %} |
- {{column.filter_label}} |
- {{column.ref_column}} |
-
- {% endfor %}
-
-
-
-
diff --git a/kontor-api/src/templates/components/navbar.html b/kontor-api/src/templates/components/navbar.html
index ad9cc99..02cc139 100644
--- a/kontor-api/src/templates/components/navbar.html
+++ b/kontor-api/src/templates/components/navbar.html
@@ -41,7 +41,8 @@
Signup
Login
- MetaData
+ Profiles
+ Permissions
diff --git a/kontor-api/src/webapps/admin/route_admin.py b/kontor-api/src/webapps/admin/route_admin.py
index ffc6b78..e2ab62d 100644
--- a/kontor-api/src/webapps/admin/route_admin.py
+++ b/kontor-api/src/webapps/admin/route_admin.py
@@ -1,24 +1,31 @@
+from typing import AnyStr
from fastapi import APIRouter, Request
from fastapi.security.utils import get_authorization_scheme_param
from fastapi.templating import Jinja2Templates
from src.apis.utils import SessionDep
from src.apis.version1.admin import get_current_user_from_token
-from src.db.models.admin import Profile
-from src.db.models.metadata import MetaDataColumn, MetaDataTable
-from src.db.repository.metadata import get_columns
+from src.db.models.admin import Permission, Profile
templates = Jinja2Templates(directory="src/templates")
router = APIRouter(include_in_schema=False, prefix="/admin")
-@router.get("/metadata")
-def get_metadata(db: SessionDep, request: Request, msg: str = None):
- token = request.cookies.get("access_token")
- scheme, param = get_authorization_scheme_param(token)
- current_user: Profile = get_current_user_from_token(token=param, db=db)
- data = []
- if current_user is None:
- msg = "You are not logged in"
- return templates.TemplateResponse("admin/metadata.html", {"request": request, "msg": msg, "data": data})
- tables= db.query(MetaDataTable).all()
- return templates.TemplateResponse("admin/metadata.html", {"request": request, "msg": msg, "data": tables})
+@router.get("/profiles")
+def get_profiles(db: SessionDep, request: Request, msg: str | None = None):
+ profiles = db.query(Profile).all()
+ return templates.TemplateResponse("admin/profiles.html", {"request": request, "msg": msg, "profiles": profiles})
+
+@router.get("/profiles/{profile_id}")
+def comic_details(profile_id: AnyStr, request: Request, db: SessionDep):
+ profile = db.get(Profile, profile_id)
+ return templates.TemplateResponse("admin/profile_detail.html", {"request": request, "profile":profile})
+
+@router.get("/permissions")
+def get_permissions(db: SessionDep, request: Request, msg: str | None = None):
+ permissions = db.query(Permission).all()
+ return templates.TemplateResponse("admin/permissions.html", {"request": request, "msg": msg, "permissions": permissions})
+
+@router.get("/permissions/{permission_id}")
+def artist_detail(permission_id: AnyStr, request: Request, db: SessionDep):
+ permission= db.get(Permission, str(permission_id))
+ return templates.TemplateResponse("comic/permission_detail.html", {"request": request, "permission": permission})
diff --git a/kontor-api/src/webapps/comic/route_comics.py b/kontor-api/src/webapps/comic/route_comics.py
index ea6b03d..b27dd97 100644
--- a/kontor-api/src/webapps/comic/route_comics.py
+++ b/kontor-api/src/webapps/comic/route_comics.py
@@ -1,16 +1,10 @@
-from fastapi import APIRouter, Request, responses, status
+from fastapi import APIRouter, Request
from fastapi.templating import Jinja2Templates
-from fastapi.responses import RedirectResponse
from src.apis.utils import SessionDep
-from src.db.models.comic import Comic, Artist, Publisher, Issue, WorkType
+from src.db.models.comic import Comic, Artist, Publisher, Issue
from typing import AnyStr
-from src.db.repository.comic import create_new_worktype, update_worktype
-from src.main import logger
-from src.schema.comics.worktype import AddWorkType
-from src.webapps.comic.forms import AddWorktypeForm
-
templates = Jinja2Templates(directory="src/templates")
router = APIRouter(include_in_schema=False, prefix="/comic")
diff --git a/kontor-scripts/db/models/__init__.py b/kontor-scripts/db/models/__init__.py
index d0fe076..9da381a 100644
--- a/kontor-scripts/db/models/__init__.py
+++ b/kontor-scripts/db/models/__init__.py
@@ -33,7 +33,6 @@ from db.models.media import (
MediaArticle,
MediaVideo,
)
-from db.models.metadata import MetaDataColumn, MetaDataTable
from db.models.tysc import (
Card,
CardSet,
@@ -46,40 +45,38 @@ from db.models.tysc import (
)
registry = {
- Card.__tablename__: Card,
- CardSet.__tablename__: CardSet,
- Rooster.__tablename__: Rooster,
+ Sport.__tablename__: Sport,
+ Player.__tablename__: Player,
Team.__tablename__: Team,
FieldPosition.__tablename__: FieldPosition,
- Player.__tablename__: Player,
Vendor.__tablename__: Vendor,
- Sport.__tablename__: Sport,
- Issue.__tablename__: Issue,
- TradePaperback.__tablename__: TradePaperback,
- StoryArc.__tablename__: StoryArc,
- Volume.__tablename__: Volume,
- ComicWork.__tablename__: ComicWork,
+ CardSet.__tablename__: CardSet,
+ Card.__tablename__: Card,
+ Rooster.__tablename__: Rooster,
Artist.__tablename__: Artist,
- Comic.__tablename__: Comic,
Publisher.__tablename__: Publisher,
WorkType.__tablename__: WorkType,
- ArticleAuthor.__tablename__: ArticleAuthor,
- BookAuthor.__tablename__: BookAuthor,
- BookshelfPublisher.__tablename__: BookshelfPublisher,
+ Comic.__tablename__: Comic,
+ Volume.__tablename__: Volume,
+ StoryArc.__tablename__: StoryArc,
+ Issue.__tablename__: Issue,
+ TradePaperback.__tablename__: TradePaperback,
+ ComicWork.__tablename__: ComicWork,
Article.__tablename__: Article,
+ BookshelfPublisher.__tablename__: BookshelfPublisher,
Book.__tablename__: Book,
Author.__tablename__: Author,
+ ArticleAuthor.__tablename__: ArticleAuthor,
+ BookAuthor.__tablename__: BookAuthor,
+ MediaArticle.__tablename__: MediaArticle,
+ MediaVideo.__tablename__: MediaVideo,
MediaFile.__tablename__: MediaFile,
MediaActor.__tablename__: MediaActor,
MediaActorFile.__tablename__: MediaActorFile,
- MediaArticle.__tablename__: MediaArticle,
- MediaVideo.__tablename__: MediaVideo,
- MetaDataColumn.__tablename__: MetaDataColumn,
- MetaDataTable.__tablename__: MetaDataTable,
- Assignment.__tablename__: Assignment,
- Token.__tablename__: Token,
Profile.__tablename__: Profile,
Permission.__tablename__: Permission,
+ Assignment.__tablename__: Assignment,
+ Token.__tablename__: Token,
ModuleData.__tablename__: ModuleData,
MailAccount.__tablename__: MailAccount,
Mail.__tablename__: Mail
diff --git a/kontor-scripts/db/models/admin.py b/kontor-scripts/db/models/admin.py
index 70e56ad..5aac8b6 100644
--- a/kontor-scripts/db/models/admin.py
+++ b/kontor-scripts/db/models/admin.py
@@ -40,6 +40,20 @@ class Profile(Base, BaseMixin):
self.password = import_data['password']
self.enabled = import_data['enabled']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['first_name'] = self.first_name
+ item['last_name'] = self.last_name
+ item['user_name'] = self.user_name
+ item['email'] = self.email
+ item['password'] = self.password
+ item['enabled'] = self.enabled
+ return item
+
class Token(Base, BaseMixin):
__tablename__ = "token"
@@ -60,7 +74,19 @@ class Token(Base, BaseMixin):
self.last_used_date = import_data['last_used_date']
self.enabled = import_data['enabled']
self.profile_id = import_data['profile_id']
- self.password = import_data['password']
+
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['token'] = self.token
+ item['name'] = self.name
+ item['last_used_date'] = self.last_used_date
+ item['enabled'] = self.enabled
+ item['profile_id'] = self.profile_id
+ return item
class Permission(Base, BaseMixin):
@@ -75,6 +101,14 @@ class Permission(Base, BaseMixin):
self.version = import_data['version']
self.name = import_data['name']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ return item
class Assignment(Base, BaseMixin):
__tablename__ = "assignment"
@@ -91,6 +125,16 @@ class Assignment(Base, BaseMixin):
self.profile_id = import_data['profile_id']
self.permission_id = import_data['permission_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['profile_id'] = self.profile_id
+ item['permission_id'] = self.permission_id
+ return item
+
class ModuleData(Base, BaseMixin):
__tablename__ = "module_data"
@@ -105,6 +149,16 @@ class ModuleData(Base, BaseMixin):
self.module_name = import_data['module_name']
self.import_data = import_data['import_data']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['module_name'] = self.module_name
+ item['import_data'] = self.import_data
+ return item
+
class MailAccount(Base, BaseMixin):
__tablename__ = "mail_account"
@@ -127,6 +181,20 @@ class MailAccount(Base, BaseMixin):
self.password = import_data['password']
self.start_tls = import_data['start_tls']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['host'] = self.host
+ item['port'] = self.port
+ item['protocol'] = self.protocol
+ item['user_name'] = self.user_name
+ item['password'] = self.password
+ item['start_tls'] = self.start_tls
+ return item
+
class Mail(Base, BaseMixin):
__tablename__ = "mail"
@@ -146,3 +214,16 @@ class Mail(Base, BaseMixin):
self.body = import_data['body']
self.sent_date = import_data['sent_date']
self.received_date = import_data['received_date']
+
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['folder'] = self.folder
+ item['subject'] = self.subject
+ item['body'] = self.body
+ item['sent_date'] = str(self.sent_date)
+ item['received_date'] = str(self.received_date)
+ return item
diff --git a/kontor-scripts/db/models/bookshelf.py b/kontor-scripts/db/models/bookshelf.py
index e674e0b..078bea6 100644
--- a/kontor-scripts/db/models/bookshelf.py
+++ b/kontor-scripts/db/models/bookshelf.py
@@ -17,6 +17,15 @@ class Article(Base, BaseMixin):
self.version = import_data['version']
self.title = import_data['title']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['title'] = self.title
+ return item
+
class Author(Base, BaseMixin):
__tablename__ = 'author'
@@ -33,6 +42,16 @@ class Author(Base, BaseMixin):
self.first_name = import_data['first_name']
self.last_name = import_data['last_name']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['first_name'] = self.first_name
+ item['last_name'] = self.last_name
+ return item
+
class BookshelfPublisher(Base, BaseMixin):
__tablename__ = 'bookshelf_publisher'
@@ -46,6 +65,15 @@ class BookshelfPublisher(Base, BaseMixin):
self.version = import_data['version']
self.name = import_data['name']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ return item
+
class Book(Base, BaseMixin):
__tablename__ = 'book'
@@ -66,6 +94,18 @@ class Book(Base, BaseMixin):
self.year = import_data['year']
self.publisher_id = import_data['publisher_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['isbn'] = self.isbn
+ item['title'] = self.title
+ item['year'] = self.year
+ item['publisher_id'] = self.publisher_id
+ return item
+
class ArticleAuthor(Base, BaseMixin):
__tablename__ = 'article_author'
@@ -82,6 +122,16 @@ class ArticleAuthor(Base, BaseMixin):
self.article_id = import_data['article_id']
self.author_id = import_data['author_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['article_id'] = self.article_id
+ item['author_id'] = self.author_id
+ return item
+
class BookAuthor(Base, BaseMixin):
__tablename__ = 'book_author'
@@ -97,3 +147,13 @@ class BookAuthor(Base, BaseMixin):
self.version = import_data['version']
self.author_id = import_data['author_id']
self.book_id = import_data['book_id']
+
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['author_id'] = self.author_id
+ item['book_id'] = self.book_id
+ return item
diff --git a/kontor-scripts/db/models/comic.py b/kontor-scripts/db/models/comic.py
index 5e92caa..35e1efa 100644
--- a/kontor-scripts/db/models/comic.py
+++ b/kontor-scripts/db/models/comic.py
@@ -34,6 +34,17 @@ class Publisher(Base):
self.name = import_data['name']
self.parent_publisher_id = import_data['parent_publisher_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ item['weblink'] = self.weblink
+ item['parent_publisher_id'] = self.parent_publisher_id
+ return item
+
class Comic(Base, BaseMixin):
__tablename__ = 'comic'
@@ -67,6 +78,19 @@ class Comic(Base, BaseMixin):
if 'weblink' in import_data:
self.weblink = import_data['weblink']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['title'] = self.title
+ item['publisher_id'] = self.publisher_id
+ item['current_order'] = self.current_order
+ item['completed'] = self.completed
+ item['weblink'] = self.weblink
+ return item
+
class Volume(Base, BaseMixin):
__tablename__ = "volume"
@@ -84,6 +108,15 @@ class Volume(Base, BaseMixin):
self.name = import_data['name']
self.comic_id = import_data['comic_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ item['comic_id'] = self.comic_id
+ return item
class TradePaperback(Base, BaseMixin):
__tablename__ = "trade_paperback"
@@ -103,6 +136,18 @@ class TradePaperback(Base, BaseMixin):
self.issue_end = import_data['issue_end']
self.comic_id = import_data['comic_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ item['issue_start'] = self.issue_start
+ item['issue_end'] = self.issue_end
+ item['comic_id'] = self.comic_id
+ return item
+
class StoryArc(Base, BaseMixin):
__tablename__ = "story_arc"
@@ -122,6 +167,17 @@ class StoryArc(Base, BaseMixin):
self.comic_id = import_data['comic_id']
self.volume_id = import_data['volume_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ item['comic_id'] = self.comic_id
+ item['volume_id'] = self.volume_id
+ return item
+
class Issue(Base, BaseMixin):
__tablename__ = "issue"
@@ -147,6 +203,20 @@ class Issue(Base, BaseMixin):
self.volume_id = import_data['volume_id']
self.story_arc_id = import_data['story_arc_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['issue_number'] = self.issue_number
+ item['in_stock'] = self.in_stock
+ item['is_read'] = self.is_read
+ item['comic_id'] = self.comic_id
+ item['volume_id'] = self.volume_id
+ item['story_arc_id'] = self.story_arc_id
+ return item
+
class Artist(Base, BaseMixin):
__tablename__ = "artist"
@@ -163,6 +233,16 @@ class Artist(Base, BaseMixin):
if 'weblink' in import_data:
self.weblink = import_data['weblink']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ item['weblink'] = self.weblink
+ return item
+
class WorkType(Base, BaseMixin):
__tablename__ = "worktype"
@@ -182,6 +262,15 @@ class WorkType(Base, BaseMixin):
self.version = import_data['version']
self.name = import_data['name']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ return item
+
class ComicWork(Base, BaseMixin):
__tablename__ = "comic_work"
@@ -200,3 +289,14 @@ class ComicWork(Base, BaseMixin):
self.comic_id = import_data['comic_id']
self.artist_id = import_data['artist_id']
self.work_type_id = import_data['work_type_id']
+
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['comic_id'] = self.comic_id
+ item['artist_id'] = self.artist_id
+ item['work_type_id'] = self.work_type_id
+ return item
diff --git a/kontor-scripts/db/models/media.py b/kontor-scripts/db/models/media.py
index aaefe4c..f8d9dc8 100644
--- a/kontor-scripts/db/models/media.py
+++ b/kontor-scripts/db/models/media.py
@@ -34,6 +34,21 @@ class MediaFile(Base, BaseMixin, BaseVideoMixin):
self.url = import_data['url']
self.should_download = import_data['should_download']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['cloud_link'] = self.cloud_link
+ item['file_name'] = self.file_name
+ item['path'] = self.path
+ item['review'] = self.review
+ item['title'] = self.title
+ item['url'] = self.url
+ item['should_download'] = self.should_download
+ return item
+
def update_title(self) -> None:
print(f"update title for {self.url}")
try:
@@ -41,7 +56,7 @@ class MediaFile(Base, BaseMixin, BaseVideoMixin):
soup = BeautifulSoup(r.content, "html.parser")
title = soup.title.string
self.title = title
- self.review = False_
+ self.review = False
except:
self.title = None
self.review = True
@@ -61,7 +76,7 @@ class MediaFile(Base, BaseMixin, BaseVideoMixin):
self.file_name = None
else:
download_file = Path(file_name)
- self.should_download = False_
+ self.should_download = False
self.file_name = download_file.name
self.cloud_link = str(download_file.absolute())
self.last_modified_date = datetime.now()
@@ -92,6 +107,15 @@ class MediaActor(Base, BaseMixin):
self.version = import_data['version']
self.name = import_data['name']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ return item
+
class MediaActorFile(Base, BaseMixin):
__tablename__ = 'media_actor_file'
@@ -108,6 +132,15 @@ class MediaActorFile(Base, BaseMixin):
self.media_actor_id = import_data['media_actor_id']
self.media_file_id = import_data['media_file_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['media_actor_id'] = self.media_actor_id
+ item['media_file_id'] = self.media_file_id
+ return item
class MediaArticle(Base, BaseMixin):
__tablename__ = 'media_article'
@@ -124,6 +157,17 @@ class MediaArticle(Base, BaseMixin):
self.title = import_data['title']
self.url = import_data['url']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['review'] = self.review
+ item['title'] = self.title
+ item['url'] = self.url
+ return item
+
class MediaVideo(Base, BaseMixin):
__tablename__ = 'media_video'
@@ -147,3 +191,18 @@ class MediaVideo(Base, BaseMixin):
self.title = import_data['title']
self.url = import_data['url']
self.should_download = import_data['should_download']
+
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['cloud_link'] = self.cloud_link
+ item['file_name'] = self.file_name
+ item['path'] = self.path
+ item['review'] = self.review
+ item['title'] = self.title
+ item['url'] = self.url
+ item['should_download'] = self.should_download
+ return item
diff --git a/kontor-scripts/db/models/metadata.py b/kontor-scripts/db/models/metadata.py
deleted file mode 100644
index eba8281..0000000
--- a/kontor-scripts/db/models/metadata.py
+++ /dev/null
@@ -1,62 +0,0 @@
-from typing import Any, AnyStr, Dict
-from sqlalchemy import Column, String, ForeignKey, Integer, Boolean
-from sqlalchemy.orm import relationship
-
-from db.models.base import Base, BaseMixin
-
-
-class MetaDataTable(Base, BaseMixin):
- __tablename__ = 'meta_data_table'
- table_name = Column(String, unique=True)
- table_columns = relationship("MetaDataColumn")
-
- def __repr__(self):
- return f'MetaDataTable({self.id} {self.table_name})'
-
- def __str__(self):
- return f'{self.table_name}({self.id})'
-
- def import_dict(self, import_data: Dict[AnyStr, Any]):
- self.id = import_data['id']
- self.created_date = import_data['created_date']
- self.last_modified_date = import_data['last_modified_date']
- self.version = import_data['version']
- self.table_name = import_data['table_name']
-
-
-class MetaDataColumn(Base, BaseMixin):
- __tablename__ = 'meta_data_column'
- column_name = Column(String, nullable=False)
- column_type = Column(String)
- column_order = Column(Integer)
- is_shown = Column(Boolean)
- column_label = Column(String)
- show_filter = Column(Boolean)
- filter_label = Column(String)
- ref_column = Column(String, nullable=True)
- table_id = Column(String, ForeignKey('meta_data_table.id'))
- table = relationship("MetaDataTable", back_populates="table_columns")
-
- def __repr__(self):
- if self.column_name is None:
- return f'MetaDataColumn({self.id} {self.table.table_name}.__)'
- else:
- return f'MetaDataColumn({self.id} {self.table.table_name}.{self.column_name})'
-
- def __str__(self):
- return f'{self.column_name}({self.id})'
-
- def import_dict(self, import_data: Dict[AnyStr, Any]):
- self.id = import_data['id']
- self.created_date = import_data['created_date']
- self.last_modified_date = import_data['last_modified_date']
- self.version = import_data['version']
- self.column_name = import_data['column_name']
- self.column_type = import_data['column_type']
- self.column_order = import_data['column_order']
- self.table_id = import_data['table_id']
- self.is_shown = import_data['is_shown']
- self.column_label = import_data['column_label']
- self.show_filter = import_data['show_filter']
- self.filter_label = import_data['filter_label']
- self.ref_column = import_data['ref_column']
diff --git a/kontor-scripts/db/models/tysc.py b/kontor-scripts/db/models/tysc.py
index d554d98..c9d70fc 100644
--- a/kontor-scripts/db/models/tysc.py
+++ b/kontor-scripts/db/models/tysc.py
@@ -24,6 +24,14 @@ class Sport(Base, BaseMixin):
self.version = import_data['version']
self.name = import_data['name']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ return item
class Team(Base, BaseMixin):
__tablename__ = "team"
@@ -42,6 +50,16 @@ class Team(Base, BaseMixin):
self.short_name = import_data['short_name']
self.sport_id = import_data['sport_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ item['short_name'] = self.short_name
+ item['sport_id'] = self.sport_id
+ return item
class FieldPosition(Base, BaseMixin):
__tablename__ = "field_position"
@@ -64,6 +82,17 @@ class FieldPosition(Base, BaseMixin):
self.short_name = import_data['short_name']
self.sport_id = import_data['sport_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ item['short_name'] = self.short_name
+ item['sport_id'] = self.sport_id
+ return item
+
class Player(Base, BaseMixin):
__tablename__ = "player"
@@ -85,6 +114,16 @@ class Player(Base, BaseMixin):
self.first_name = import_data['first_name']
self.last_name = import_data['last_name']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['first_name'] = self.first_name
+ item['last_name'] = self.last_name
+ return item
+
class Rooster(Base, BaseMixin):
__tablename__ = "rooster"
@@ -110,6 +149,18 @@ class Rooster(Base, BaseMixin):
self.player_id = import_data['player_id']
self.position_id = import_data['position_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['year'] = self.year
+ item['team_id'] = self.team_id
+ item['player_id'] = self.player_id
+ item['position_id'] = self.position_id
+ return item
+
class Vendor(Base, BaseMixin):
__tablename__ = "vendor"
@@ -124,6 +175,15 @@ class Vendor(Base, BaseMixin):
self.version = import_data['version']
self.name = import_data['name']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ return item
+
class CardSet(Base, BaseMixin):
__tablename__ = "card_set"
@@ -147,6 +207,18 @@ class CardSet(Base, BaseMixin):
self.insert_set = import_data['insert_set']
self.vendor_id = import_data['vendor_id']
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['name'] = self.name
+ item['parallel_set'] = self.parallel_set
+ item['insert_set'] = self.insert_set
+ item['vendor_id'] = self.vendor_id
+ return item
+
class Card(Base, BaseMixin):
__tablename__ = "card"
@@ -172,3 +244,16 @@ class Card(Base, BaseMixin):
self.card_set_id = import_data['card_set_id']
self.rooster_id = import_data['rooster_id']
self.vendor_id = import_data['vendor_id']
+
+ def export_dict(self) -> Dict[AnyStr, Any]:
+ item: Dict[AnyStr, Any] = {}
+ item['id'] = self.id
+ item['created_date'] = str(self.created_date)
+ item['last_modified_date'] = str(self.last_modified_date)
+ item['version'] = self.version
+ item['card_number'] = self.card_number
+ item['year'] = self.year
+ item['card_set_id'] = self.card_set_id
+ item['rooster_id'] = self.rooster_id
+ item['vendor_id'] = self.vendor_id
+ return item
diff --git a/kontor-scripts/db/repository/metadata.py b/kontor-scripts/db/repository/metadata.py
deleted file mode 100644
index 0e0558b..0000000
--- a/kontor-scripts/db/repository/metadata.py
+++ /dev/null
@@ -1,28 +0,0 @@
-
-from typing import List
-from sqlalchemy.orm import Session
-
-from db.models.metadata import MetaDataColumn, MetaDataTable
-from db.schemas.metadata import MetaDataTableResponse, MetaDataColumnResponse
-
-
-def get_tables(db: Session) -> List[MetaDataTableResponse]:
- tables = db.query(MetaDataTable).all()
- results: List[MetaDataTableResponse] = [MetaDataTableResponse(id=table.id, name=table.table_name) for table in tables]
- return results
-
-
-def get_columns_for_table(db: Session, table: MetaDataTableResponse)-> List[MetaDataColumnResponse]:
- columns = db.query(MetaDataColumn).filter_by(table_id = table.id).all()
- results: List[MetaDataColumnResponse] = []
- for column in columns:
- result: MetaDataColumnResponse = MetaDataColumnResponse(
- id=str(column.id),
- name=column.column_name,
- label=column.column_label,
- order=column.column_order,
- ref_column=column.ref_column,
- column_type=column.column_type)
- results.append(result)
- return results
-
diff --git a/kontor-scripts/db/schemas/metadata.py b/kontor-scripts/db/schemas/metadata.py
deleted file mode 100644
index cdc1051..0000000
--- a/kontor-scripts/db/schemas/metadata.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from pydantic import BaseModel, PositiveInt
-
-
-class MetaDataTableResponse(BaseModel):
- id: str
- name: str
-
-
-class MetaDataColumnResponse(BaseModel):
- id: str
- name: str
- label: str | None
- order: PositiveInt
- ref_column: str | None
- column_type: str
diff --git a/kontor-scripts/export.py b/kontor-scripts/export.py
index e5a0f09..8e7c006 100644
--- a/kontor-scripts/export.py
+++ b/kontor-scripts/export.py
@@ -12,7 +12,6 @@ from pathlib import Path
from db.models import registry
from db.models.base import Base
from config import get_logger
-from db.repository.metadata import get_tables, get_columns_for_table
parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
parser.add_argument('--verbose', '-v', action='count', default=0)
@@ -40,31 +39,23 @@ if __name__ == '__main__':
__session__ = sessionmaker(bind=engine)
with __session__() as db:
data = {}
- tables = get_tables(db)
+ tables = registry.keys()
for table in tables:
# logger.info(f"Table {table.name} with {table.id}")
- columns = get_columns_for_table(db, table)
- model = registry[table.name]
+ model = registry[table]
rows = db.query(model).all()
entries = []
for row in rows:
- entry = {}
- for column in columns:
- # logger.info(f" Column {column.order} {column.name} with {column.id}")
- try:
- value = getattr(row, column.name)
- if isinstance(value, datetime):
- entry[column.name] = str(value)
- else:
- entry[column.name] = value
- except AttributeError as error:
- logger.info(f"{error}")
+ entry = row.export_dict()
entries.append(entry)
- data[table.name] = entries
- logger.info(f"{table.name}: {len(entries)} exported")
- json_dump = json.dumps(data, indent=4)
- with open(args.file, "w") as dump_file:
- dump_file.write(json_dump)
+ data[table] = entries
+ logger.info(f"{table}: {len(entries)} exported")
+ try:
+ json_dump = json.dumps(data, indent=4)
+ with open(args.file, "w") as dump_file:
+ dump_file.write(json_dump)
+ except TypeError as error:
+ logger.info(f"{error}")
logger.info(f"{len(data)} tables exported")
#kontor_db = KontorDB(engine, logger)
#kontor_db.export_db(ExportType.JSON, args.file)
diff --git a/kontor-scripts/import.py b/kontor-scripts/import.py
index 5950547..d34121b 100644
--- a/kontor-scripts/import.py
+++ b/kontor-scripts/import.py
@@ -3,6 +3,7 @@ import data from json file to PostgreSQL
"""
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
+from datetime import datetime
from typing import Any, AnyStr, Dict, List
import os
import json
@@ -61,7 +62,14 @@ def get_ids(items: List[Any]) -> List[AnyStr]:
def update_item(db: Session, import_data: Dict[AnyStr, Any], item: Any, dry_run: bool, log):
for (key, value) in import_data.items():
existing_value = getattr(item, str(key))
- if existing_value != value:
+ update: bool = False
+ if isinstance(existing_value, datetime):
+ if str(existing_value) != str(value):
+ update = True
+ else:
+ if existing_value != value:
+ update = True
+ if update:
if not dry_run:
log.debug(f"update {key}({existing_value}) with {value}")
setattr(item, str(key), value)
diff --git a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/AdminConstants.java b/kontor-spring/src/main/java/de/thpeetz/kontor/admin/AdminConstants.java
index a3ef2ff..9490d74 100644
--- a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/AdminConstants.java
+++ b/kontor-spring/src/main/java/de/thpeetz/kontor/admin/AdminConstants.java
@@ -49,7 +49,6 @@ public class AdminConstants {
data.addItem(new SideNavItem(MediaConstants.MEDIAACTORFILE, MediaActorFileView.class));
data.addItem(new SideNavItem(AUTHORIZATION, AssignmentView.class));
data.addItem(new SideNavItem("Data Import", ModuleDataView.class));
- data.addItem(new SideNavItem("Meta Data", MetaDataView.class));
administration.addItem(data);
return administration;
}
diff --git a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/SetupModuleAdmin.java b/kontor-spring/src/main/java/de/thpeetz/kontor/admin/SetupModuleAdmin.java
index 81d0773..47ffacf 100644
--- a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/SetupModuleAdmin.java
+++ b/kontor-spring/src/main/java/de/thpeetz/kontor/admin/SetupModuleAdmin.java
@@ -3,13 +3,10 @@ package de.thpeetz.kontor.admin;
import de.thpeetz.kontor.admin.data.Permission;
import de.thpeetz.kontor.admin.data.Profile;
import de.thpeetz.kontor.admin.data.Assignment;
-import de.thpeetz.kontor.admin.data.MetaDataTable;
import de.thpeetz.kontor.admin.repository.AssignmentRepository;
import de.thpeetz.kontor.admin.repository.ProfileRepository;
import de.thpeetz.kontor.admin.repository.MailAccountRepository;
-
import de.thpeetz.kontor.admin.services.AdminService;
-import de.thpeetz.kontor.admin.services.MetaDataService;
import de.thpeetz.kontor.mailclient.data.MailAccount;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -44,9 +41,6 @@ public class SetupModuleAdmin implements ApplicationListener tableColumns = new LinkedList<>();
-
- public String updateTableName(String value) {
- if (!this.getTableName().equals(value)) {
- this.setTableName(value);
- log.info("update tableName");
- return "updated " + this.getId() + " with " + value;
- }
- return "no changes for " + this.getId();
- }
-}
diff --git a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/repository/MetaDataColumnRepository.java b/kontor-spring/src/main/java/de/thpeetz/kontor/admin/repository/MetaDataColumnRepository.java
deleted file mode 100644
index 7f0af9a..0000000
--- a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/repository/MetaDataColumnRepository.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package de.thpeetz.kontor.admin.repository;
-
-import de.thpeetz.kontor.admin.data.MetaDataColumn;
-import de.thpeetz.kontor.admin.data.MetaDataTable;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-
-import java.util.List;
-
-public interface MetaDataColumnRepository extends JpaRepository {
-
- List findByTable(MetaDataTable table);
-
- List findByTableAndColumnName(MetaDataTable table, String column_name);
-
- @Query("select m from MetaDataColumn m " +
- "where lower(m.columnName) like lower(concat('%', :searchTerm, '%')) or lower(m.columnLabel) like lower(concat('%', :searchTerm, '%'))")
- List search(@Param("searchTerm") String searchTerm);
-}
diff --git a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/repository/MetaDataTableRepository.java b/kontor-spring/src/main/java/de/thpeetz/kontor/admin/repository/MetaDataTableRepository.java
deleted file mode 100644
index 4e31cb4..0000000
--- a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/repository/MetaDataTableRepository.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package de.thpeetz.kontor.admin.repository;
-
-import de.thpeetz.kontor.admin.data.MetaDataTable;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-public interface MetaDataTableRepository extends JpaRepository {
-
- MetaDataTable findByTableName(String tableName);
-}
diff --git a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/services/MetaDataService.java b/kontor-spring/src/main/java/de/thpeetz/kontor/admin/services/MetaDataService.java
deleted file mode 100644
index e8a8ee6..0000000
--- a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/services/MetaDataService.java
+++ /dev/null
@@ -1,245 +0,0 @@
-package de.thpeetz.kontor.admin.services;
-
-import org.springframework.stereotype.Service;
-
-import de.thpeetz.kontor.admin.data.MetaDataColumn;
-import de.thpeetz.kontor.admin.repository.MetaDataColumnRepository;
-import de.thpeetz.kontor.admin.data.MetaDataTable;
-import de.thpeetz.kontor.admin.repository.MetaDataTableRepository;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.atomic.AtomicReference;
-
-@Slf4j
-@Service
-public class MetaDataService {
-
- private final MetaDataTableRepository metaDataTableRepository;
-
- private final MetaDataColumnRepository metaDataColumnRepository;
-
- public MetaDataService(MetaDataTableRepository metaDataTableRepository, MetaDataColumnRepository metaDataColumnRepository) {
- this.metaDataTableRepository = metaDataTableRepository;
- this.metaDataColumnRepository = metaDataColumnRepository;
- }
-
- public List findAllTables() {
- return metaDataTableRepository.findAll();
- }
-
- public MetaDataTable getTable(String tableName) {
- MetaDataTable table = metaDataTableRepository.findByTableName(tableName);
- if (table == null) {
- log.info("Metadata for table {} not found, will create it", tableName);
- table = new MetaDataTable();
- table.setTableName(tableName);
- metaDataTableRepository.save(table);
- }
- return table;
- }
-
- private void deleteTable(MetaDataTable metaDataTable) {
- List columns = metaDataTable.getTableColumns();
- List columnsToDelete = new LinkedList<>();
- for (MetaDataColumn column: columns) {
- try {
- columnsToDelete.add(column);
- metaDataColumnRepository.delete(column);
- } catch (Exception e) {
- log.info("Exception {} thrown, just go on", e.getMessage());
- }
- }
- for (MetaDataColumn column: columnsToDelete) {
- metaDataTable.getTableColumns().remove(column);
- }
- try {
- metaDataTableRepository.delete(metaDataTable);
- } catch (Exception e) {
- log.info("could not delete MetaDataTable: {}", e.getMessage());
- }
- }
-
- public void getColumn(MetaDataTable table, String columnName, String columnType, Integer columnOrder, Boolean isShown, String columnLabel, Boolean showFilter, String filterLabel) {
- this.getColumn(table, columnName, columnType, columnOrder, isShown, columnLabel, showFilter, filterLabel, null);
- }
-
- public void checkColumnValues(MetaDataTable table, MetaDataColumn column, String columnName, String columnType, Integer columnOrder, Boolean isShown, String columnLabel, Boolean showFilter, String filterLabel, String refColumn) {
- log.debug("Column {} with name {} of table {} found, check Values", columnOrder, columnName, table.getTableName());
- if (!column.getColumnName().equals(columnName)) {
- log.debug("columnName has to be changed to {}", columnName);
- column.setColumnName(columnName);
- }
- if (!column.getColumnType().equals(columnType)) {
- log.debug("columnType has to be changed to {}", columnType);
- column.setColumnType(columnType);
- }
- if (isShown != null && !isShown.equals(column.getIsShown())) {
- log.debug("isShown has to be change to {}}", isShown);
- column.setIsShown(isShown);
- }
- if (columnLabel != null && !columnLabel.equals(column.getColumnLabel())) {
- log.debug("columnLabel has to be change to {}}", columnLabel);
- column.setColumnLabel(columnLabel);
- }
- if (showFilter != null &&!showFilter.equals(column.getShowFilter())) {
- log.debug("showFilter has to be change to {}}", showFilter);
- column.setShowFilter(showFilter);
- }
- if (filterLabel != null && !filterLabel.equals(column.getFilterLabel())) {
- log.debug("filterLabel has to be change to {}}", filterLabel);
- column.setFilterLabel(filterLabel);
- }
- if (refColumn != null && !refColumn.equals(column.getRefColumn())) {
- log.debug("refColumn has to be change to {}}", filterLabel);
- column.setRefColumn(refColumn);
- }
- saveMetaDataColumn(column);
- }
-
- public void getColumn(MetaDataTable table, String columnName, String columnType, Integer columnOrder, Boolean isShown, String columnLabel, Boolean showFilter, String filterLabel, String refColumn) {
- log.info("check if column {} of table {} exists", columnName, table.getTableName());
- boolean columnNameExists = table.getTableColumns().stream().anyMatch(column -> column.getColumnName().equals(columnName));
- boolean columnOrderExists = false;
- if (table.getTableColumns().size() > columnOrder-1) {
- columnOrderExists = table.getTableColumns().get(columnOrder-1) != null;
- }
- List metaDataColumns = metaDataColumnRepository.findByTableAndColumnName(table, columnName);
- log.debug("column found: name: {}, order: {}: table.columns: {}", columnNameExists, columnOrderExists, metaDataColumns);
- if (columnOrderExists) {
- MetaDataColumn column = table.getTableColumns().get(columnOrder-1);
- checkColumnValues(table, column, columnName, columnType, columnOrder, isShown, columnLabel, showFilter, filterLabel, refColumn);
- } else {
- log.info("Column {} of table {} not found, will create it", columnName, table.getTableName());
- addColumn(table, columnName, columnType, columnOrder, isShown, refColumn);
- }
- }
-
- private void addColumn(MetaDataTable table, String columnName, String columnType, Integer columnOrder, Boolean isShown, String refColumn) {
- MetaDataColumn column = new MetaDataColumn();
- column.setTable(table);
- column.setColumnName(columnName);
- column.setColumnType(columnType);
- column.setColumnOrder(columnOrder);
- column.setIsShown(isShown);
- column.setRefColumn(refColumn);
- saveMetaDataColumn(column);
- }
-
- public List findAllMetaDataColumns(String stringFilter) {
- if (stringFilter == null || stringFilter.isEmpty()) {
- log.debug("Found " + metaDataColumnRepository.count()+ " entries");
- return metaDataColumnRepository.findAll();
- } else {
- List results = metaDataColumnRepository.search(stringFilter);
- log.debug("Found " + results.size() + " entries");
- return results;
- }
- }
-
- public void deleteMetaDataColumn(MetaDataColumn metaDataColumn) {
- if (metaDataColumn == null) {
- log.warn("MetaDataColumn is null, can't delete it");
- return;
- }
- log.debug("deleteMetaDataColumn: MetaDataColumn={}", metaDataColumn);
- metaDataColumnRepository.delete(metaDataColumn);
- }
-
- public void saveMetaDataColumn(MetaDataColumn metaDataColumn) {
- if (metaDataColumn == null) {
- log.warn("MetaDataColumn is null, can't save it");
- return;
- }
- log.debug("saveMetaDataColumn: MetaDataColumn={}", metaDataColumn);
- metaDataColumnRepository.save(metaDataColumn);
- }
-
- public String importTableData(Map fields) {
- AtomicReference status = new AtomicReference<>("unknown");
- String id = fields.get("id");
- Optional optional = metaDataTableRepository.findById(id);
- if (optional.isEmpty()) {
- log.info(" not found: {} with {}", id, fields);
- status.set(id + "not found");
- MetaDataTable checkExisting = metaDataTableRepository.findByTableName(fields.get("table_name"));
- if (checkExisting != null) {
- log.info("entry already there with different id ({}), will be deleted", checkExisting.getId());
- deleteTable(checkExisting);
- }
- MetaDataTable metaDataTable = new MetaDataTable();
- metaDataTable.setId(id);
- metaDataTable.setTableName(fields.get("table_name"));
- metaDataTableRepository.save(metaDataTable);
- } else {
- optional.ifPresent( entry -> {
- log.info(" found: {}", entry.getTableName());
- String updateStatus = updateTableFields(entry, fields);
- metaDataTableRepository.save(entry);
- status.set(updateStatus);
- });
- }
- return status.get();
- }
-
- public String importColumnData(String tableName, Map fields) {
- AtomicReference status = new AtomicReference<>("unknown");
- String id = fields.get("id");
- Optional optional = metaDataColumnRepository.findById(id);
- if (optional.isEmpty()) {
- log.info(" not found: {} with {}", id, fields);
- status.set(id + "not found");
- MetaDataColumn metaDataColumn = new MetaDataColumn();
- metaDataColumn.setId(id);
- metaDataColumn.setColumnName(fields.get("column_name"));
- metaDataColumn.setColumnType(fields.get("column_type"));
- metaDataColumnRepository.save(metaDataColumn);
- } else {
- optional.ifPresent( entry -> {
- log.info(" found: {}", entry.getTableName());
- String updateStatus = updateColumnFields(entry, tableName, fields);
- metaDataColumnRepository.save(entry);
- status.set(updateStatus);
- });
- }
- return status.get();
- }
-
- private String updateColumnFields(MetaDataColumn metaDataColumn, String tableName, Map fields) {
- StringBuilder status = new StringBuilder();
- for (Map.Entry entry : fields.entrySet()) {
- String key = entry.getKey();
- String value = entry.getValue();
- switch (key) {
- case "id", "created_date", "last_modified_date", "version":
- break;
- case "column_name":
- status.append(metaDataColumn.updateColumnName(value));
- break;
- default:
- log.info("field {} is unknown for table {}", key, tableName);
- }
- }
- return status.toString();
- }
-
- private String updateTableFields(MetaDataTable metaDataTable, Map fields) {
- String status = "";
- for (Map.Entry entry : fields.entrySet()) {
- String key = entry.getKey();
- String value = entry.getValue();
- switch (key) {
- case "id", "created_date", "last_modified_date", "version":
- break;
- case "table_name":
- status += metaDataTable.updateTableName(value);
- default:
- log.info("field {} is unknown for table {}", key, MetaDataTable.class.getName());
- }
- }
- return status;
- }
-}
diff --git a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/views/MetaDataForm.java b/kontor-spring/src/main/java/de/thpeetz/kontor/admin/views/MetaDataForm.java
deleted file mode 100644
index 8735b4e..0000000
--- a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/views/MetaDataForm.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package de.thpeetz.kontor.admin.views;
-
-import com.vaadin.flow.component.ComponentEvent;
-import com.vaadin.flow.component.ComponentEventListener;
-import com.vaadin.flow.component.Key;
-import com.vaadin.flow.component.button.Button;
-import com.vaadin.flow.component.button.ButtonVariant;
-import com.vaadin.flow.component.checkbox.Checkbox;
-import com.vaadin.flow.component.combobox.ComboBox;
-import com.vaadin.flow.component.formlayout.FormLayout;
-import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
-import com.vaadin.flow.component.textfield.IntegerField;
-import com.vaadin.flow.component.textfield.TextField;
-import com.vaadin.flow.data.binder.BeanValidationBinder;
-import com.vaadin.flow.data.binder.Binder;
-import de.thpeetz.kontor.admin.data.MetaDataColumn;
-import de.thpeetz.kontor.admin.data.MetaDataTable;
-import lombok.*;
-
-import java.util.List;
-
-public class MetaDataForm extends FormLayout {
-
- ComboBox table = new ComboBox<>("Table");
- TextField columnName = new TextField("Column Name");
- IntegerField columnOrder = new IntegerField("Column Order");
- Checkbox isShown = new Checkbox("Is Shown");
- TextField columnLabel = new TextField("Column Label");
- Checkbox showFilter = new Checkbox("Show Filter");
- TextField filterLabel = new TextField("Filter Label");
- TextField refColumn = new TextField("Ref Column");
-
- Button save = new com.vaadin.flow.component.button.Button("Save");
- Button delete = new com.vaadin.flow.component.button.Button("Delete");
- Button close = new Button("Cancel");
-
- Binder binder = new BeanValidationBinder<>(MetaDataColumn.class);
-
- public MetaDataForm(List tables) {
- addClassName("metaData-form");
- binder.bindInstanceFields(this);
-
- table.setItems(tables);
- table.setItemLabelGenerator(MetaDataTable::getTableName);
- add(table, columnName, columnOrder);
- add(isShown, columnLabel);
- isShown.addClickListener(click -> columnLabel.setEnabled(isShown.getValue()));
- add(showFilter, filterLabel);
- showFilter.addClickListener(click -> filterLabel.setEnabled(showFilter.getValue()));
- add(refColumn);
- add(createButtonsLayout());
- }
-
- private HorizontalLayout createButtonsLayout() {
- save.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
- delete.addThemeVariants(ButtonVariant.LUMO_ERROR);
- close.addThemeVariants(ButtonVariant.LUMO_TERTIARY);
-
- save.addClickShortcut(Key.ENTER);
- close.addClickShortcut(Key.ESCAPE);
-
- save.addClickListener(event -> validateAndSave());
- delete.addClickListener(event -> fireEvent(new MetaDataForm.DeleteEvent(this, binder.getBean())));
- close.addClickListener(event -> fireEvent(new MetaDataForm.CloseEvent(this)));
-
- binder.addStatusChangeListener(e -> save.setEnabled(binder.isValid()));
- return new HorizontalLayout(save, delete, close);
- }
-
- private void validateAndSave() {
- if (binder.isValid()) {
- fireEvent(new MetaDataForm.SaveEvent(this, binder.getBean()));
- }
- }
-
- public void setMetaDataColumn(MetaDataColumn metaDataColumn) {
- binder.setBean(metaDataColumn);
- }
-
- @Getter
- public abstract static class MetaDataFormEvent extends ComponentEvent {
- private final MetaDataColumn metaDataColumn;
-
- protected MetaDataFormEvent(MetaDataForm source, MetaDataColumn metaDataColumn) {
- super(source, false);
- this.metaDataColumn = metaDataColumn;
- }
-
- }
-
- public static class SaveEvent extends MetaDataForm.MetaDataFormEvent {
- SaveEvent(MetaDataForm source, MetaDataColumn metaDataColumn) {
- super(source, metaDataColumn);
- }
- }
-
- public static class DeleteEvent extends MetaDataForm.MetaDataFormEvent {
- DeleteEvent(MetaDataForm source, MetaDataColumn metaDataColumn) {
- super(source, metaDataColumn);
- }
- }
-
- public static class CloseEvent extends MetaDataForm.MetaDataFormEvent {
- CloseEvent(MetaDataForm source) {
- super(source, null);
- }
- }
-
- public void addDeleteListener(ComponentEventListener listener) {
- addListener(MetaDataForm.DeleteEvent.class, listener);
- }
-
- public void addSaveListener(ComponentEventListener listener) {
- addListener(MetaDataForm.SaveEvent.class, listener);
- }
-
- public void addCloseListener(ComponentEventListener listener) {
- addListener(MetaDataForm.CloseEvent.class, listener);
- }
-}
diff --git a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/views/MetaDataView.java b/kontor-spring/src/main/java/de/thpeetz/kontor/admin/views/MetaDataView.java
deleted file mode 100644
index 148bace..0000000
--- a/kontor-spring/src/main/java/de/thpeetz/kontor/admin/views/MetaDataView.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package de.thpeetz.kontor.admin.views;
-
-import com.vaadin.flow.component.Component;
-import com.vaadin.flow.component.button.Button;
-import com.vaadin.flow.component.button.ButtonVariant;
-import com.vaadin.flow.component.grid.Grid;
-import com.vaadin.flow.component.grid.GridSortOrder;
-import com.vaadin.flow.component.icon.Icon;
-import com.vaadin.flow.component.icon.VaadinIcon;
-import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
-import com.vaadin.flow.component.orderedlayout.VerticalLayout;
-import com.vaadin.flow.component.textfield.TextField;
-import com.vaadin.flow.data.provider.SortDirection;
-import com.vaadin.flow.data.value.ValueChangeMode;
-import com.vaadin.flow.router.PageTitle;
-import com.vaadin.flow.router.Route;
-import com.vaadin.flow.spring.annotation.SpringComponent;
-import de.thpeetz.kontor.admin.AdminConstants;
-import de.thpeetz.kontor.admin.data.MetaDataColumn;
-import de.thpeetz.kontor.admin.services.MetaDataService;
-import de.thpeetz.kontor.common.views.MainLayout;
-import de.thpeetz.kontor.common.views.ColumnToggleContextMenu;
-import de.thpeetz.kontor.common.views.StatusIcon;
-import jakarta.annotation.security.RolesAllowed;
-import lombok.Getter;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.annotation.Scope;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Slf4j
-@SpringComponent
-@Scope("prototype")
-@RolesAllowed("ROLE_ADMIN")
-@Route(value = AdminConstants.METADATA_ROUTE, layout = MainLayout.class)
-@PageTitle("Meta Data | Admin | Kontor")
-public class MetaDataView extends VerticalLayout {
-
- Grid grid = new Grid<>(MetaDataColumn.class, false);
- Grid.Column idColumn = grid.addColumn(MetaDataColumn::getId)
- .setHeader("ID").setResizable(true).setSortable(true);
- Grid.Column createdColumn = grid.addColumn(MetaDataColumn::getCreatedDate)
- .setHeader("Erstellt").setResizable(true).setSortable(true);
- Grid.Column modifiedColumn = grid.addColumn(MetaDataColumn::getLastModifiedDate)
- .setHeader("GeƤndert").setResizable(true).setSortable(true);
- Grid.Column versionColumn = grid.addColumn(MetaDataColumn::getVersion)
- .setHeader("Version").setResizable(true).setSortable(true);
- Grid.Column tableColumn = grid.addColumn(MetaDataColumn::getTableName)
- .setHeader("Table").setResizable(true).setSortable(true);
- Grid.Column columnNameColumn = grid.addColumn(MetaDataColumn::getColumnName)
- .setHeader("Column Name").setResizable(true).setSortable(true);
- Grid.Column columnTypeColumn = grid.addColumn(MetaDataColumn::getColumnType)
- .setHeader("Column Type").setResizable(true).setSortable(true);
- Grid.Column columnOrderColumn = grid.addColumn(MetaDataColumn::getColumnOrder)
- .setHeader("Column Order").setResizable(true).setSortable(true);
- Grid.Column isShownColumn = grid.addComponentColumn(metaDataColumn -> StatusIcon.create(metaDataColumn.getIsShown())).
- setHeader("Anzeige?").setWidth("6rem").setSortable(true);
- Grid.Column columnLabelColumn = grid.addColumn(MetaDataColumn::getColumnLabel)
- .setHeader("Spaltenname").setResizable(true).setSortable(true);
- Grid.Column showFilterColumn = grid.addComponentColumn(metaDataColumn -> StatusIcon.create(metaDataColumn.getShowFilter())).
- setHeader("Zeige Filter").setWidth("6rem").setSortable(true);
- Grid.Column filterLabelColumn = grid.addColumn(MetaDataColumn::getFilterLabel)
- .setHeader("Filter Name").setResizable(true).setSortable(true);
- Grid.Column refColumnColumn = grid.addColumn(MetaDataColumn::getRefColumn)
- .setHeader("Ref Column Name").setResizable(true).setSortable(true);
- TextField searchField = new TextField();
- @Getter
- MetaDataForm form;
- MetaDataService service;
-
- public MetaDataView(MetaDataService service) {
- this.service = service;
- addClassName("metadata-view");
- setSizeFull();
- configureGrid();
- configureForm();
-
- add(getToolbar(), getContent());
- updateList();
- }
-
- private void configureGrid() {
- grid.addClassName("metadata-grid");
- grid.setSizeFull();
- grid.getColumns().forEach(col -> col.setAutoWidth(true));
- idColumn.setVisible(false);
- createdColumn.setVisible(false);
- modifiedColumn.setVisible(false);
- versionColumn.setVisible(false);
- grid.setMultiSort(true);
- List> sortOrder = new ArrayList<>();
- sortOrder.add(new GridSortOrder(tableColumn, SortDirection.ASCENDING));
- sortOrder.add(new GridSortOrder(columnOrderColumn, SortDirection.ASCENDING));
- grid.sort(sortOrder);
- grid.asSingleSelect().addValueChangeListener(event -> editMetaData(event.getValue()));
- }
-
- private void configureForm() {
- form = new MetaDataForm(service.findAllTables());
- form.setWidth("25em");
- form.setVisible(false);
- form.addSaveListener(this::saveMetaData);
- form.addDeleteListener(this::deleteMetaData);
- form.addCloseListener(e -> closeEditor());
- }
-
- private Component getContent() {
- HorizontalLayout content = new HorizontalLayout(grid, form);
- content.setFlexGrow(2, grid);
- content.setFlexGrow(1, form);
- content.addClassName("content");
- content.setSizeFull();
- return content;
- }
-
- private HorizontalLayout getToolbar() {
- searchField.setPlaceholder("Search");
- searchField.setClearButtonVisible(true);
- searchField.setPrefixComponent(new Icon(VaadinIcon.SEARCH));
- searchField.setValueChangeMode(ValueChangeMode.EAGER);
- searchField.addValueChangeListener(e -> updateList());
-
- Button addMetaDataButton = new Button("Add Meta Data");
- addMetaDataButton.addClickListener(click -> addMetaDataColumn());
-
- Button menuButton = new Button("Show/Hide Columns");
- menuButton.addThemeVariants(ButtonVariant.LUMO_TERTIARY);
- ColumnToggleContextMenu columnToggleContextMenu = new ColumnToggleContextMenu<>(menuButton);
- columnToggleContextMenu.addColumnToggleItem(idColumn);
- columnToggleContextMenu.addColumnToggleItem(createdColumn);
- columnToggleContextMenu.addColumnToggleItem(modifiedColumn);
- columnToggleContextMenu.addColumnToggleItem(versionColumn);
- columnToggleContextMenu.addColumnToggleItem(tableColumn);
- columnToggleContextMenu.addColumnToggleItem(columnNameColumn);
- columnToggleContextMenu.addColumnToggleItem(columnTypeColumn);
- columnToggleContextMenu.addColumnToggleItem(columnOrderColumn);
- columnToggleContextMenu.addColumnToggleItem(isShownColumn);
- columnToggleContextMenu.addColumnToggleItem(columnLabelColumn);
- columnToggleContextMenu.addColumnToggleItem(showFilterColumn);
- columnToggleContextMenu.addColumnToggleItem(filterLabelColumn);
- columnToggleContextMenu.addColumnToggleItem(refColumnColumn);
- HorizontalLayout toolbar = new HorizontalLayout(searchField, addMetaDataButton, menuButton);
- toolbar.addClassName("toolbar");
- return toolbar;
- }
-
- private void saveMetaData(MetaDataForm.SaveEvent event) {
- MetaDataColumn metaDataColumn = event.getMetaDataColumn();
- service.saveMetaDataColumn(metaDataColumn);
- updateList();
- closeEditor();
- }
-
- private void deleteMetaData(MetaDataForm.DeleteEvent event) {
- service.deleteMetaDataColumn(event.getMetaDataColumn());
- updateList();
- closeEditor();
- }
-
- public void editMetaData(MetaDataColumn metaDataColumn) {
- if (metaDataColumn == null) {
- closeEditor();
- } else {
- form.setMetaDataColumn(metaDataColumn);
- form.setVisible(true);
- addClassName("editing");
- }
- }
-
- public void closeEditor() {
- form.setMetaDataColumn(null);
- form.setVisible(false);
- removeClassName("editing");
- }
-
- private void addMetaDataColumn() {
- grid.asSingleSelect().clear();
- editMetaData(new MetaDataColumn());
- }
-
- private void updateList() {
- grid.setItems(service.findAllMetaDataColumns(searchField.getValue()));
- }
-}
diff --git a/kontor-spring/src/main/java/de/thpeetz/kontor/data/services/DataManagementService.java b/kontor-spring/src/main/java/de/thpeetz/kontor/data/services/DataManagementService.java
index 4b950ac..e9df180 100644
--- a/kontor-spring/src/main/java/de/thpeetz/kontor/data/services/DataManagementService.java
+++ b/kontor-spring/src/main/java/de/thpeetz/kontor/data/services/DataManagementService.java
@@ -1,24 +1,17 @@
package de.thpeetz.kontor.data.services;
-import de.thpeetz.kontor.admin.data.MetaDataTable;
-import de.thpeetz.kontor.admin.repository.MetaDataTableRepository;
-import de.thpeetz.kontor.admin.services.MetaDataService;
import de.thpeetz.kontor.tysc.services.SportService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
-import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
@Slf4j
@Service
public class DataManagementService {
- @Autowired
- MetaDataService metaDataService;
-
@Autowired
SportService sportService;
@@ -29,12 +22,6 @@ public class DataManagementService {
public String getEntry(String nodeName, Map fields) {
AtomicReference status = new AtomicReference<>("unknown");
switch (nodeName) {
- case "meta_data_table":
- status.set(metaDataService.importTableData(fields));
- break;
- case "meta_data_column":
- status.set(metaDataService.importColumnData(nodeName, fields));
- break;
case "sport":
status.set(sportService.importData(fields));
default: