From 5b618916b1cc66ec23a05422a3cafa584a2bdecd Mon Sep 17 00:00:00 2001 From: bryce Date: Mon, 28 Oct 2024 11:53:08 +1300 Subject: [PATCH] set various files including 'Settings Window' and light & dark themes in CSS, rename BrickLogClient : BrickLogClientApplication --- .vscode/launch.json | 15 ++- .vscode/settings.json | 3 + BrickLog-Client/pom.xml | 59 ++++++++++ .../bricklog/BrickLogClientApplication.java | 54 ++++++++++ .../SettingsController.java} | 0 .../example/bricklog/view/SettingsWindow.java | 101 ++++++++++++++++++ .../java/css/config/application.properties | 0 .../src/main/java/css/dark-theme.css | 0 .../src/main/java/css/light-theme.css | 0 .../target/bricklog-client-0.1-SNAPSHOT.jar | Bin 0 -> 5818 bytes .../bricklog/BrickLogClientApplication.class | Bin 0 -> 2842 bytes .../bricklog/view/SettingsWindow.class | Bin 0 -> 3548 bytes .../classes/css/config/application.properties | 0 .../target/classes/css/dark-theme.css | 0 .../target/classes/css/light-theme.css | 0 .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 2 + .../compile/default-compile/inputFiles.lst | 3 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 1 + .../example/bricklog/BrickLogApplication.java | 15 +++ .../controller/LegoBuildController.java | 63 +++++++++++ .../com/example/bricklog/model/LegoBuild.java | 9 ++ .../bricklog/BrickLogApplication.class | Bin 1035 -> 2470 bytes .../controller/LegoBuildController.class | Bin 0 -> 3949 bytes .../example/bricklog/model/LegoBuild.class | Bin 0 -> 2004 bytes .../repository/LegoBuildRepository.class | Bin 0 -> 901 bytes .../classes/resources/application.properties | 9 ++ 28 files changed, 328 insertions(+), 9 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 BrickLog-Client/pom.xml create mode 100644 BrickLog-Client/src/main/java/com/example/bricklog/BrickLogClientApplication.java rename BrickLog-Client/src/main/java/com/example/bricklog/{BrickLogClient.java => controller/SettingsController.java} (100%) create mode 100644 BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsWindow.java create mode 100644 BrickLog-Client/src/main/java/css/config/application.properties create mode 100644 BrickLog-Client/src/main/java/css/dark-theme.css create mode 100644 BrickLog-Client/src/main/java/css/light-theme.css create mode 100644 BrickLog-Client/target/bricklog-client-0.1-SNAPSHOT.jar create mode 100644 BrickLog-Client/target/classes/com/example/bricklog/BrickLogClientApplication.class create mode 100644 BrickLog-Client/target/classes/com/example/bricklog/view/SettingsWindow.class create mode 100644 BrickLog-Client/target/classes/css/config/application.properties create mode 100644 BrickLog-Client/target/classes/css/dark-theme.css create mode 100644 BrickLog-Client/target/classes/css/light-theme.css create mode 100644 BrickLog-Client/target/maven-archiver/pom.properties create mode 100644 BrickLog-Client/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 BrickLog-Client/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 BrickLog-Client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 BrickLog-Client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 BrickLog-Server/src/main/java/com/example/bricklog/controller/LegoBuildController.java create mode 100644 BrickLog-Server/target/classes/com/example/bricklog/controller/LegoBuildController.class create mode 100644 BrickLog-Server/target/classes/com/example/bricklog/model/LegoBuild.class create mode 100644 BrickLog-Server/target/classes/com/example/bricklog/repository/LegoBuildRepository.class create mode 100644 BrickLog-Server/target/classes/resources/application.properties diff --git a/.vscode/launch.json b/.vscode/launch.json index 4aa77b4..6f48257 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,16 +1,13 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { - "type": "jdk", + "type": "java", "request": "launch", - "name": "Launch Java App", - "mainClass": "com.example.bricklog.Main", // Replace with your main class path - "vmArgs": "--module-path C:/javafx-sdk-21.0.5/lib --add-modules javafx.controls,javafx.fxml" + "name": "Launch BrickLog Client", + "mainClass": "com.example.bricklog.BrickLogClient", + "projectName": "bricklog-client", + "vmArgs": "--module-path C:/javafx-sdk-21.0.5 --add-modules javafx.controls,javafx.fxml" } ] -} \ No newline at end of file +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7b016a8 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.compile.nullAnalysis.mode": "automatic" +} \ No newline at end of file diff --git a/BrickLog-Client/pom.xml b/BrickLog-Client/pom.xml new file mode 100644 index 0000000..cded788 --- /dev/null +++ b/BrickLog-Client/pom.xml @@ -0,0 +1,59 @@ + + 4.0.0 + + com.example + bricklog-client + 0.1-SNAPSHOT + jar + + + 21 + 23.0.1 + + + + + + org.openjfx + javafx-controls + ${javafx.version} + + + org.openjfx + javafx-fxml + ${javafx.version} + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${java.version} + ${java.version} + + + + org.openjfx + javafx-maven-plugin + 0.0.5 + + + + run + + + + + com.example.bricklog.BrickLogClientApplication + + + + + diff --git a/BrickLog-Client/src/main/java/com/example/bricklog/BrickLogClientApplication.java b/BrickLog-Client/src/main/java/com/example/bricklog/BrickLogClientApplication.java new file mode 100644 index 0000000..dad934f --- /dev/null +++ b/BrickLog-Client/src/main/java/com/example/bricklog/BrickLogClientApplication.java @@ -0,0 +1,54 @@ +package com.example.bricklog; + +import javafx.application.Application; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +public class BrickLogClientApplication extends Application { + + @Override + public void start(Stage primaryStage) { + primaryStage.setTitle("Brick Log"); + + // Create layout + VBox layout = new VBox(10); // Vertical box with spacing of 10 pixels + + // Search Box + TextField searchBox = new TextField(); + searchBox.setPromptText("Search for builds..."); + + // Add Button + Button addButton = new Button("+"); + addButton.setStyle("-fx-background-color: lightblue; -fx-font-size: 18px; -fx-padding: 10px; -fx-font-weight: bold;"); + addButton.setPrefSize(50, 50); + + // Animation Effect on Click + addButton.setOnMouseClicked(e -> { + addButton.setScaleX(1.2); + addButton.setScaleY(1.2); + // You may want to add logic for adding a new build here + // For example, opening a new window to add a build + }); + + // Reset size after animation + addButton.setOnMouseReleased(e -> { + addButton.setScaleX(1.0); + addButton.setScaleY(1.0); + }); + + // Add components to layout + layout.getChildren().addAll(searchBox, addButton); + + // Create a scene and set it to the stage + Scene scene = new Scene(layout, 400, 300); // Set the width and height as per your need + primaryStage.setScene(scene); + primaryStage.show(); + } + + public static void main(String[] args) { + launch(args); + } +} diff --git a/BrickLog-Client/src/main/java/com/example/bricklog/BrickLogClient.java b/BrickLog-Client/src/main/java/com/example/bricklog/controller/SettingsController.java similarity index 100% rename from BrickLog-Client/src/main/java/com/example/bricklog/BrickLogClient.java rename to BrickLog-Client/src/main/java/com/example/bricklog/controller/SettingsController.java diff --git a/BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsWindow.java b/BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsWindow.java new file mode 100644 index 0000000..3ea967b --- /dev/null +++ b/BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsWindow.java @@ -0,0 +1,101 @@ +package com.example.bricklog.view; + +import javafx.application.Application; +import javafx.geometry.Insets; +import javafx.scene.Scene; +import javafx.scene.control.Label; +import javafx.scene.control.PasswordField; +import javafx.scene.control.RadioButton; +import javafx.scene.control.Slider; +import javafx.scene.control.Tab; +import javafx.scene.control.TabPane; +import javafx.scene.control.TextField; +import javafx.scene.control.ToggleGroup; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +public class SettingsWindow extends Application { + + @Override + public void start(Stage primaryStage) { + primaryStage.setTitle("Settings"); + + // Create a TabPane for organizing settings + TabPane tabPane = new TabPane(); + + // Tab 1: Display Settings + Tab displayTab = new Tab("Display Settings"); + displayTab.setContent(createDisplaySettingsContent()); + displayTab.setClosable(false); + + // Tab 2: Server Settings + Tab serverTab = new Tab("Server Settings"); + serverTab.setContent(createServerSettingsContent()); + serverTab.setClosable(false); + + tabPane.getTabs().addAll(displayTab, serverTab); + + // Set up the scene + VBox vbox = new VBox(tabPane); + Scene scene = new Scene(vbox, 400, 300); + primaryStage.setScene(scene); + primaryStage.show(); + } + + private GridPane createDisplaySettingsContent() { + GridPane grid = new GridPane(); + grid.setPadding(new Insets(10)); + grid.setVgap(10); + grid.setHgap(10); + + // Font Size Adjuster + Label fontSizeLabel = new Label("Font Size:"); + Slider fontSizeSlider = new Slider(10, 30, 14); + fontSizeSlider.setShowTickLabels(true); + fontSizeSlider.setShowTickMarks(true); + + // Dark/Light Mode Toggle + Label themeLabel = new Label("Theme:"); + ToggleGroup themeGroup = new ToggleGroup(); + RadioButton lightMode = new RadioButton("Light"); + RadioButton darkMode = new RadioButton("Dark"); + lightMode.setToggleGroup(themeGroup); + darkMode.setToggleGroup(themeGroup); + lightMode.setSelected(true); + + grid.add(fontSizeLabel, 0, 0); + grid.add(fontSizeSlider, 1, 0); + grid.add(themeLabel, 0, 1); + grid.add(lightMode, 1, 1); + grid.add(darkMode, 2, 1); + + return grid; + } + + private GridPane createServerSettingsContent() { + GridPane grid = new GridPane(); + grid.setPadding(new Insets(10)); + grid.setVgap(10); + grid.setHgap(10); + + // Server IP + Label ipLabel = new Label("Server IP:"); + TextField ipField = new TextField(); + + // Authentication Token + Label authLabel = new Label("Auth Token:"); + PasswordField authField = new PasswordField(); + + grid.add(ipLabel, 0, 0); + grid.add(ipField, 1, 0); + grid.add(authLabel, 0, 1); + grid.add(authField, 1, 1); + + return grid; + } + + public static void main(String[] args) { + launch(args); + } +} diff --git a/BrickLog-Client/src/main/java/css/config/application.properties b/BrickLog-Client/src/main/java/css/config/application.properties new file mode 100644 index 0000000..e69de29 diff --git a/BrickLog-Client/src/main/java/css/dark-theme.css b/BrickLog-Client/src/main/java/css/dark-theme.css new file mode 100644 index 0000000..e69de29 diff --git a/BrickLog-Client/src/main/java/css/light-theme.css b/BrickLog-Client/src/main/java/css/light-theme.css new file mode 100644 index 0000000..e69de29 diff --git a/BrickLog-Client/target/bricklog-client-0.1-SNAPSHOT.jar b/BrickLog-Client/target/bricklog-client-0.1-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..71c40904f33ef9b70bb3c424c5f60f35637b0bea GIT binary patch literal 5818 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 SnH3r4Gll~I3}MUwfd2welyznR literal 0 HcmV?d00001 diff --git a/BrickLog-Client/target/classes/com/example/bricklog/BrickLogClientApplication.class b/BrickLog-Client/target/classes/com/example/bricklog/BrickLogClientApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..9c5fc9824142f332f50c0fd78d0363502498fb97 GIT binary patch literal 2842 zcmb7GXVJ?~kD-~YP*D}ZVI;6ocjOfiaa zUXhC>jmNX5s;p{8K0YHhDI-6tsa&_GOC?QJWLq_KA3O|$H{~^Xr4pAL@_3UDgZHGW ztM+Mz_Q>cmgJ;&raX;G8C7}aehMttF^Z9Zy%grS@t8s=v%1~r&SvFPiy(aY71=V7h zNc}&INrn!~mQ9;sPb5{tN`gF(r^T8aUG795Lzfd}n8Ng97k2v)BpeT`OX$ZQhE9vy zOR6ov?smP#HCfM-OHckTa!8Dgmr4U{*%y71>YB?(wi;3fd5)KKR zI|%2ZX%tJgu=XLs@K_6|y7QT`Z5w(g#u(VRA0s#{Q0?hNjNwLfr4r4`%4*&;%6cxU z7@A=w!kU^d*jcU2lVPE-LNKG2dYdQ0lgCRHS6GsBIUP^P^FSc(@J^C88szjpR$9}?!VK!j0#rZtVBKXT3C#4Y26>`l5lIeOKH z=bPHVp)xI2@6@`R9q*L+o3ry{5tl{HTw&O|MUh*N=rLY`GQ0uy1?yT7ik7BkpU)*Ay59QWMZP08G2_7 z!?tWwF3oYfVB{=6-o)EJyv1-pXt;%|>TAX-kEa|mNKsyq727Zg?>o3h%~ouP82)gH zYO!>kyR*O=P8r5(xs-IGa@A^tH%V$&x`s>ZCEl$5-w)j@|Jl}^4J~+QWlc+~Hc$3= zaksgTnuZhQv={G*n)*<}%P>jx17hugGTEjQdhv11@N)^TIfkE+jC$~*u5)u%lP!x| zK72!i>!BQM$D|M6)!uF`LA0n+#k;g)KOt^+hD!(S=zj%Tee^v}Pe#v&Jj9EXeUXtA#5A;?M*u+34h`k$ld~Op%nGNipj|L7@ zF}#V9Oki{a;|Wj56Npw34|#%kl76c=8Y0F%e*e)@0~XFGnug-m-iogtm{ z&v>>Cmp8GPIUK~LAeJ_;oah)2bySfVui}LU`UGJF{dv(xKS6}Bo8IFC7^B@J_TnV= z;Q|g~3FBBr46hIkcQHYAJ?TVz+Ks9fF~x_MAXChJC?gAnI0~VN95_)rhU-{C9v<@2 zjRI66w+lDPuS@U|db$Mv1g!zlPfmcNWOl5DWCJCj*Dp$|=3tsG5xPBNL0DCk-AAS2 zYNwOfLCVDt#eAU2T@PV;6^z_b!PVTIs=4bP>k-aqdC1iv3SoqjA8B&c?Ybi4*9l7- k-oPDt_S5cNlD&_Q@QJhg6kp&=d_`xXN500l_#UCZ0rDi=IRF3v literal 0 HcmV?d00001 diff --git a/BrickLog-Client/target/classes/com/example/bricklog/view/SettingsWindow.class b/BrickLog-Client/target/classes/com/example/bricklog/view/SettingsWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..56ac58831dd885dd36b4d2c3edcd320d92097ae9 GIT binary patch literal 3548 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 literal 0 HcmV?d00001 diff --git a/BrickLog-Client/target/classes/css/config/application.properties b/BrickLog-Client/target/classes/css/config/application.properties new file mode 100644 index 0000000..e69de29 diff --git a/BrickLog-Client/target/classes/css/dark-theme.css b/BrickLog-Client/target/classes/css/dark-theme.css new file mode 100644 index 0000000..e69de29 diff --git a/BrickLog-Client/target/classes/css/light-theme.css b/BrickLog-Client/target/classes/css/light-theme.css new file mode 100644 index 0000000..e69de29 diff --git a/BrickLog-Client/target/maven-archiver/pom.properties b/BrickLog-Client/target/maven-archiver/pom.properties new file mode 100644 index 0000000..3fa1b91 --- /dev/null +++ b/BrickLog-Client/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=bricklog-client +groupId=com.example +version=0.1-SNAPSHOT diff --git a/BrickLog-Client/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/BrickLog-Client/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..bfe2cb7 --- /dev/null +++ b/BrickLog-Client/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,2 @@ +com\example\bricklog\BrickLogClientApplication.class +com\example\bricklog\view\SettingsWindow.class diff --git a/BrickLog-Client/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/BrickLog-Client/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..9d2b4dc --- /dev/null +++ b/BrickLog-Client/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,3 @@ +C:\Users\bryce\Documents\Git\BrickLog\BrickLog-Client\src\main\java\com\example\bricklog\BrickLogClientApplication.java +C:\Users\bryce\Documents\Git\BrickLog\BrickLog-Client\src\main\java\com\example\bricklog\controller\SettingsController.java +C:\Users\bryce\Documents\Git\BrickLog\BrickLog-Client\src\main\java\com\example\bricklog\view\SettingsWindow.java diff --git a/BrickLog-Client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/BrickLog-Client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/BrickLog-Client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/BrickLog-Client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..f723d7e --- /dev/null +++ b/BrickLog-Client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1 @@ +C:\Users\bryce\Documents\Git\BrickLog\BrickLog-Client\src\test\java\com\example\bricklog\BrickLogClient.java diff --git a/BrickLog-Server/src/main/java/com/example/bricklog/BrickLogApplication.java b/BrickLog-Server/src/main/java/com/example/bricklog/BrickLogApplication.java index 2c8a9ee..e4f3ca8 100644 --- a/BrickLog-Server/src/main/java/com/example/bricklog/BrickLogApplication.java +++ b/BrickLog-Server/src/main/java/com/example/bricklog/BrickLogApplication.java @@ -1,9 +1,14 @@ package com.example.bricklog; +import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import com.example.bricklog.model.LegoBuild; +import com.example.bricklog.repository.LegoBuildRepository; + @SpringBootApplication @EnableJpaRepositories(basePackages = "com.example.bricklog.repository") // Adjust if needed public class BrickLogApplication { @@ -12,4 +17,14 @@ public class BrickLogApplication { SpringApplication.run(BrickLogApplication.class, args); System.out.println("BrickLog Server is running..."); } + + // Example CommandLineRunner to load initial data into the database + @Bean + public CommandLineRunner initDatabase(LegoBuildRepository repository) { + return args -> { + repository.save(new LegoBuild("Castle", "John Doe", true, "A magnificent medieval castle")); + repository.save(new LegoBuild("Spaceship", "Jane Smith", false, "A futuristic spacecraft model")); + System.out.println("Database initialized with sample data."); + }; + } } diff --git a/BrickLog-Server/src/main/java/com/example/bricklog/controller/LegoBuildController.java b/BrickLog-Server/src/main/java/com/example/bricklog/controller/LegoBuildController.java new file mode 100644 index 0000000..48f555a --- /dev/null +++ b/BrickLog-Server/src/main/java/com/example/bricklog/controller/LegoBuildController.java @@ -0,0 +1,63 @@ +package com.example.bricklog.controller; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.example.bricklog.model.LegoBuild; +import com.example.bricklog.repository.LegoBuildRepository; + +@RestController +@RequestMapping("/api/builds") +public class LegoBuildController { + + private static final String IMAGE_DIRECTORY = "uploads/images/"; + + @Autowired + private LegoBuildRepository legoBuildRepository; + + @PostMapping("/add") + public ResponseEntity addLegoBuild( + @RequestParam("name") String name, + @RequestParam("builder") String builder, + @RequestParam("isKitset") boolean isKitset, + @RequestParam("description") String description, + @RequestParam("image") MultipartFile image) { + + // Save the image file + String filePath = saveImageFile(image); + + // Save the LegoBuild with image path + LegoBuild legoBuild = new LegoBuild(name, builder, isKitset, description); + legoBuild.setImagePath(filePath); + legoBuildRepository.save(legoBuild); + + return new ResponseEntity<>("Build added successfully with image.", HttpStatus.OK); + } + + private String saveImageFile(MultipartFile image) { + try { + Path directoryPath = Paths.get(IMAGE_DIRECTORY); + if (!Files.exists(directoryPath)) { + Files.createDirectories(directoryPath); // Create directory if it doesn’t exist + } + String filePath = IMAGE_DIRECTORY + image.getOriginalFilename(); + File file = new File(filePath); + image.transferTo(file); // Save the image + return filePath; + } catch (IOException e) { + throw new RuntimeException("Failed to store image file", e); + } + } +} diff --git a/BrickLog-Server/src/main/java/com/example/bricklog/model/LegoBuild.java b/BrickLog-Server/src/main/java/com/example/bricklog/model/LegoBuild.java index 0792eba..2ac4a9e 100644 --- a/BrickLog-Server/src/main/java/com/example/bricklog/model/LegoBuild.java +++ b/BrickLog-Server/src/main/java/com/example/bricklog/model/LegoBuild.java @@ -16,6 +16,7 @@ public class LegoBuild { private String builder; private boolean isKitset; // true for Kitset, false for MoC private String description; + private String imagePath; public LegoBuild() {} @@ -67,4 +68,12 @@ public class LegoBuild { public void setDescription(String description) { this.description = description; } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } } diff --git a/BrickLog-Server/target/classes/com/example/bricklog/BrickLogApplication.class b/BrickLog-Server/target/classes/com/example/bricklog/BrickLogApplication.class index df8026a910cacd90fdcae28cda067fcfa6661f16..68455e2f080654e64289c8c7fd6da8ba1accbb8f 100644 GIT binary patch literal 2470 zcmbVNYg5}s6g>+B8RG^b3WesSq@)3-vC`1=5vOUvKojC56jNwIUu$`779_1kk_q%z zwf)ev=}dn>r@yJwyRwbNM3c$ni?n<9-m~|f``CZ}d+|4bMF;}}40De1Y;nlFz!i2q zl+M1ZTK1A&R8?y+2wds#SSsJZ5X1N$Kj5~@{g(Z>z9*cRVfc>pWqg-maBhB!VW^@S zB9B3g6mSZ|3}aR4i$`s*F2YS-cLjr4RStKzcqsM0D;$bB)SON6N?3wRro6ie79;QCw& zx8m|BDrenP&4PE7AB)4-t|-4LTkTMXn!1O?`nWuTcQ9jM`UJJLqbL?$0q^20xuV*{ z@?^&osqA$MBc>n)_sTh(XE@(WmQ@qsfe0-bS>(P?(UwZ3JTBsr0gGWG;pikn0hjR} zgQ01NT?%pY_TI&;}c3`L+K8LRNfu8NjgYD>4V zaV#s(XY!b&siHiO`wd-58x)xcDfu(BilryEWF$4WzOUk>P|3~fnNYoy@MBebNpQbx zQafDJiNDH_?>otG>y6@I$hq9BH~8!gh6iuPMF!2fx$-NAjtF!&Mh0&7Qkt~m@ri+t z7-loO$fMSD``qX7F|}`nN3kn%_>}x!Q@g&ktY~+e>T1#Qc*~bf=?FizJkgNifV-BH z804{lJG#X`XSkhFG^x(%meJFfMe|#u_yUUtzGPU)bh)37zTf?tDPRc|D$a->P~E+s zcB3<%sHpmrp)1N^g<+%?a7RSDGRWa8B6f}Y!m4>P-p%2D5__{9w?i4l(y=0~>x8^X zENBXIctE%H3f|JyFS#p!77gneAy`o|O|1rXM2WC#svSCFRqEL{-D}p=EGTIg8SZ8l zZBqZd9V@EdWRQsN&|0GTl>(uTSj_~`Uf6p9w^LMhuOK*r-V;&k!_n;0&O~v@gNGvCRgEZ*O>7zXhT(Fbf9W5nePLIV<{(Ah zo5A^euE0=>Hb&Mo2nF z5^cOh+FEbiWW_%)zWp1f%yYlvLLcXJa_Je;Hpyxtg*T2_Tp?R(BU~k%Ia=#m=jpGp z%d{TQ>uWDi1b(4q+O_EfYO15sbxj+7fa_r6dCf4L-5@I+?}rJbq_2itDE@_oC+02l zlOgl7=P3V)y93zn2$#*(LG#|RP)D?OA|jIjff-EF+g!w1+{C$5R0~N|G>=eC9DbO@ pWzw~eX#bd8S>FMR@HIAQubF*93_Zp7_yIqXMAyepsH1_I{{cM@y#D|I delta 358 zcmYk0Jx;?w5QX2`aW*k_Vr)YA3Hfm_7(?WS4jSMBNGT|&EMcLb*ijM-2~ltWDr+k) zK#2qee+4z7;VfJLF*XHk@t$Vh>^F03U6<+~->+`~_Rv!yLFOoEP*6;F>>@{r!4+e< zmO7TMLd6V+ra?y~{pyJ>i<$;zIZO=}<`|5#;5_h$L44}>FQ!Qti96P2^Wu})odqm% zENNIqgTcxN2P6M*GKiCYG6{o7n37XC7@dS^d?~i2mKZCpc$XUDMtQkH2b`|Uo&=WN zN4i3lPtM2{?+NTakDH`f43yC#)qV%iCP>z^(WOrIc|V5%hRMBWl#d=zHEWNk|8Xji lGr}%y*HJ~~AJD)m9110@<+=`++@yMg+@lqn$6!-z{Qzy(F`@tf diff --git a/BrickLog-Server/target/classes/com/example/bricklog/controller/LegoBuildController.class b/BrickLog-Server/target/classes/com/example/bricklog/controller/LegoBuildController.class new file mode 100644 index 0000000000000000000000000000000000000000..92f273285a0e63f400d4f5a3300883d447eee93d GIT binary patch literal 3949 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 H>;QZN(3c{g literal 0 HcmV?d00001 diff --git a/BrickLog-Server/target/classes/resources/application.properties b/BrickLog-Server/target/classes/resources/application.properties new file mode 100644 index 0000000..a1ade11 --- /dev/null +++ b/BrickLog-Server/target/classes/resources/application.properties @@ -0,0 +1,9 @@ +# MariaDB Configuration +spring.datasource.url=jdbc:mariadb://localhost:3306/bricklog_db +spring.datasource.username=your_db_username +spring.datasource.password=your_db_password + +# JPA settings +spring.jpa.hibernate.ddl-auto=update # Creates tables automatically; set to 'none' in production if not needed +spring.jpa.show-sql=true # Shows SQL queries in the console, useful for debugging +spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect