update models to use string type for id fields

This commit is contained in:
Thomas Peetz
2025-05-02 11:21:57 +02:00
parent 7ff2bf912d
commit c77adb0e04
31 changed files with 397 additions and 233 deletions
@@ -66,4 +66,9 @@ public class MetaDataColumn extends AbstractEntity {
}
return "no changes for " + this.getId() + "\n";
}
@Override
public String toString() {
return "MetaDataColumn{id=" + getId() + ", columnName=" + columnName + ", table=" + table.getTableName() +'}';
}
}
@@ -12,6 +12,8 @@ public interface MetaDataColumnRepository extends JpaRepository<MetaDataColumn,
List<MetaDataColumn> findByTable(MetaDataTable table);
List<MetaDataColumn> 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<MetaDataColumn> search(@Param("searchTerm") String searchTerm);
@@ -67,61 +67,73 @@ public class MetaDataService {
this.getColumn(table, columnName, columnSyncName, columnType, columnModifier, columnOrder, isShown, columnLabel, showFilter, filterLabel, null);
}
public void checkColumnValues(MetaDataTable table, MetaDataColumn column, String columnName, String columnSyncName, String columnType, String columnModifier, 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.getColumnSyncName().equals(columnSyncName)) {
log.debug("columnSyncName has to be changed to {}", columnSyncName);
column.setColumnSyncName(columnSyncName);
}
if (!column.getColumnType().equals(columnType)) {
log.debug("columnType has to be changed to {}", columnType);
column.setColumnType(columnType);
}
if (columnModifier != null && !columnModifier.equals(column.getColumnModifier())) {
log.debug("columnModifier has to be changed to {}", columnModifier);
column.setColumnModifier(columnModifier);
}
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 columnSyncName, String columnType, String columnModifier, Integer columnOrder, Boolean isShown, String columnLabel, Boolean showFilter, String filterLabel, String refColumn) {
if (table.getTableColumns().stream().anyMatch(column -> column.getColumnName().equals(columnName))) {
log.debug("Column {} with name {} of table {} found, check Values", columnOrder, columnName, table.getTableName());
MetaDataColumn column = table.getTableColumns().get(columnOrder.intValue()-1);
if (!column.getColumnName().equals(columnName)) {
log.debug("columnName has to be changed to {}", columnName);
column.setColumnName(columnName);
}
if (!column.getColumnSyncName().equals(columnSyncName)) {
log.debug("columnSyncName has to be changed to {}", columnSyncName);
column.setColumnSyncName(columnSyncName);
}
if (!column.getColumnType().equals(columnType)) {
log.debug("columnType has to be changed to {}", columnType);
column.setColumnType(columnType);
}
if (columnModifier != null && !columnModifier.equals(column.getColumnModifier())) {
log.debug("columnModifier has to be changed to {}", columnModifier);
column.setColumnModifier(columnModifier);
}
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);
}
metaDataColumnRepository.save(column);
log.info("check if column {} of table {} exists", columnName, table.getTableName());
boolean columnNameExists = table.getTableColumns().stream().anyMatch(column -> column.getColumnName().equals(columnName));
boolean columnOrderExists = table.getTableColumns().get(columnOrder-1) != null;
List<MetaDataColumn> 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, columnSyncName, columnType, columnModifier, columnOrder, isShown, columnLabel, showFilter, filterLabel, refColumn);
} else {
log.info("Column {} of table {} not found, will create it", columnName, table.getTableName());
MetaDataColumn column = new MetaDataColumn();
column.setTable(table);
column.setColumnName(columnName);
column.setColumnSyncName(columnSyncName);
column.setColumnType(columnType);
column.setColumnModifier(columnModifier);
column.setColumnOrder(columnOrder);
column.setIsShown(Boolean.FALSE);
metaDataColumnRepository.save(column);
//addColumn(table,columnName,columnSyncName,columnType,columnModifier,columnOrder,isShown);
}
}
private void addColumn(MetaDataTable table, String columnName, String columnSyncName, String columnType, String columnModifier, Integer columnOrder, Boolean isShown) {
MetaDataColumn column = new MetaDataColumn();
column.setTable(table);
column.setColumnName(columnName);
column.setColumnSyncName(columnSyncName);
column.setColumnType(columnType);
column.setColumnModifier(columnModifier);
column.setColumnOrder(columnOrder);
column.setIsShown(isShown);
saveMetaDataColumn(column);
}
public List<MetaDataColumn> findAllMetaDataColumns(String stringFilter) {
if (stringFilter == null || stringFilter.isEmpty()) {
@@ -118,7 +118,7 @@ public class IssueView extends VerticalLayout {
menuButton.addThemeVariants(ButtonVariant.LUMO_TERTIARY);
ColumnToggleContextMenu<Issue> columnToggleContextMenu = new ColumnToggleContextMenu<>(menuButton);
columnToggleContextMenu.addColumnToggleItem(idColumn);
columnToggleContextMenu.addColumnToggleItem(createdColumn);
columnToggleContextMenu.addColumnToggleItem(createdColumn);
columnToggleContextMenu.addColumnToggleItem(modifiedColumn);
columnToggleContextMenu.addColumnToggleItem(versionColumn);
columnToggleContextMenu.addColumnToggleItem(titleColumn);
@@ -38,4 +38,8 @@ public class CardSet extends AbstractEntity {
private boolean parallelSet = false;
private boolean insertSet = false;
public String getVendorName() {
return vendor.getName();
}
}
@@ -21,7 +21,6 @@ import lombok.ToString;
*/
@Getter
@Setter
@ToString
@EqualsAndHashCode(callSuper=false)
@Entity
@Table(indexes = {@Index(columnList = "name")},
@@ -35,4 +34,9 @@ public class Vendor extends AbstractEntity {
@OneToMany(fetch = FetchType.EAGER, mappedBy = "vendor")
@Nullable
private List<CardSet> cardSets;
@Override
public String toString() {
return "Vendor{id=" + this.getId() + ", name=" + name + '}';
}
}
@@ -1,9 +1,12 @@
package de.thpeetz.kontor.tysc.views;
import com.vaadin.flow.component.button.*;
import de.thpeetz.kontor.comics.data.*;
import de.thpeetz.kontor.common.views.*;
import lombok.*;
import org.springframework.context.annotation.Scope;
import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
@@ -13,12 +16,13 @@ import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.spring.annotation.SpringComponent;
import de.thpeetz.kontor.common.views.MainLayout;
import de.thpeetz.kontor.tysc.TyscConstants;
import de.thpeetz.kontor.tysc.data.CardSet;
import de.thpeetz.kontor.tysc.services.CardService;
import jakarta.annotation.security.PermitAll;
import java.util.*;
@SpringComponent
@Scope("prototype")
@PermitAll
@@ -26,8 +30,26 @@ import jakarta.annotation.security.PermitAll;
@PageTitle("CardSet | Tysc | Kontor")
public class CardSetView extends VerticalLayout {
Grid<CardSet> grid = new Grid<>(CardSet.class);
@Getter
Grid<CardSet> grid = new Grid<>(CardSet.class, false);
Grid.Column<CardSet> idColumn = grid.addColumn(CardSet::getId)
.setHeader("ID").setResizable(true).setSortable(true);
Grid.Column<CardSet> createdColumn = grid.addColumn(CardSet::getCreatedDate)
.setHeader("Erstellt").setResizable(true).setSortable(true);
Grid.Column<CardSet> modifiedColumn = grid.addColumn(CardSet::getLastModifiedDate)
.setHeader("Geändert").setResizable(true).setSortable(true);
Grid.Column<CardSet> versionColumn = grid.addColumn(CardSet::getVersion)
.setHeader("Version").setResizable(true).setSortable(true);
Grid.Column<CardSet> nameColumn = grid.addColumn(CardSet::getName)
.setHeader("Comic").setResizable(true).setSortable(true);
Grid.Column<CardSet> vendorNameColumn = grid.addColumn(CardSet::getVendorName)
.setHeader("Hersteller").setResizable(true).setSortable(true);
Grid.Column<CardSet> parallelSetColumn = grid.addComponentColumn(parallelSet -> StatusIcon.create(parallelSet.isParallelSet()))
.setHeader("Parallelset?").setWidth("6rem").setSortable(true);
Grid.Column<CardSet> insertSetColumn = grid.addComponentColumn(insertSet -> StatusIcon.create(insertSet.isInsertSet()))
.setHeader("Parallelset?").setWidth("6rem").setSortable(true);
TextField filterText = new TextField();
@Getter
CardSetForm form;
CardService service;
@@ -42,22 +64,18 @@ public class CardSetView extends VerticalLayout {
updateList();
}
public Grid<CardSet> getGrid() {
return grid;
}
private void configureGrid() {
grid.addClassName("cardSet-grid");
grid.setSizeFull();
grid.setColumns("name", "vendor.name", "parallelSet", "insertSet");
//grid.setColumns("name", "vendor.name", "parallelSet", "insertSet");
grid.getColumns().forEach(col -> col.setAutoWidth(true));
idColumn.setVisible(false);
createdColumn.setVisible(false);
modifiedColumn.setVisible(false);
versionColumn.setVisible(false);
grid.asSingleSelect().addValueChangeListener(event -> editCardSet(event.getValue()));
}
public CardSetForm getForm() {
return form;
}
private void configureForm() {
form = new CardSetForm();
form.setWidth("25em");
@@ -67,18 +85,6 @@ public class CardSetView extends VerticalLayout {
form.addCloseListener(e -> closeEditor());
}
private void saveCardSet(CardSetForm.SaveEvent event) {
service.saveCardSet(event.getCardSet());
updateList();
closeEditor();
}
private void deleteCardSet(CardSetForm.DeleteEvent event) {
service.deleteCardSet(event.getCardSet());
updateList();
closeEditor();
}
private Component getContent() {
HorizontalLayout content = new HorizontalLayout(grid, form);
content.setFlexGrow(2, grid);
@@ -97,11 +103,34 @@ public class CardSetView extends VerticalLayout {
Button addCardSetButton = new Button("Add cardSet");
addCardSetButton.addClickListener(click -> addCardSet());
HorizontalLayout toolbar = new HorizontalLayout(filterText, addCardSetButton);
Button menuButton = new Button("Show/Hide Columns");
menuButton.addThemeVariants(ButtonVariant.LUMO_TERTIARY);
ColumnToggleContextMenu<CardSet> columnToggleContextMenu = new ColumnToggleContextMenu<>(menuButton);
columnToggleContextMenu.addColumnToggleItem(idColumn);
columnToggleContextMenu.addColumnToggleItem(createdColumn);
columnToggleContextMenu.addColumnToggleItem(modifiedColumn);
columnToggleContextMenu.addColumnToggleItem(versionColumn);
columnToggleContextMenu.addColumnToggleItem(nameColumn);
columnToggleContextMenu.addColumnToggleItem(vendorNameColumn);
columnToggleContextMenu.addColumnToggleItem(parallelSetColumn);
columnToggleContextMenu.addColumnToggleItem(insertSetColumn);
HorizontalLayout toolbar = new HorizontalLayout(filterText, addCardSetButton, menuButton);
toolbar.addClassName("toolbar");
return toolbar;
}
private void saveCardSet(CardSetForm.SaveEvent event) {
service.saveCardSet(event.getCardSet());
updateList();
closeEditor();
}
private void deleteCardSet(CardSetForm.DeleteEvent event) {
service.deleteCardSet(event.getCardSet());
updateList();
closeEditor();
}
public void editCardSet(CardSet cardSet) {
if (cardSet == null) {
closeEditor();
@@ -51,7 +51,6 @@ public class CardView extends VerticalLayout {
.setHeader("Inserts").setWidth("6rem").setSortable(true);
Grid.Column<Card> parallelSetColumn = grid.addComponentColumn(card -> StatusIcon.create(card.getCardSet().isParallelSet()))
.setHeader("Parallels").setWidth("6rem").setSortable(true);
Grid.Column<Card> playerColumn = grid.addColumn(Card::getPlayerName).setHeader("Spieler").setResizable(true).setSortable(true);
TextField filterText = new TextField();
@Getter
@@ -128,9 +127,10 @@ public class CardView extends VerticalLayout {
columnToggleContextMenu.addColumnToggleItem(yearColumn);
columnToggleContextMenu.addColumnToggleItem(vendorColumn);
columnToggleContextMenu.addColumnToggleItem(cardSetColumn);
columnToggleContextMenu.addColumnToggleItem(insertSetColumn);
columnToggleContextMenu.addColumnToggleItem(parallelSetColumn);
columnToggleContextMenu.addColumnToggleItem(playerColumn);
HorizontalLayout toolbar = new HorizontalLayout(filterText, addCardButton, menuButton);
toolbar.addClassName("toolbar");
return toolbar;
}