From 3d97c3360acafa78b8c62d948b9778dcc9df245a Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Mon, 7 Apr 2025 22:26:33 +0200 Subject: [PATCH] add MetaDataColumn import --- .../kontor/admin/data/MetaDataColumn.java | 20 +++++++ .../kontor/admin/data/MetaDataTable.java | 4 +- .../admin/services/MetaDataService.java | 59 ++++++++++++++++--- .../data/services/DataManagementService.java | 5 +- 4 files changed, 79 insertions(+), 9 deletions(-) diff --git a/springboot/src/main/java/de/thpeetz/kontor/admin/data/MetaDataColumn.java b/springboot/src/main/java/de/thpeetz/kontor/admin/data/MetaDataColumn.java index 29ab0d9..cb4baea 100644 --- a/springboot/src/main/java/de/thpeetz/kontor/admin/data/MetaDataColumn.java +++ b/springboot/src/main/java/de/thpeetz/kontor/admin/data/MetaDataColumn.java @@ -6,7 +6,9 @@ import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +@Slf4j @Entity @Getter @Setter @@ -46,4 +48,22 @@ public class MetaDataColumn extends AbstractEntity { public String getTableName() { return table.getTableName(); } + + public String updateColumnName(String value) { + if (!this.getColumnName().equals(value)) { + this.setColumnName(value); + log.info("update columnName"); + return "updated " + this.getId() + " with " + value + "\n"; + } + return "no changes for " + this.getId() + "\n"; + } + + public String updateColumnSyncName(String value) { + if (!this.getColumnSyncName().equals(value)) { + this.setColumnSyncName(value); + log.info("update columnSyncName"); + return "updated " + this.getId() + " with " + value + "\n"; + } + return "no changes for " + this.getId() + "\n"; + } } diff --git a/springboot/src/main/java/de/thpeetz/kontor/admin/data/MetaDataTable.java b/springboot/src/main/java/de/thpeetz/kontor/admin/data/MetaDataTable.java index 0c8f267..5fceace 100644 --- a/springboot/src/main/java/de/thpeetz/kontor/admin/data/MetaDataTable.java +++ b/springboot/src/main/java/de/thpeetz/kontor/admin/data/MetaDataTable.java @@ -29,10 +29,12 @@ public class MetaDataTable extends AbstractEntity { @OneToMany(fetch = FetchType.EAGER, mappedBy = "table") private List tableColumns = new LinkedList<>(); - public void updateTableName(String value) { + 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/springboot/src/main/java/de/thpeetz/kontor/admin/services/MetaDataService.java b/springboot/src/main/java/de/thpeetz/kontor/admin/services/MetaDataService.java index dcc97d6..edc173e 100644 --- a/springboot/src/main/java/de/thpeetz/kontor/admin/services/MetaDataService.java +++ b/springboot/src/main/java/de/thpeetz/kontor/admin/services/MetaDataService.java @@ -8,7 +8,6 @@ import de.thpeetz.kontor.admin.data.MetaDataTable; import de.thpeetz.kontor.admin.repository.MetaDataTableRepository; import lombok.extern.slf4j.Slf4j; -import java.sql.Date; import java.util.List; import java.util.Map; import java.util.Optional; @@ -139,7 +138,7 @@ public class MetaDataService { metaDataColumnRepository.save(metaDataColumn); } - public String importData(Map fields) { + public String importTableData(Map fields) { AtomicReference status = new AtomicReference<>("unknown"); String id = fields.get("id"); Optional optional = metaDataTableRepository.findById(id); @@ -158,15 +157,61 @@ public class MetaDataService { } else { optional.ifPresent( entry -> { log.info(" found: {}", entry.getTableName()); - updateFields(entry, fields); + String updateStatus = updateTableFields(entry, fields); metaDataTableRepository.save(entry); - status.set("found"); + status.set(updateStatus); }); } return status.get(); } - private void updateFields(MetaDataTable metaDataTable, Map fields) { + 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.setColumnSyncName(fields.get("column_sync_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; + case "column_sync_name": + status.append(metaDataColumn.updateColumnSyncName(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(); @@ -174,11 +219,11 @@ public class MetaDataService { case "id", "created_date", "last_modified_date", "version": break; case "table_name": - metaDataTable.updateTableName(value); - break; + status += metaDataTable.updateTableName(value); default: log.info("field {} is unknown for table {}", key, MetaDataTable.class.getName()); } } + return status; } } diff --git a/springboot/src/main/java/de/thpeetz/kontor/data/services/DataManagementService.java b/springboot/src/main/java/de/thpeetz/kontor/data/services/DataManagementService.java index 27389d3..113d750 100644 --- a/springboot/src/main/java/de/thpeetz/kontor/data/services/DataManagementService.java +++ b/springboot/src/main/java/de/thpeetz/kontor/data/services/DataManagementService.java @@ -29,7 +29,10 @@ public class DataManagementService { AtomicReference status = new AtomicReference<>("unknown"); switch (nodeName) { case "meta_data_table": - //status.set(metaDataService.importData(fields)); + status.set(metaDataService.importTableData(fields)); + break; + case "meta_data_column": + status.set(metaDataService.importColumnData(nodeName, fields)); break; default: log.debug("import for {} not implemented", nodeName);