From bb84ae88de2c87f897193f08a2bd162d049f6691 Mon Sep 17 00:00:00 2001 From: alterdekim Date: Tue, 26 Nov 2024 03:54:19 +0300 Subject: [PATCH] Slowly adding themes --- .../javabot/controller/PanelController.java | 17 +++++++++ .../javabot/entities/GameTheme.java | 24 +++++++++++++ .../repository/GameThemeRepository.java | 13 +++++++ .../javabot/service/GameThemeService.java | 14 ++++++++ .../javabot/service/GameThemeServiceImpl.java | 35 +++++++++++++++++++ src/main/resources/messages_en.properties | 3 +- src/main/resources/messages_ru.properties | 3 +- src/main/resources/templates/panel.html | 3 ++ 8 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/alterdekim/javabot/entities/GameTheme.java create mode 100644 src/main/java/com/alterdekim/javabot/repository/GameThemeRepository.java create mode 100644 src/main/java/com/alterdekim/javabot/service/GameThemeService.java create mode 100644 src/main/java/com/alterdekim/javabot/service/GameThemeServiceImpl.java diff --git a/src/main/java/com/alterdekim/javabot/controller/PanelController.java b/src/main/java/com/alterdekim/javabot/controller/PanelController.java index 884bd60..e36972f 100644 --- a/src/main/java/com/alterdekim/javabot/controller/PanelController.java +++ b/src/main/java/com/alterdekim/javabot/controller/PanelController.java @@ -32,6 +32,7 @@ public class PanelController { private final DisasterService disasterService; private final ActionScriptsServiceImpl scriptsService; private final ActionRequestServiceImpl actionRequestService; + private final GameThemeServiceImpl gameThemeService; private List dissToCards() { List bios = disasterService.getAllDisasters(); @@ -153,6 +154,19 @@ public class PanelController { return cards; } + private List themesToCards() { + List themeList = gameThemeService.getAllGameThemes(); + List cards = new ArrayList<>(); + for( GameTheme theme : themeList ) { + Card card = new Card(); + card.setId(theme.getId()); + card.setTitle(textDataValService.getTextDataValById(theme.getTextNameId()).getText()); + card.setBody(new ArrayList<>()); + cards.add(card); + } + return cards; + } + private List> toPairs(List cards) { List> l = IntStream.range(0, cards.size()) .filter(i -> i % 2 == 0 && i + 1 < cards.size()) @@ -196,6 +210,9 @@ public class PanelController { case "script_request": model.addAttribute("cards", is_mobile ? requestsToCards() : toPairs(requestsToCards()) ); break; + case "themes": + model.addAttribute("cards", is_mobile ? themesToCards() : toPairs(themesToCards())); + break; } return "panel"; } diff --git a/src/main/java/com/alterdekim/javabot/entities/GameTheme.java b/src/main/java/com/alterdekim/javabot/entities/GameTheme.java new file mode 100644 index 0000000..3462448 --- /dev/null +++ b/src/main/java/com/alterdekim/javabot/entities/GameTheme.java @@ -0,0 +1,24 @@ +package com.alterdekim.javabot.entities; + +import jakarta.persistence.*; +import lombok.*; + +@ToString +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "game_themes") +public class GameTheme { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false) + private Long textNameId; + + public GameTheme(Long textNameId) { + this.textNameId = textNameId; + } +} diff --git a/src/main/java/com/alterdekim/javabot/repository/GameThemeRepository.java b/src/main/java/com/alterdekim/javabot/repository/GameThemeRepository.java new file mode 100644 index 0000000..bb5318f --- /dev/null +++ b/src/main/java/com/alterdekim/javabot/repository/GameThemeRepository.java @@ -0,0 +1,13 @@ +package com.alterdekim.javabot.repository; + +import com.alterdekim.javabot.entities.GameTheme; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; + +public interface GameThemeRepository extends JpaRepository { + Optional findById(Long id); + + List findAll(); +} diff --git a/src/main/java/com/alterdekim/javabot/service/GameThemeService.java b/src/main/java/com/alterdekim/javabot/service/GameThemeService.java new file mode 100644 index 0000000..735399a --- /dev/null +++ b/src/main/java/com/alterdekim/javabot/service/GameThemeService.java @@ -0,0 +1,14 @@ +package com.alterdekim.javabot.service; + +import com.alterdekim.javabot.entities.GameTheme; + +import java.util.List; + +public interface GameThemeService { + List getAllGameThemes(); + GameTheme getThemeById(long themeId); + + void removeById(long themeId); + + void saveGameTheme(GameTheme gameTheme); +} diff --git a/src/main/java/com/alterdekim/javabot/service/GameThemeServiceImpl.java b/src/main/java/com/alterdekim/javabot/service/GameThemeServiceImpl.java new file mode 100644 index 0000000..e386632 --- /dev/null +++ b/src/main/java/com/alterdekim/javabot/service/GameThemeServiceImpl.java @@ -0,0 +1,35 @@ +package com.alterdekim.javabot.service; + +import com.alterdekim.javabot.entities.GameTheme; +import com.alterdekim.javabot.repository.GameThemeRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class GameThemeServiceImpl implements GameThemeService { + private final GameThemeRepository repository; + + + @Override + public List getAllGameThemes() { + return repository.findAll(); + } + + @Override + public GameTheme getThemeById(long themeId) { + return repository.findById(themeId).orElse(null); + } + + @Override + public void removeById(long themeId) { + repository.deleteById(themeId); + } + + @Override + public void saveGameTheme(GameTheme gameTheme) { + repository.save(gameTheme); + } +} diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index 128bd17..30514bd 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -69,4 +69,5 @@ scrieditde=Below you can write a script for Bunker's action card. On the left si edditaddbtn=Edit/Add edditreq=Send request scrireqq=Script requests -acceptbtnreq=Accept \ No newline at end of file +acceptbtnreq=Accept +themes=Themes \ No newline at end of file diff --git a/src/main/resources/messages_ru.properties b/src/main/resources/messages_ru.properties index 79761b5..1100c45 100644 --- a/src/main/resources/messages_ru.properties +++ b/src/main/resources/messages_ru.properties @@ -69,4 +69,5 @@ scrieditde=Ниже в вашем распоряжении редактор ск edditaddbtn=Изменить/Добавить edditreq=Отправить запрос scrireqq=Запросы на скрипты -acceptbtnreq=Принять \ No newline at end of file +acceptbtnreq=Принять +themes=Темы \ No newline at end of file diff --git a/src/main/resources/templates/panel.html b/src/main/resources/templates/panel.html index f0b6fd0..30d5fc5 100644 --- a/src/main/resources/templates/panel.html +++ b/src/main/resources/templates/panel.html @@ -47,6 +47,9 @@ +