add script for import data

This commit is contained in:
Thomas Peetz
2025-04-08 11:49:52 +02:00
parent 3d97c3360a
commit 10834df92b
14 changed files with 1024 additions and 4 deletions
@@ -8,6 +8,7 @@ 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;
@@ -43,10 +44,23 @@ public class MetaDataService {
private void deleteTable(MetaDataTable metaDataTable) {
List<MetaDataColumn> columns = metaDataTable.getTableColumns();
List<MetaDataColumn> columnsToDelete = new LinkedList<>();
for (MetaDataColumn column: columns) {
metaDataColumnRepository.delete(column);
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());
}
metaDataTableRepository.delete(metaDataTable);
}
public void getColumn(MetaDataTable table, String columnName, String columnSyncName, String columnType, String columnModifier, Integer columnOrder, Boolean isShown, String columnLabel, Boolean showFilter, String filterLabel) {
@@ -3,6 +3,7 @@ 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;
@@ -16,10 +17,10 @@ import java.util.concurrent.atomic.AtomicReference;
public class DataManagementService {
@Autowired
MetaDataTableRepository metaDataTableRepository;
MetaDataService metaDataService;
@Autowired
MetaDataService metaDataService;
SportService sportService;
public DataManagementService() {
@@ -34,6 +35,8 @@ public class DataManagementService {
case "meta_data_column":
status.set(metaDataService.importColumnData(nodeName, fields));
break;
case "sport":
status.set(sportService.importData(fields));
default:
log.debug("import for {} not implemented", nodeName);
break;
@@ -17,7 +17,9 @@ import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Getter
@Setter
@ToString
@@ -39,4 +41,13 @@ public class Sport extends AbstractEntity {
@OneToMany(fetch = FetchType.EAGER, mappedBy = "sport")
@Nullable
private List<FieldPosition> positions = new LinkedList<>();
public String updateName(String value) {
if (!this.getName().equals(value)) {
this.setName(value);
log.info("update name");
return "updated " + this.getId() + " with " + value;
}
return "no changes for " + this.getId();
}
}
@@ -1,7 +1,11 @@
package de.thpeetz.kontor.tysc.services;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
import de.thpeetz.kontor.admin.data.MetaDataTable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -144,4 +148,48 @@ public class SportService {
public void deleteRooster(Rooster rooster) {
roosterRepository.delete(rooster);
}
public String importData(Map<String, String> fields) {
AtomicReference<String> status = new AtomicReference<>("unknown");
String id = fields.get("id");
Optional<Sport> optional = sportRepository.findById(id);
if (optional.isEmpty()) {
log.info(" not found: {} with {}", id, fields);
status.set(id + "not found");
Sport checkExisting = sportRepository.findByName(fields.get("name"));
if (checkExisting != null) {
log.info("entry already there with different id ({}), will be deleted", checkExisting.getId());
deleteSport(checkExisting);
}
Sport sport = new Sport();
sport.setId(id);
sport.setName(fields.get("name"));
sportRepository.save(sport);
} else {
optional.ifPresent( entry -> {
log.info(" found: {}", entry.getName());
String updateStatus = updateSportFields(entry, fields);
sportRepository.save(entry);
status.set(updateStatus);
});
}
return status.get();
}
private String updateSportFields(Sport sport, Map<String, String> fields) {
String status = "";
for (Map.Entry<String, String> 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 += sport.updateName(value);
default:
log.info("field {} is unknown for table {}", key, sport.getClass().getName());
}
}
return status;
}
}