diff --git a/.gitignore b/.gitignore index a3f7c058fb3c7b891c9a28efde06d27ac96daa75..5b6111e1d3db92d51136aa3f6210dfd9bd2073b9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,9 @@ bin/ target/ certs/ +.idea/ *.db +*.iml build/[0-9]*.[0-9]*.[0-9]* \ No newline at end of file diff --git a/.project b/.project deleted file mode 100644 index 4bbb34dd9375523a694ac0d2bae7b3f5a3be80bb..0000000000000000000000000000000000000000 --- a/.project +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>BudgetMaster</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.m2e.core.maven2Builder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.m2e.core.maven2Nature</nature> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> diff --git a/BudgetMasterClient/.classpath b/BudgetMasterClient/.classpath deleted file mode 100644 index 8e795b1c7e0c65a33e55e6a4fe23c4a11dd9e703..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/.classpath +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" output="target/classes" path="src/main/java"> - <attributes> - <attribute name="optional" value="true"/> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="src" output="target/test-classes" path="src/test/java"> - <attributes> - <attribute name="optional" value="true"/> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="output" path="target/classes"/> -</classpath> diff --git a/BudgetMasterClient/.project b/BudgetMasterClient/.project deleted file mode 100644 index 1142662018334c939d816c36e78b4bcc114b2114..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/.project +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>BudgetMasterClient</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.m2e.core.maven2Builder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - <nature>org.eclipse.m2e.core.maven2Nature</nature> - </natures> -</projectDescription> diff --git a/BudgetMasterClient/.settings/org.eclipse.jdt.core.prefs b/BudgetMasterClient/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 714351aec195a9a572640e6844dcafd51565a2a5..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,5 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/BudgetMasterClient/.settings/org.eclipse.m2e.core.prefs b/BudgetMasterClient/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f1cb2389f85fe6381425d29f0a9866fb65..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/BudgetMasterClient/pom.xml b/BudgetMasterClient/pom.xml deleted file mode 100644 index 4670c84085b337379957f991b1dc51f714b4a9cb..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/pom.xml +++ /dev/null @@ -1,111 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>de.deadlocker8</groupId> - <artifactId>BudgetMasterClient</artifactId> - <version>1.8.0</version> - <name>BudgetMasterClient</name> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.7.0</version> - <configuration> - <source>1.8</source> - <target>1.8</target> - </configuration> - </plugin> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <outputDirectory>../build/${project.version}</outputDirectory> - <finalName>BudgetMasterClient-v${project.version}</finalName> - <appendAssemblyId>false</appendAssemblyId> - <archive> - <manifest> - <mainClass>de.deadlocker8.budgetmasterclient.main.Main</mainClass> - </manifest> - </archive> - <descriptorRefs> - <descriptorRef>jar-with-dependencies</descriptorRef> - </descriptorRefs> - </configuration> - <executions> - <execution> - <id>make-assembly</id> <!-- this is used for inheritance merges --> - <phase>package</phase> <!-- bind to the packaging phase --> - <goals> - <goal>single</goal> - </goals> - </execution> - </executions> - </plugin> - <!-- LAUNCH4J --> - <plugin> - <groupId>com.akathist.maven.plugins.launch4j</groupId> - <artifactId>launch4j-maven-plugin</artifactId> - <version>1.7.21</version> - <executions> - <execution> - <id>l4j-clui</id> - <phase>package</phase> - <goals> - <goal>launch4j</goal> - </goals> - <configuration> - <headerType>gui</headerType> - <jar>../build/${project.version}/BudgetMasterClient-v${project.version}.jar</jar> - <outfile>../build/${project.version}/BudgetMasterClient-v${project.version}.exe</outfile> - <downloadUrl>http://java.com/download</downloadUrl> - <classPath> - <mainClass>de.deadlocker8.budgetmasterclient.main.Main</mainClass> - </classPath> - <jre> - <bundledJre64Bit>false</bundledJre64Bit> - <bundledJreAsFallback>false</bundledJreAsFallback> - <minVersion>1.8.0</minVersion> - <jdkPreference>preferJre</jdkPreference> - <runtimeBits>64/32</runtimeBits> - </jre> - <icon>../build/icon.ico</icon> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - - <dependencies> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - <version>2.8.1</version> - </dependency> - <dependency> - <groupId>joda-time</groupId> - <artifactId>joda-time</artifactId> - <version>2.9.7</version> - </dependency> - <dependency> - <groupId>de.deadlocker8</groupId> - <artifactId>BudgetMasterCore</artifactId> - <version>0.0.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>com.itextpdf</groupId> - <artifactId>itextpdf</artifactId> - <version>5.0.6</version> - </dependency> - <dependency> - <groupId>org.controlsfx</groupId> - <artifactId>controlsfx</artifactId> - <version>8.40.12</version> - </dependency> - <dependency> - <groupId>de.deadlocker8</groupId> - <artifactId>tools</artifactId> - <version>1.0.0</version> - </dependency> - </dependencies> -</project> \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/main/Main.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/main/Main.java deleted file mode 100644 index 774cc3c8bb09291e3ed6d01274511514ff966a81..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/main/Main.java +++ /dev/null @@ -1,62 +0,0 @@ -package de.deadlocker8.budgetmasterclient.main; - -import java.io.File; -import java.util.Locale; - -import de.deadlocker8.budgetmaster.logic.Settings; -import de.deadlocker8.budgetmaster.logic.utils.FileHelper; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.ShutdownHandler; -import de.deadlocker8.budgetmasterclient.ui.controller.SplashScreenController; -import javafx.application.Application; -import javafx.scene.image.Image; -import javafx.stage.Stage; -import logger.FileOutputMode; -import logger.Logger; -import tools.Localization; -import tools.PathUtils; - -public class Main extends Application -{ - public static Stage primaryStage; - - @Override - public void start(Stage stage) - { - primaryStage = stage; - - // load correct language - Settings settings = FileHelper.loadSettings(); - if(settings != null && settings.getLanguage() != null) - { - Localization.loadLanguage(settings.getLanguage().getLocale()); - } - - ShutdownHandler shutdownHandler = new ShutdownHandler(); - - Image icon = new Image("/de/deadlocker8/budgetmaster/icon.png"); - new SplashScreenController(stage, icon, getParameters().getNamed().get("update") != null, shutdownHandler); - } - - @Override - public void init() throws Exception - { - Localization.init("de/deadlocker8/budgetmaster/languages/"); - Localization.loadLanguage(Locale.ENGLISH); - - Parameters params = getParameters(); - String logLevelParam = params.getNamed().get("loglevel"); - Logger.setLevel(logLevelParam); - - File logFolder = new File(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER)); - PathUtils.checkFolder(logFolder); - Logger.enableFileOutput(logFolder, System.out, System.err, FileOutputMode.COMBINED); - - Logger.appInfo(Localization.getString(Strings.APP_NAME), Localization.getString(Strings.VERSION_NAME), Localization.getString(Strings.VERSION_CODE), Localization.getString(Strings.VERSION_DATE)); - } - - public static void main(String[] args) - { - launch(args); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/Refreshable.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/Refreshable.java deleted file mode 100644 index 0553784baa98791f79d47d486fa50ce1401e3b62..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/Refreshable.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui; - -public interface Refreshable -{ - void refresh(); -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/RestartHandler.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/RestartHandler.java deleted file mode 100644 index faa92647c4d44772c9c0ebbc8b8361ab3ce574f4..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/RestartHandler.java +++ /dev/null @@ -1,78 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui; - -import java.util.Optional; - -import de.deadlocker8.budgetmaster.logic.utils.LanguageType; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.main.Main; -import de.deadlocker8.budgetmasterclient.ui.controller.Controller; -import de.deadlocker8.budgetmasterclient.ui.controller.SplashScreenController; -import javafx.scene.control.Alert; -import javafx.scene.control.Button; -import javafx.scene.control.ButtonType; -import javafx.scene.control.DialogPane; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.image.Image; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyEvent; -import javafx.stage.Stage; -import tools.Localization; - -public class RestartHandler -{ - private Controller controller; - - public RestartHandler(Controller controller) - { - this.controller = controller; - } - - public void handleRestart(LanguageType previousLanguage) - { - controller.refresh(controller.getFilterSettings()); - controller.showNotification(Localization.getString(Strings.NOTIFICATION_SETTINGS_SAVE)); - - if(controller.getSettings().isAutoUpdateCheckEnabled()) - { - controller.checkForUpdates(false); - } - - //restart application if language has changed - if(controller.getSettings().getLanguage() != previousLanguage) - { - Alert alert = new Alert(AlertType.INFORMATION); - alert.setTitle(Localization.getString(Strings.INFO_TITLE_LANGUAGE_CHANGED)); - alert.setHeaderText(""); - alert.setContentText(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED)); - Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(controller.getIcon()); - - ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED_RESTART_NOW)); - ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED_RESTART_LATER)); - alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo); - - DialogPane dialogPane = alert.getDialogPane(); - dialogPane.getButtonTypes().stream().map(dialogPane::lookupButton).forEach(button -> button.addEventHandler(KeyEvent.KEY_PRESSED, (event) -> { - if(KeyCode.ENTER.equals(event.getCode()) && event.getTarget() instanceof Button) - { - ((Button)event.getTarget()).fire(); - } - })); - - Optional<ButtonType> result = alert.showAndWait(); - if (result.get() == buttonTypeOne) - { - controller.getStage().close(); - - Localization.loadLanguage(controller.getSettings().getLanguage().getLocale()); - - Image icon = new Image("/de/deadlocker8/budgetmaster/icon.png"); - new SplashScreenController(Main.primaryStage, icon, false, controller.getShutdownHandler()); - } - else - { - alert.close(); - } - } - } -} diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/ShutdownHandler.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/ShutdownHandler.java deleted file mode 100644 index 616beec09c3d5a5e6ee2a4b95a2d229a44a4e724..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/ShutdownHandler.java +++ /dev/null @@ -1,49 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui; - -import de.deadlocker8.budgetmaster.logic.ServerType; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmasterclient.ui.controller.Controller; -import logger.Logger; -import tools.Worker; - -public class ShutdownHandler -{ - private Thread shutdownThread; - private Controller controller; - - public ShutdownHandler() - { - shutdownThread = new Thread(() -> { - shutdown(); - }); - } - - public Thread getShutdownThread() - { - return shutdownThread; - } - - public void setController(Controller controller) - { - this.controller = controller; - } - - public void shutdown() - { - if(controller.getSettings().getServerType().equals(ServerType.LOCAL)) - { - Logger.debug("Stopping local BudgetMasterServer..."); - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - connection.shutdownServer(); - } - catch(Exception e) - { - Logger.error(e); - } - } - Worker.shutdown(); - System.exit(0); - } -} diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/Styleable.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/Styleable.java deleted file mode 100644 index 693e63a97830639711e1c774382b32f2b4ad46f9..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/Styleable.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui; - -public interface Styleable -{ - public void applyStyle(); -} diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/ButtonCategoryCell.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/ButtonCategoryCell.java deleted file mode 100644 index dc6394c3ab4170de143990ed19f2f115c110386a..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/ButtonCategoryCell.java +++ /dev/null @@ -1,54 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.cells; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.control.Label; -import javafx.scene.control.ListCell; -import javafx.scene.layout.HBox; -import javafx.scene.paint.Color; -import tools.ConvertTo; - -public class ButtonCategoryCell extends ListCell<Category> -{ - private Color color; - - public ButtonCategoryCell(Color color) - { - super(); - this.color = color; - } - - public void setColor(Color color) - { - this.color = color; - } - - @Override - protected void updateItem(Category item, boolean empty) - { - super.updateItem(item, empty); - - if(!empty) - { - HBox hbox = new HBox(); - - Label labelName = new Label(item.getName()); - labelName.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: " + ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(color))); - labelName.setAlignment(Pos.CENTER); - hbox.getChildren().add(labelName); - - hbox.setPadding(new Insets(0)); - setStyle("-fx-background: transparent;"); - setGraphic(hbox); - setText(null); - setAlignment(Pos.CENTER); - } - else - { - setStyle("-fx-background: transparent"); - setText(null); - setGraphic(null); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/CategoryBudgetCell.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/CategoryBudgetCell.java deleted file mode 100644 index b72a3c43c154271fdad1b8d3246f9d337ac53a21..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/CategoryBudgetCell.java +++ /dev/null @@ -1,87 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.cells; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.category.CategoryBudget; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmasterclient.ui.controller.HomeController; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.control.Label; -import javafx.scene.control.ListCell; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.layout.Region; -import javafx.scene.paint.Color; -import tools.ConvertTo; - -public class CategoryBudgetCell extends ListCell<CategoryBudget> -{ - private final double HEIGHT = 40.0; - private HomeController homeController; - - public CategoryBudgetCell(HomeController homeController) - { - super(); - this.homeController = homeController; - } - - @Override - protected void updateItem(CategoryBudget item, boolean empty) - { - super.updateItem(item, empty); - - if(!empty) - { - HBox hbox = new HBox(); - Category currentCategory = item.getCategory(); - - Label labelCircle = new Label(currentCategory.getName().substring(0, 1).toUpperCase()); - labelCircle.setPrefWidth(HEIGHT); - labelCircle.setPrefHeight(HEIGHT); - labelCircle.setAlignment(Pos.CENTER); - labelCircle.getStyleClass().add("greylabel"); - String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(Color.web(currentCategory.getColor()))); - labelCircle.setStyle("-fx-background-color: " + currentCategory.getColor() + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 20;"); - hbox.getChildren().add(labelCircle); - - Label labelName = new Label(currentCategory.getName()); - labelName.setPrefHeight(HEIGHT); - labelName.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #212121"); - labelName.setAlignment(Pos.CENTER); - labelName.getStyleClass().add("greylabel"); - hbox.getChildren().add(labelName); - HBox.setMargin(labelName, new Insets(0, 0, 0, 20)); - - Region r = new Region(); - hbox.getChildren().add(r); - HBox.setHgrow(r, Priority.ALWAYS); - - Label labelBudget = new Label(Helpers.getCurrencyString(item.getBudget() / 100.0, homeController.getController().getSettings().getCurrency())); - labelBudget.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #247A2D;"); - if(item.getBudget() > 0) - { - labelBudget.setText("+" + labelBudget.getText()); - } - else - { - labelBudget.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #CC0000"); - } - labelBudget.setPrefHeight(HEIGHT); - labelBudget.setAlignment(Pos.CENTER); - labelBudget.getStyleClass().add("greylabel"); - hbox.getChildren().add(labelBudget); - HBox.setMargin(labelBudget, new Insets(0, 0, 0, 20)); - - hbox.setPadding(new Insets(10)); - setStyle("-fx-background: transparent; -fx-border-color: #545454; -fx-border-width: 0 0 1 0"); - setGraphic(hbox); - setAlignment(Pos.CENTER); - } - else - { - setStyle("-fx-background: transparent"); - setText(null); - setGraphic(null); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/CategoryCell.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/CategoryCell.java deleted file mode 100644 index 71d1842051e3fe76a17ae5fdadfb7105ca48296f..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/CategoryCell.java +++ /dev/null @@ -1,116 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.cells; - -import java.util.Optional; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.controller.CategoryController; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.control.Alert; -import javafx.scene.control.Button; -import javafx.scene.control.ButtonType; -import javafx.scene.control.Label; -import javafx.scene.control.ListCell; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.layout.Region; -import javafx.scene.paint.Color; -import javafx.stage.Stage; -import tools.ConvertTo; -import tools.Localization; - -public class CategoryCell extends ListCell<Category> -{ - private final double HEIGHT = 40.0; - private CategoryController categoryController; - - public CategoryCell(CategoryController categoryController) - { - super(); - this.categoryController = categoryController; - } - - @Override - protected void updateItem(Category item, boolean empty) - { - super.updateItem(item, empty); - - if(!empty) - { - HBox hbox = new HBox(); - - Label labelCircle = new Label(item.getName().substring(0, 1).toUpperCase()); - labelCircle.setPrefWidth(HEIGHT); - labelCircle.setPrefHeight(HEIGHT); - labelCircle.setAlignment(Pos.CENTER); - labelCircle.getStyleClass().add("greylabel"); - String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(Color.web(item.getColor()))); - labelCircle.setStyle("-fx-background-color: " + item.getColor() + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 20;"); - hbox.getChildren().add(labelCircle); - - Label labelName = new Label(item.getName()); - labelName.setPrefHeight(HEIGHT); - labelName.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #212121"); - labelName.setAlignment(Pos.CENTER); - labelName.getStyleClass().add("greylabel"); - hbox.getChildren().add(labelName); - HBox.setMargin(labelName, new Insets(0, 0, 0, 20)); - - Region r = new Region(); - hbox.getChildren().add(r); - HBox.setHgrow(r, Priority.ALWAYS); - - Button buttonEdit = new Button(); - buttonEdit.setGraphic(new FontIcon(FontIconType.PENCIL, 16, Color.web("#212121"))); - buttonEdit.setPrefHeight(HEIGHT); - buttonEdit.getStyleClass().add("greylabel"); - buttonEdit.setStyle("-fx-background-color: transparent"); - buttonEdit.setOnAction((e)->{ - categoryController.newCategory(true, item); - }); - hbox.getChildren().add(buttonEdit); - HBox.setMargin(buttonEdit, new Insets(0, 0, 0, 25)); - - Button buttonDelete = new Button(); - buttonDelete.setGraphic(new FontIcon(FontIconType.TRASH, 16, Color.web("#212121"))); - buttonDelete.setPrefHeight(HEIGHT); - buttonDelete.getStyleClass().add("greylabel"); - buttonDelete.setStyle("-fx-background-color: transparent"); - buttonDelete.setOnAction((event)->{ - Alert alert = new Alert(Alert.AlertType.CONFIRMATION); - alert.setTitle(Localization.getString(Strings.INFO_TITLE_CATEGORY_DELETE)); - alert.setHeaderText(""); - alert.setContentText(Localization.getString(Strings.INFO_TEXT_CATEGORY_DELETE)); - Stage dialogStage = (Stage) alert.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(categoryController.getController().getIcon()); - dialogStage.centerOnScreen(); - - Optional<ButtonType> result = alert.showAndWait(); - if (result.get() == ButtonType.OK) - { - categoryController.deleteCategory(item.getID()); - } - }); - //don't allow category "rest" to be deleted - if(item.getID() != 2) - { - hbox.getChildren().add(buttonDelete); - HBox.setMargin(buttonDelete, new Insets(0, 0, 0, 5)); - } - - hbox.setPadding(new Insets(10)); - setStyle("-fx-background: transparent; -fx-border-color: #545454; -fx-border-width: 0 0 1 0"); - setGraphic(hbox); - setAlignment(Pos.CENTER); - } - else - { - setStyle("-fx-background: transparent"); - setText(null); - setGraphic(null); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/LanguageCell.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/LanguageCell.java deleted file mode 100644 index a798301141339e64a98d2a899f88ef523ff9bede..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/LanguageCell.java +++ /dev/null @@ -1,63 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.cells; - -import de.deadlocker8.budgetmaster.logic.utils.LanguageType; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.control.Label; -import javafx.scene.control.ListCell; -import javafx.scene.image.Image; -import javafx.scene.image.ImageView; -import javafx.scene.layout.HBox; - -public class LanguageCell extends ListCell<LanguageType> -{ - private final double HEIGHT = 20.0; - private boolean useBorder; - - public LanguageCell(boolean useBorder) - { - this.useBorder = useBorder; - } - - @Override - protected void updateItem(LanguageType item, boolean empty) - { - super.updateItem(item, empty); - - if(!empty) - { - HBox hbox = new HBox(); - - Image image = new Image("de/deadlocker8/budgetmaster/flags/" + item.getIconName() + ".png"); - ImageView imageView = new ImageView(image); - imageView.setFitWidth(HEIGHT); - imageView.setFitHeight(HEIGHT); - hbox.getChildren().add(imageView); - - Label labelName = new Label(item.getName()); - labelName.setPrefHeight(HEIGHT); - labelName.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121"); - labelName.setAlignment(Pos.CENTER); - hbox.getChildren().add(labelName); - HBox.setMargin(labelName, new Insets(0, 0, 0, 20)); - - hbox.setPadding(new Insets(0)); - if(useBorder) - { - setStyle("-fx-background: transparent; -fx-border-color: #545454; -fx-border-width: 0 0 1 0"); - } - else - { - setStyle("-fx-background: transparent;"); - } - setGraphic(hbox); - setAlignment(Pos.CENTER); - } - else - { - setStyle("-fx-background: transparent"); - setText(null); - setGraphic(null); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/PaymentCell.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/PaymentCell.java deleted file mode 100644 index cb20223ae5585a4d795ccb6e41c82308d5dc2867..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/PaymentCell.java +++ /dev/null @@ -1,286 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.cells; - -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Optional; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.controller.PaymentController; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.animation.FadeTransition; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.Node; -import javafx.scene.control.Alert; -import javafx.scene.control.Button; -import javafx.scene.control.ButtonBar.ButtonData; -import javafx.scene.control.ButtonType; -import javafx.scene.control.DialogPane; -import javafx.scene.control.Label; -import javafx.scene.control.ListCell; -import javafx.scene.control.Tooltip; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyEvent; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.layout.Region; -import javafx.scene.layout.VBox; -import javafx.scene.paint.Color; -import javafx.stage.Stage; -import javafx.util.Duration; -import logger.Logger; -import tools.ConvertTo; -import tools.Localization; - -public class PaymentCell extends ListCell<Payment> -{ - private final double HEIGHT = 30.0; - private PaymentController paymentController; - - public PaymentCell(PaymentController paymentController) - { - super(); - this.paymentController = paymentController; - } - - @Override - protected void updateItem(Payment item, boolean empty) - { - super.updateItem(item, empty); - - if(!empty) - { - Category category = paymentController.getController().getCategoryHandler().getCategory(item.getCategoryID()); - - HBox hbox = new HBox(); - - String dateString = item.getDate(); - DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - try - { - Date date = format.parse(dateString); - DateFormat finalFormat = new SimpleDateFormat("dd.MM.yy"); - dateString = finalFormat.format(date); - } - catch(ParseException e) - { - Logger.error(e); - } - Label labelDate = new Label(dateString); - labelDate.setPrefHeight(HEIGHT); - labelDate.setAlignment(Pos.CENTER); - labelDate.getStyleClass().add("greylabel"); - labelDate.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121"); - labelDate.setMinWidth(60); - hbox.getChildren().add(labelDate); - - Label labelRepeating = new Label(); - if(item instanceof RepeatingPaymentEntry) - { - labelRepeating.setGraphic(new FontIcon(FontIconType.CALENDAR, 18, Color.web("#212121"))); - } - else - { - labelRepeating.setGraphic(new FontIcon(FontIconType.CALENDAR, 18, Color.TRANSPARENT)); - } - labelRepeating.setPrefHeight(HEIGHT); - labelRepeating.setStyle("-fx-font-size: 15; -fx-text-fill: #212121"); - labelRepeating.setAlignment(Pos.CENTER); - labelRepeating.getStyleClass().add("greylabel"); - hbox.getChildren().add(labelRepeating); - HBox.setMargin(labelRepeating, new Insets(0, 20, 0, 15)); - - Label labelCircle = new Label(category.getName().substring(0, 1).toUpperCase()); - labelCircle.setMinWidth(HEIGHT); - labelCircle.setMinHeight(HEIGHT); - labelCircle.setAlignment(Pos.CENTER); - labelCircle.getStyleClass().add("greylabel"); - String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(Color.web(category.getColor()))); - labelCircle.setStyle("-fx-background-color: " + category.getColor() + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 18;"); - Tooltip tooltip = new Tooltip(category.getName()); - tooltip.setStyle("-fx-font-size: 14"); - labelCircle.setTooltip(tooltip); - hbox.getChildren().add(labelCircle); - - VBox vboxNameAndDescription = new VBox(); - vboxNameAndDescription.setSpacing(2); - vboxNameAndDescription.setAlignment(Pos.CENTER_LEFT); - vboxNameAndDescription.setMinHeight(HEIGHT + 12); - - Label labelName = new Label(item.getName()); - labelName.setStyle("-fx-font-size: 15; -fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - labelName.setAlignment(Pos.CENTER_LEFT); - labelName.getStyleClass().add("greylabel"); - vboxNameAndDescription.getChildren().add(labelName); - - if(item.getDescription() != null && !item.getDescription().equals("")) - { - Label labelDescription = new Label(Helpers.getFlatText(item.getDescription())); - labelDescription.setStyle("-fx-font-size: 14; -fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT) + "; -fx-font-style: italic"); - labelDescription.setAlignment(Pos.CENTER_LEFT); - labelDescription.getStyleClass().add("greylabel"); - vboxNameAndDescription.getChildren().add(labelDescription); - } - - hbox.getChildren().add(vboxNameAndDescription); - HBox.setMargin(vboxNameAndDescription, new Insets(0, 0, 0, 20)); - - Region r = new Region(); - hbox.getChildren().add(r); - HBox.setHgrow(r, Priority.ALWAYS); - - Label labelBudget = new Label(Helpers.getCurrencyString(item.getAmount(), paymentController.getController().getSettings().getCurrency())); - labelBudget.setPrefHeight(HEIGHT); - labelBudget.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #247A2D"); - labelBudget.setAlignment(Pos.CENTER); - labelBudget.getStyleClass().add("greylabel"); - labelBudget.setMinWidth(90); - hbox.getChildren().add(labelBudget); - HBox.setMargin(labelBudget, new Insets(0, 0, 0, 20)); - - if(item.isIncome()) - { - labelBudget.setText("+" + labelBudget.getText()); - } - else - { - labelBudget.setText(labelBudget.getText()); - labelBudget.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #CC0000"); - } - - Button buttonDelete = new Button(); - buttonDelete.setGraphic(new FontIcon(FontIconType.TRASH, 16, Color.web("#212121"))); - buttonDelete.setPrefHeight(HEIGHT); - buttonDelete.getStyleClass().add("greylabel"); - buttonDelete.setStyle("-fx-background-color: transparent"); - buttonDelete.setOnAction((event) -> { - Alert alert = new Alert(Alert.AlertType.CONFIRMATION); - alert.setTitle(Localization.getString(Strings.INFO_TITLE_PAYMENT_DELETE)); - alert.setHeaderText(""); - alert.setContentText(Localization.getString(Strings.INFO_TEXT_PAYMENT_DELETE)); - Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(paymentController.getController().getIcon()); - dialogStage.centerOnScreen(); - - if(item instanceof RepeatingPaymentEntry) - { - alert.setContentText(Localization.getString(Strings.INFO_TEXT_PAYMENT_REPEATING_DELETE)); - - ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_PAYMENT_REPEATING_DELETE_ALL)); - ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.INFO_TEXT_PAYMENT_REPEATING_DELETE_FUTURES)); - ButtonType buttonTypeCancel = new ButtonType(Localization.getString(Strings.CANCEL), ButtonData.CANCEL_CLOSE); - - alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo, buttonTypeCancel); - - DialogPane dialogPane = alert.getDialogPane(); - dialogPane.getButtonTypes().stream().map(dialogPane::lookupButton).forEach(button -> button.addEventHandler(KeyEvent.KEY_PRESSED, (e) -> { - if(KeyCode.ENTER.equals(e.getCode()) && e.getTarget() instanceof Button) - { - ((Button)e.getTarget()).fire(); - } - })); - - Optional<ButtonType> result = alert.showAndWait(); - if(result.get() == buttonTypeOne) - { - paymentController.deleteRepeatingPayment((RepeatingPaymentEntry)item); - } - else if(result.get() == buttonTypeTwo) - { - paymentController.deleteFuturePayments((RepeatingPaymentEntry)item); - } - } - else - { - Optional<ButtonType> result = alert.showAndWait(); - if(result.get() == ButtonType.OK) - { - paymentController.deleteNormalPayment((NormalPayment)item); - } - } - }); - hbox.getChildren().add(buttonDelete); - HBox.setMargin(buttonDelete, new Insets(0, 0, 0, 10)); - // don't allow "Übertrag" to be deleted - if(item.getID() == -1) - { - buttonDelete.setVisible(false); - } - - hbox.setPadding(new Insets(10, 8, 10, 5)); - - // payment is selected after search - Payment selectedPayment = paymentController.getController().getSelectedPayment(); - selectPayment(selectedPayment, item, hbox); - - hbox.setPadding(new Insets(8, 8, 8, 5)); - hbox.setAlignment(Pos.CENTER_LEFT); - setStyle("-fx-background: transparent; -fx-border-color: #545454; -fx-border-width: 0 0 1 0"); - setGraphic(hbox); - setAlignment(Pos.CENTER); - } - else - { - setStyle("-fx-background: transparent"); - setText(null); - setGraphic(null); - } - } - - private void selectPayment(Payment selectedPayment, Payment item, Node noteToFade) - { - if(selectedPayment == null) - return; - - if(selectedPayment instanceof NormalPayment) - { - if(item instanceof NormalPayment) - { - if(item.getID() != selectedPayment.getID()) - { - return; - } - } - else - { - return; - } - } - - if(selectedPayment instanceof RepeatingPayment) - { - if(item instanceof RepeatingPaymentEntry) - { - RepeatingPaymentEntry itemRepeating = (RepeatingPaymentEntry)item; - if(itemRepeating.getRepeatingPaymentID() != selectedPayment.getID()) - { - return; - } - } - else - { - return; - } - } - - FadeTransition ft = new FadeTransition(Duration.millis(750), noteToFade); - ft.setFromValue(1.0); - ft.setToValue(0.0); - ft.setCycleCount(4); - ft.setAutoReverse(true); - ft.play(); - ft.setOnFinished((event)->{ - paymentController.getController().setSelectedPayment(null); - }); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/RepeatingDayCell.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/RepeatingDayCell.java deleted file mode 100644 index 4a811dab12fe392be39b877b9400a24902fd03ad..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/RepeatingDayCell.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.cells; - -import javafx.scene.control.ListCell; - -public class RepeatingDayCell extends ListCell<Integer> -{ - @Override - protected void updateItem(Integer item, boolean empty) - { - super.updateItem(item, empty); - - if(!empty && item != 0) - { - setText(String.valueOf(item)); - } - else - { - setText(null); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/SearchCell.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/SearchCell.java deleted file mode 100644 index 9500ffcc09ae4734f80789f96d5dc532d1c46a29..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/SearchCell.java +++ /dev/null @@ -1,176 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.cells; - -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; - -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormat; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmasterclient.ui.controller.SearchController; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.ListCell; -import javafx.scene.control.Tooltip; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.layout.Region; -import javafx.scene.layout.VBox; -import javafx.scene.paint.Color; -import logger.Logger; -import tools.ConvertTo; - -public class SearchCell extends ListCell<Payment> -{ - private final double HEIGHT = 30.0; - private SearchController searchController; - - public SearchCell(SearchController searchController) - { - super(); - this.searchController = searchController; - } - - @Override - protected void updateItem(Payment item, boolean empty) - { - super.updateItem(item, empty); - - if(!empty) - { - Category category = searchController.getController().getCategoryHandler().getCategory(item.getCategoryID()); - - HBox hbox = new HBox(); - - String dateString = item.getDate(); - DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - try - { - Date date = format.parse(dateString); - DateFormat finalFormat = new SimpleDateFormat("dd.MM.yy"); - dateString = finalFormat.format(date); - } - catch(ParseException e) - { - Logger.error(e); - } - Label labelDate = new Label(dateString); - labelDate.setPrefHeight(HEIGHT); - labelDate.setAlignment(Pos.CENTER); - labelDate.getStyleClass().add("greylabel"); - labelDate.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121"); - labelDate.setMinWidth(60); - hbox.getChildren().add(labelDate); - - Label labelRepeating = new Label(); - if(item instanceof RepeatingPayment) - { - labelRepeating.setGraphic(new FontIcon(FontIconType.CALENDAR, 18, Color.web("#212121"))); - } - else - { - labelRepeating.setGraphic(new FontIcon(FontIconType.CALENDAR, 18, Color.TRANSPARENT)); - } - labelRepeating.setPrefHeight(HEIGHT); - labelRepeating.setStyle("-fx-font-size: 15; -fx-text-fill: #212121"); - labelRepeating.setAlignment(Pos.CENTER); - labelRepeating.getStyleClass().add("greylabel"); - hbox.getChildren().add(labelRepeating); - HBox.setMargin(labelRepeating, new Insets(0, 20, 0, 15)); - - Label labelCircle = new Label(category.getName().substring(0, 1).toUpperCase()); - labelCircle.setMinWidth(HEIGHT); - labelCircle.setMinHeight(HEIGHT); - labelCircle.setAlignment(Pos.CENTER); - labelCircle.getStyleClass().add("greylabel"); - String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(Color.web(category.getColor()))); - labelCircle.setStyle("-fx-background-color: " + category.getColor() + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 18;"); - Tooltip tooltip = new Tooltip(category.getName()); - tooltip.setStyle("-fx-font-size: 14"); - labelCircle.setTooltip(tooltip); - hbox.getChildren().add(labelCircle); - - VBox vboxNameAndDescription = new VBox(); - vboxNameAndDescription.setSpacing(2); - vboxNameAndDescription.setAlignment(Pos.CENTER_LEFT); - vboxNameAndDescription.setMinHeight(HEIGHT + 12); - - Label labelName = new Label(item.getName()); - labelName.setStyle("-fx-font-size: 15; -fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - labelName.setAlignment(Pos.CENTER_LEFT); - labelName.getStyleClass().add("greylabel"); - vboxNameAndDescription.getChildren().add(labelName); - - if(item.getDescription() != null && !item.getDescription().equals("")) - { - Label labelDescription = new Label(Helpers.getFlatText(item.getDescription())); - labelDescription.setStyle("-fx-font-size: 14; -fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT) + "; -fx-font-style: italic"); - labelDescription.setAlignment(Pos.CENTER_LEFT); - labelDescription.getStyleClass().add("greylabel"); - vboxNameAndDescription.getChildren().add(labelDescription); - } - - hbox.getChildren().add(vboxNameAndDescription); - HBox.setMargin(vboxNameAndDescription, new Insets(0, 0, 0, 20)); - - Region r = new Region(); - hbox.getChildren().add(r); - HBox.setHgrow(r, Priority.ALWAYS); - - Label labelBudget = new Label(Helpers.getCurrencyString(item.getAmount(), searchController.getController().getSettings().getCurrency())); - labelBudget.setPrefHeight(HEIGHT); - labelBudget.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #247A2D"); - labelBudget.setAlignment(Pos.CENTER); - labelBudget.getStyleClass().add("greylabel"); - labelBudget.setMinWidth(90); - hbox.getChildren().add(labelBudget); - HBox.setMargin(labelBudget, new Insets(0, 0, 0, 20)); - - if(item.isIncome()) - { - labelBudget.setText("+" + labelBudget.getText()); - } - else - { - labelBudget.setText(labelBudget.getText()); - labelBudget.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #CC0000"); - } - - Button buttonGoto = new Button(); - buttonGoto.setGraphic(new FontIcon(FontIconType.EXTERNAL_LINK_SQUARE, 16, Color.web("#212121"))); - buttonGoto.setPrefHeight(HEIGHT); - buttonGoto.getStyleClass().add("greylabel"); - buttonGoto.setStyle("-fx-background-color: transparent"); - buttonGoto.setOnAction((event) -> { - DateTime newDate = DateTime.parse(item.getDate(), DateTimeFormat.forPattern("YYYY-MM-dd")); - searchController.getController().setSelectedPayment(item); - searchController.getController().setDate(newDate); - searchController.cancel(); - }); - hbox.getChildren().add(buttonGoto); - HBox.setMargin(buttonGoto, new Insets(0, 0, 0, 10)); - - hbox.setPadding(new Insets(8, 8, 8, 5)); - hbox.setAlignment(Pos.CENTER_LEFT); - setStyle("-fx-background: transparent; -fx-border-color: #545454; -fx-border-width: 0 0 1 0"); - setGraphic(hbox); - setAlignment(Pos.CENTER); - } - else - { - setStyle("-fx-background: transparent"); - setText(null); - setGraphic(null); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/SmallCategoryCell.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/SmallCategoryCell.java deleted file mode 100644 index ad70f8c2b2d9542df7f526bbf41558fe1b4a1a6a..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/SmallCategoryCell.java +++ /dev/null @@ -1,52 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.cells; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.control.Label; -import javafx.scene.control.ListCell; -import javafx.scene.layout.HBox; -import javafx.scene.paint.Color; -import tools.ConvertTo; - -public class SmallCategoryCell extends ListCell<Category> -{ - private final double HEIGHT = 30.0; - - @Override - protected void updateItem(Category item, boolean empty) - { - super.updateItem(item, empty); - - if(!empty) - { - HBox hbox = new HBox(); - - Label labelCircle = new Label(item.getName().substring(0, 1).toUpperCase()); - labelCircle.setPrefWidth(HEIGHT); - labelCircle.setPrefHeight(HEIGHT); - labelCircle.setAlignment(Pos.CENTER); - String textColor = ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(Color.web(item.getColor()))); - labelCircle.setStyle("-fx-background-color: " + item.getColor() + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 15;"); - hbox.getChildren().add(labelCircle); - - Label labelName = new Label(item.getName()); - labelName.setPrefHeight(HEIGHT); - labelName.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121"); - labelName.setAlignment(Pos.CENTER); - hbox.getChildren().add(labelName); - HBox.setMargin(labelName, new Insets(0, 0, 0, 20)); - - hbox.setPadding(new Insets(3)); - setStyle("-fx-background: transparent; -fx-border-color: #545454; -fx-border-width: 0 0 1 0"); - setGraphic(hbox); - setAlignment(Pos.CENTER); - } - else - { - setStyle("-fx-background: transparent"); - setText(null); - setGraphic(null); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/report/table/ReportTableRatingCell.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/report/table/ReportTableRatingCell.java deleted file mode 100644 index e8bda03afe9ba7ef6bb51d10626b7c0bcaae8db1..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/report/table/ReportTableRatingCell.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.cells.report.table; - -import de.deadlocker8.budgetmaster.logic.report.ReportItem; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.geometry.Pos; -import javafx.scene.control.Label; -import javafx.scene.control.TableCell; - -public class ReportTableRatingCell extends TableCell<ReportItem, Integer> -{ - @Override - protected void updateItem(Integer item, boolean empty) - { - if(!empty) - { - Label labelRepeating = new Label(); - if(item > 0) - { - labelRepeating.setGraphic(new FontIcon(FontIconType.PLUS, 14, Colors.TEXT)); - } - else - { - labelRepeating.setGraphic(new FontIcon(FontIconType.MINUS, 14, Colors.TEXT)); - } - labelRepeating.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121"); - labelRepeating.setAlignment(Pos.CENTER); - setGraphic(labelRepeating); - } - else - { - setGraphic(null); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/report/table/ReportTableRepeatingCell.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/report/table/ReportTableRepeatingCell.java deleted file mode 100644 index a9841bc98a6abf6b30440c81a12c559150db21bd..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/cells/report/table/ReportTableRepeatingCell.java +++ /dev/null @@ -1,37 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.cells.report.table; - -import de.deadlocker8.budgetmaster.logic.report.ReportItem; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.geometry.Pos; -import javafx.scene.control.Label; -import javafx.scene.control.TableCell; -import javafx.scene.paint.Color; - -public class ReportTableRepeatingCell extends TableCell<ReportItem, Boolean> -{ - @Override - protected void updateItem(Boolean item, boolean empty) - { - if(!empty) - { - Label labelRepeating = new Label(); - if(item) - { - labelRepeating.setGraphic(new FontIcon(FontIconType.CALENDAR, 16, Colors.TEXT)); - } - else - { - labelRepeating.setGraphic(new FontIcon(FontIconType.CALENDAR, 16, Color.TRANSPARENT)); - } - labelRepeating.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121"); - labelRepeating.setAlignment(Pos.CENTER); - setGraphic(labelRepeating); - } - else - { - setGraphic(null); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/colorPick/ColorPickController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/colorPick/ColorPickController.java deleted file mode 100644 index 9b3fa2c26e32f6bc8fd18a8266b642343503b02c..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/colorPick/ColorPickController.java +++ /dev/null @@ -1,141 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.colorPick; - -import java.util.function.Consumer; - -import javafx.event.ActionEvent; -import javafx.fxml.FXML; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.Slider; -import javafx.scene.control.TextField; -import javafx.scene.control.TextFormatter; -import javafx.scene.paint.Color; -import javafx.stage.Stage; -import tools.ConvertTo; - -public class ColorPickController -{ - @FXML private Label labelColor; - @FXML private Slider sliderRed; - @FXML private TextField textFieldRed; - @FXML private Slider sliderGreen; - @FXML private TextField textFieldGreen; - @FXML private Slider sliderBlue; - @FXML private TextField textFieldBlue; - @FXML private TextField textFieldHex; - @FXML private Button buttonSave; - @FXML private Button buttonCancel; - - private Stage stage; - private Consumer<Color> finish; - - public void init(Stage stage, Consumer<Color> finish) - { - this.stage = stage; - this.finish = finish; - - initializeSliderAndTextField(sliderRed, textFieldRed); - initializeSliderAndTextField(sliderGreen, textFieldGreen); - initializeSliderAndTextField(sliderBlue, textFieldBlue); - - initializeTextFieldHex(); - - updatePreview(); - } - - private void initializeSliderAndTextField(Slider slider, TextField textField) - { - initializeSlider(slider, textField); - initializeTextField(slider, textField); - } - - private void initializeSlider(Slider slider, TextField textField) - { - slider.valueProperty().addListener((observer, oldValue, newValue)->{ - textField.setText(String.valueOf(newValue.intValue())); - textFieldHex.setText(ConvertTo.toRGBHexWithoutOpacity(getColor())); - updatePreview(); - }); - } - - private void initializeTextField(Slider slider, TextField textField) - { - textField.setTextFormatter(new TextFormatter<>(c -> { - if(c.getControlNewText().isEmpty()) - { - return c; - } - - if(c.getControlNewText().matches("[0-9]*")) - { - if(Double.parseDouble(c.getControlNewText()) > 255) - { - return null; - } - else - { - return c; - } - } - else - { - return null; - } - })); - - textField.textProperty().addListener((observer, oldValue, newValue)->{ - double value; - if(newValue.isEmpty()) - { - value = 0; - } - else - { - value = Double.parseDouble(newValue); - } - slider.setValue(value); - textFieldHex.setText(ConvertTo.toRGBHexWithoutOpacity(getColor())); - }); - } - - private void initializeTextFieldHex() - { - textFieldHex.textProperty().addListener((observer, oldValue, newValue)->{ - try - { - Color hexColor = Color.web(newValue); - - sliderRed.setValue((int)(hexColor.getRed()*255)); - sliderGreen.setValue((int)(hexColor.getGreen()*255)); - sliderBlue.setValue((int)(hexColor.getBlue()*255)); - } - catch(Exception e) - { - - } - }); - } - - private Color getColor() - { - return Color.rgb((int)sliderRed.getValue(), (int)sliderGreen.getValue(), (int)sliderBlue.getValue()); - } - - private void updatePreview() - { - labelColor.setStyle("-fx-border-color: #000000; -fx-border-width: 1; -fx-background-color: " + ConvertTo.toRGBHex(getColor())); - } - - @FXML - void cancel(ActionEvent event) - { - stage.close(); - } - - @FXML - void save(ActionEvent event) - { - finish.accept(getColor()); - stage.close(); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/colorPick/ColorView.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/colorPick/ColorView.java deleted file mode 100644 index 457d866f00d5fe55f6fd9b4f34073c1f6c170b99..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/colorPick/ColorView.java +++ /dev/null @@ -1,167 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.colorPick; - -import java.util.ArrayList; -import java.util.function.Consumer; - -import de.deadlocker8.budgetmasterclient.ui.controller.NewCategoryController; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.fxml.FXMLLoader; -import javafx.geometry.Insets; -import javafx.scene.Node; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.scene.control.Button; -import javafx.scene.image.Image; -import javafx.scene.layout.GridPane; -import javafx.scene.paint.Color; -import javafx.scene.shape.Rectangle; -import javafx.stage.Modality; -import javafx.stage.Stage; -import logger.Logger; -import tools.ConvertTo; -import tools.Localization; - -public class ColorView extends GridPane -{ - private Node lastSelectedNode; - private Color colorPickerColor; - private Button buttonColorPicker; - private FontIcon icon; - - public ColorView(Color startColor, ArrayList<Color> colors, NewCategoryController controller, Consumer<Color> finish) - { - colors.add(Color.TRANSPARENT); - - double size = Math.sqrt(colors.size()); - int iSize = (int)size; - if(size != iSize) - { - iSize++; - } - - setVgap(5); - setHgap(5); - setPadding(new Insets(5)); - - colorPickerColor = Color.WHITE; - - int index = 0; - for(int y = 0; y < iSize; y++) - { - for(int x = 0; x < iSize; x++) - { - if(index < colors.size()) - { - Color color = colors.get(index++); - - if(color == Color.TRANSPARENT) - { - buttonColorPicker = new Button(); - buttonColorPicker.setPrefHeight(40); - buttonColorPicker.setPrefWidth(40); - - if(!colors.contains(startColor)) - { - colorPickerColor = startColor; - updateColorPickerCSS(buttonColorPicker, true, startColor); - } - - icon = new FontIcon(FontIconType.PLUS); - icon.setSize(20); - icon.setStyle("-fx-text-fill: " + ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(colorPickerColor))); - buttonColorPicker.setGraphic(icon); - - buttonColorPicker.setOnAction((event)->{ - try - { - FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("de/deadlocker8/budgetmaster/ui/colorPick/ColorPickGUI.fxml")); - loader.setResources(Localization.getBundle()); - Parent root = (Parent)loader.load(); - - Scene scene = new Scene(root, 500, 225); - Stage stage = new Stage(); - - ((ColorPickController)loader.getController()).init(stage, (finishColor)->{ - colorPickerColor = finishColor; - updateColorPickerCSS(buttonColorPicker, true, finishColor); - if(lastSelectedNode instanceof Rectangle) - { - ((Rectangle)lastSelectedNode).getStrokeDashArray().clear(); - } - lastSelectedNode = buttonColorPicker; - icon.setStyle("-fx-text-fill: " + ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(finishColor))); - finish.accept(finishColor); - }); - - stage.setResizable(false); - stage.initModality(Modality.APPLICATION_MODAL); - stage.setScene(scene); - stage.getIcons().add(new Image("/de/deadlocker8/budgetmaster/icon.png")); - stage.show(); - } - catch(Exception e) - { - Logger.error(e); - } - }); - - add(buttonColorPicker, x, y); - } - else - { - Rectangle rectangle = createRectangle(startColor, color); - - // EventHandler - rectangle.setOnMouseReleased(event -> { - if(lastSelectedNode instanceof Rectangle) - { - ((Rectangle)lastSelectedNode).getStrokeDashArray().clear(); - } - else - { - updateColorPickerCSS(buttonColorPicker, false, Color.WHITE); - icon.setStyle("-fx-text-fill: " + ConvertTo.toRGBHex(ConvertTo.getAppropriateTextColor(Color.WHITE))); - } - rectangle.getStrokeDashArray().add(3.0); - lastSelectedNode = rectangle; - - finish.accept(color); - }); - - add(rectangle, x, y); - } - } - } - } - - updateColorPickerCSS(buttonColorPicker, true, colorPickerColor); - } - - private Rectangle createRectangle(Color startColor, Color color) - { - Rectangle rectangle = new Rectangle(40, 40); - rectangle.setFill(color); - rectangle.getStyleClass().add("color-view-item"); - - // dotted border - if(ConvertTo.toRGBHex(color).equals(ConvertTo.toRGBHex(startColor))) - { - lastSelectedNode = rectangle; - rectangle.getStrokeDashArray().add(3.0); - } - - return rectangle; - } - - private void updateColorPickerCSS(Node button, boolean dashed, Color backgroundColor) - { - String css = "-fx-background-radius: 4; -fx-border-width: 1.8; -fx-border-color: black; -fx-border-radius: 4; -fx-background-color: " + ConvertTo.toRGBHex(backgroundColor) + ";"; - if(dashed) - { - css += " -fx-border-style: dashed;"; - } - - button.setStyle(css); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandBundle.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandBundle.java deleted file mode 100644 index b200c8edeaae61c2e9dd13f99ad9c458a0e3dcae..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandBundle.java +++ /dev/null @@ -1,53 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine; - -import java.text.MessageFormat; -import java.util.ResourceBundle; - -import de.deadlocker8.budgetmasterclient.ui.controller.Controller; - -public class CommandBundle -{ - private CommandLineController controller; - private ResourceBundle languageBundle; - private Controller parentController; - - public CommandBundle(Controller parentController) - { - this.parentController = parentController; - } - - public CommandLineController getController() - { - return controller; - } - - public ResourceBundle getLanguageBundle() - { - return languageBundle; - } - - public String getString(String key) - { - return languageBundle.getString(key); - } - - public String getString(String key, Object... args) - { - return MessageFormat.format(languageBundle.getString(key), args); - } - - public void setController(CommandLineController controller) - { - this.controller = controller; - } - - public void setLanguageBundle(ResourceBundle languageBundle) - { - this.languageBundle = languageBundle; - } - - public Controller getParentController() - { - return parentController; - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandLine.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandLine.java deleted file mode 100644 index eba15f5f9083421d932d6010f8fad5e35d81648b..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandLine.java +++ /dev/null @@ -1,126 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.ResourceBundle; - -import javafx.fxml.FXMLLoader; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.scene.image.Image; -import javafx.stage.Modality; -import javafx.stage.Stage; - -public class CommandLine -{ - private Stage owner; - private Stage newStage; - private Image icon; - private ResourceBundle languageBundle; - public ArrayList<HistoryEntry> globalHistory = new ArrayList<>(); - public int lastShownCommand = 1; - public ArrayList<HistoryEntry> history = new ArrayList<>(); - private final String promptText = ">>>"; - private CommandBundle bundle; - - public CommandLine(Stage owner, Image icon, ResourceBundle languageBundle, CommandBundle commandBundle) - { - this.owner = owner; - this.icon = icon; - this.languageBundle = languageBundle; - this.bundle = commandBundle; - } - - public Stage getOwner() - { - return owner; - } - - public Stage getStage() - { - return newStage; - } - - public Image getIcon() - { - return icon; - } - - public int getLastShwonCommand() - { - return lastShownCommand; - } - - public String getPromptText() - { - return promptText; - } - - public ResourceBundle getLanguageBundle() - { - return languageBundle; - } - - public CommandBundle getBundle() - { - return bundle; - } - - public void showCommandLine(String title, double width, double height, double minWidth, double minHeight, double positionX, double positionY, boolean dark) throws IOException - { - if(newStage != null) - { - if(newStage.isShowing()) - { - return; - } - } - - FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/commandLine/CommandLineGUI.fxml")); - - Parent root = (Parent)fxmlLoader.load(); - newStage = new Stage(); - newStage.setScene(new Scene(root, width, height)); - newStage.setResizable(true); - newStage.setTitle(title); - newStage.initOwner(owner); - - newStage.setMinWidth(minWidth); - newStage.setMinHeight(minHeight); - if(positionX != -1) - { - newStage.setX(positionX); - } - if(positionY != -1) - { - newStage.setY(positionY); - } - - if(dark) - { - root.setStyle("-fx-base: rgb(50, 50, 50); -fx-background: rgb(50, 50, 50); -fx-control-inner-background: rgb(10, 10, 10);"); - } - - if(icon != null) - { - newStage.getIcons().add(icon); - } - - CommandLineController newController = fxmlLoader.getController(); - newController.init(this); - - newStage.initModality(Modality.NONE); - newStage.show(); - } - - public void closeCommandLine() - { - if(newStage != null) - { - if(newStage.isShowing()) - { - newStage.close(); - } - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandLineController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandLineController.java deleted file mode 100644 index c84fec6b9943921975d76060a00b124dd0eb2da3..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandLineController.java +++ /dev/null @@ -1,246 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine; - -import java.util.ArrayList; -import java.util.Comparator; - -import de.deadlocker8.budgetmasterclient.ui.commandLine.commands.Command; -import de.deadlocker8.budgetmasterclient.ui.commandLine.commands.PossibleCommands; -import javafx.application.Platform; -import javafx.event.EventHandler; -import javafx.fxml.FXML; -import javafx.scene.control.TextArea; -import javafx.scene.control.TextField; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyEvent; - -public class CommandLineController -{ - @FXML private TextArea textareaHistory; - @FXML private TextField textfieldInput; - - private CommandLine commandLine; - - public void init(CommandLine commandLine) - { - this.commandLine = commandLine; - - commandLine.getBundle().setController(this); - commandLine.getBundle().setLanguageBundle(commandLine.getLanguageBundle()); - - textareaHistory.setEditable(false); - textareaHistory.setWrapText(true); - - textfieldInput.setOnKeyPressed(new EventHandler<KeyEvent>() - { - @Override - public void handle(KeyEvent event) - { - if(event.getCode().equals(KeyCode.ENTER)) - { - parse(); - } - - if(event.getCode().equals(KeyCode.UP)) - { - showLastCommand(); - } - - if(event.getCode().equals(KeyCode.ESCAPE)) - { - clearConsole(); - } - - if(event.getCode().equals(KeyCode.TAB)) - { - autocomplete(); - event.consume(); - } - } - }); - - printPrompt(); - } - - public void printPrompt() - { - setConsoleText(); - clearConsole(); - } - - public void print(String message) - { - commandLine.history.add(new HistoryEntry(HistoryType.MESSAGE, message)); - setConsoleText(); - printPrompt(); - } - - public void clearHistoryLog() - { - textareaHistory.setText(""); - } - - public void clearHistory() - { - commandLine.history = new ArrayList<>(); - } - - public void clearConsole() - { - textfieldInput.setText(""); - textfieldInput.requestFocus(); - } - - private void setConsoleText() - { - clearHistoryLog(); - - StringBuilder sb = new StringBuilder(); - boolean printedLastEntry = false; - for(int i = 0; i < commandLine.history.size(); i++) - { - HistoryEntry currentEntry = commandLine.history.get(i); - if(currentEntry.getType().equals(HistoryType.COMMAND)) - { - if(printedLastEntry) - { - sb.append("\n"); - } - sb.append(commandLine.getPromptText()); - sb.append(" "); - sb.append(currentEntry.getText()); - printedLastEntry = true; - } - else - { - if(i != 0) - { - sb.append("\n"); - } - sb.append(currentEntry.getText()); - printedLastEntry = true; - } - } - - textareaHistory.setText(sb.toString()); - textareaHistory.positionCaret(sb.toString().length()); - } - - private boolean executeCommand(String[] command) - { - for(Command cmd : PossibleCommands.possibleCommands) - { - if(cmd.getKeyword().equals(command[0])) - { - cmd.execute(command, commandLine.getBundle()); - return true; - } - } - return false; - } - - private void parse() - { - String input = textfieldInput.getText().replace("\n", ""); - - if(input.equals("")) - { - printPrompt(); - return; - } - - commandLine.globalHistory.add(new HistoryEntry(HistoryType.COMMAND, input)); - commandLine.history.add(new HistoryEntry(HistoryType.COMMAND, input)); - commandLine.lastShownCommand = - 1; - - String[] command = input.split(" "); - if( ! executeCommand(command)) - { - print(commandLine.getLanguageBundle().getString("error.unknown.command")); - } - else - { - printPrompt(); - } - } - - private void showLastCommand() - { - if(commandLine.globalHistory.size() > 0) - { - if(commandLine.lastShownCommand <= 0) - { - textfieldInput.setText(commandLine.globalHistory.get(commandLine.globalHistory.size() - 1).getText()); - commandLine.lastShownCommand = commandLine.globalHistory.size() - 1; - } - else - { - textfieldInput.setText(commandLine.globalHistory.get(commandLine.lastShownCommand - 1).getText()); - commandLine.lastShownCommand--; - } - - Platform.runLater(()-> - { - textfieldInput.positionCaret(textfieldInput.getText().length()); - }); - } - } - - private void autocomplete() - { - String input = textfieldInput.getText().replace("\n", ""); - - if(input.equals("")) - { - return; - } - - ArrayList<Command> commands = PossibleCommands.possibleCommands; - - //filter possible commands - ArrayList<Command> filteredCommands = new ArrayList<>(); - for(Command currentCommand : commands) - { - if(currentCommand.getKeyword().startsWith(input)) - { - filteredCommands.add(currentCommand); - } - } - - //sort commands alphabetically - filteredCommands.sort(new Comparator<Command>() - { - @Override - public int compare(Command o1, Command o2) - { - return o1.keyword.compareTo(o2.keyword); - } - }); - - if(filteredCommands.size() == 1) - { - textfieldInput.setText(filteredCommands.get(0).getKeyword()); - } - else - { - StringBuilder sb = new StringBuilder(); - sb.append(">>> Possible commands for \"" + input + "\":\n"); - for(int i = 0; i < filteredCommands.size(); i++) - { - sb.append(filteredCommands.get(i).keyword); - if(i != (filteredCommands.size()-1)) - { - sb.append("\n"); - } - } - - print(sb.toString()); - - textfieldInput.setText(input); - } - - Platform.runLater(()-> - { - textfieldInput.positionCaret(textfieldInput.getText().length()); - }); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/HistoryEntry.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/HistoryEntry.java deleted file mode 100644 index 3454e2876e9d6b4d8841d7e947659e24b176f30a..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/HistoryEntry.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine; - -public class HistoryEntry -{ - private HistoryType type; - private String text; - - public HistoryEntry(HistoryType type, String text) - { - this.type = type; - this.text = text; - } - - public HistoryType getType() - { - return type; - } - - public String getText() - { - return text; - } - - public String toString() - { - return "HistoryEntry [type=" + type + ", text=" + text + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/HistoryType.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/HistoryType.java deleted file mode 100644 index 3b6f3c87866f1bb39268eaca24d58b8f1f918c15..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/HistoryType.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine; - -public enum HistoryType -{ - COMMAND, MESSAGE -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/Command.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/Command.java deleted file mode 100644 index c2ad67b0cee0bbfd210b6e4ac508bb7df4834c74..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/Command.java +++ /dev/null @@ -1,39 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine.commands; - -import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; - -public abstract class Command -{ - public String keyword; - public int numberOfParams; - public String helptText; - - public String getKeyword() - { - return keyword; - } - - public int getNumberOfParams() - { - return numberOfParams; - } - - public String getHelpText() - { - return keyword; - } - - public boolean isValid(String[] command) - { - if((command.length - 1) == numberOfParams) - { - return true; - } - else - { - return false; - } - } - - public abstract void execute(String[] command, CommandBundle bundle); -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandClear.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandClear.java deleted file mode 100644 index f9aa8f8aac586091e1f14fd9ad8c97895844b6e9..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandClear.java +++ /dev/null @@ -1,31 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine.commands; - -import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; - -/** - * Clears the history log and console - */ -public class CommandClear extends Command -{ - public CommandClear() - { - super.keyword = "clear"; - super.numberOfParams = 0; - super.helptText = "help.clear"; - } - - @Override - public void execute(String[] command, CommandBundle bundle) - { - if(!isValid(command)) - { - bundle.getController().print(bundle.getString("error.invalid.arguments")); - return; - } - - bundle.getController().clearHistory(); - bundle.getController().clearHistoryLog(); - bundle.getController().clearConsole(); - bundle.getController().printPrompt(); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandDelete.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandDelete.java deleted file mode 100644 index 2417ac83430932ed1d978f2d8aee683f132e5755..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandDelete.java +++ /dev/null @@ -1,50 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine.commands; - -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; -import logger.Logger; - -public class CommandDelete extends Command -{ - public CommandDelete() - { - super.keyword = "delete"; - super.numberOfParams = 1; - super.helptText = "help.delete"; - } - - @Override - public void execute(String[] command, CommandBundle bundle) - { - if(!isValid(command)) - { - bundle.getController().print(bundle.getString("error.invalid.arguments")); - return; - } - - if(command[1].equals("log-client")) - { - Logger.clearLogFile(); - bundle.getController().print(bundle.getString("delete.success", "client logfile")); - return; - } - - if(command[1].equals("log-server")) - { - try - { - ServerConnection connection = new ServerConnection(bundle.getParentController().getSettings()); - connection.deleteLog(); - bundle.getController().print(bundle.getString("delete.success", "server logfile")); - } - catch(Exception e) - { - bundle.getController().print(bundle.getString("delete.error.connection")); - } - - return; - } - - bundle.getController().print(bundle.getString("error.invalid.parameter", command[1], keyword)); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandHelp.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandHelp.java deleted file mode 100644 index 88680e5ede1108b2613c683dbec53c23809bb1ca..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandHelp.java +++ /dev/null @@ -1,47 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine.commands; - -import java.util.MissingResourceException; - -import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; - -/** - * prints help for given command - */ -public class CommandHelp extends Command -{ - public CommandHelp() - { - super(); - super.keyword = "help"; - super.numberOfParams = 1; - super.helptText = "help.help"; - } - - @Override - public void execute(String[] command, CommandBundle bundle) - { - if(!isValid(command)) - { - bundle.getController().print(bundle.getString("error.invalid.arguments")); - return; - } - - for(Command cmd : PossibleCommands.possibleCommands) - { - if(cmd.getKeyword().equals(command[1])) - { - try - { - bundle.getController().print(bundle.getString("help." + command[1])); - } - catch(MissingResourceException e) - { - bundle.getController().print(bundle.getString("error.general")); - } - return; - } - } - - bundle.getController().print(bundle.getString("error.no.help")); - } -} diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandInfo.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandInfo.java deleted file mode 100644 index aca29599f04216fdd9b009162e608ef516247582..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandInfo.java +++ /dev/null @@ -1,67 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine.commands; - -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerInformation; -import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; -import tools.Localization; - -/** - * prints help for given command - */ -public class CommandInfo extends Command -{ - public CommandInfo() - { - super(); - super.keyword = "info"; - super.numberOfParams = 1; - super.helptText = "help.info"; - } - - @Override - public void execute(String[] command, CommandBundle bundle) - { - if(!isValid(command)) - { - bundle.getController().print(bundle.getString("error.invalid.arguments")); - return; - } - - if(command[1].equals("client")) - { - String text = Localization.getString(Strings.APP_NAME) - + " v" + Localization.getString(Strings.VERSION_NAME) - + " (" + Localization.getString(Strings.VERSION_CODE) - + ") from " + Localization.getString(Strings.VERSION_DATE); - bundle.getController().print(text); - return; - } - - if(command[1].equals("server")) - { - try - { - ServerConnection connection = new ServerConnection(bundle.getParentController().getSettings()); - ServerInformation serverInfo = connection.getServerInfo(); - VersionInformation versionInfo = serverInfo.getVersionInfo(); - - String text = "BudgetMasterServer v" + versionInfo.getVersionName() + " (" + versionInfo.getVersionCode() + ") from " + versionInfo.getDate() + "\n" - + "Listening on port " + serverInfo.getServerPort() + "\n" - + "Connected with user \"" + serverInfo.getDatabaseUsername() + "\" to database \"" + serverInfo.getDatabaseName() + "@" + serverInfo.getDatabaseUrl() + "\"\n" - + "Keystore location is: \"" + serverInfo.getKeystorePath() + "\""; - - bundle.getController().print(text); - } - catch(Exception e) - { - bundle.getController().print(bundle.getString("delete.error.connection")); - } - - return; - } - - bundle.getController().print(bundle.getString("error.invalid.parameter", command[1], keyword)); - } -} diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandList.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandList.java deleted file mode 100644 index 6ea40040cc6bfd976210c28791c20187dab56608..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandList.java +++ /dev/null @@ -1,55 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine.commands; - -import java.util.ArrayList; -import java.util.Comparator; - -import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; - -/** - * Lists all available commands - */ -public class CommandList extends Command -{ - public CommandList() - { - super(); - super.keyword = "list"; - super.numberOfParams = 0; - super.helptText = "help.list"; - } - - @Override - public void execute(String[] command, CommandBundle bundle) - { - if(!isValid(command)) - { - bundle.getController().print(bundle.getString("error.invalid.arguments")); - return; - } - - //sort possible commands alphabetically - ArrayList<Command> commands = PossibleCommands.possibleCommands; - commands.sort(new Comparator<Command>() - { - @Override - public int compare(Command o1, Command o2) - { - return o1.keyword.compareTo(o2.keyword); - } - }); - - //loop through all possible commands and print keyword - StringBuilder sb = new StringBuilder(); - sb.append("All possible commands:\n"); - for(int i = 0; i < commands.size(); i++) - { - sb.append(commands.get(i).keyword); - if(i != (commands.size()-1)) - { - sb.append("\n"); - } - } - - bundle.getController().print(sb.toString()); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandOpen.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandOpen.java deleted file mode 100644 index bf4ef69b82c290420b338382f55694e99119dcc3..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandOpen.java +++ /dev/null @@ -1,48 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine.commands; - -import java.awt.Desktop; -import java.io.File; -import java.io.IOException; -import java.nio.file.Paths; - -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; -import tools.Localization; -import tools.PathUtils; - -public class CommandOpen extends Command -{ - public CommandOpen() - { - super.keyword = "open"; - super.numberOfParams = 1; - super.helptText = "help.open"; - } - - @Override - public void execute(String[] command, CommandBundle bundle) - { - if(!isValid(command)) - { - bundle.getController().print(bundle.getString("error.invalid.arguments")); - return; - } - - if(!command[1].equals("settings")) - { - bundle.getController().print(bundle.getString("error.invalid.parameter", command[1], keyword)); - return; - } - - try - { - File folder = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER)).toFile(); - Desktop.getDesktop().open(folder); - bundle.getController().print(bundle.getString("open.success", folder.getAbsolutePath())); - } - catch(IOException e) - { - bundle.getController().print(e.getMessage()); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandShortcuts.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandShortcuts.java deleted file mode 100644 index bb99c3e1ed20a1a3627cf092e89a1dedec9b3bde..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandShortcuts.java +++ /dev/null @@ -1,23 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine.commands; - -import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; - -/** - * Lists all available Shortcuts - */ -public class CommandShortcuts extends Command -{ - public CommandShortcuts() - { - super.keyword = "shortcuts"; - super.numberOfParams = 0; - super.helptText = "help.shortcuts"; - } - - @Override - public void execute(String[] command, CommandBundle bundle) - { - bundle.getController().print("Available Shortcuts:"); - bundle.getController().print(bundle.getString("info.shortcuts")); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandSwitch.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandSwitch.java deleted file mode 100644 index de02b9ba1dd3f394d18fe3504d42bf0b55df6f0a..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandSwitch.java +++ /dev/null @@ -1,71 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine.commands; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; - -import de.deadlocker8.budgetmaster.logic.utils.FileHelper; -import de.deadlocker8.budgetmaster.logic.utils.LanguageType; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.RestartHandler; -import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; -import tools.Localization; -import tools.PathUtils; - -public class CommandSwitch extends Command -{ - public CommandSwitch() - { - super.keyword = "switch"; - super.numberOfParams = 0; - super.helptText = "help.switch"; - } - - @Override - public void execute(String[] command, CommandBundle bundle) - { - if(!isValid(command)) - { - bundle.getController().print(bundle.getString("error.invalid.arguments")); - return; - } - - Path currentSettingsFile = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/settings.json"); - Path secondSettingsFile = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/_settings.json"); - - if(secondSettingsFile.toFile().exists()) - { - try - { - Path temp = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/__settings.json"); - Files.move(currentSettingsFile, temp); - Files.move(secondSettingsFile, currentSettingsFile); - Files.move(temp, secondSettingsFile); - } - catch(IOException e) - { - bundle.getController().print(bundle.getString("switch.error")); - } - } - else - { - bundle.getController().print(bundle.getString("switch.new")); - try - { - Files.copy(currentSettingsFile, secondSettingsFile); - } - catch(IOException e) - { - bundle.getController().print(bundle.getString("switch.error")); - } - } - - LanguageType previousLanguage = bundle.getParentController().getSettings().getLanguage(); - bundle.getParentController().setSettings(FileHelper.loadSettings()); - bundle.getParentController().getSettingsController().prefill(); - RestartHandler restartHandler = new RestartHandler(bundle.getParentController()); - restartHandler.handleRestart(previousLanguage); - bundle.getController().print(bundle.getString("switch.success")); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/PossibleCommands.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/PossibleCommands.java deleted file mode 100644 index 0ecfd5ea340a49795b9cc2b5f8cdc1fae07505d4..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/PossibleCommands.java +++ /dev/null @@ -1,18 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.commandLine.commands; - -import java.util.ArrayList; -import java.util.Arrays; - -public class PossibleCommands -{ - public static final ArrayList<Command> possibleCommands = new ArrayList<>(Arrays.asList( - new CommandList(), - new CommandHelp(), - new CommandClear(), - new CommandShortcuts(), - new CommandOpen(), - new CommandDelete(), - new CommandInfo(), - new CommandSwitch() - )); -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/BaseController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/BaseController.java deleted file mode 100644 index d55d410e1620af51f662415683d3bd475499c824..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/BaseController.java +++ /dev/null @@ -1,54 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.io.IOException; -import java.util.ResourceBundle; - -import javafx.fxml.FXMLLoader; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.stage.Stage; -import logger.Logger; - -public class BaseController -{ - private Parent parent; - private Stage stage; - - public void load(String fxmlFileName, ResourceBundle resourceBundle) - { - try - { - FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(fxmlFileName)); - if(resourceBundle != null) - { - fxmlLoader.setResources(resourceBundle); - } - fxmlLoader.setController(this); - parent = (Parent)fxmlLoader.load(); - } - catch(IOException e) - { - Logger.error(e); - } - - createNewStage(); - initStage(stage); - init(); - } - - public Stage getStage() - { - return stage; - } - - public void createNewStage() - { - Scene scene = new Scene(parent); - stage = new Stage(); - stage.setScene(scene); - } - - public void initStage(Stage stage){}; - - public void init() {}; -} diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/CategoryController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/CategoryController.java deleted file mode 100644 index 7c58c7dd231a80f00b587ce542a55d3550d7ce84..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/CategoryController.java +++ /dev/null @@ -1,126 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.Refreshable; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import de.deadlocker8.budgetmasterclient.ui.cells.CategoryCell; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.application.Platform; -import javafx.beans.value.ChangeListener; -import javafx.fxml.FXML; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.ListView; -import javafx.scene.input.MouseEvent; -import javafx.scene.layout.AnchorPane; -import javafx.scene.paint.Color; -import logger.Logger; -import tools.ConvertTo; -import tools.Localization; - -public class CategoryController extends BaseController implements Refreshable, Styleable -{ - @FXML private AnchorPane anchorPaneMain; - @FXML private Button buttonCategory; - @FXML private ListView<Category> listView; - - private Controller controller; - - public void init(Controller controller) - { - this.controller = controller; - - CategoryController thisController = this; - listView.setCellFactory(param -> { - CategoryCell cell = new CategoryCell(thisController); - cell.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { - if(event.getClickCount() == 2) - { - // don't allow editing of category "none" - if(cell.getItem().getID() != 1) - { - newCategory(true, cell.getItem()); - } - } - }); - return cell; - }); - - listView.getSelectionModel().selectedIndexProperty().addListener((ChangeListener<Number>)(observable, oldValue, newValue) -> Platform.runLater(() -> listView.getSelectionModel().select(-1))); - - Label labelPlaceholder = new Label(Localization.getString(Strings.CATEGORIES_PLACEHOLDER)); - labelPlaceholder.setStyle("-fx-font-size: 16"); - listView.setPlaceholder(labelPlaceholder); - - applyStyle(); - - refreshListView(); - } - - public void refreshListView() - { - listView.getItems().clear(); - - if(controller.getCategoryHandler() != null) - { - ArrayList<Category> categories = controller.getCategoryHandler().getCategoriesWithoutNone(); - if(categories != null && categories.size() > 0) - { - listView.getItems().setAll(categories); - } - } - } - - public void createNewCategory() - { - newCategory(false, null); - } - - public void newCategory(boolean edit, Category category) - { - new NewCategoryController(controller.getStage(), controller, this, edit, category); - } - - public void deleteCategory(int ID) - { - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - connection.deleteCategory(ID); - controller.refresh(controller.getFilterSettings()); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - } - } - - public Controller getController() - { - return controller; - } - - @Override - public void refresh() - { - refreshListView(); - } - - @Override - public void applyStyle() - { - buttonCategory.setGraphic(new FontIcon(FontIconType.PLUS, 18, Color.WHITE)); - - anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND)); - buttonCategory.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ChartController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ChartController.java deleted file mode 100644 index 0dbc75472000dc13bfe4966a41d26aad801d7523..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ChartController.java +++ /dev/null @@ -1,297 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.io.File; -import java.time.LocalDate; -import java.util.ArrayList; - -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormat; - -import de.deadlocker8.budgetmaster.logic.charts.CategoriesChart; -import de.deadlocker8.budgetmaster.logic.charts.CategoryInOutSum; -import de.deadlocker8.budgetmaster.logic.charts.ChartExportable; -import de.deadlocker8.budgetmaster.logic.charts.LegendType; -import de.deadlocker8.budgetmaster.logic.charts.MonthBarChart; -import de.deadlocker8.budgetmaster.logic.charts.MonthInOutSum; -import de.deadlocker8.budgetmaster.logic.charts.MonthLineChart; -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.Refreshable; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import de.deadlocker8.budgetmasterclient.utils.LoadingModal; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.application.Platform; -import javafx.collections.FXCollections; -import javafx.fxml.FXML; -import javafx.scene.control.Accordion; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.ComboBox; -import javafx.scene.control.DateCell; -import javafx.scene.control.DatePicker; -import javafx.scene.control.RadioButton; -import javafx.scene.control.ToggleGroup; -import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.Priority; -import javafx.scene.layout.VBox; -import javafx.scene.paint.Color; -import logger.Logger; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.Localization; -import tools.Worker; - -public class ChartController implements Refreshable, Styleable -{ - @FXML private AnchorPane anchorPaneMain; - @FXML private Accordion accordion; - @FXML private DatePicker datePickerStart; - @FXML private VBox vboxChartCategories; - @FXML private DatePicker datePickerEnd; - @FXML private VBox vboxChartMonth; - @FXML private Button buttonChartCategoriesShow; - @FXML private Button buttonChartCategoriesExport; - @FXML private ComboBox<String> comboBoxStartMonth; - @FXML private ComboBox<String> comboBoxStartYear; - @FXML private ComboBox<String> comboBoxEndMonth; - @FXML private ComboBox<String> comboBoxEndYear; - @FXML private Button buttonChartMonthShow; - @FXML private Button buttonChartMonthExport; - @FXML private RadioButton radioButtonBars; - @FXML private RadioButton radioButtonLines; - - private Controller controller; - private File lastExportPath; - - private CategoriesChart categoriesChart; - private MonthLineChart monthLineChart; - private MonthBarChart monthBarChart; - - public void init(Controller controller) - { - this.controller = controller; - - datePickerEnd.setDayCellFactory(param -> new DateCell() - { - @Override - public void updateItem(LocalDate item, boolean empty) - { - super.updateItem(item, empty); - if(item.isBefore(datePickerStart.getValue().plusDays(1))) - { - setDisable(true); - setStyle("-fx-background-color: #ffc0cb;"); - } - } - }); - - comboBoxStartMonth.setItems(FXCollections.observableArrayList(Helpers.getMonthList())); - comboBoxStartYear.setItems(FXCollections.observableArrayList(Helpers.getYearList())); - comboBoxEndMonth.setItems(FXCollections.observableArrayList(Helpers.getMonthList())); - comboBoxEndYear.setItems(FXCollections.observableArrayList(Helpers.getYearList())); - - final ToggleGroup toggleGroup = new ToggleGroup(); - radioButtonBars.setToggleGroup(toggleGroup); - radioButtonBars.setSelected(true); - radioButtonLines.setToggleGroup(toggleGroup); - - accordion.setExpandedPane(accordion.getPanes().get(0)); - vboxChartMonth.setSpacing(15); - - applyStyle(); - } - - public void buttonChartCategoriesShow() - { - chartCategoriesShow(LegendType.NORMAL); - } - - public void chartCategoriesShow(LegendType legendType) - { - DateTime startDate = DateTime.parse(datePickerStart.getValue().toString()); - DateTime endDate = DateTime.parse(datePickerEnd.getValue().toString()); - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - ArrayList<CategoryInOutSum> sums = connection.getCategoryInOutSumForMonth(startDate, endDate); - - Platform.runLater(()->{; - vboxChartCategories.getChildren().clear(); - categoriesChart = new CategoriesChart(Localization.getString(Strings.CHART_CATEGORIES_TITLE_INCOMES), - Localization.getString(Strings.CHART_CATEGORIES_TITLE_PAYMENTS), - sums, - controller.getSettings().getCurrency(), - legendType); - vboxChartCategories.getChildren().add(categoriesChart); - VBox.setVgrow(categoriesChart, Priority.ALWAYS); - }); - } - catch(Exception e) - { - Logger.error(e); - Platform.runLater(() -> { - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - }); - } - } - - public void chartCategoriesExport() - { - if(categoriesChart != null) - { - export(categoriesChart); - } - } - - public void chartMonthExport() - { - if(radioButtonLines.isSelected()) - { - if(monthLineChart != null) - { - export(monthLineChart); - } - } - else - { - if(monthBarChart != null) - { - export(monthBarChart); - } - } - } - - public void export(ChartExportable chart) - { - Worker.runLater(() -> { - Platform.runLater(() -> { - new ExportChartController(controller.getStage(), this, chart); - }); - }); - } - - public void chartMonthShow() - { - Platform.runLater(() -> { - vboxChartMonth.getChildren().clear(); - }); - - String startMonth = comboBoxStartMonth.getValue(); - String startYear = comboBoxStartYear.getValue(); - String endMonth = comboBoxEndMonth.getValue(); - String endYear = comboBoxEndYear.getValue(); - - String startDateString = "01-" + startMonth + "-" + startYear; - DateTime startDate = DateTime.parse(startDateString, DateTimeFormat.forPattern("dd-MMMM-YYYY").withLocale(controller.getSettings().getLanguage().getLocale())); - - String endDateString = "01-" + endMonth + "-" + endYear; - DateTime endDate = DateTime.parse(endDateString, DateTimeFormat.forPattern("dd-MMMM-YYYY").withLocale(controller.getSettings().getLanguage().getLocale())); - - if(endDate.isBefore(startDate)) - { - Platform.runLater(() -> { - AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", Localization.getString(Strings.WARNING_ENDDATE_BEFORE_STARTDATE), controller.getIcon(), controller.getStage(), null, false); - }); - return; - } - - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - ArrayList<MonthInOutSum> sums = connection.getMonthInOutSum(startDate, endDate); - - Platform.runLater(() -> { - vboxChartMonth.getChildren().clear(); - - if(radioButtonBars.isSelected()) - { - monthBarChart = new MonthBarChart(sums, controller.getSettings().getCurrency()); - vboxChartMonth.getChildren().add(monthBarChart); - VBox.setVgrow(monthBarChart, Priority.ALWAYS); - } - else - { - monthLineChart = new MonthLineChart(sums, controller.getSettings().getCurrency()); - vboxChartMonth.getChildren().add(monthLineChart); - VBox.setVgrow(monthLineChart, Priority.ALWAYS); - } - }); - } - catch(Exception e) - { - Logger.error(e); - Platform.runLater(() -> { - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - }); - } - } - - public Controller getController() - { - return controller; - } - - public void setLastExportPath(File lastExportPath) - { - this.lastExportPath = lastExportPath; - } - - public File getLastExportPath() - { - return lastExportPath; - } - - @Override - public void refresh() - { - LoadingModal.showModal(controller, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_CHARTS), controller.getStage(), controller.getIcon()); - - // prepare chart categories - LocalDate startDate = LocalDate.parse(controller.getCurrentDate().withDayOfMonth(1).toString("yyyy-MM-dd")); - LocalDate endDate = LocalDate.parse(controller.getCurrentDate().dayOfMonth().withMaximumValue().toString("yyyy-MM-dd")); - - datePickerStart.setValue(startDate); - datePickerEnd.setValue(endDate); - - // chart month - comboBoxStartMonth.setValue(controller.getCurrentDate().minusMonths(5).monthOfYear().getAsText(controller.getSettings().getLanguage().getLocale())); - comboBoxStartYear.setValue(String.valueOf(controller.getCurrentDate().minusMonths(5).getYear())); - - comboBoxEndMonth.setValue(controller.getCurrentDate().plusMonths(6).monthOfYear().getAsText(controller.getSettings().getLanguage().getLocale())); - comboBoxEndYear.setValue(String.valueOf(controller.getCurrentDate().plusMonths(6).getYear())); - - Worker.runLater(() -> { - chartCategoriesShow(LegendType.NORMAL); - chartMonthShow(); - - Platform.runLater(() -> { - LoadingModal.closeModal(); - }); - }); - } - - @Override - public void applyStyle() - { - anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND)); - vboxChartCategories.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND)); - vboxChartCategories.setSpacing(20); - vboxChartMonth.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND)); - - buttonChartCategoriesShow.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE)); - buttonChartCategoriesShow.setGraphic(new FontIcon(FontIconType.CHECK, 16, Color.WHITE)); - - buttonChartCategoriesExport.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE)); - buttonChartCategoriesExport.setGraphic(new FontIcon(FontIconType.SAVE, 16, Color.WHITE)); - - buttonChartMonthShow.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE)); - buttonChartMonthShow.setGraphic(new FontIcon(FontIconType.CHECK, 16, Color.WHITE)); - - buttonChartMonthExport.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE)); - buttonChartMonthExport.setGraphic(new FontIcon(FontIconType.SAVE, 16, Color.WHITE)); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java deleted file mode 100644 index 068b72c5f9d690da5a3c65e9173d501efbe91094..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java +++ /dev/null @@ -1,914 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.awt.Desktop; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Locale; -import java.util.Optional; -import java.util.ResourceBundle; - -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; - -import de.deadlocker8.budgetmaster.logic.FilterSettings; -import de.deadlocker8.budgetmaster.logic.ServerType; -import de.deadlocker8.budgetmaster.logic.Settings; -import de.deadlocker8.budgetmaster.logic.category.CategoryBudget; -import de.deadlocker8.budgetmaster.logic.category.CategoryHandler; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.payment.PaymentHandler; -import de.deadlocker8.budgetmaster.logic.search.SearchPreferences; -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.tag.TagHandler; -import de.deadlocker8.budgetmaster.logic.updater.Updater; -import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.ShutdownHandler; -import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; -import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandLine; -import de.deadlocker8.budgetmasterclient.ui.controller.settings.LocalServerSettingsController; -import de.deadlocker8.budgetmasterclient.ui.controller.settings.SettingsController; -import de.deadlocker8.budgetmasterclient.utils.LoadingModal; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.animation.FadeTransition; -import javafx.animation.SequentialTransition; -import javafx.application.Platform; -import javafx.fxml.FXML; -import javafx.fxml.FXMLLoader; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.Parent; -import javafx.scene.control.Alert; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.ButtonType; -import javafx.scene.control.DialogPane; -import javafx.scene.control.Hyperlink; -import javafx.scene.control.Label; -import javafx.scene.control.Tab; -import javafx.scene.control.TabPane; -import javafx.scene.image.Image; -import javafx.scene.image.ImageView; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyCodeCombination; -import javafx.scene.input.KeyCombination; -import javafx.scene.input.KeyEvent; -import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.layout.VBox; -import javafx.scene.text.Font; -import javafx.scene.text.Text; -import javafx.scene.text.TextFlow; -import javafx.stage.Stage; -import javafx.util.Duration; -import logger.Logger; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.Localization; -import tools.Worker; - -public class Controller extends BaseController -{ - @FXML private AnchorPane anchorPaneMain; - @FXML private Button buttonDate; - @FXML private Button buttonLeft; - @FXML private Button buttonRight; - @FXML private Button buttonToday; - @FXML private Button buttonAbout; - @FXML private TabPane tabPane; - @FXML private Tab tabHome; - @FXML private Tab tabPayments; - @FXML private Tab tabCategories; - @FXML private Tab tabCharts; - @FXML private Tab tabReports; - @FXML private Tab tabSettings; - @FXML private Label labelNotification; - - private HomeController homeController; - private PaymentController paymentController; - private CategoryController categoryController; - private ChartController chartController; - private ReportController reportController; - private SettingsController settingsController; - - private Image icon = new Image("de/deadlocker8/budgetmaster/icon.png"); - private Settings settings; - private ShutdownHandler shutdownHandler; - private DateTime currentDate; - private ArrayList<CategoryBudget> categoryBudgets; - private PaymentHandler paymentHandler; - private CategoryHandler categoryHandler; - private FilterSettings filterSettings; - private Updater updater; - private Payment selectedPayment; - private SearchPreferences searchPreferences; - private CommandLine cmd; - - private boolean alertIsShowing = false; - private static DateTimeFormatter DATE_FORMAT; - - public Controller(Settings settings, ShutdownHandler shutdownHandler) - { - this.settings = settings; - this.shutdownHandler = shutdownHandler; - DATE_FORMAT = DateTimeFormat.forPattern("MMMM yyyy").withLocale(this.settings.getLanguage().getLocale()); - load("/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml", Localization.getBundle()); - getStage().show(); - } - - @Override - public void initStage(Stage stage) - { - stage.setTitle(Localization.getString(Strings.APP_NAME)); - stage.getIcons().add(icon); - stage.setResizable(true); - stage.setWidth(660); - stage.setHeight(725); - stage.setMinWidth(660); - stage.setMinHeight(650); - stage.getScene().getStylesheets().add("/de/deadlocker8/budgetmaster/ui/style.css"); - } - - @Override - public void init() - { - this.shutdownHandler.setController(this); - - getStage().setOnCloseRequest((event)->{ - Runtime.getRuntime().removeShutdownHook(shutdownHandler.getShutdownThread()); - shutdownHandler.shutdown(); - }); - - try - { - Runtime.getRuntime().addShutdownHook(shutdownHandler.getShutdownThread()); - } - catch(IllegalArgumentException e) - { - } - - if(settings.getServerType() == null) - { - settings.setServerType(ServerType.ONLINE); - } - Logger.info("Running with ServerType: " + settings.getServerType()); - - currentDate = DateTime.now(); - buttonDate.setText(currentDate.toString(DATE_FORMAT)); - - filterSettings = new FilterSettings(); - paymentHandler = new PaymentHandler(); - updater = new Updater(); - - CommandBundle commandBundle = new CommandBundle(this); - cmd = new CommandLine(getStage(), icon, ResourceBundle.getBundle("de/deadlocker8/budgetmaster/ui/commandLine/", Locale.ENGLISH), commandBundle); - - if(settings.isAutoUpdateCheckEnabled()) - { - checkForUpdates(false); - } - - final KeyCombination keyCombinationSearch = new KeyCodeCombination(KeyCode.F, KeyCombination.CONTROL_DOWN); - - getStage().getScene().setOnKeyReleased((event)->{ - if(event.getCode().toString().equals(Localization.getString(Strings.SHORTCUT_DEV_CONSOLE))) - { - try - { - cmd.showCommandLine("Dev Console", 400, 250, 400, 200, -1, -1, true); - } - catch(IOException e) - { - Logger.error("Error opening dev console"); - Logger.error(e); - } - } - else if(keyCombinationSearch.match(event)) - { - if(!tabPayments.isDisabled()) - { - tabPane.getSelectionModel().select(tabPayments); - paymentController.search(); - } - } - }); - - initUI(); - } - - private <T> T loadTab(String fileName, Tab tab) throws IOException - { - FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(fileName)); - fxmlLoader.setResources(Localization.getBundle()); - Parent nodeTab = (Parent)fxmlLoader.load(); - tab.setContent(nodeTab); - return fxmlLoader.getController(); - } - - private void initUI() - { - try - { - homeController = loadTab("/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml", tabHome); - homeController.init(this); - - paymentController = loadTab("/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml", tabPayments); - paymentController.init(this); - - categoryController = loadTab("/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml", tabCategories); - categoryController.init(this); - - chartController = loadTab("/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml", tabCharts); - chartController.init(this); - tabCharts.selectedProperty().addListener((a,b,c)->{ - if(c) - { - chartController.refresh(); - } - }); - - reportController = loadTab("/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml", tabReports); - reportController.init(this); - tabReports.selectedProperty().addListener((a,b,c)->{ - if(c) - { - reportController.refresh(); - } - }); - - loadSettingsTab(); - } - catch(IOException e) - { - Logger.error(e); - Platform.runLater(() -> { - AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_CREATE_UI), icon, getStage(), null, false); - }); - } - - buttonLeft.setGraphic(new FontIcon(FontIconType.CHEVRON_LEFT, 20, Colors.TEXT)); - buttonRight.setGraphic(new FontIcon(FontIconType.CHEVRON_RIGHT, 20, Colors.TEXT)); - buttonToday.setGraphic(new FontIcon(FontIconType.CALENDAR_ALT, 20, Colors.TEXT)); - buttonAbout.setGraphic(new FontIcon(FontIconType.INFO, 20, Colors.TEXT)); - - // apply theme - anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_MAIN)); - labelNotification.setStyle("-fx-text-fill: #FFFFFF; -fx-font-size: 16; -fx-font-weight: bold; -fx-background-color: transparent;"); - - buttonDate.setStyle("-fx-padding: 0; -fx-background-color: transparent; -fx-font-weight: bold; -fx-font-size: 24; -fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - buttonDate.getStyleClass().add("button-hoverable"); - - buttonLeft.setStyle("-fx-background-color: transparent;"); - buttonLeft.getStyleClass().add("button-hoverable"); - - buttonRight.setStyle("-fx-background-color: transparent;"); - buttonRight.getStyleClass().add("button-hoverable"); - - buttonToday.setStyle("-fx-background-color: transparent;"); - buttonToday.getStyleClass().add("button-hoverable"); - - buttonAbout.setStyle("-fx-background-color: transparent;"); - buttonAbout.getStyleClass().add("button-hoverable"); - } - - public void loadSettingsTab() - { - try - { - if(settings.getServerType().equals(ServerType.ONLINE)) - { - settingsController = loadTab("/de/deadlocker8/budgetmaster/ui/fxml/SettingsTabOnlineServer.fxml", tabSettings); - settingsController.init(this); - } - else - { - settingsController = loadTab("/de/deadlocker8/budgetmaster/ui/fxml/SettingsTabLocalServer.fxml", tabSettings); - settingsController.init(this); - } - - } - catch(IOException e) - { - Logger.error(e); - Platform.runLater(() -> { - AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_CREATE_UI), icon, getStage(), null, false); - }); - } - } - - public boolean checkSettings() - { - if(!settings.isComplete()) - { - Platform.runLater(() -> { - toggleAllTabsExceptSettings(true); - tabPane.getSelectionModel().select(tabSettings); - AlertGenerator.showAlert(AlertType.INFORMATION, Localization.getString(Strings.TITLE_INFO), "", Localization.getString(Strings.INFO_FIRST_START), icon, getStage(), null, false); - }); - return false; - } - return true; - } - - public Image getIcon() - { - return icon; - } - - public Settings getSettings() - { - return settings; - } - - public void setSettings(Settings settings) - { - this.settings = settings; - } - - public ShutdownHandler getShutdownHandler() - { - return shutdownHandler; - } - - public void showNotification(String text) - { - labelNotification.setText(text); - labelNotification.setStyle("-fx-text-fill: #FFFFFF; -fx-font-size: 16; -fx-font-weight: bold; -fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_NOTIFICATION)); - FadeTransition fadeIn = new FadeTransition(Duration.millis(200), labelNotification); - fadeIn.setFromValue(0.0); - fadeIn.setToValue(1.0); - - FadeTransition fadeOut = new FadeTransition(Duration.millis(400), labelNotification); - fadeOut.setFromValue(1.0); - fadeOut.setToValue(0.0); - fadeOut.setDelay(Duration.millis(3000)); - fadeOut.play(); - - SequentialTransition seqT = new SequentialTransition(fadeIn, fadeOut); - seqT.play(); - seqT.setOnFinished((a) -> { - labelNotification.setStyle("-fx-text-fill: #FFFFFF; -fx-font-size: 16; -fx-font-weight: bold; -fx-background-color: transparent;"); - }); - } - - public void previousMonth() - { - currentDate = currentDate.minusMonths(1); - buttonDate.setText(currentDate.toString(DATE_FORMAT)); - - refresh(filterSettings); - } - - public void nextMonth() - { - currentDate = currentDate.plusMonths(1); - buttonDate.setText(currentDate.toString(DATE_FORMAT)); - - refresh(filterSettings); - } - - public void today() - { - currentDate = DateTime.now(); - buttonDate.setText(currentDate.toString(DATE_FORMAT)); - - refresh(filterSettings); - } - - public void setDate(DateTime newDate) - { - currentDate = newDate; - buttonDate.setText(currentDate.toString(DATE_FORMAT)); - - refresh(filterSettings); - } - - public DateTime getCurrentDate() - { - return currentDate; - } - - public void openDatePicker() - { - new DatePickerController(getStage(), this, currentDate); - } - - public void forceSettingsTab() - { - toggleAllTabsExceptSettings(true); - tabPane.getSelectionModel().select(tabSettings); - } - - public void showConnectionErrorAlert(String errorMessage) - { - if(!alertIsShowing) - { - alertIsShowing = true; - Platform.runLater(() -> { - toggleAllTabsExceptSettings(true); - tabPane.getSelectionModel().select(tabSettings); - - alertIsShowing = true; - Alert alert = new Alert(AlertType.ERROR); - alert.setTitle(Localization.getString(Strings.TITLE_ERROR)); - alert.setHeaderText(""); - if(errorMessage == null) - { - alert.setContentText(Localization.getString(Strings.ERROR_SERVER_CONNECTION)); - } - else - { - alert.setContentText(Localization.getString(Strings.ERROR_SERVER_CONNECTION_WITH_DETAILS, errorMessage)); - } - - Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(icon); - dialogStage.initOwner(getStage()); - alert.showAndWait(); - alertIsShowing = false; - }); - } - } - - public void refreshAllTabs() - { - homeController.refresh(); - paymentController.refresh(); - categoryController.refresh(); - if(tabCharts.isSelected()) - { - chartController.refresh(); - } - if(tabReports.isSelected()) - { - reportController.refresh(); - } - } - - public ArrayList<CategoryBudget> getCategoryBudgets() - { - return categoryBudgets; - } - - public PaymentHandler getPaymentHandler() - { - return paymentHandler; - } - - public CategoryHandler getCategoryHandler() - { - return categoryHandler; - } - - public FilterSettings getFilterSettings() - { - return filterSettings; - } - - public Updater getUpdater() - { - return updater; - } - - public SettingsController getSettingsController() - { - return settingsController; - } - - public void setFilterSettings(FilterSettings filterSettings) - { - this.filterSettings = filterSettings; - } - - public void toggleAllTabsExceptSettings(boolean disable) - { - tabHome.setDisable(disable); - tabPayments.setDisable(disable); - tabCategories.setDisable(disable); - tabCharts.setDisable(disable); - tabReports.setDisable(disable); - buttonLeft.setDisable(disable); - buttonRight.setDisable(disable); - buttonToday.setDisable(disable); - buttonDate.setDisable(disable); - } - - public void setSelectedPayment(Payment payment) - { - selectedPayment = payment; - } - - public Payment getSelectedPayment() - { - return selectedPayment; - } - - public SearchPreferences getSearchPreferences() - { - return searchPreferences; - } - - public void setSearchPreferences(SearchPreferences searchPreferences) - { - this.searchPreferences = searchPreferences; - } - - public PaymentController getPaymentController() - { - return paymentController; - } - - public void checkForUpdates(boolean showNotification) - { - try - { - boolean updateAvailable = updater.isUpdateAvailable(Integer.parseInt(Localization.getString(Strings.VERSION_CODE))); - - if(!updateAvailable) - { - if(showNotification) - { - showNotification(Localization.getString(Strings.NOTIFICATION_NO_UPDATE_AVAILABLE)); - } - return; - } - - Platform.runLater(()->{ - showUpdateAlert(); - }); - } - catch(Exception e) - { - Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_UPDATER_GET_LATEST_VERSION), - icon, null, null, true); - } - } - - private void showUpdateAlert() - { - Alert alert = new Alert(AlertType.INFORMATION); - alert.setTitle(Localization.getString(Strings.INFO_TITLE_UPDATE_AVAILABLE)); - alert.setHeaderText(""); - Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(icon); - - Hyperlink linkText = new Hyperlink(Localization.getString(Strings.INFO_TEXT_UPDATE_AVAILABLE_SHOW_CHANGES)); - linkText.setOnAction((event)->{ - if(Desktop.isDesktopSupported()) - { - try - { - Desktop.getDesktop().browse(new URI(Localization.getString(Strings.ROADMAP_URL))); - } - catch(IOException | URISyntaxException e) - { - Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_OPEN_BROWSER), - icon, getStage(), null, false); - } - } - }); - - Hyperlink detailedMilestones = new Hyperlink(Localization.getString(Strings.INFO_TEXT_UPDATE_AVAILABLE_SHOW_CHANGES_DETAILED)); - detailedMilestones.setOnAction((event)->{ - if(Desktop.isDesktopSupported()) - { - try - { - Desktop.getDesktop().browse(new URI(Localization.getString(Strings.GITHUB_URL))); - } - catch(IOException | URISyntaxException e) - { - Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_OPEN_BROWSER), - icon, getStage(), null, false); - } - } - }); - - TextFlow textFlow = new TextFlow( - new Text(Localization.getString(Strings.INFO_TEXT_UPDATE_AVAILABLE, - updater.getLatestVersion().getVersionName())), - linkText, - new Text("\n\n"), - detailedMilestones - ); - - alert.getDialogPane().setContent(textFlow); - - ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_UPDATE_AVAILABLE_NOW)); - ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.CANCEL)); - alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo); - - DialogPane dialogPane = alert.getDialogPane(); - dialogPane.getButtonTypes().stream().map(dialogPane::lookupButton).forEach(button -> button.addEventHandler(KeyEvent.KEY_PRESSED, (event) -> { - if(KeyCode.ENTER.equals(event.getCode()) && event.getTarget() instanceof Button) - { - ((Button)event.getTarget()).fire(); - } - })); - - Optional<ButtonType> result = alert.showAndWait(); - if (result.get() == buttonTypeOne) - { - LoadingModal.showModal(this, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_UPDATE), getStage(), icon); - - Worker.runLater(() -> { - try - { - updater.downloadLatestVersion(); - Platform.runLater(() -> { - LoadingModal.closeModal(); - }); - } - catch(Exception ex) - { - Logger.error(ex); - Platform.runLater(() -> { - LoadingModal.closeModal(); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_UPDATER_DOWNLOAD_LATEST_VERSION, ex.getMessage()), - icon, getStage(), null, true); - }); - } - }); - } - else - { - alert.close(); - } - } - - private Label getLabelForAboutColumns(String text, boolean bold) - { - Label label = new Label(text); - if(bold) - { - label.setStyle("-fx-font-size: 14; -fx-font-weight: bold;"); - } - else - { - label.setStyle("-fx-font-size: 14;"); - } - return label; - } - - public void about() - { - Alert alert = new Alert(AlertType.NONE); - alert.setTitle(Localization.getString(Strings.ABOUT, Localization.getString(Strings.APP_NAME))); - alert.setHeaderText(""); - Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(icon); - - Hyperlink roadmapLink = new Hyperlink(Localization.getString(Strings.ABOUT_ROADMAP_LINK)); - roadmapLink.setFont(new Font(14)); - roadmapLink.setPadding(new Insets(0)); - roadmapLink.setOnAction((event)->{ - if(Desktop.isDesktopSupported()) - { - try - { - Desktop.getDesktop().browse(new URI(Localization.getString(Strings.ROADMAP_URL))); - } - catch(IOException | URISyntaxException e) - { - Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_OPEN_BROWSER), - icon, getStage(), null, false); - } - } - }); - - Hyperlink githubLink = new Hyperlink(Localization.getString(Strings.GITHUB_URL)); - githubLink.setFont(new Font(14)); - githubLink.setPadding(new Insets(0)); - githubLink.setOnAction((event)->{ - if(Desktop.isDesktopSupported()) - { - try - { - Desktop.getDesktop().browse(new URI(Localization.getString(Strings.GITHUB_URL))); - } - catch(IOException | URISyntaxException e) - { - Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_OPEN_BROWSER), - icon, getStage(), null, false); - } - } - }); - - VBox vbox = new VBox(); - vbox.setSpacing(10); - HBox hboxLogo = new HBox(); - hboxLogo.setSpacing(25); - ImageView imageViewLogo = new ImageView(icon); - imageViewLogo.setFitHeight(75); - imageViewLogo.setFitWidth(75); - hboxLogo.getChildren().add(imageViewLogo); - - Label labelName = new Label(Localization.getString(Strings.ABOUT, Localization.getString(Strings.APP_NAME))); - labelName.setStyle("-fx-font-weight: bold; -fx-font-size: 22;"); - labelName.setMaxWidth(Double.MAX_VALUE); - hboxLogo.getChildren().add(labelName); - HBox.setHgrow(labelName, Priority.ALWAYS); - hboxLogo.setAlignment(Pos.CENTER); - vbox.getChildren().add(hboxLogo); - - HBox hboxColumns = new HBox(); - VBox vboxLeft = new VBox(); - vboxLeft.setSpacing(7); - VBox vboxRight = new VBox(); - vboxRight.setSpacing(7); - - vboxLeft.getChildren().add(getLabelForAboutColumns(Localization.getString(Strings.ABOUT_VERSION), true)); - vboxLeft.getChildren().add(getLabelForAboutColumns(Localization.getString(Strings.ABOUT_DATE), true)); - vboxLeft.getChildren().add(getLabelForAboutColumns(Localization.getString(Strings.ABOUT_AUTHOR), true)); - vboxLeft.getChildren().add(getLabelForAboutColumns(Localization.getString(Strings.ABOUT_ROADMAP), true)); - Label labelSourceCode = getLabelForAboutColumns(Localization.getString(Strings.ABOUT_SOURCECODE), true); - vboxLeft.getChildren().add(labelSourceCode); - VBox.setMargin(labelSourceCode, new Insets(2, 0, 0, 0)); - vboxLeft.getChildren().add(getLabelForAboutColumns(Localization.getString(Strings.ABOUT_CREDITS), true)); - - vboxRight.getChildren().add(getLabelForAboutColumns(Localization.getString(Strings.VERSION_NAME) + " (" + Localization.getString(Strings.VERSION_CODE) + ")", false)); - vboxRight.getChildren().add(getLabelForAboutColumns(Localization.getString(Strings.VERSION_DATE), false)); - vboxRight.getChildren().add(getLabelForAboutColumns(Localization.getString(Strings.AUTHOR), false)); - vboxRight.getChildren().add(roadmapLink); - vboxRight.getChildren().add(githubLink); - - VBox vboxCredits = new VBox(); - for(String line : Localization.getString(Strings.CREDITS).split("\n")) - { - vboxCredits.getChildren().add(getLabelForAboutColumns(line, false)); - } - vboxRight.getChildren().add(vboxCredits); - - vboxLeft.setMinWidth(100); - hboxColumns.getChildren().addAll(vboxLeft, vboxRight); - HBox.setHgrow(vboxLeft, Priority.ALWAYS); - HBox.setHgrow(vboxRight, Priority.ALWAYS); - - vbox.getChildren().add(hboxColumns); - alert.getDialogPane().setContent(vbox); - - alert.getButtonTypes().setAll(new ButtonType(Localization.getString(Strings.OK))); - - DialogPane dialogPane = alert.getDialogPane(); - dialogPane.getButtonTypes().stream().map(dialogPane::lookupButton).forEach(button -> button.addEventHandler(KeyEvent.KEY_PRESSED, (event) -> { - if(KeyCode.ENTER.equals(event.getCode()) && event.getTarget() instanceof Button) - { - ((Button)event.getTarget()).fire(); - } - })); - - alert.showAndWait(); - } - - public void refresh(FilterSettings newFilterSettings) - { - Logger.debug("Starting main refresh..."); - Platform.runLater(()->{ - LoadingModal.showModal(this, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATA), getStage(), icon); - }); - - Worker.runLater(() -> { - try - { - ServerConnection connection = new ServerConnection(settings); - - //check if server is compatible with client - try - { - Logger.debug("Checking server compatibility..."); - VersionInformation serverVersion = connection.getServerVersion(); - if(serverVersion.getVersionCode() < Integer.parseInt(Localization.getString(Strings.VERSION_CODE))) - { - Logger.debug("Server (versionCode: " + serverVersion.getVersionCode() + ") is incompatible with client (versionCode: " + Localization.getString(Strings.VERSION_CODE) + ")"); - if(settings.getServerType().equals(ServerType.ONLINE)) - { - Platform.runLater(()->{ - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_SERVER_VERSION, serverVersion.getVersionName(), Localization.getString(Strings.VERSION_NAME)), - icon, getStage(), null, false); - - LoadingModal.closeModal(); - categoryHandler = new CategoryHandler(null); - toggleAllTabsExceptSettings(true); - tabPane.getSelectionModel().select(tabSettings); - }); - } - else - { - Platform.runLater(()->{ - LoadingModal.closeModal(); - categoryHandler = new CategoryHandler(null); - toggleAllTabsExceptSettings(true); - tabPane.getSelectionModel().select(tabSettings); - ((LocalServerSettingsController)settingsController).handleIncompatibleServer(); - }); - } - return; - } - else - { - Logger.debug("Found compatible server (versionCode: " + serverVersion.getVersionCode() + ")"); - } - } - catch(Exception e1) - { - Logger.error(e1); - Platform.runLater(()->{ - LoadingModal.closeModal(); - }); - - if(e1.getMessage().contains("404")) - { - Logger.debug("Server version is incompatible with current client version (" + Localization.getString(Strings.VERSION_CODE) + ")"); - //old server - Platform.runLater(()->{ - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_SERVER_VERSION, Localization.getString(Strings.UNDEFINED), Localization.getString(Strings.VERSION_NAME)), - icon, getStage(), null, false); - - categoryHandler = new CategoryHandler(null); - toggleAllTabsExceptSettings(true); - tabPane.getSelectionModel().select(tabSettings); - }); - } - else - { - //normal connection error (e.g. server not running) - showConnectionErrorAlert(ExceptionHandler.getMessageForException(e1)); - } - return; - } - - Logger.debug("Connected"); - - paymentHandler = new PaymentHandler(); - paymentHandler.getPayments().addAll(connection.getPayments(currentDate.getYear(), currentDate.getMonthOfYear())); - paymentHandler.getPayments().addAll(connection.getRepeatingPayments(currentDate.getYear(), currentDate.getMonthOfYear())); - paymentHandler.sort(); - if(settings.isRestActivated()) - { - int rest = connection.getRestForAllPreviousMonths(currentDate.getYear(), currentDate.getMonthOfYear()); - //categoryID 2 = Rest - paymentHandler.getPayments().add(new NormalPayment(-1, rest, currentDate.withDayOfMonth(1).toString("yyyy-MM-dd"), 2, Localization.getString(Strings.CATEGORY_REST), "")); - } - - categoryHandler = new CategoryHandler(connection.getCategories()); - - categoryBudgets = connection.getCategoryBudgets(currentDate.getYear(), currentDate.getMonthOfYear()); - paymentHandler.filter(newFilterSettings, new TagHandler(settings)); - Logger.debug("Main refresh done"); - - Platform.runLater(() -> { - LoadingModal.closeModal(); - toggleAllTabsExceptSettings(false); - refreshAllTabs(); - }); - } - catch(Exception e) - { - Logger.error(e); - Platform.runLater(() -> { - LoadingModal.closeModal(); - categoryHandler = new CategoryHandler(null); - showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - refreshAllTabs(); - }); - } - }); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/DatePickerController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/DatePickerController.java deleted file mode 100644 index 8420aba70be1cf53902b2f5aa7abdfc9736f1307..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/DatePickerController.java +++ /dev/null @@ -1,124 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormat; - -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.fxml.FXML; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.ComboBox; -import javafx.scene.control.Spinner; -import javafx.scene.control.SpinnerValueFactory; -import javafx.scene.paint.Color; -import javafx.stage.Modality; -import javafx.stage.Stage; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.Localization; - -public class DatePickerController extends BaseController implements Styleable -{ - @FXML private ComboBox<String> comboBoxMonth; - @FXML private Spinner<Integer> spinnerYear; - @FXML private Button buttonCancel; - @FXML private Button buttonConfirm; - - private Stage parentStage; - private Controller controller; - private DateTime currentDate; - - public DatePickerController(Stage parentStage, Controller controller, DateTime currentDate) - { - this.parentStage = parentStage; - this.controller = controller; - this.currentDate = currentDate; - load("/de/deadlocker8/budgetmaster/ui/fxml/DatePickerGUI.fxml", Localization.getBundle()); - getStage().showAndWait(); - } - - @Override - public void initStage(Stage stage) - { - stage.initOwner(parentStage); - stage.initModality(Modality.APPLICATION_MODAL); - stage.setTitle(Localization.getString(Strings.TITLE_DATEPICKER)); - stage.getIcons().add(controller.getIcon()); - stage.setResizable(false); - } - - @Override - public void init() - { - SpinnerValueFactory<Integer> spinnerYearValueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 3000, currentDate.getYear()); - spinnerYear.setValueFactory(spinnerYearValueFactory); - spinnerYear.setEditable(false); - spinnerYear.focusedProperty().addListener((observable, oldValue, newValue) -> { - if(!newValue) - { - spinnerYear.increment(0); // won't change value, but will commit editor - } - }); - - comboBoxMonth.getItems().addAll(Helpers.getMonthList()); - comboBoxMonth.setValue(Helpers.getMonthList().get(currentDate.getMonthOfYear()-1)); - - applyStyle(); - } - - public void confirm() - { - String year = String.valueOf(spinnerYear.getValue()); - if(year == null || year.equals("")) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_EMPTY_YEAR), - controller.getIcon(), - getStage(), - null, - false); - return; - } - - if(year.length() > 4) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_WRONG_YEAR), - controller.getIcon(), - getStage(), - null, - false); - return; - } - - String dateString = year + "-" + (Helpers.getMonthList().indexOf(comboBoxMonth.getValue()) + 1); - DateTime newDate = DateTime.parse(dateString, DateTimeFormat.forPattern("YYYY-MM")); - - getStage().close(); - controller.setDate(newDate); - } - - public void cancel() - { - getStage().close(); - } - - @Override - public void applyStyle() - { - buttonCancel.setGraphic(new FontIcon(FontIconType.TIMES, 17, Color.WHITE)); - buttonConfirm.setGraphic(new FontIcon(FontIconType.SAVE, 17, Color.WHITE)); - - buttonCancel.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;"); - buttonConfirm.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;"); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ExportChartController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ExportChartController.java deleted file mode 100644 index 8ef7e2be2afc81f503ea92d4b8268e1fd37cbe60..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ExportChartController.java +++ /dev/null @@ -1,326 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.awt.Desktop; -import java.io.File; -import java.io.IOException; -import java.util.Optional; - -import javax.imageio.ImageIO; - -import de.deadlocker8.budgetmaster.logic.charts.ChartExportable; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.embed.swing.SwingFXUtils; -import javafx.fxml.FXML; -import javafx.scene.control.Alert; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.ButtonType; -import javafx.scene.control.DialogPane; -import javafx.scene.control.Label; -import javafx.scene.control.TextField; -import javafx.scene.control.TextFormatter; -import javafx.scene.image.WritableImage; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyEvent; -import javafx.scene.layout.AnchorPane; -import javafx.scene.paint.Color; -import javafx.stage.FileChooser; -import javafx.stage.Modality; -import javafx.stage.Stage; -import logger.Logger; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.Localization; - -public class ExportChartController extends BaseController implements Styleable -{ - @FXML private AnchorPane anchorPaneMain; - @FXML private TextField textFieldWidth; - @FXML private TextField textFieldHeight; - @FXML private Label labelSavePath; - @FXML private Button buttonChooseFile; - @FXML private Button buttonExport; - @FXML private Button buttonCancel; - - private ChartController controller; - private Stage parentStage; - private ChartExportable chart; - private File savePath; - - public ExportChartController(Stage parentStage, ChartController controller, ChartExportable chart) - { - this.parentStage = parentStage; - this.controller = controller; - this.chart = chart; - load("/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml", Localization.getBundle()); - getStage().showAndWait(); - } - - @Override - public void initStage(Stage stage) - { - stage.initOwner(parentStage); - stage.initModality(Modality.APPLICATION_MODAL); - stage.setTitle(Localization.getString(Strings.TITLE_CHART_EXPORT)); - stage.getIcons().add(controller.getController().getIcon()); - stage.setResizable(false); - } - - @Override - public void init() - { - applyStyle(); - - this.savePath = controller.getLastExportPath(); - if(savePath != null) - { - labelSavePath.setText(savePath.getAbsolutePath()); - } - - textFieldWidth.setText(String.valueOf((int)chart.getSuggestedWidth())); - textFieldHeight.setText(String.valueOf((int)chart.getSuggestedHeight())); - - textFieldWidth.setTextFormatter(new TextFormatter<>(c -> { - if(c.getControlNewText().isEmpty()) - { - return c; - } - - if(c.getControlNewText().matches("[0-9]*")) - { - return c; - } - else - { - return null; - } - })); - - textFieldHeight.setTextFormatter(new TextFormatter<>(c -> { - if(c.getControlNewText().isEmpty()) - { - return c; - } - - if(c.getControlNewText().matches("[0-9]*")) - { - return c; - } - else - { - return null; - } - })); - } - - public void chooseFile() - { - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle(Localization.getString(Strings.TITLE_CHART_EXPORT)); - FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("PNG (*.png)", "*.png"); - if(savePath != null) - { - fileChooser.setInitialDirectory(savePath.getParentFile()); - fileChooser.setInitialFileName(savePath.getName()); - } - fileChooser.getExtensionFilters().add(extFilter); - File file = fileChooser.showSaveDialog(getStage()); - if(file != null) - { - savePath = file; - labelSavePath.setText(file.getAbsolutePath()); - } - } - - public void export() - { - String widthText = textFieldWidth.getText(); - if(widthText == null || widthText.equals("")) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_EMPTY_WIDTH_IN_PIXELS), - controller.getController().getIcon(), - getStage(), - null, - false); - return; - } - - int width = 0; - try - { - width = Integer.parseInt(widthText); - } - catch(Exception e) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_INTEGER_WIDTH_IN_PIXELS), - controller.getController().getIcon(), - getStage(), - null, - false); - return; - } - - String heightText = textFieldHeight.getText(); - if(heightText == null || heightText.equals("")) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_EMPTY_HEIGHT_IN_PIXELS), - controller.getController().getIcon(), - getStage(), - null, - false); - return; - } - - int height = 0; - try - { - height = Integer.parseInt(heightText); - } - catch(Exception e) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_INTEGER_HEIGHT_IN_PIXELS), - controller.getController().getIcon(), - getStage(), - null, - false); - return; - } - - if(savePath == null) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_EMPTY_SAVEPATH_CHART), - controller.getController().getIcon(), - getStage(), - null, - false); - return; - } - - WritableImage image = chart.export(width, height); - - try - { - ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", savePath); - - Alert alert = new Alert(AlertType.INFORMATION); - alert.setTitle(Localization.getString(Strings.INFO_TITLE_CHART_EXPORT)); - alert.initOwner(controller.getController().getStage()); - alert.setHeaderText(""); - alert.setContentText(Localization.getString(Strings.INFO_TEXT_CHART_EXPORT)); - Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(controller.getController().getIcon()); - - ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_CHART_EXPORT_OPEN_FOLDER)); - ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.INFO_TEXT_CHART_EXPORT_OPEN_CHART)); - ButtonType buttonTypeThree = new ButtonType(Localization.getString(Strings.OK)); - alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo, buttonTypeThree); - - DialogPane dialogPane = alert.getDialogPane(); - dialogPane.getButtonTypes().stream().map(dialogPane::lookupButton).forEach(button -> button.addEventHandler(KeyEvent.KEY_PRESSED, (event) -> { - if(KeyCode.ENTER.equals(event.getCode()) && event.getTarget() instanceof Button) - { - ((Button)event.getTarget()).fire(); - } - })); - - Optional<ButtonType> result = alert.showAndWait(); - if (result.get() == buttonTypeOne) - { - try - { - Desktop.getDesktop().open(new File(savePath.getParent().replace("\\", "/"))); - } - catch(IOException e1) - { - Logger.error(e1); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_OPEN_FOLDER, e1.getMessage()), - controller.getController().getIcon(), - getStage(), - null, - false); - } - } - else if (result.get() == buttonTypeTwo) - { - try - { - Desktop.getDesktop().open(new File(savePath.getAbsolutePath().replace("\\", "/"))); - } - catch(IOException e1) - { - Logger.error(e1); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_OPEN_CHART, e1.getMessage()), - controller.getController().getIcon(), - getStage(), - null, - false); - } - } - else - { - alert.close(); - } - } - catch(IOException e) - { - Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_CHART_EXPORT, e.getMessage()), - controller.getController().getIcon(), - getStage(), - null, - false); - } - - getStage().close(); - controller.getController().showNotification(Localization.getString(Strings.NOTIFICATION_CHART_EXPORT)); - controller.setLastExportPath(savePath); - } - - public void cancel() - { - getStage().close(); - } - - @Override - public void applyStyle() - { - anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND)); - - buttonChooseFile.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - buttonChooseFile.setGraphic(new FontIcon(FontIconType.FOLDER_OPEN, 14, Color.WHITE)); - - buttonExport.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - buttonExport.setGraphic(new FontIcon(FontIconType.SAVE, 14, Color.WHITE)); - - buttonCancel.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - buttonCancel.setGraphic(new FontIcon(FontIconType.TIMES, 14, Color.WHITE)); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/FilterController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/FilterController.java deleted file mode 100644 index c092a851c31ab9b5359cd9b6c4dd8555ea8c2bbf..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/FilterController.java +++ /dev/null @@ -1,282 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.FilterSettings; -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerTagConnection; -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.fxml.FXML; -import javafx.scene.Node; -import javafx.scene.control.Button; -import javafx.scene.control.CheckBox; -import javafx.scene.control.Label; -import javafx.scene.control.ScrollPane; -import javafx.scene.control.TextField; -import javafx.scene.input.KeyCode; -import javafx.scene.layout.VBox; -import javafx.scene.paint.Color; -import javafx.stage.Modality; -import javafx.stage.Stage; -import logger.Logger; -import tools.ConvertTo; -import tools.Localization; - -public class FilterController extends BaseController implements Styleable -{ - @FXML private ScrollPane scrollPane; - @FXML private VBox vboxMain; - @FXML private CheckBox checkBoxIncome; - @FXML private CheckBox checkBoxPayment; - @FXML private CheckBox checkBoxNoRepeating; - @FXML private CheckBox checkBoxMonthlyRepeating; - @FXML private CheckBox checkBoxRepeatEveryXDays; - @FXML private VBox vboxCategories; - @FXML private TextField textFieldSearch; - @FXML private VBox vboxTags; - @FXML private Button buttonCancel; - @FXML private Button buttonReset; - @FXML private Button buttonFilter; - @FXML private Button buttonCategoryAll; - @FXML private Button buttonCategoryNone; - @FXML private Button buttonTagsAll; - @FXML private Button buttonTagsNone; - @FXML private Label labelSeparator; - @FXML private Label labelSeparatorHorizontalLeft; - @FXML private Label labelSeparatorHorizontalRight; - - private Stage parentStage; - private Controller controller; - private FilterSettings filterSetttings; - private ArrayList<Tag> allTags; - - public FilterController(Stage parentStage, Controller controller, FilterSettings filterSettings) - { - this.parentStage = parentStage; - this.controller = controller; - this.filterSetttings = filterSettings; - load("/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml", Localization.getBundle()); - getStage().showAndWait(); - } - - @Override - public void initStage(Stage stage) - { - stage.initOwner(parentStage); - stage.initModality(Modality.APPLICATION_MODAL); - stage.setTitle(Localization.getString(Strings.TITLE_FILTER)); - stage.getIcons().add(controller.getIcon()); - stage.setResizable(true); - stage.setMinHeight(600); - stage.setMinWidth(475); - } - - @Override - public void init() - { - applyStyle(); - - for(Category currentCategory : controller.getCategoryHandler().getCategories()) - { - CheckBox newCheckBox = new CheckBox(); - newCheckBox.setText(currentCategory.getName()); - newCheckBox.setUserData(currentCategory.getID()); - newCheckBox.setStyle("-fx-font-size: 14;"); - vboxCategories.getChildren().add(newCheckBox); - } - - try - { - ServerTagConnection connection = new ServerTagConnection(controller.getSettings()); - allTags = connection.getTags(); - for(Tag currentTag : allTags) - { - CheckBox newCheckBox = new CheckBox(); - newCheckBox.setText(currentTag.getName()); - newCheckBox.setUserData(currentTag.getID()); - newCheckBox.setStyle("-fx-font-size: 14;"); - vboxTags.getChildren().add(newCheckBox); - } - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - return; - } - - textFieldSearch.setOnKeyPressed((event)->{ - if(event.getCode().equals(KeyCode.ENTER)) - { - filter(); - } - }); - - vboxMain.prefWidthProperty().bind(scrollPane.widthProperty().subtract(5)); - vboxMain.prefHeightProperty().bind(scrollPane.heightProperty().subtract(5)); - preselect(); - } - - private void preselect() - { - checkBoxIncome.setSelected(filterSetttings.isIncomeAllowed()); - checkBoxPayment.setSelected(filterSetttings.isPaymentAllowed()); - checkBoxNoRepeating.setSelected(filterSetttings.isNoRepeatingAllowed()); - checkBoxMonthlyRepeating.setSelected(filterSetttings.isMonthlyRepeatingAllowed()); - checkBoxRepeatEveryXDays.setSelected(filterSetttings.isRepeatingEveryXDaysAllowed()); - - ArrayList<Integer> allowedCategoryIDs = filterSetttings.getAllowedCategoryIDs(); - for(Node node : vboxCategories.getChildren()) - { - CheckBox currentCheckBox = (CheckBox)node; - if(allowedCategoryIDs == null || allowedCategoryIDs.contains(currentCheckBox.getUserData())) - { - currentCheckBox.setSelected(true); - } - } - - ArrayList<Integer> allowedTagIDs = filterSetttings.getAllowedTagIDs(); - for(Node node : vboxTags.getChildren()) - { - CheckBox currentCheckBox = (CheckBox)node; - if(allowedTagIDs == null || allowedTagIDs.contains(currentCheckBox.getUserData())) - { - currentCheckBox.setSelected(true); - } - } - - textFieldSearch.setText(filterSetttings.getName()); - } - - public void filter() - { - boolean isIncomeAllowed = checkBoxIncome.isSelected(); - boolean isPaymentAllowed = checkBoxPayment.isSelected(); - - boolean isNoRepeatingAllowed = checkBoxNoRepeating.isSelected(); - boolean isMonthlyRepeatingAllowed = checkBoxMonthlyRepeating.isSelected(); - boolean isRepeatingEveryXDaysAllowed = checkBoxRepeatEveryXDays.isSelected(); - - ArrayList<Integer> allowedCategoryIDs = new ArrayList<>(); - for(Node node : vboxCategories.getChildren()) - { - CheckBox currentCheckBox = (CheckBox)node; - if(currentCheckBox.isSelected()) - { - allowedCategoryIDs.add((int)currentCheckBox.getUserData()); - } - } - - if(allowedCategoryIDs.size() == controller.getCategoryHandler().getCategories().size()) - { - allowedCategoryIDs = null; - } - - String name = textFieldSearch.getText(); - if(name != null && name.equals("")) - { - name = null; - } - - ArrayList<Integer> allowedTagIDs = new ArrayList<>(); - for(Node node : vboxTags.getChildren()) - { - CheckBox currentCheckBox = (CheckBox)node; - if(currentCheckBox.isSelected()) - { - allowedTagIDs.add((int)currentCheckBox.getUserData()); - } - } - - if(allowedTagIDs.size() == allTags.size()) - { - allowedTagIDs = null; - } - - FilterSettings newFilterSettings = new FilterSettings(isIncomeAllowed, isPaymentAllowed, isNoRepeatingAllowed, isMonthlyRepeatingAllowed, isRepeatingEveryXDaysAllowed, allowedCategoryIDs, allowedTagIDs, name); - controller.setFilterSettings(newFilterSettings); - controller.refresh(newFilterSettings); - getStage().close(); - } - - public void reset() - { - filterSetttings = new FilterSettings(); - getStage().close(); - controller.setFilterSettings(filterSetttings); - controller.refresh(filterSetttings); - } - - public void cancel() - { - getStage().close(); - } - - public void enableAllCategories() - { - for(Node node : vboxCategories.getChildren()) - { - ((CheckBox)node).setSelected(true); - } - } - - public void disableAllCategories() - { - for(Node node : vboxCategories.getChildren()) - { - ((CheckBox)node).setSelected(false); - } - } - - public void enableAllTags() - { - for(Node node : vboxTags.getChildren()) - { - ((CheckBox)node).setSelected(true); - } - } - - public void disableAllTags() - { - for(Node node : vboxTags.getChildren()) - { - ((CheckBox)node).setSelected(false); - } - } - - @Override - public void applyStyle() - { - buttonCancel.setGraphic(new FontIcon(FontIconType.TIMES, 17, Color.WHITE)); - buttonReset.setGraphic(new FontIcon(FontIconType.UNDO, 17, Color.WHITE)); - buttonFilter.setGraphic(new FontIcon(FontIconType.FILTER, 17, Color.WHITE)); - - scrollPane.setStyle("-fx-background-color: transparent"); - - labelSeparator.setStyle("-fx-background-color: #CCCCCC;"); - labelSeparator.setMinWidth(1); - labelSeparator.setMaxWidth(1); - - labelSeparatorHorizontalLeft.setStyle("-fx-background-color: #CCCCCC;"); - labelSeparatorHorizontalLeft.setMinHeight(1); - labelSeparatorHorizontalLeft.setMaxHeight(1); - - labelSeparatorHorizontalRight.setStyle("-fx-background-color: #CCCCCC;"); - labelSeparatorHorizontalRight.setMinHeight(1); - labelSeparatorHorizontalRight.setMaxHeight(1); - - buttonCancel.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;"); - buttonReset.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;"); - buttonFilter.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;"); - buttonCategoryAll.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 13;"); - buttonCategoryNone.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 13;"); - buttonTagsAll.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 13;"); - buttonTagsNone.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 13;"); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/HomeController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/HomeController.java deleted file mode 100644 index 3f508660024cb93ebda4d1a086377678f75941ea..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/HomeController.java +++ /dev/null @@ -1,108 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.Budget; -import de.deadlocker8.budgetmaster.logic.category.CategoryBudget; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.Refreshable; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import de.deadlocker8.budgetmasterclient.ui.cells.CategoryBudgetCell; -import javafx.application.Platform; -import javafx.beans.value.ChangeListener; -import javafx.fxml.FXML; -import javafx.scene.control.Label; -import javafx.scene.control.ListView; -import javafx.scene.control.ProgressBar; -import javafx.scene.layout.AnchorPane; -import tools.ConvertTo; -import tools.Localization; - -public class HomeController implements Refreshable, Styleable -{ - @FXML private AnchorPane anchorPaneMain; - @FXML private Label labelBudget; - @FXML private Label labelStartBudget; - @FXML private ProgressBar progressBar; - @FXML private ListView<CategoryBudget> listView; - - private Controller controller; - - public void init(Controller controller) - { - this.controller = controller; - - HomeController thisController = this; - listView.setCellFactory(param -> new CategoryBudgetCell(thisController)); - - Label labelPlaceholder = new Label(Localization.getString(Strings.HOME_PLACEHOLDER)); - labelPlaceholder.setStyle("-fx-font-size: 16"); - listView.setPlaceholder(labelPlaceholder); - - listView.getSelectionModel().selectedIndexProperty().addListener((ChangeListener<Number>)(observable, oldValue, newValue) -> Platform.runLater(() -> listView.getSelectionModel().select(-1))); - - applyStyle(); - } - - private void refreshListView() - { - listView.getItems().clear(); - - ArrayList<CategoryBudget> categoryBudgets = controller.getCategoryBudgets(); - if(categoryBudgets != null) - { - listView.getItems().setAll(categoryBudgets); - } - } - - private void refreshCounter() - { - if(controller.getPaymentHandler().getPayments() != null) - { - Budget budget = new Budget(controller.getPaymentHandler().getPayments()); - double remaining = budget.getIncomeSum() + budget.getPaymentSum(); - String currency = "€"; - if(controller.getSettings() != null) - { - currency = controller.getSettings().getCurrency(); - } - labelBudget.setText(Helpers.getCurrencyString(remaining, currency)); - if(remaining <= 0) - { - labelBudget.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT_RED)); - } - else - { - labelBudget.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - } - labelStartBudget.setText(Localization.getString(Strings.HOME_BUDGET, Helpers.getCurrencyString(budget.getIncomeSum(), currency))); - - double factor = remaining / budget.getIncomeSum(); - if(factor < 0) - { - factor = 0; - } - progressBar.setProgress(factor); - } - } - - public Controller getController() - { - return controller; - } - - @Override - public void refresh() - { - refreshListView(); - refreshCounter(); - } - - @Override - public void applyStyle() - { - anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND)); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ModalController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ModalController.java deleted file mode 100644 index 24545fc527f779015893d6de00850a10934efaa4..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ModalController.java +++ /dev/null @@ -1,75 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.util.Optional; - -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import javafx.fxml.FXML; -import javafx.scene.control.Alert; -import javafx.scene.control.Button; -import javafx.scene.control.ButtonType; -import javafx.scene.control.DialogPane; -import javafx.scene.control.Label; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyEvent; -import javafx.stage.Modality; -import javafx.stage.Stage; -import javafx.stage.WindowEvent; -import logger.Logger; -import tools.Localization; - -public class ModalController -{ - @FXML private Label labelMessage; - private Alert alert; - - public void init(Controller controller, Stage stage, String message) - { - labelMessage.setText(message); - stage.setOnCloseRequest((e)->{ - alert = new Alert(AlertType.CONFIRMATION); - alert.setTitle(Localization.getString(Strings.INFO_TITLE_SHUTDOWN)); - alert.initModality(Modality.APPLICATION_MODAL); - alert.initOwner(controller.getStage()); - alert.setHeaderText(""); - alert.setContentText(Localization.getString(Strings.INFO_TEXT_SHUTDOWN)); - Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(controller.getIcon()); - - ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.CANCEL)); - ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.OK)); - alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo); - - DialogPane dialogPane = alert.getDialogPane(); - dialogPane.getButtonTypes().stream().map(dialogPane::lookupButton).forEach(button -> button.addEventHandler(KeyEvent.KEY_PRESSED, (event) -> { - if(KeyCode.ENTER.equals(event.getCode()) && event.getTarget() instanceof Button) - { - ((Button)event.getTarget()).fire(); - } - })); - - Optional<ButtonType> result = alert.showAndWait(); - if (result.get() == buttonTypeTwo) - { - Logger.debug("Shutting down during operation due to client request..."); - controller.getStage().fireEvent(new WindowEvent(controller.getStage(), WindowEvent.WINDOW_CLOSE_REQUEST)); - } - - e.consume(); - }); - } - - public void setMessage(String message) - { - labelMessage.setText(message); - } - - public void closeAlert() - { - if(alert != null && alert.isShowing()) - { - Button cancelButton = ( Button ) alert.getDialogPane().lookupButton(alert.getButtonTypes().get(0)); - cancelButton.fire(); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/NewCategoryController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/NewCategoryController.java deleted file mode 100644 index 91dfbd525809f8c4f2eb9a69864015c518f425aa..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/NewCategoryController.java +++ /dev/null @@ -1,214 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.util.ArrayList; - -import org.controlsfx.control.PopOver; -import org.controlsfx.control.PopOver.ArrowLocation; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import de.deadlocker8.budgetmasterclient.ui.colorPick.ColorView; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.fxml.FXML; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.TextField; -import javafx.scene.paint.Color; -import javafx.stage.Modality; -import javafx.stage.Stage; -import javafx.util.Duration; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.Localization; - -public class NewCategoryController extends BaseController implements Styleable -{ - @FXML private TextField textFieldName; - @FXML private Button buttonColor; - @FXML private Button buttonCancel; - @FXML private Button buttonSave; - - private Stage parentStage; - private Controller controller; - private CategoryController categoryController; - private boolean edit; - private Color color; - private PopOver colorChooser; - private ColorView colorView; - private Category category; - - public NewCategoryController(Stage parentStage, Controller controller, CategoryController categoryController, boolean edit, Category category) - { - this.parentStage = parentStage; - this.controller = controller; - this.categoryController = categoryController; - this.edit = edit; - this.color = null; - this.category = category; - load("/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml", Localization.getBundle()); - getStage().showAndWait(); - } - - @Override - public void initStage(Stage stage) - { - stage.initOwner(parentStage); - stage.initModality(Modality.APPLICATION_MODAL); - - if(edit) - { - stage.setTitle(Localization.getString(Strings.TITLE_CATEGORY_EDIT)); - } - else - { - stage.setTitle(Localization.getString(Strings.TITLE_CATEGORY_NEW)); - } - - stage.getIcons().add(controller.getIcon()); - stage.setResizable(false); - stage.getScene().getStylesheets().add("/de/deadlocker8/budgetmaster/ui/style.css"); - } - - @Override - public void init() - { - applyStyle(); - - buttonColor.prefWidthProperty().bind(textFieldName.widthProperty()); - - ArrayList<Color> colors = Helpers.getCategoryColorList(); - - buttonColor.setOnMouseClicked((e) -> { - - if(colorChooser == null || !colorChooser.isShowing()) - { - colorChooser = new PopOver(); - colorChooser.setContentNode(colorView); - colorChooser.setDetachable(false); - colorChooser.setAutoHide(true); - colorChooser.setCornerRadius(5); - colorChooser.setArrowLocation(ArrowLocation.LEFT_CENTER); - colorChooser.setOnHiding(event -> colorChooser = null); - colorChooser.show(buttonColor); - } - }); - - getStage().setOnCloseRequest(event -> { - if(colorChooser != null) - { - colorChooser.hide(Duration.millis(0)); - } - }); - - if(edit) - { - textFieldName.setText(category.getName()); - colorView = new ColorView(Color.web(category.getColor()), colors, this, (finishColor) -> { - setColor(finishColor); - }); - setColor(Color.web(category.getColor())); - } - else - { - colorView = new ColorView(colors.get(0), colors, this, (finishColor) -> { - setColor(finishColor); - }); - setColor(colors.get(0)); - } - } - - private void setColor(Color color) - { - this.color = color; - buttonColor.setStyle("-fx-border-color: #000000; -fx-border-width: 2; -fx-border-radius: 5; -fx-background-radius: 5; -fx-background-color: " + ConvertTo.toRGBHex(color)); - if(colorChooser != null) - { - colorChooser.hide(Duration.millis(0)); - } - } - - public void save() - { - String name = textFieldName.getText(); - if(name == null || name.equals("")) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_EMPTY_CATEGORY_NAME), - controller.getIcon(), - controller.getStage(), - null, - false); - return; - } - - if(name.length() > 45) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_NAME_CHARACTER_LIMIT_REACHED_45), - controller.getIcon(), - controller.getStage(), - null, - false); - return; - } - - if(edit) - { - category.setName(name); - category.setColor(ConvertTo.toRGBHexWithoutOpacity(color)); - ServerConnection connection; - try - { - connection = new ServerConnection(controller.getSettings()); - connection.updateCategory(category); - } - catch(Exception e) - { - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - } - } - else - { - Category newCategory = new Category(name, ConvertTo.toRGBHexWithoutOpacity(color)); - ServerConnection connection; - try - { - connection = new ServerConnection(controller.getSettings()); - connection.addCategory(newCategory); - } - catch(Exception e) - { - controller.showConnectionErrorAlert(e.getMessage()); - } - } - - getStage().close(); - categoryController.getController().refresh(controller.getFilterSettings()); - } - - public void cancel() - { - getStage().close(); - } - - @Override - public void applyStyle() - { - buttonCancel.setGraphic(new FontIcon(FontIconType.TIMES, 17, Color.WHITE)); - buttonSave.setGraphic(new FontIcon(FontIconType.SAVE, 17, Color.WHITE)); - - buttonCancel.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;"); - buttonSave.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;"); - buttonColor.setStyle("-fx-border-color: #000000; -fx-border-width: 2; -fx-border-radius: 5; -fx-background-radius: 5;"); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/NewPaymentController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/NewPaymentController.java deleted file mode 100644 index 66a16cd4aec8cda175ca78542d1d79bbb3ab7279..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/NewPaymentController.java +++ /dev/null @@ -1,707 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.util.ArrayList; - -import org.joda.time.DateTime; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerTagConnection; -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import de.deadlocker8.budgetmasterclient.ui.cells.ButtonCategoryCell; -import de.deadlocker8.budgetmasterclient.ui.cells.RepeatingDayCell; -import de.deadlocker8.budgetmasterclient.ui.cells.SmallCategoryCell; -import de.deadlocker8.budgetmasterclient.ui.tagField.TagField; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.fxml.FXML; -import javafx.geometry.Insets; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.CheckBox; -import javafx.scene.control.ComboBox; -import javafx.scene.control.DateCell; -import javafx.scene.control.DatePicker; -import javafx.scene.control.Label; -import javafx.scene.control.RadioButton; -import javafx.scene.control.ScrollPane; -import javafx.scene.control.Spinner; -import javafx.scene.control.SpinnerValueFactory; -import javafx.scene.control.TextArea; -import javafx.scene.control.TextField; -import javafx.scene.control.ToggleGroup; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.layout.VBox; -import javafx.scene.paint.Color; -import javafx.stage.Modality; -import javafx.stage.Stage; -import logger.Logger; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.Localization; - -public class NewPaymentController extends BaseController implements Styleable -{ - @FXML private ScrollPane scrollPane; - @FXML private VBox vboxContent; - @FXML private TextField textFieldName; - @FXML private TextField textFieldAmount; - @FXML private Button buttonCancel; - @FXML private Button buttonSave; - @FXML private ComboBox<Category> comboBoxCategory; - @FXML private DatePicker datePicker; - @FXML private DatePicker datePickerEnddate; - @FXML private Spinner<Integer> spinnerRepeatingPeriod; - @FXML private ComboBox<Integer> comboBoxRepeatingDay; - @FXML private CheckBox checkBoxRepeat; - @FXML private RadioButton radioButtonPeriod; - @FXML private RadioButton radioButtonDay; - @FXML private Label labelText1, labelText2, labelText3; - @FXML private TextArea textArea; - @FXML private HBox hboxTags; - @FXML private Button buttonTagsHelp; - @FXML private CheckBox checkBoxEndDate; - - private Stage parentStage; - private Controller controller; - private PaymentController paymentController; - private boolean isPayment; - private boolean edit; - private Payment payment; - private ButtonCategoryCell buttonCategoryCell; - private TagField tagField; - private ArrayList<Tag> previousTags; - - public NewPaymentController(Stage parentStage, Controller controller, PaymentController paymentController, boolean isPayment, boolean edit, Payment payment) - { - this.parentStage = parentStage; - this.controller = controller; - this.paymentController = paymentController; - this.isPayment = isPayment; - this.edit = edit; - this.payment = payment; - load("/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml", Localization.getBundle()); - getStage().showAndWait(); - } - - @Override - public void initStage(Stage stage) - { - stage.initOwner(parentStage); - stage.initModality(Modality.APPLICATION_MODAL); - String titlePart; - - titlePart = isPayment ? Localization.getString(Strings.TITLE_PAYMENT) : Localization.getString(Strings.TITLE_INCOME); - - if(edit) - { - stage.setTitle(Localization.getString(Strings.TITLE_PAYMENT_EDIT, titlePart)); - } - else - { - stage.setTitle(Localization.getString(Strings.TITLE_PAYMENT_NEW, titlePart)); - } - - stage.getIcons().add(controller.getIcon()); - stage.setResizable(true); - stage.setMinHeight(600); - stage.setMinWidth(450); - stage.getScene().getStylesheets().add("/de/deadlocker8/budgetmaster/ui/style.css"); - } - - @Override - public void init() - { - vboxContent.prefWidthProperty().bind(scrollPane.widthProperty().subtract(25)); - vboxContent.prefHeightProperty().bind(scrollPane.heightProperty().subtract(10)); - - applyStyle(); - - tagField = new TagField(new ArrayList<Tag>(), new ArrayList<Tag>(), this); - hboxTags.getChildren().add(tagField); - tagField.maxWidthProperty().bind(hboxTags.widthProperty()); - HBox.setHgrow(tagField, Priority.ALWAYS); - - previousTags = new ArrayList<>(); - - initRepeatingArea(); - - if(edit) - { - prefill(); - } - else - { - comboBoxCategory.setValue(controller.getCategoryHandler().getCategory(1)); - checkBoxRepeat.setSelected(false); - radioButtonPeriod.setSelected(true); - toggleRepeatingArea(false); - - //preselect correct month and year - DateTime currentDate = controller.getCurrentDate(); - if(DateTime.now().getDayOfMonth() > currentDate.dayOfMonth().withMaximumValue().getDayOfMonth()) - { - currentDate = currentDate.dayOfMonth().withMaximumValue(); - } - - LocalDate currentLocalDate = LocalDate.now().withYear(currentDate.getYear()) - .withMonth(currentDate.getMonthOfYear()) - .withDayOfMonth(currentDate.getDayOfMonth()); - datePicker.setValue(currentLocalDate); - datePickerEnddate.setValue(currentLocalDate); - - try - { - ServerTagConnection serverTagConnection = new ServerTagConnection(controller.getSettings()); - tagField.setAllTags(serverTagConnection.getTags()); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - } - } - - datePicker.setEditable(false); - } - - public Controller getController() - { - return controller; - } - - private void initComboBoxCategory() - { - buttonCategoryCell = new ButtonCategoryCell(Color.WHITE); - comboBoxCategory.setButtonCell(buttonCategoryCell); - comboBoxCategory.setStyle("-fx-border-color: #000000; -fx-border-width: 2; -fx-border-radius: 5; -fx-background-radius: 5;"); - comboBoxCategory.valueProperty().addListener((listener, oldValue, newValue) -> { - comboBoxCategory.setStyle("-fx-background-color: " + newValue.getColor() + "; -fx-border-color: #000000; -fx-border-width: 2; -fx-border-radius: 5; -fx-background-radius: 5;"); - buttonCategoryCell.setColor(Color.web(newValue.getColor())); - }); - comboBoxCategory.setCellFactory((view) -> { - return new SmallCategoryCell(); - }); - - comboBoxCategory.getItems().clear(); - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - ArrayList<Category> categories = connection.getCategories(); - if(categories != null) - { - for(Category currentCategory : categories) - { - if(currentCategory.getID() != 2) - { - comboBoxCategory.getItems().add(currentCategory); - } - } - } - } - catch(Exception e) - { - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - getStage().close(); - return; - } - } - - private void initRepeatingArea() - { - checkBoxRepeat.selectedProperty().addListener((listener, oldValue, newValue) -> { - toggleRepeatingArea(newValue); - }); - - initSpinnerRepeatingPeriod(); - initComboBoxRepeatingDay(); - initComboBoxCategory(); - - final ToggleGroup toggleGroup = new ToggleGroup(); - radioButtonPeriod.setToggleGroup(toggleGroup); - radioButtonDay.setToggleGroup(toggleGroup); - radioButtonPeriod.selectedProperty().addListener((listener, oldValue, newValue) -> { - toggleRadioButtonPeriod(newValue); - }); - - datePickerEnddate.setDayCellFactory((p) -> new DateCell() - { - @Override - public void updateItem(LocalDate ld, boolean bln) - { - super.updateItem(ld, bln); - - if(datePicker.getValue() != null && ld.isBefore(datePicker.getValue())) - { - setDisable(true); - setStyle("-fx-background-color: #ffc0cb;"); - } - } - }); - - checkBoxEndDate.selectedProperty().addListener((obs, oldValue, newValue)->{ - datePickerEnddate.setDisable(!newValue); - }); - } - - private void initSpinnerRepeatingPeriod() - { - SpinnerValueFactory<Integer> valueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 1000, 0); - spinnerRepeatingPeriod.setValueFactory(valueFactory); - spinnerRepeatingPeriod.setEditable(false); - spinnerRepeatingPeriod.focusedProperty().addListener((observable, oldValue, newValue) -> { - if(!newValue) - { - spinnerRepeatingPeriod.increment(0); // won't change value, but will commit editor - } - }); - } - - private void initComboBoxRepeatingDay() - { - comboBoxRepeatingDay.setCellFactory((view) -> { - return new RepeatingDayCell(); - }); - ArrayList<Integer> days = new ArrayList<>(); - for(int i = 1; i <= 31; i++) - { - days.add(i); - } - comboBoxRepeatingDay.getItems().addAll(days); - comboBoxRepeatingDay.setValue(1); - } - - private void prefill() - { - textFieldName.setText(payment.getName()); - textFieldAmount.setText(Helpers.NUMBER_FORMAT.format(Math.abs(payment.getAmount()/100.0)).replace(".", ",")); - comboBoxCategory.setValue(controller.getCategoryHandler().getCategory(payment.getCategoryID())); - datePicker.setValue(LocalDate.parse(payment.getDate())); - textArea.setText(payment.getDescription()); - - try - { - ServerTagConnection serverTagConnection = new ServerTagConnection(controller.getSettings()); - tagField.setAllTags(serverTagConnection.getTags()); - - if(payment instanceof RepeatingPayment) - { - //search gets RepeatingPayments instead of RepeatingPaymenEntries --> convert it to RepeatingPaymentEntry to maintain compatibility - RepeatingPayment tempPayment = (RepeatingPayment)payment; - payment = new RepeatingPaymentEntry(-1, - tempPayment.getID(), - tempPayment.getDate(), - tempPayment.getAmount(), - tempPayment.getCategoryID(), - tempPayment.getName(), - tempPayment.getDescription(), - tempPayment.getRepeatInterval(), - tempPayment.getRepeatEndDate(), - tempPayment.getRepeatMonthDay()); - } - - if(payment instanceof RepeatingPaymentEntry) - { - try - { - RepeatingPaymentEntry currentPayment = (RepeatingPaymentEntry)payment; - previousTags = serverTagConnection.getAllTagsForRepeatingPayment(currentPayment.getRepeatingPaymentID()); - tagField.setTags(new ArrayList<>(previousTags)); - - ServerConnection connection = new ServerConnection(controller.getSettings()); - RepeatingPayment repeatingPayment = connection.getRepeatingPayment(currentPayment.getRepeatingPaymentID()); - datePicker.setValue(LocalDate.parse(repeatingPayment.getDate())); - - //repeates every x days - if(currentPayment.getRepeatInterval() != 0) - { - checkBoxRepeat.setSelected(true); - radioButtonPeriod.setSelected(true); - toggleRepeatingArea(true); - spinnerRepeatingPeriod.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(0, 1000, currentPayment.getRepeatInterval())); - } - //repeat every month on day x - else - { - checkBoxRepeat.setSelected(true); - radioButtonDay.setSelected(true); - toggleRepeatingArea(true); - comboBoxRepeatingDay.getSelectionModel().select(currentPayment.getRepeatMonthDay()-1); - } - - checkBoxEndDate.setSelected(currentPayment.getRepeatEndDate() != null); - if(currentPayment.getRepeatEndDate() != null) - { - datePickerEnddate.setValue(LocalDate.parse(currentPayment.getRepeatEndDate())); - } - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - } - } - else - { - previousTags = serverTagConnection.getAllTagsForPayment((NormalPayment)payment); - tagField.setTags(new ArrayList<>(previousTags)); - checkBoxRepeat.setSelected(false); - radioButtonPeriod.setSelected(true); - toggleRepeatingArea(false); - } - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - } - } - - private void showWarning(String message) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - message, - controller.getIcon(), - controller.getStage(), - null, - false); - } - - @FXML - public void save() - { - String name = textFieldName.getText(); - if(name == null || name.equals("")) - { - showWarning(Localization.getString(Strings.WARNING_EMPTY_PAYMENT_NAME)); - return; - } - - if(name.length() > 150) - { - showWarning(Localization.getString(Strings.WARNING_NAME_CHARACTER_LIMIT_REACHED_150)); - return; - } - - String amountText = textFieldAmount.getText(); - if(!amountText.matches("^-?\\d+(,\\d+)?(\\.\\d+)?$")) - { - showWarning(Localization.getString(Strings.WARNING_PAYMENT_AMOUNT)); - return; - } - - LocalDate date = datePicker.getValue(); - if(date == null) - { - showWarning(Localization.getString(Strings.WARNING_EMPTY_PAYMENT_DATE)); - return; - } - - int amount = 0; - amount = new BigDecimal(amountText.replace(",", ".")).multiply(new BigDecimal(100)).toBigInteger().intValue(); - if(isPayment) - { - amount = -amount; - } - - String description = textArea.getText(); - if(description != null) - { - if(description.length() > 200) - { - showWarning(Localization.getString(Strings.WARNING_DESCRIPTION_CHARACTER_LIMIT_REACHED_150)); - return; - } - } - else - { - description = ""; - } - - Payment finalPayment; - - int repeatingInterval = 0; - int repeatingDay = 0; - if(checkBoxRepeat.isSelected()) - { - if(radioButtonPeriod.isSelected()) - { - repeatingInterval = spinnerRepeatingPeriod.getValue(); - } - else - { - repeatingDay = comboBoxRepeatingDay.getValue(); - } - - if(repeatingInterval == 0 && repeatingDay == 0) - { - showWarning(Localization.getString(Strings.WARNING_PAYMENT_REPEATING)); - return; - } - - if(checkBoxEndDate.isSelected() && datePickerEnddate.getValue() != null && datePickerEnddate.getValue().isBefore(date)) - { - showWarning(Localization.getString(Strings.WARNING_ENDDATE_BEFORE_STARTDATE)); - return; - } - - if(edit) - { - try - { - LocalDate endDate = checkBoxEndDate.isSelected() ? datePickerEnddate.getValue() : null; - RepeatingPayment newPayment = new RepeatingPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description, repeatingInterval, Helpers.getDateString(endDate), repeatingDay); - - ServerConnection connection = new ServerConnection(controller.getSettings()); - if(payment instanceof NormalPayment) - { - connection.deleteNormalPayment((NormalPayment)payment); - } - else - { - connection.deleteRepeatingPayment((RepeatingPaymentEntry)payment); - } - int id = connection.addRepeatingPayment(newPayment); - finalPayment = newPayment; - previousTags = new ArrayList<>(); - finalPayment.setID(id); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - getStage().close(); - return; - } - } - else - { - LocalDate endDate = checkBoxEndDate.isSelected() ? datePickerEnddate.getValue() : null; - RepeatingPayment newPayment = new RepeatingPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description, repeatingInterval, Helpers.getDateString(endDate), repeatingDay); - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - int id = connection.addRepeatingPayment(newPayment); - finalPayment = newPayment; - finalPayment.setID(id); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(e.getMessage()); - getStage().close(); - return; - } - } - } - else - { - if(edit) - { - NormalPayment newPayment = new NormalPayment(payment.getID(), amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description); - int id = payment.getID(); - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - if(payment instanceof RepeatingPaymentEntry) - { - //if old one was repeating it should be deleted - connection.deleteRepeatingPayment((RepeatingPaymentEntry)payment); - id = connection.addNormalPayment(newPayment); - } - else - { - connection.updateNormalPayment(newPayment); - } - finalPayment = newPayment; - finalPayment.setID(id); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(e.getMessage()); - getStage().close(); - return; - } - } - else - { - NormalPayment newPayment = new NormalPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description); - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - int id = connection.addNormalPayment(newPayment); - finalPayment = newPayment; - finalPayment.setID(id); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(e.getMessage()); - getStage().close(); - return; - } - } - } - - try - { - saveTags(tagField.getTags(), finalPayment); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(e.getMessage()); - } - - getStage().close(); - paymentController.getController().refresh(controller.getFilterSettings()); - } - - public void cancel() - { - getStage().close(); - } - - @FXML - public void showTagsHelp() - { - AlertGenerator.showAlert(AlertType.INFORMATION, - Localization.getString(Strings.TITLE_TAGS), - "", - Localization.getString(Strings.INFO_TAGS), - controller.getIcon(), - getStage(), - null, false); - } - - private void toggleRepeatingArea(boolean selected) - { - if(selected) - { - if(radioButtonPeriod.isSelected()) - { - spinnerRepeatingPeriod.setDisable(false); - comboBoxRepeatingDay.setDisable(true); - } - else - { - spinnerRepeatingPeriod.setDisable(true); - comboBoxRepeatingDay.setDisable(false); - } - } - else - { - spinnerRepeatingPeriod.setDisable(!selected); - comboBoxRepeatingDay.setDisable(!selected); - } - checkBoxEndDate.setDisable(!selected); - datePickerEnddate.setDisable(!selected || !checkBoxEndDate.isSelected()); - radioButtonPeriod.setDisable(!selected); - radioButtonDay.setDisable(!selected); - labelText1.setDisable(!selected); - labelText2.setDisable(!selected); - labelText3.setDisable(!selected); - } - - private void toggleRadioButtonPeriod(boolean selected) - { - spinnerRepeatingPeriod.setDisable(!selected); - labelText1.setDisable(!selected); - labelText2.setDisable(!selected); - comboBoxRepeatingDay.setDisable(selected); - labelText3.setDisable(selected); - } - - private boolean tagListContainsTag(ArrayList<Tag> tags, String name) - { - for(Tag paymentTag: tags) - { - if(name.equals(paymentTag.getName())) - { - return true; - } - } - return false; - } - - private void saveTags(ArrayList<Tag> tags, Payment payment) throws Exception - { - ServerTagConnection serverTagConnection = new ServerTagConnection(controller.getSettings()); - - //check for deleted tags - for(Tag currentTag : previousTags) - { - if(!tagListContainsTag(tags, currentTag.getName())) - { - if(payment instanceof RepeatingPayment) - { - RepeatingPayment repeatingPayment = (RepeatingPayment)payment; - serverTagConnection.deleteTagMatchForRepeatingPayment(currentTag.getID(), repeatingPayment); - } - else - { - NormalPayment normalPayment = (NormalPayment)payment; - serverTagConnection.deleteTagMatchForPayment(currentTag.getID(), normalPayment); - } - } - } - - //check for new tags - for(Tag paymentTag : tags) - { - if(!tagListContainsTag(previousTags, paymentTag.getName())) - { - String name = paymentTag.getName(); - Tag existingTag = serverTagConnection.getTag(name); - if(existingTag == null) - { - serverTagConnection.addTag(new Tag(-1, name)); - existingTag = serverTagConnection.getTag(name); - } - - if(payment instanceof RepeatingPayment) - { - RepeatingPayment repeatingPayment = (RepeatingPayment)payment; - serverTagConnection.addTagMatchForRepeatingPayment(existingTag.getID(), repeatingPayment); - } - else - { - NormalPayment normalPayment = (NormalPayment)payment; - serverTagConnection.addTagMatchForPayment(existingTag.getID(), normalPayment); - } - } - } - } - - @Override - public void applyStyle() - { - buttonTagsHelp.setGraphic(new FontIcon(FontIconType.QUESTION, 13, Colors.TEXT)); - buttonCancel.setGraphic(new FontIcon(FontIconType.TIMES, 17, Color.WHITE)); - buttonSave.setGraphic(new FontIcon(FontIconType.SAVE, 17, Color.WHITE)); - - scrollPane.setStyle("-fx-background-color: transparent"); - buttonTagsHelp.setStyle("-fx-background-color: transparent; -fx-border-radius: 50%; -fx-border-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - buttonTagsHelp.getStyleClass().add("button-hoverable"); - buttonTagsHelp.setPrefWidth(18); - buttonTagsHelp.setPrefHeight(18); - buttonTagsHelp.setPadding(new Insets(0)); - buttonCancel.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;"); - buttonSave.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;"); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/PaymentController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/PaymentController.java deleted file mode 100644 index c05c1822a5f1053b5331f109ba465859d93758f8..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/PaymentController.java +++ /dev/null @@ -1,226 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.Budget; -import de.deadlocker8.budgetmaster.logic.FilterSettings; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.Refreshable; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import de.deadlocker8.budgetmasterclient.ui.cells.PaymentCell; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.application.Platform; -import javafx.beans.value.ChangeListener; -import javafx.fxml.FXML; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.ListCell; -import javafx.scene.control.ListView; -import javafx.scene.input.MouseEvent; -import javafx.scene.layout.AnchorPane; -import javafx.scene.paint.Color; -import javafx.util.Callback; -import logger.Logger; -import tools.ConvertTo; -import tools.Localization; - -public class PaymentController implements Refreshable, Styleable -{ - @FXML private AnchorPane anchorPaneMain; - @FXML private Label labelIncome; - @FXML private Label labelIncomes; - @FXML private Label labelPayment; - @FXML private Label labelPayments; - @FXML private Label labelFilterActive; - @FXML private ListView<Payment> listView; - @FXML private Button buttonNewIncome; - @FXML private Button buttonFilter; - @FXML private Button buttonNewPayment; - @FXML private Button buttonSearch; - - private Controller controller; - - public void init(Controller controller) - { - this.controller = controller; - - PaymentController thisController = this; - listView.setCellFactory(new Callback<ListView<Payment>, ListCell<Payment>>() - { - @Override - public ListCell<Payment> call(ListView<Payment> param) - { - PaymentCell cell = new PaymentCell(thisController); - cell.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { - if(event.getClickCount() == 2) - { - // don't allow editing of payment "rest" - if(cell.getItem().getCategoryID() != 2) - { - payment(!cell.getItem().isIncome(), true, cell.getItem()); - } - } - }); - cell.prefWidthProperty().bind(listView.widthProperty().subtract(20)); - return cell; - } - }); - - Label labelPlaceholder = new Label(Localization.getString(Strings.PAYMENTS_PLACEHOLDER)); - labelPlaceholder.setStyle("-fx-font-size: 16"); - listView.setPlaceholder(labelPlaceholder); - - listView.getSelectionModel().selectedIndexProperty().addListener((ChangeListener<Number>)(observable, oldValue, newValue) -> Platform.runLater(() -> listView.getSelectionModel().select(-1))); - - applyStyle(); - } - - public void newIncome() - { - payment(false, false, null); - } - - public void newPayment() - { - payment(true, false, null); - } - - public void payment(boolean isPayment, boolean edit, Payment payment) - { - new NewPaymentController(controller.getStage(), controller, this, isPayment, edit, payment); - } - - private void refreshListView(Payment selectedPayment) - { - listView.getItems().clear(); - - ArrayList<Payment> payments = controller.getPaymentHandler().getPayments(); - if(payments != null) - { - listView.getItems().setAll(payments); - listView.scrollTo(controller.getPaymentHandler().getPosition(selectedPayment)); - } - } - - private void refreshCounter() - { - Budget budget = new Budget(listView.getItems()); - String currency = "€"; - if(controller.getSettings() != null) - { - currency = controller.getSettings().getCurrency(); - } - labelIncomes.setText(Helpers.getCurrencyString(budget.getIncomeSum(), currency)); - labelPayments.setText(Helpers.getCurrencyString(budget.getPaymentSum(), currency)); - } - - public void deleteNormalPayment(NormalPayment payment) - { - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - connection.deleteNormalPayment(payment); - controller.refresh(controller.getFilterSettings()); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - } - } - - public void deleteRepeatingPayment(RepeatingPaymentEntry payment) - { - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - connection.deleteRepeatingPayment(payment); - controller.refresh(controller.getFilterSettings()); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - } - } - - public void deleteFuturePayments(RepeatingPaymentEntry payment) - { - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - RepeatingPayment oldRepeatingPayment = connection.getRepeatingPayment(payment.getRepeatingPaymentID()); - RepeatingPayment newRepeatingPayment = new RepeatingPayment(payment.getID(), payment.getAmount(), oldRepeatingPayment.getDate(), payment.getCategoryID(), payment.getName(), payment.getDescription(), payment.getRepeatInterval(), payment.getDate(), payment.getRepeatMonthDay()); - connection.deleteRepeatingPayment(payment); - connection.addRepeatingPayment(newRepeatingPayment); - - controller.refresh(controller.getFilterSettings()); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - } - } - - public void filter() - { - new FilterController(controller.getStage(), controller, controller.getFilterSettings()); - } - - public void search() - { - new SearchController(controller.getStage(), controller); - } - - public Controller getController() - { - return controller; - } - - @Override - public void refresh() - { - refreshListView(controller.getSelectedPayment()); - refreshCounter(); - - if(controller.getFilterSettings().equals(new FilterSettings())) - { - labelFilterActive.setVisible(false); - } - else - { - labelFilterActive.setVisible(true); - } - } - - @Override - public void applyStyle() - { - buttonNewIncome.setGraphic(new FontIcon(FontIconType.DOWNLOAD, 18, Color.WHITE)); - buttonFilter.setGraphic(new FontIcon(FontIconType.FILTER, 18, Color.WHITE)); - buttonNewPayment.setGraphic(new FontIcon(FontIconType.UPLOAD, 18, Color.WHITE)); - labelFilterActive.setGraphic(new FontIcon(FontIconType.WARNING, 13, Colors.TEXT)); - buttonSearch.setGraphic(new FontIcon(FontIconType.SEARCH, 18, Color.WHITE)); - - anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND)); - labelIncome.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - labelIncomes.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - labelPayment.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - labelPayments.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - labelFilterActive.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - buttonNewIncome.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); - buttonFilter.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); - buttonNewPayment.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); - buttonSearch.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ReportController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ReportController.java deleted file mode 100644 index e9fb0cd84fdb15adef6cadef08153758a7532801..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ReportController.java +++ /dev/null @@ -1,807 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.awt.Desktop; -import java.io.File; -import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.Optional; - -import org.joda.time.DateTime; - -import de.deadlocker8.budgetmaster.logic.Budget; -import de.deadlocker8.budgetmaster.logic.FilterSettings; -import de.deadlocker8.budgetmaster.logic.comparators.DateComparator; -import de.deadlocker8.budgetmaster.logic.comparators.RatingComparator; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; -import de.deadlocker8.budgetmaster.logic.report.ColumnFilter; -import de.deadlocker8.budgetmaster.logic.report.ColumnOrder; -import de.deadlocker8.budgetmaster.logic.report.ColumnType; -import de.deadlocker8.budgetmaster.logic.report.ReportGenerator; -import de.deadlocker8.budgetmaster.logic.report.ReportItem; -import de.deadlocker8.budgetmaster.logic.report.ReportPreferences; -import de.deadlocker8.budgetmaster.logic.report.ReportSorting; -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.tag.TagHandler; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.Refreshable; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import de.deadlocker8.budgetmasterclient.ui.cells.report.table.ReportTableRatingCell; -import de.deadlocker8.budgetmasterclient.ui.cells.report.table.ReportTableRepeatingCell; -import de.deadlocker8.budgetmasterclient.utils.LoadingModal; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.application.Platform; -import javafx.beans.property.SimpleStringProperty; -import javafx.beans.property.StringProperty; -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import javafx.fxml.FXML; -import javafx.geometry.Pos; -import javafx.scene.Node; -import javafx.scene.control.Alert; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.ButtonType; -import javafx.scene.control.CheckBox; -import javafx.scene.control.DialogPane; -import javafx.scene.control.Label; -import javafx.scene.control.TableColumn; -import javafx.scene.control.TableColumn.SortType; -import javafx.scene.control.TableView; -import javafx.scene.control.cell.PropertyValueFactory; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyEvent; -import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.HBox; -import javafx.scene.paint.Color; -import javafx.stage.FileChooser; -import javafx.stage.Stage; -import logger.Logger; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.Localization; -import tools.ObjectJSONHandler; -import tools.Worker; - -public class ReportController implements Refreshable, Styleable -{ - @FXML private AnchorPane anchorPaneMain; - @FXML private Label labelPayments; - @FXML private Label labelFilterActive; - @FXML private CheckBox checkBoxIncludeBudget; - @FXML private CheckBox checkBoxSplitTable; - @FXML private CheckBox checkBoxIncludeCategoryBudgets; - @FXML private Button buttonFilter; - @FXML private Button buttonGenerate; - @FXML private TableView<ReportItem> tableView; - - private Controller controller; - private ColumnFilter columnFilter; - private String initialReportFileName; - private ReportPreferences reportPreferences; - - private TableColumn<ReportItem, Integer> columnPosition; - private TableColumn<ReportItem, String> columnDate; - private TableColumn<ReportItem, Boolean> columnIsRepeating; - private TableColumn<ReportItem, String> columnCategory; - private TableColumn<ReportItem, Integer> columnName; - private TableColumn<ReportItem, String> columnDescription; - private TableColumn<ReportItem, String> columnTags; - private TableColumn<ReportItem, Integer> columnRating; - private TableColumn<ReportItem, String> columnAmount; - - public void init(Controller controller) - { - this.controller = controller; - initTable(); - applyStyle(); - applyReportPreferences(); - } - - private void initColumn(ColumnType columnType, boolean activated, SortType sortType) - { - switch(columnType) - { - case AMOUNT: - initColumnAmount(activated); - toggleColumn(columnAmount, activated); - if(sortType != null) - { - columnAmount.setSortType(sortType); - tableView.getSortOrder().add(columnAmount); - } - break; - case CATEGORY: - initColumnCategory(activated); - toggleColumn(columnCategory, activated); - if(sortType != null) - { - columnCategory.setSortType(sortType); - tableView.getSortOrder().add(columnCategory); - } - break; - case DATE: - initColumnDate(activated); - toggleColumn(columnDate, activated); - if(sortType != null) - { - columnDate.setSortType(sortType); - tableView.getSortOrder().add(columnDate); - } - break; - case DESCRIPTION: - initColumnDescription(activated); - toggleColumn(columnDescription, activated); - if(sortType != null) - { - columnDescription.setSortType(sortType); - tableView.getSortOrder().add(columnDescription); - } - break; - case NAME: - initColumnName(activated); - toggleColumn(columnName, activated); - if(sortType != null) - { - columnName.setSortType(sortType); - tableView.getSortOrder().add(columnName); - } - break; - case POSITION: - initColumnPosition(activated); - toggleColumn(columnPosition, activated); - if(sortType != null) - { - columnPosition.setSortType(sortType); - tableView.getSortOrder().add(columnPosition); - } - break; - case RATING: - initColumnRating(activated); - toggleColumn(columnRating, activated); - if(sortType != null) - { - columnRating.setSortType(sortType); - tableView.getSortOrder().add(columnRating); - } - break; - case REPEATING: - initColumnIsRepeating(activated); - toggleColumn(columnIsRepeating, activated); - if(sortType != null) - { - columnIsRepeating.setSortType(sortType); - tableView.getSortOrder().add(columnIsRepeating); - } - break; - case TAGS: - initColumnTags(activated); - toggleColumn(columnTags, activated); - if(sortType != null) - { - columnTags.setSortType(sortType); - tableView.getSortOrder().add(columnTags); - } - break; - default: - break; - } - } - - private void applyReportPreferences() - { - tableView.getColumns().clear(); - - Object loadedObject = ObjectJSONHandler.loadObjectFromJSON(Localization.getString(Strings.FOLDER), "reportPreferences", new ReportPreferences()); - if(loadedObject != null) - { - reportPreferences = (ReportPreferences)loadedObject; - checkBoxIncludeBudget.setSelected(reportPreferences.isIncludeBudget()); - checkBoxSplitTable.setSelected(reportPreferences.isSplitTable()); - checkBoxIncludeCategoryBudgets.setSelected(reportPreferences.isIncludeCategoryBudgets()); - - ReportSorting reportSorting = reportPreferences.getReportSorting(); - - ArrayList<ColumnType> allColumns = new ArrayList<>(Arrays.asList(ColumnType.values())); - - for(ColumnType currentType : reportPreferences.getColumnOrder().getColumns()) - { - if(currentType == reportSorting.getColumnType()) - { - initColumn(currentType, true, reportSorting.getSortType()); - } - else - { - initColumn(currentType, true, null); - } - allColumns.remove(currentType); - } - - for(ColumnType currentColumn : allColumns) - { - initColumn(currentColumn, false, null); - } - } - else - { - for(ColumnType currentType : ColumnType.values()) - { - initColumn(currentType, true, null); - } - } - } - - private void initColumnPosition(boolean activated) - { - columnPosition = new TableColumn<>(); - columnPosition.setUserData(ColumnType.POSITION); - columnPosition.setCellValueFactory(new PropertyValueFactory<ReportItem, Integer>("position")); - columnPosition.setStyle("-fx-alignment: CENTER;"); - - HBox hboxColumnPosition = new HBox(); - hboxColumnPosition.setAlignment(Pos.CENTER); - hboxColumnPosition.setSpacing(3); - - CheckBox checkBoxPositions = new CheckBox(); - hboxColumnPosition.getChildren().add(checkBoxPositions); - - Label labelColumnPosition = new Label(Localization.getString(Strings.REPORT_POSITION)); - hboxColumnPosition.getChildren().add(labelColumnPosition); - - checkBoxPositions.selectedProperty().addListener((a, b, c)->{ - toggleColumn(columnPosition, c); - }); - checkBoxPositions.setSelected(activated); - columnPosition.setGraphic(hboxColumnPosition); - tableView.getColumns().add(columnPosition); - } - - private void initColumnDate(boolean activated) - { - columnDate = new TableColumn<>(); - columnDate.setUserData(ColumnType.DATE); - columnDate.setCellValueFactory(param -> { - String dateString = param.getValue().getDate(); - try - { - DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - Date date = format.parse(dateString); - DateFormat finalFormat = new SimpleDateFormat("dd.MM.yy"); - dateString = finalFormat.format(date); - return new SimpleStringProperty(dateString); - } - catch(Exception e) - { - Logger.error(e); - return null; - } - }); - columnDate.setStyle("-fx-alignment: CENTER;"); - - HBox hboxColumnDate = new HBox(); - hboxColumnDate.setAlignment(Pos.CENTER); - hboxColumnDate.setSpacing(3); - - CheckBox checkBoxDate = new CheckBox(); - hboxColumnDate.getChildren().add(checkBoxDate); - - Label labelComlumnDate = new Label(Localization.getString(Strings.REPORT_DATE)); - hboxColumnDate.getChildren().add(labelComlumnDate); - - checkBoxDate.selectedProperty().addListener((a, b, c)->{ - toggleColumn(columnDate, c); - }); - checkBoxDate.setSelected(activated); - columnDate.setGraphic(hboxColumnDate); - columnDate.setComparator(new DateComparator()); - tableView.getColumns().add(columnDate); - } - - private void initColumnIsRepeating(boolean activated) - { - columnIsRepeating = new TableColumn<>(); - columnIsRepeating.setUserData(ColumnType.REPEATING); - columnIsRepeating.setCellValueFactory(new PropertyValueFactory<ReportItem, Boolean>("repeating")); - columnIsRepeating.setCellFactory(param -> { - return new ReportTableRepeatingCell(); - }); - columnIsRepeating.setStyle("-fx-alignment: CENTER;"); - - HBox hboxColumnIsRepeating = new HBox(); - hboxColumnIsRepeating.setAlignment(Pos.CENTER); - hboxColumnIsRepeating.setSpacing(3); - - CheckBox checkBoxRepeating = new CheckBox(); - hboxColumnIsRepeating.getChildren().add(checkBoxRepeating); - - Label labelColumnIsRepeating = new Label(Localization.getString(Strings.REPORT_REPEATING)); - hboxColumnIsRepeating.getChildren().add(labelColumnIsRepeating); - - checkBoxRepeating.selectedProperty().addListener((a, b, c)->{ - toggleColumn(columnIsRepeating, c); - }); - checkBoxRepeating.setSelected(activated); - - columnIsRepeating.setGraphic(hboxColumnIsRepeating); - tableView.getColumns().add(columnIsRepeating); - } - - private void initColumnCategory(boolean activated) - { - columnCategory = new TableColumn<>(); - columnCategory.setUserData(ColumnType.CATEGORY); - columnCategory.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getCategory().getName())); - columnCategory.setStyle("-fx-alignment: CENTER;"); - - HBox hboxColumnCategory = new HBox(); - hboxColumnCategory.setAlignment(Pos.CENTER); - hboxColumnCategory.setSpacing(3); - - CheckBox checkBoxCategory = new CheckBox(); - hboxColumnCategory.getChildren().add(checkBoxCategory); - - Label labelColumnCategory = new Label(Localization.getString(Strings.REPORT_CATEGORY)); - hboxColumnCategory.getChildren().add(labelColumnCategory); - - checkBoxCategory.selectedProperty().addListener((a, b, c)->{ - toggleColumn(columnCategory, c); - }); - checkBoxCategory.setSelected(activated); - columnCategory.setGraphic(hboxColumnCategory); - tableView.getColumns().add(columnCategory); - } - - private void initColumnName(boolean activated) - { - columnName = new TableColumn<>(); - columnName.setUserData(ColumnType.NAME); - columnName.setCellValueFactory(new PropertyValueFactory<ReportItem, Integer>("name")); - columnName.setStyle("-fx-alignment: CENTER;"); - - HBox hboxColumnName = new HBox(); - hboxColumnName.setAlignment(Pos.CENTER); - hboxColumnName.setSpacing(3); - - CheckBox checkBoxName = new CheckBox(); - hboxColumnName.getChildren().add(checkBoxName); - - Label labelColumnName = new Label(Localization.getString(Strings.REPORT_NAME)); - hboxColumnName.getChildren().add(labelColumnName); - - checkBoxName.selectedProperty().addListener((a, b, c)->{ - toggleColumn(columnName, c); - }); - checkBoxName.setSelected(activated); - columnName.setGraphic(hboxColumnName); - tableView.getColumns().add(columnName); - } - - private void initColumnDescription(boolean activated) - { - columnDescription = new TableColumn<>(); - columnDescription.setUserData(ColumnType.DESCRIPTION); - columnDescription.setCellValueFactory(new PropertyValueFactory<ReportItem, String>("description")); - columnDescription.setStyle("-fx-alignment: CENTER;"); - - HBox hboxColumnDescription = new HBox(); - hboxColumnDescription.setAlignment(Pos.CENTER); - hboxColumnDescription.setSpacing(3); - - CheckBox checkBoxDescription = new CheckBox(); - hboxColumnDescription.getChildren().add(checkBoxDescription); - - Label labelColumnDescription = new Label(Localization.getString(Strings.REPORT_DESCRIPTION)); - hboxColumnDescription.getChildren().add(labelColumnDescription); - - checkBoxDescription.selectedProperty().addListener((a, b, c)->{ - toggleColumn(columnDescription, c); - }); - checkBoxDescription.setSelected(activated); - columnDescription.setGraphic(hboxColumnDescription); - tableView.getColumns().add(columnDescription); - } - - private void initColumnTags(boolean activated) - { - columnTags = new TableColumn<>(); - columnTags.setUserData(ColumnType.TAGS); - columnTags.setCellValueFactory(new PropertyValueFactory<ReportItem, String>("tags")); - columnTags.setStyle("-fx-alignment: CENTER;"); - - HBox hboxColumnTags = new HBox(); - hboxColumnTags.setAlignment(Pos.CENTER); - hboxColumnTags.setSpacing(3); - - CheckBox checkBoxTags = new CheckBox(); - hboxColumnTags.getChildren().add(checkBoxTags); - - Label labelColumnTags = new Label(Localization.getString(Strings.REPORT_TAGS)); - hboxColumnTags.getChildren().add(labelColumnTags); - - checkBoxTags.selectedProperty().addListener((a, b, c)->{ - toggleColumn(columnTags, c); - }); - checkBoxTags.setSelected(activated); - columnTags.setGraphic(hboxColumnTags); - tableView.getColumns().add(columnTags); - } - - private void initColumnRating(boolean activated) - { - columnRating = new TableColumn<>(); - columnRating.setUserData(ColumnType.RATING); - columnRating.setCellValueFactory(new PropertyValueFactory<ReportItem, Integer>("amount")); - columnRating.setCellFactory(param -> { - return new ReportTableRatingCell(); - }); - columnRating.setStyle("-fx-alignment: CENTER;"); - - HBox hboxColumnRating = new HBox(); - hboxColumnRating.setAlignment(Pos.CENTER); - hboxColumnRating.setSpacing(3); - - CheckBox checkBoxRating = new CheckBox(); - hboxColumnRating.getChildren().add(checkBoxRating); - - Label labelColumnRating = new Label(Localization.getString(Strings.REPORT_RATING)); - hboxColumnRating.getChildren().add(labelColumnRating); - - checkBoxRating.selectedProperty().addListener((a, b, c)->{ - toggleColumn(columnRating, c); - }); - checkBoxRating.setSelected(activated); - columnRating.setGraphic(hboxColumnRating); - columnRating.setComparator(new RatingComparator()); - tableView.getColumns().add(columnRating); - } - - private void toggleColumn(TableColumn<ReportItem, ?> column, boolean activated) - { - String style = activated ? "" : "-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_REPORT_TABLE_HEADER_DISABLED); - Node graphic = column.getGraphic(); - if(graphic != null) - { - graphic.setStyle(style); - } - columnFilter.toggleColumn((ColumnType)column.getUserData(), activated); - } - - private void initColumnAmount(boolean activated) - { - columnAmount = new TableColumn<>(); - columnAmount.setUserData(ColumnType.AMOUNT); - columnAmount.setCellValueFactory(param -> { - StringProperty value = new SimpleStringProperty(); - double amount = param.getValue().getAmount() / 100.0; - value.set(Helpers.getCurrencyString(amount, controller.getSettings().getCurrency())); - return value; - }); - columnAmount.setStyle("-fx-alignment: CENTER;"); - - HBox hboxColumnAmount = new HBox(); - hboxColumnAmount.setAlignment(Pos.CENTER); - hboxColumnAmount.setSpacing(3); - - CheckBox checkBoxAmount = new CheckBox(); - hboxColumnAmount.getChildren().add(checkBoxAmount); - - Label labelColumnAmount = new Label(Localization.getString(Strings.REPORT_AMOUNT)); - hboxColumnAmount.getChildren().add(labelColumnAmount); - - checkBoxAmount.selectedProperty().addListener((a, b, c)->{ - toggleColumn(columnAmount, c); - }); - checkBoxAmount.setSelected(activated); - columnAmount.setGraphic(hboxColumnAmount); - tableView.getColumns().add(columnAmount); - } - - private void initTable() - { - columnFilter = new ColumnFilter(); - for(ColumnType type : ColumnType.values()) - { - columnFilter.addColumn(type); - } - - Label labelPlaceholder = new Label(Localization.getString(Strings.PAYMENTS_PLACEHOLDER)); - labelPlaceholder.setStyle("-fx-font-size: 16"); - tableView.setPlaceholder(labelPlaceholder); - - tableView.setFixedCellSize(26); - } - - public void filter() - { - new FilterController(controller.getStage(), controller, controller.getFilterSettings()); - } - - private ArrayList<ReportItem> createReportItems(ArrayList<Payment> payments) - { - ArrayList<ReportItem> reportItems = new ArrayList<>(); - TagHandler tagHander = new TagHandler(controller.getSettings()); - - for(int i = 0; i < payments.size(); i++) - { - Payment currentPayment = payments.get(i); - ReportItem reportItem = new ReportItem(); - reportItem.setPosition(i + 1); - reportItem.setDate(currentPayment.getDate()); - reportItem.setAmount(currentPayment.getAmount()); - reportItem.setName(currentPayment.getName()); - reportItem.setDescription(currentPayment.getDescription()); - reportItem.setRepeating(currentPayment instanceof RepeatingPaymentEntry); - reportItem.setCategory(controller.getCategoryHandler().getCategory(currentPayment.getCategoryID())); - - try - { - reportItem.setTags(tagHander.getTagsAsString(currentPayment)); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - } - - reportItems.add(reportItem); - } - - return reportItems; - } - - private void refreshTableView() - { - Platform.runLater(()->{tableView.getItems().clear();}); - - ArrayList<Payment> payments = controller.getPaymentHandler().getPayments(); - if(payments != null) - { - ArrayList<ReportItem> reportItems = createReportItems(payments); - Platform.runLater(()->{; - ObservableList<ReportItem> objectsForTable = FXCollections.observableArrayList(reportItems); - tableView.setItems(objectsForTable); - }); - } - } - - private ReportPreferences getReportPreferences() - { - ColumnOrder columnOrder = new ColumnOrder(); - for(TableColumn<ReportItem, ?> currentColumn : tableView.getColumns()) - { - ColumnType currentType = (ColumnType)currentColumn.getUserData(); - if(columnFilter.containsColumn(currentType)) - { - columnOrder.addColumn(currentType); - } - } - - ReportSorting reportSorting = new ReportSorting(); - ObservableList<TableColumn<ReportItem, ?>> sortOrder = tableView.getSortOrder(); - if(sortOrder.size() > 0) - { - reportSorting.setColumnType((ColumnType)sortOrder.get(0).getUserData()); - reportSorting.setSortType(sortOrder.get(0).getSortType()); - } - else - { - reportSorting.setColumnType(ColumnType.DATE); - reportSorting.setSortType(SortType.DESCENDING); - } - - String reportFolderPath = null; - if(reportPreferences != null) - { - reportFolderPath = reportPreferences.getReportFolderPath(); - } - - return new ReportPreferences(columnOrder, - checkBoxIncludeBudget.isSelected(), - checkBoxSplitTable.isSelected(), - checkBoxIncludeCategoryBudgets.isSelected(), - reportSorting, - reportFolderPath); - } - - private void saveReportPreferences() - { - try - { - ObjectJSONHandler.saveObjectToJSON(Localization.getString(Strings.FOLDER), "reportPreferences", reportPreferences); - } - catch(IOException e) - { - Logger.error(e); - } - } - - public void generate() - { - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle(Localization.getString(Strings.TITLE_REPORT_SAVE)); - FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("PDF (*.pdf)", "*.pdf"); - fileChooser.setInitialFileName(initialReportFileName); - fileChooser.getExtensionFilters().add(extFilter); - - String initialReportFolder = reportPreferences.getReportFolderPath(); - if(initialReportFolder != null) - { - fileChooser.setInitialDirectory(new File(initialReportFolder)); - } - - File file = fileChooser.showSaveDialog(controller.getStage()); - if(file != null) - { - Budget budget = new Budget(controller.getPaymentHandler().getPayments()); - - reportPreferences = getReportPreferences(); - reportPreferences.setReportFolderPath(file.getParentFile().getAbsolutePath()); - saveReportPreferences(); - - ReportGenerator reportGenerator = new ReportGenerator(new ArrayList<ReportItem>(tableView.getItems()), - controller.getCategoryBudgets(), - reportPreferences, - file, - controller.getSettings().getCurrency(), - controller.getCurrentDate(), - budget); - - LoadingModal.showModal(controller, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_REPORT), controller.getStage(), controller.getIcon()); - - Worker.runLater(() -> { - try - { - reportGenerator.generate(); - - Platform.runLater(() -> { - LoadingModal.closeModal(); - - controller.showNotification(Localization.getString(Strings.NOTIFICATION_REPORT_SAVE)); - - Alert alert = new Alert(AlertType.INFORMATION); - alert.setTitle(Localization.getString(Strings.INFO_TITLE_REPORT_SAVE)); - alert.setHeaderText(""); - alert.initOwner(controller.getStage()); - alert.setContentText(Localization.getString(Strings.INFO_TEXT_REPORT_SAVE)); - Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(controller.getIcon()); - - ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_REPORT_SAVE_OPEN_FOLDER)); - ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.INFO_TEXT_REPORT_SAVE_OPEN_REPORT)); - ButtonType buttonTypeThree = new ButtonType(Localization.getString(Strings.OK)); - alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo, buttonTypeThree); - - DialogPane dialogPane = alert.getDialogPane(); - dialogPane.getButtonTypes().stream().map(dialogPane::lookupButton).forEach(button -> button.addEventHandler(KeyEvent.KEY_PRESSED, (event) -> { - if(KeyCode.ENTER.equals(event.getCode()) && event.getTarget() instanceof Button) - { - ((Button)event.getTarget()).fire(); - } - })); - - Optional<ButtonType> result = alert.showAndWait(); - if (result.get() == buttonTypeOne) - { - try - { - Desktop.getDesktop().open(new File(file.getParent().replace("\\", "/"))); - } - catch(IOException e1) - { - Logger.error(e1); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_OPEN_FOLDER, e1.getMessage()), - controller.getIcon(), - controller.getStage(), - null, - false); - } - } - else if (result.get() == buttonTypeTwo) - { - try - { - Desktop.getDesktop().open(new File(file.getAbsolutePath().replace("\\", "/"))); - } - catch(IOException e1) - { - Logger.error(e1); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_OPEN_REPORT, e1.getMessage()), - controller.getIcon(), - controller.getStage(), - null, - false); - } - } - else - { - alert.close(); - } - }); - } - catch(Exception e) - { - Logger.error(e); - Platform.runLater(() -> { - LoadingModal.closeModal(); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_REPORT_SAVE, e.getMessage()), - controller.getIcon(), - controller.getStage(), - null, - false); - }); - } - }); - } - } - - public Controller getController() - { - return controller; - } - - @Override - public void refresh() - { - LoadingModal.showModal(controller, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_REPORT_TAB), controller.getStage(), controller.getIcon()); - - if(controller.getFilterSettings().equals(new FilterSettings())) - { - labelFilterActive.setVisible(false); - } - else - { - labelFilterActive.setVisible(true); - } - - DateTime currentDate = controller.getCurrentDate(); - String currentMonth = currentDate.toString("MM"); - String currentYear = currentDate.toString("YYYY"); - - initialReportFileName = Localization.getString(Strings.REPORT_INITIAL_FILENAME, currentYear, currentMonth); - - reportPreferences = getReportPreferences(); - saveReportPreferences(); - - Worker.runLater(() -> { - refreshTableView(); - - Platform.runLater(() -> { - LoadingModal.closeModal(); - applyReportPreferences(); - tableView.refresh(); - }); - }); - } - - @Override - public void applyStyle() - { - buttonFilter.setGraphic(new FontIcon(FontIconType.FILTER, 18, Color.WHITE)); - buttonGenerate.setGraphic(new FontIcon(FontIconType.COGS, 18, Color.WHITE)); - labelFilterActive.setGraphic(new FontIcon(FontIconType.WARNING, 16, Colors.TEXT)); - - anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND)); - labelFilterActive.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - buttonFilter.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); - buttonGenerate.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); - checkBoxIncludeBudget.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT) + "; -fx-font-size: 14;"); - checkBoxSplitTable.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT) + "; -fx-font-size: 14;"); - checkBoxIncludeCategoryBudgets.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT) + "; -fx-font-size: 14;"); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SearchController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SearchController.java deleted file mode 100644 index 930d015ae397027f02532bc5fd8beceeb41f4435..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SearchController.java +++ /dev/null @@ -1,327 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.util.ArrayList; - -import org.controlsfx.control.RangeSlider; - -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.search.SearchPreferences; -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import de.deadlocker8.budgetmasterclient.ui.cells.SearchCell; -import de.deadlocker8.budgetmasterclient.utils.LoadingModal; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.application.Platform; -import javafx.beans.value.ChangeListener; -import javafx.fxml.FXML; -import javafx.geometry.Pos; -import javafx.scene.control.Button; -import javafx.scene.control.CheckBox; -import javafx.scene.control.Label; -import javafx.scene.control.ListCell; -import javafx.scene.control.ListView; -import javafx.scene.control.TextField; -import javafx.scene.control.TextFormatter; -import javafx.scene.input.KeyCode; -import javafx.scene.input.MouseEvent; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.paint.Color; -import javafx.stage.Modality; -import javafx.stage.Stage; -import javafx.util.Callback; -import logger.Logger; -import tools.ConvertTo; -import tools.Localization; -import tools.Worker; - -public class SearchController extends BaseController implements Styleable -{ - @FXML private CheckBox checkBoxName; - @FXML private CheckBox checkBoxDescription; - @FXML private CheckBox checkBoxCategoryName; - @FXML private CheckBox checkBoxTags; - @FXML private TextField textFieldSearch; - @FXML private CheckBox checkBoxSearchByAmount; - @FXML private TextField textFieldAmountMin; - @FXML private TextField textFieldAmountMax; - @FXML private HBox hboxRangeSlider; - @FXML private Label labelSeparator; - @FXML private HBox hboxSearchByAmount; - @FXML private Button buttonCancel; - @FXML private Button buttonSearch; - @FXML private ListView<Payment> listView; - - private Stage parentStage; - private Controller controller; - private RangeSlider rangeSlider; - - public SearchController(Stage parentStage, Controller controller) - { - this.parentStage = parentStage; - this.controller = controller; - load("/de/deadlocker8/budgetmaster/ui/fxml/SearchGUI.fxml", Localization.getBundle()); - getStage().showAndWait(); - } - - @Override - public void initStage(Stage stage) - { - stage.initOwner(parentStage); - stage.initModality(Modality.APPLICATION_MODAL); - stage.setTitle(Localization.getString(Strings.TITLE_SEARCH)); - stage.getIcons().add(controller.getIcon()); - stage.setResizable(true); - stage.setMinWidth(500); - stage.setMinHeight(500); - stage.setWidth(650); - } - - @Override - public void init() - { - SearchController thisController = this; - listView.setCellFactory(new Callback<ListView<Payment>, ListCell<Payment>>() - { - @Override - public ListCell<Payment> call(ListView<Payment> param) - { - SearchCell cell = new SearchCell(thisController); - cell.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { - if(event.getClickCount() == 2) - { - // don't allow editing of payment "rest" - if(cell.getItem().getCategoryID() != 2) - { - controller.getPaymentController().payment(!cell.getItem().isIncome(), true, cell.getItem()); - search(); - } - } - }); - cell.prefWidthProperty().bind(listView.widthProperty().subtract(4)); - return cell; - } - }); - - Label labelPlaceholder = new Label(Localization.getString(Strings.PAYMENTS_PLACEHOLDER)); - labelPlaceholder.setStyle("-fx-font-size: 16"); - listView.setPlaceholder(labelPlaceholder); - - listView.getSelectionModel().selectedIndexProperty().addListener((ChangeListener<Number>)(observable, oldValue, newValue) -> Platform.runLater(() -> listView.getSelectionModel().select(-1))); - - checkBoxName.setSelected(true); - - textFieldSearch.setOnKeyPressed((event)->{ - if(event.getCode().equals(KeyCode.ENTER)) - { - search(); - } - }); - - checkBoxSearchByAmount.selectedProperty().addListener((a, b, c)->{ - hboxSearchByAmount.setDisable(!c); - }); - - hboxSearchByAmount.setDisable(true); - - int maximum; - try - { - maximum = getMaxAmountFromServer(); - } - catch(Exception e) - { - Logger.error(e); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - return; - } - - rangeSlider = new RangeSlider(); - rangeSlider.setMin(0); - rangeSlider.setMax(maximum); - rangeSlider.setLowValue(rangeSlider.getMin()); - rangeSlider.setHighValue(rangeSlider.getMax()); - rangeSlider.setShowTickMarks(true); - rangeSlider.setShowTickLabels(true); - rangeSlider.setMajorTickUnit(getMayorTickUnit(maximum)); - rangeSlider.setMinorTickCount(0); - rangeSlider.lowValueProperty().addListener((a, b, c)->{ - textFieldAmountMin.setText(String.valueOf(c.intValue())); - }); - rangeSlider.highValueProperty().addListener((a, b, c)->{ - textFieldAmountMax.setText(String.valueOf(c.intValue())); - }); - hboxRangeSlider.getChildren().add(rangeSlider); - hboxRangeSlider.setAlignment(Pos.CENTER); - HBox.setHgrow(rangeSlider, Priority.ALWAYS); - - textFieldAmountMin.setTextFormatter(new TextFormatter<>(c -> { - if(c.getControlNewText().isEmpty() || c.getControlNewText().matches("[0-9]*")) - { - return c; - } - else - { - return null; - } - })); - - textFieldAmountMax.setTextFormatter(new TextFormatter<>(c -> { - if(c.getControlNewText().isEmpty() || c.getControlNewText().matches("[0-9]*")) - { - return c; - } - else - { - return null; - } - })); - - textFieldAmountMin.textProperty().addListener((a, b, c)->{ - setRangeSliderAmountMin(); - }); - - textFieldAmountMax.textProperty().addListener((a, b, c)->{ - setRangeSliderAmountMax(); - }); - - textFieldAmountMin.setText("0"); - textFieldAmountMax.setText(String.valueOf(maximum)); - - //prefill - SearchPreferences searchPreferences = controller.getSearchPreferences(); - if(controller.getSearchPreferences() != null) - { - textFieldSearch.setText(searchPreferences.getLastQuery()); - checkBoxName.setSelected(searchPreferences.isSearchName()); - checkBoxDescription.setSelected(searchPreferences.isSearchDescription()); - checkBoxCategoryName.setSelected(searchPreferences.isSearchCategorNames()); - checkBoxTags.setSelected(searchPreferences.isSearchTags()); - checkBoxSearchByAmount.setSelected(searchPreferences.isSearchAmount()); - rangeSlider.setLowValue(searchPreferences.getMinAmount()); - rangeSlider.setHighValue(searchPreferences.getMaxAmount()); - } - - applyStyle(); - } - - private void setRangeSliderAmountMin() - { - String text = textFieldAmountMin.getText(); - if(text != null && !text.equals("")) - { - rangeSlider.setLowValue(Integer.parseInt(text)); - } - } - - private void setRangeSliderAmountMax() - { - String text = textFieldAmountMax.getText(); - if(text != null && !text.equals("")) - { - rangeSlider.setHighValue(Integer.parseInt(text)); - } - } - - private int getMaxAmountFromServer() throws Exception - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - return connection.getMaxAmount(); - } - - private int getMayorTickUnit(int maximum) - { - if(maximum < 10) - return 1; - - if(maximum < 100) - return 5; - - int length = String.valueOf(maximum).length(); - return (int)Math.pow(10, length-2); - } - - public void search() - { - String query = textFieldSearch.getText().trim(); - if(controller.getSearchPreferences() == null) - { - controller.setSearchPreferences(new SearchPreferences()); - } - SearchPreferences searchPreferences = controller.getSearchPreferences(); - searchPreferences.setLastQuery(query); - searchPreferences.setSearchName(checkBoxName.isSelected()); - searchPreferences.setSearchDescription(checkBoxDescription.isSelected()); - searchPreferences.setSearchCategorNames(checkBoxCategoryName.isSelected()); - searchPreferences.setSearchTags(checkBoxTags.isSelected()); - searchPreferences.setSearchAmount(checkBoxSearchByAmount.isSelected()); - searchPreferences.setMinAmount((int)rangeSlider.getLowValue()); - searchPreferences.setMaxAmount((int)rangeSlider.getHighValue()); - - LoadingModal.showModal(controller, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_SEARCH), getStage(), controller.getIcon()); - - Worker.runLater(() -> { - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - ArrayList<Payment> payments = connection.getPaymentsForSearch(query, - checkBoxName.isSelected(), - checkBoxDescription.isSelected(), - checkBoxCategoryName.isSelected(), - checkBoxTags.isSelected(), - checkBoxSearchByAmount.isSelected(), - (int)rangeSlider.getLowValue()*100, - (int)rangeSlider.getHighValue()*100); - - Platform.runLater(() -> { - listView.getItems().clear(); - if(payments != null) - { - listView.getItems().setAll(payments); - } - - LoadingModal.closeModal(); - }); - } - catch(Exception e) - { - Logger.error(e); - Platform.runLater(() -> { - LoadingModal.closeModal(); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - }); - } - }); - - textFieldSearch.requestFocus(); - textFieldSearch.positionCaret(textFieldSearch.getText().length()); - } - - public void cancel() - { - getStage().close(); - } - - public Controller getController() - { - return controller; - } - - @Override - public void applyStyle() - { - labelSeparator.setStyle("-fx-background-color: #CCCCCC;"); - labelSeparator.setMinHeight(1); - labelSeparator.setMaxHeight(1); - - buttonCancel.setGraphic(new FontIcon(FontIconType.TIMES, 17, Color.WHITE)); - buttonSearch.setGraphic(new FontIcon(FontIconType.SEARCH, 17, Color.WHITE)); - - buttonCancel.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;"); - buttonSearch.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;"); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SplashScreenController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SplashScreenController.java deleted file mode 100644 index 2bc64ec98de85fad20ace075f99e63af86f418d8..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SplashScreenController.java +++ /dev/null @@ -1,199 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller; - -import java.io.IOException; - -import de.deadlocker8.budgetmaster.logic.Settings; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.FileHelper; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.ShutdownHandler; -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import de.deadlocker8.budgetmasterclient.ui.customAlert.CustomAlertController; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.application.Platform; -import javafx.fxml.FXML; -import javafx.geometry.Insets; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.PasswordField; -import javafx.scene.image.Image; -import javafx.scene.image.ImageView; -import javafx.scene.input.KeyCode; -import javafx.scene.paint.Color; -import javafx.stage.Stage; -import logger.Logger; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.HashUtils; -import tools.Localization; - -public class SplashScreenController extends BaseController implements Styleable -{ - @FXML private ImageView imageViewLogo; - @FXML private Label labelVersion; - @FXML private PasswordField textFieldPassword; - @FXML private Button buttonLogin; - - private Stage parentStage; - private Image icon; - private Settings settings; - private boolean isFirstStart; - private boolean isStartingAfterUpdate; - private ShutdownHandler shutdownHandler; - - public SplashScreenController(Stage parentStage, Image icon, boolean isStartingAfterUpdate, ShutdownHandler shutdownHandler) - { - this.parentStage = parentStage; - this.icon = icon; - this.isStartingAfterUpdate = isStartingAfterUpdate; - this.shutdownHandler = shutdownHandler; - load("/de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml", Localization.getBundle()); - getStage().show(); - } - - @Override - public void initStage(Stage stage) - { - stage.initOwner(parentStage); - stage.setWidth(450); - stage.setHeight(250); - stage.setResizable(false); - stage.getIcons().add(icon); - stage.setTitle(Localization.getString(Strings.APP_NAME)); - } - - @Override - public void init() - { - imageViewLogo.setImage(icon); - - labelVersion.setText("v" + Localization.getString(Strings.VERSION_NAME)); - - applyStyle(); - - textFieldPassword.setOnKeyReleased((event)->{ - if(event.getCode() == KeyCode.ENTER) - { - event.consume(); - login(); - } - }); - - if(isStartingAfterUpdate) - { - Platform.runLater(() -> { - AlertGenerator.showAlert(AlertType.INFORMATION, - Localization.getString(Strings.INFO_TITLE_START_AFTER_UPDATE), - Localization.getString(Strings.INFO_HEADER_TEXT_START_AFTER_UPDATE, Localization.getString(Strings.VERSION_NAME)), - Localization.getString(Strings.INFO_TEXT_START_AFTER_UPDATE), - icon, - getStage(), - null, - false); - }); - } - - settings = FileHelper.loadSettings(); - - if(settings == null) - { - settings = new Settings(); - //first start of budgetmaster - Platform.runLater(() -> { - AlertGenerator.showAlert(AlertType.INFORMATION, - Localization.getString(Strings.INFO_TITLE_WELCOME), - Localization.getString(Strings.INFO_HEADER_TEXT_WELCOME), - Localization.getString(Strings.INFO_TEXT_WELCOME_FIRST_START), - icon, - getStage(), - null, - false); - }); - isFirstStart = true; - } - else - { - if(settings.getClientSecret() == null) - { - //compatibility (settings exists but from older version without clientSecret) - Platform.runLater(() -> { - AlertGenerator.showAlert(AlertType.INFORMATION, - Localization.getString(Strings.INFO_TITLE_WELCOME), - Localization.getString(Strings.INFO_HEADER_TEXT_WELCOME), - Localization.getString(Strings.INFO_TEXT_WELCOME_COMPATIBILITY), - icon, - getStage(), - null, - false); - }); - isFirstStart = true; - } - else - { - isFirstStart = false; - } - } - } - - public void login() - { - String password = textFieldPassword.getText().trim(); - if(password == null || password.isEmpty()) - { - new CustomAlertController(getStage(), this, AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), Localization.getString(Strings.WARNING_EMPTY_PASSWORD)); - return; - } - - if(isFirstStart) - { - //save to settings - settings.setClientSecret(HashUtils.hash(password, Helpers.SALT)); - try - { - FileHelper.saveSettings(settings); - - getStage().close(); - openBudgetMaster(); - } - catch(IOException e) - { - Logger.error(e); - new CustomAlertController(getStage(), this, AlertType.WARNING, Localization.getString(Strings.TITLE_ERROR), Localization.getString(Strings.ERROR_PASSWORD_SAVE)); - return; - } - } - else - { - //check password - if(!HashUtils.hash(password, Helpers.SALT).equals(settings.getClientSecret())) - { - new CustomAlertController(getStage(), this, AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), Localization.getString(Strings.WARNING_WRONG_PASSWORD)); - return; - } - - getStage().close(); - openBudgetMaster(); - } - } - - private void openBudgetMaster() - { - new Controller(settings, shutdownHandler); - } - - public Image getIcon() - { - return icon; - } - - @Override - public void applyStyle() - { - buttonLogin.setGraphic(new FontIcon(FontIconType.SIGN_IN, 18, Color.WHITE)); - buttonLogin.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); - buttonLogin.setPadding(new Insets(3, 7, 3, 7)); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/LocalServerSettingsController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/LocalServerSettingsController.java deleted file mode 100644 index edba3b99cff975d088cea5cfe6bb4c3ecce74f5c..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/LocalServerSettingsController.java +++ /dev/null @@ -1,406 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller.settings; - -import java.io.IOException; -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.ServerType; -import de.deadlocker8.budgetmaster.logic.Settings; -import de.deadlocker8.budgetmaster.logic.localserver.LocalServerException; -import de.deadlocker8.budgetmaster.logic.localserver.LocalServerHandler; -import de.deadlocker8.budgetmaster.logic.localserver.LocalServerStatus; -import de.deadlocker8.budgetmaster.logic.updater.Updater; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.FileHelper; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.LanguageType; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.RestartHandler; -import de.deadlocker8.budgetmasterclient.ui.cells.LanguageCell; -import de.deadlocker8.budgetmasterclient.ui.controller.Controller; -import de.deadlocker8.budgetmasterclient.utils.LoadingModal; -import javafx.application.Platform; -import javafx.fxml.FXML; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.CheckBox; -import javafx.scene.control.ComboBox; -import javafx.scene.control.Label; -import javafx.scene.control.RadioButton; -import javafx.scene.control.ScrollPane; -import javafx.scene.control.TextField; -import javafx.scene.control.ToggleButton; -import javafx.scene.control.ToggleGroup; -import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.HBox; -import logger.Logger; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.HashUtils; -import tools.Localization; -import tools.Worker; - -public class LocalServerSettingsController extends SettingsController -{ - @FXML private AnchorPane anchorPaneMain; - @FXML private ScrollPane scrollPane; - @FXML private HBox hboxSettings; - @FXML private ToggleButton toggleButtonOnline; - @FXML private ToggleButton toggleButtonLocal; - @FXML private Label labelStatus; - @FXML private Label labelLocalServerStatus; - @FXML private Button buttonLocalServerAction; - @FXML private Label labelClientSecret; - @FXML private TextField textFieldClientSecret; - @FXML private TextField textFieldCurrency; - @FXML private Label labelCurrency; - @FXML private Button buttonSave; - @FXML private Button buttonExportDB; - @FXML private Button buttonImportDB; - @FXML private Button buttonDeleteDB; - @FXML private RadioButton radioButtonRestActivated; - @FXML private RadioButton radioButtonRestDeactivated; - @FXML private ComboBox<LanguageType> comboBoxLanguage; - @FXML private CheckBox checkboxEnableAutoUpdate; - @FXML private Button buttonSearchUpdates; - @FXML private Label labelCurrentVersion; - @FXML private Label labelLatestVersion; - - private LanguageType previousLanguage; - - private final int MILLIS_UNTIL_NEXT_RETRY = 2000; - private final int MAX_NUMBER_OF_RETRIES = 5; - - @Override - public void init(Controller controller) - { - super.controller = controller; - - ToggleGroup toggleGroupServerType = new ToggleGroup(); - toggleButtonOnline.setToggleGroup(toggleGroupServerType); - toggleButtonLocal.setToggleGroup(toggleGroupServerType); - toggleButtonOnline.setOnAction((event) -> { - controller.getSettings().setServerType(ServerType.ONLINE); - controller.loadSettingsTab(); - }); - - textFieldClientSecret.setText("******"); - - comboBoxLanguage.setCellFactory((view) -> { - return new LanguageCell(true); - }); - - comboBoxLanguage.getItems().addAll(LanguageType.values()); - comboBoxLanguage.setButtonCell(new LanguageCell(false)); - comboBoxLanguage.setValue(LanguageType.ENGLISH); - previousLanguage = LanguageType.ENGLISH; - checkboxEnableAutoUpdate.setSelected(true); - - applyStyle(); - - textFieldCurrency.setPromptText(Localization.getString(Strings.CURRENCY_PLACEHOLDER)); - - ToggleGroup toggleGroup = new ToggleGroup(); - radioButtonRestActivated.setToggleGroup(toggleGroup); - radioButtonRestDeactivated.setToggleGroup(toggleGroup); - - hboxSettings.prefWidthProperty().bind(scrollPane.widthProperty().subtract(25)); - - refreshLabelsUpdate(); - prefill(); - checkServerStatus(); - } - - @Override - public void prefill() - { - textFieldCurrency.setText(controller.getSettings().getCurrency()); - - if(controller.getSettings().isRestActivated()) - { - radioButtonRestActivated.setSelected(true); - } - else - { - radioButtonRestDeactivated.setSelected(true); - } - - if(controller.getSettings().getLanguage() != null) - { - LanguageType language = controller.getSettings().getLanguage(); - comboBoxLanguage.setValue(language); - previousLanguage = language; - } - - checkboxEnableAutoUpdate.setSelected(controller.getSettings().isAutoUpdateCheckEnabled()); - } - - private void checkServerStatus() - { - LocalServerHandler serverHandler = new LocalServerHandler(); - switch(serverHandler.getServerStatus()) - { - case ACTIVE: - labelLocalServerStatus.setText(Localization.getString(Strings.LOCAL_SERVER_STATUS_OK)); - buttonLocalServerAction.setVisible(false); - refreshLabelsUpdate(); - save(); - break; - case INACTIVE: - Platform.runLater(()->{ - LoadingModal.showModal(controller, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_LOCAL_SERVER), controller.getStage(), controller.getIcon()); - }); - labelLocalServerStatus.setText(Localization.getString(Strings.LOCAL_SERVER_STATUS_NOT_STARTED)); - buttonLocalServerAction.setVisible(false); - Worker.runLater(() -> { - try - { - Logger.debug("Starting local Server..."); - serverHandler.createServerSettingsIfNotExists(); - serverHandler.startServer(); - - Logger.debug("Trying to connect to local server..."); - Platform.runLater(()->{LoadingModal.setMessage(Localization.getString(Strings.LOAD_LOCAL_SERVER_CONNECT));}); - int retryCount = 1; - while(retryCount <= MAX_NUMBER_OF_RETRIES) - { - final int retries = retryCount; - boolean isActive = serverHandler.getServerStatus().equals(LocalServerStatus.ACTIVE); - if(isActive) - { - Logger.debug("Connected to local server"); - break; - } - - if(retryCount == MAX_NUMBER_OF_RETRIES) - { - Logger.debug("Couldn't connect to local server. Giving up after " + retryCount + " retries."); - throw new LocalServerException(""); - } - else - { - Logger.debug("Couldn't connect to local server. Retry " + retryCount + "/" + MAX_NUMBER_OF_RETRIES + ". Next Retry in " + MILLIS_UNTIL_NEXT_RETRY/1000 + " Seconds..."); - Platform.runLater(()->{LoadingModal.setMessage(Localization.getString(Strings.LOAD_LOCAL_SERVER_RETRY, retries, MAX_NUMBER_OF_RETRIES));}); - retryCount++; - try - { - Thread.sleep(MILLIS_UNTIL_NEXT_RETRY); - } - catch(InterruptedException e) - { - } - } - } - } - catch(IOException e) - { - Logger.debug("Error while starting local server"); - Logger.error(e); - Platform.runLater(()->{ - LoadingModal.closeModal(); - AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_START, e.getMessage()), controller.getIcon(), controller.getStage(), null, false); - controller.forceSettingsTab(); - }); - return; - } - catch(LocalServerException ex) - { - Logger.debug("Error while starting local server"); - Platform.runLater(()->{ - LoadingModal.closeModal(); - AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_START, ""), controller.getIcon(), controller.getStage(), null, false); - controller.refresh(controller.getFilterSettings()); - buttonLocalServerAction.setText(Localization.getString(Strings.LOCAL_SERVER_ACTION_NOT_STARTED)); - buttonLocalServerAction.setVisible(true); - buttonLocalServerAction.setDisable(false); - - buttonLocalServerAction.setOnAction((event) -> { - buttonLocalServerAction.setDisable(true); - checkServerStatus(); - }); - }); - return; - } - - Platform.runLater(()->{ - checkServerStatus(); - LoadingModal.closeModal(); - }); - }); - break; - case MISSING: - controller.forceSettingsTab(); - labelLocalServerStatus.setText(Localization.getString(Strings.LOCAL_SERVER_STATUS_NOT_PRESENT)); - buttonLocalServerAction.setText(Localization.getString(Strings.LOCAL_SERVER_ACTION_NOT_PRESENT)); - buttonLocalServerAction.setVisible(true); - buttonLocalServerAction.setDisable(false); - - buttonLocalServerAction.setOnAction((event) -> { - buttonLocalServerAction.setDisable(true); - LoadingModal.showModal(controller, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DOWNLOAD_LOCAL_SERVER), controller.getStage(), controller.getIcon()); - - Worker.runLater(() -> { - try - { - serverHandler.downloadServer(Localization.getString(Strings.VERSION_NAME)); - serverHandler.createServerSettingsIfNotExists(); - Platform.runLater(()->{ - checkServerStatus(); - LoadingModal.closeModal(); - }); - } - catch(Exception e) - { - Logger.error(e); - Platform.runLater(()->{ - LoadingModal.closeModal(); - AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_DOWNLOAD, e.getMessage()), controller.getIcon(), controller.getStage(), null, false); - buttonLocalServerAction.setDisable(false); - }); - } - }); - }); - break; - default: - break; - } - } - - @Override - void refreshLabelsUpdate() - { - Updater updater = controller.getUpdater(); - labelCurrentVersion.setText(Localization.getString(Strings.VERSION_NAME)); - labelLatestVersion.setText(updater.getLatestVersion().getVersionName()); - } - - @Override - public void save() - { - String clientSecret = textFieldClientSecret.getText(); - String currency = textFieldCurrency.getText(); - - if(clientSecret == null || clientSecret.trim().equals("")) - { - AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", Localization.getString(Strings.WARNING_EMPTY_SECRET_CLIENT), controller.getIcon(), controller.getStage(), null, false); - return; - } - clientSecret = clientSecret.trim(); - - if(currency == null || currency.trim().equals("")) - { - AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", Localization.getString(Strings.WARNING_EMPTY_CURRENCY), controller.getIcon(), controller.getStage(), null, false); - return; - } - currency = currency.trim(); - - if(controller.getSettings().isComplete()) - { - if(!clientSecret.equals("******")) - { - controller.getSettings().setClientSecret(HashUtils.hash(clientSecret, Helpers.SALT)); - } - - controller.getSettings().setCurrency(currency); - controller.getSettings().setRestActivated(radioButtonRestActivated.isSelected()); - controller.getSettings().setLanguage(comboBoxLanguage.getValue()); - controller.getSettings().setAutoUpdateCheckEnabled(checkboxEnableAutoUpdate.isSelected()); - } - else - { - Settings settings = new Settings(); - - if(!clientSecret.equals("******")) - { - settings.setClientSecret(HashUtils.hash(clientSecret, Helpers.SALT)); - } - else - { - settings.setClientSecret(controller.getSettings().getClientSecret()); - } - - settings.setCurrency(currency); - settings.setRestActivated(radioButtonRestActivated.isSelected()); - settings.setLanguage(comboBoxLanguage.getValue()); - settings.setAutoUpdateCheckEnabled(checkboxEnableAutoUpdate.isSelected()); - controller.setSettings(settings); - } - - controller.getSettings().setServerType(ServerType.LOCAL); - controller.getSettings().setSecret(HashUtils.hash("BudgetMaster", Helpers.SALT)); - controller.getSettings().setUrl("https://localhost:9000"); - ArrayList<String> trustedHosts = new ArrayList<>(); - trustedHosts.add("localhost"); - controller.getSettings().setTrustedHosts(trustedHosts); - - try - { - FileHelper.saveSettings(controller.getSettings()); - } - catch(IOException e) - { - Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_SETTINGS_SAVE), controller.getIcon(), controller.getStage(), null, false); - } - - textFieldClientSecret.setText("******"); - - RestartHandler restartHandler = new RestartHandler(controller); - restartHandler.handleRestart(previousLanguage); - refreshLabelsUpdate(); - } - - public void handleIncompatibleServer() - { - labelLocalServerStatus.setText(Localization.getString(Strings.LOCAL_SERVER_STATUS_INCOMPATIBLE)); - buttonLocalServerAction.setText(Localization.getString(Strings.LOCAL_SERVER_ACTION_INCOMPATIBLE)); - buttonLocalServerAction.setVisible(true); - buttonLocalServerAction.setDisable(false); - - buttonLocalServerAction.setOnAction((event) -> { - buttonLocalServerAction.setDisable(true); - LoadingModal.showModal(controller, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DOWNLOAD_LOCAL_SERVER), controller.getStage(), controller.getIcon()); - - Worker.runLater(() -> { - try - { - LocalServerHandler serverHandler = new LocalServerHandler(); - serverHandler.shutdownServer(); - Thread.sleep(3000); - serverHandler.downloadServer(Localization.getString(Strings.VERSION_NAME)); - serverHandler.createServerSettingsIfNotExists(); - Platform.runLater(()->{ - checkServerStatus(); - LoadingModal.closeModal(); - }); - } - catch(Exception e) - { - Logger.error(e); - Platform.runLater(()->{ - LoadingModal.closeModal(); - AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_DOWNLOAD, e.getMessage()), controller.getIcon(), controller.getStage(), null, false); - buttonLocalServerAction.setDisable(false); - }); - } - }); - }); - } - - @Override - public void applyStyle() - { - anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND)); - scrollPane.setStyle("-fx-background-color: transparent"); - labelClientSecret.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - labelStatus.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - labelCurrency.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - toggleButtonOnline.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14; -fx-background-radius: 3 0 0 3"); - toggleButtonLocal.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_DARK_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14; -fx-background-radius: 0 3 3 0; -fx-effect: innershadow(gaussian, rgba(0,0,0,0.7), 10,0,0,0);"); - buttonSave.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); - buttonLocalServerAction.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - buttonExportDB.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - buttonImportDB.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - buttonDeleteDB.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_RED) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - buttonSearchUpdates.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/OnlineServerSettingsController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/OnlineServerSettingsController.java deleted file mode 100644 index 44665753d8c9e3ea86025300c8eef8aa7fc882a3..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/OnlineServerSettingsController.java +++ /dev/null @@ -1,338 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller.settings; - -import java.io.IOException; -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.ServerType; -import de.deadlocker8.budgetmaster.logic.Settings; -import de.deadlocker8.budgetmaster.logic.updater.Updater; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.FileHelper; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.LanguageType; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.RestartHandler; -import de.deadlocker8.budgetmasterclient.ui.cells.LanguageCell; -import de.deadlocker8.budgetmasterclient.ui.controller.Controller; -import javafx.fxml.FXML; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.CheckBox; -import javafx.scene.control.ComboBox; -import javafx.scene.control.Label; -import javafx.scene.control.RadioButton; -import javafx.scene.control.ScrollPane; -import javafx.scene.control.TextArea; -import javafx.scene.control.TextField; -import javafx.scene.control.ToggleButton; -import javafx.scene.control.ToggleGroup; -import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.HBox; -import logger.Logger; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.HashUtils; -import tools.Localization; - -public class OnlineServerSettingsController extends SettingsController -{ - @FXML private AnchorPane anchorPaneMain; - @FXML private ScrollPane scrollPane; - @FXML private HBox hboxSettings; - @FXML private ToggleButton toggleButtonOnline; - @FXML private ToggleButton toggleButtonLocal; - @FXML private Label labelClientSecret; - @FXML private TextField textFieldClientSecret; - @FXML private TextField textFieldURL; - @FXML private Label labelURL; - @FXML private TextField textFieldSecret; - @FXML private Label labelSecret; - @FXML private TextField textFieldCurrency; - @FXML private Label labelCurrency; - @FXML private Button buttonSave; - @FXML private Button buttonExportDB; - @FXML private Button buttonImportDB; - @FXML private Button buttonDeleteDB; - @FXML private RadioButton radioButtonRestActivated; - @FXML private RadioButton radioButtonRestDeactivated; - @FXML private TextArea textAreaTrustedHosts; - @FXML private ComboBox<LanguageType> comboBoxLanguage; - @FXML private CheckBox checkboxEnableAutoUpdate; - @FXML private Button buttonSearchUpdates; - @FXML private Label labelCurrentVersion; - @FXML private Label labelLatestVersion; - - private LanguageType previousLanguage; - - @Override - public void init(Controller controller) - { - super.controller = controller; - - ToggleGroup toggleGroupServerType = new ToggleGroup(); - toggleButtonOnline.setToggleGroup(toggleGroupServerType); - toggleButtonLocal.setToggleGroup(toggleGroupServerType); - toggleButtonLocal.setOnAction((event)->{ - controller.getSettings().setServerType(ServerType.LOCAL); - controller.loadSettingsTab(); - }); - - textFieldClientSecret.setText("******"); - - comboBoxLanguage.setCellFactory((view) -> { - return new LanguageCell(true); - }); - - comboBoxLanguage.getItems().addAll(LanguageType.values()); - comboBoxLanguage.setButtonCell(new LanguageCell(false)); - comboBoxLanguage.setValue(LanguageType.ENGLISH); - previousLanguage = LanguageType.ENGLISH; - checkboxEnableAutoUpdate.setSelected(true); - - prefill(); - - applyStyle(); - - textFieldURL.setPromptText(Localization.getString(Strings.URL_PLACEHOLDER)); - textFieldCurrency.setPromptText(Localization.getString(Strings.CURRENCY_PLACEHOLDER)); - textAreaTrustedHosts.setPromptText(Localization.getString(Strings.TRUSTED_HOSTS_PLACEHOLDER)); - - ToggleGroup toggleGroup = new ToggleGroup(); - radioButtonRestActivated.setToggleGroup(toggleGroup); - radioButtonRestDeactivated.setToggleGroup(toggleGroup); - - hboxSettings.prefWidthProperty().bind(scrollPane.widthProperty().subtract(25)); - - refreshLabelsUpdate(); - - if(controller.checkSettings()) - { - controller.refresh(controller.getFilterSettings()); - } - } - - @Override - public void prefill() - { - if(controller.getSettings().isComplete()) - { - textFieldURL.setText(controller.getSettings().getUrl()); - textFieldSecret.setText("******"); - textFieldCurrency.setText(controller.getSettings().getCurrency()); - } - - if(controller.getSettings().isRestActivated()) - { - radioButtonRestActivated.setSelected(true); - } - else - { - radioButtonRestDeactivated.setSelected(true); - } - setTextAreaTrustedHosts(controller.getSettings().getTrustedHosts()); - if(controller.getSettings().getLanguage() != null) - { - LanguageType language = controller.getSettings().getLanguage(); - comboBoxLanguage.setValue(language); - previousLanguage = language; - } - - checkboxEnableAutoUpdate.setSelected(controller.getSettings().isAutoUpdateCheckEnabled()); - } - - @Override - void refreshLabelsUpdate() - { - Updater updater = controller.getUpdater(); - labelCurrentVersion.setText(Localization.getString(Strings.VERSION_NAME)); - labelLatestVersion.setText(updater.getLatestVersion().getVersionName()); - } - - private void setTextAreaTrustedHosts(ArrayList<String> trustedHosts) - { - StringBuilder trustedHostsString = new StringBuilder(); - if(trustedHosts != null) - { - for(String currentHost : trustedHosts) - { - trustedHostsString.append(currentHost); - trustedHostsString.append("\n"); - } - textAreaTrustedHosts.setText(trustedHostsString.toString()); - } - else - { - textAreaTrustedHosts.setText(""); - } - } - - @Override - public void save() - { - String clientSecret = textFieldClientSecret.getText(); - String url = textFieldURL.getText(); - String secret = textFieldSecret.getText(); - String currency = textFieldCurrency.getText(); - - if(clientSecret == null || clientSecret.trim().equals("")) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_EMPTY_SECRET_CLIENT), - controller.getIcon(), - controller.getStage(), - null, - false); - return; - } - clientSecret = clientSecret.trim(); - - if(url == null || url.trim().equals("")) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_EMPTY_URL), - controller.getIcon(), - controller.getStage(), - null, - false); - return; - } - url = url.trim(); - - if(secret == null || secret.trim().equals("")) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_EMPTY_SECRET_SERVER), - controller.getIcon(), - controller.getStage(), - null, - false); - return; - } - secret = secret.trim(); - - if(currency == null || currency.trim().equals("")) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_EMPTY_CURRENCY), - controller.getIcon(), - controller.getStage(), - null, - false); - return; - } - currency = currency.trim(); - - ArrayList<String> trustedHosts = new ArrayList<>(); - String trustedHostText = textAreaTrustedHosts.getText(); - String[] trustedHostsArray = trustedHostText.split("\n"); - for(String currentHost : trustedHostsArray) - { - currentHost = currentHost.trim(); - if(!currentHost.equals("")) - { - trustedHosts.add(currentHost); - } - } - setTextAreaTrustedHosts(trustedHosts); - - if(controller.getSettings().isComplete()) - { - if(!clientSecret.equals("******")) - { - controller.getSettings().setClientSecret(HashUtils.hash(clientSecret, Helpers.SALT)); - } - - if(!secret.equals("******")) - { - controller.getSettings().setSecret(HashUtils.hash(secret, Helpers.SALT)); - } - controller.getSettings().setUrl(url); - controller.getSettings().setCurrency(currency); - controller.getSettings().setRestActivated(radioButtonRestActivated.isSelected()); - controller.getSettings().setTrustedHosts(trustedHosts); - controller.getSettings().setLanguage(comboBoxLanguage.getValue()); - controller.getSettings().setAutoUpdateCheckEnabled(checkboxEnableAutoUpdate.isSelected()); - controller.getSettings().setServerType(ServerType.ONLINE); - } - else - { - Settings settings = new Settings(); - - if(!clientSecret.equals("******")) - { - settings.setClientSecret(HashUtils.hash(clientSecret, Helpers.SALT)); - } - else - { - settings.setClientSecret(controller.getSettings().getClientSecret()); - } - - if(!secret.equals("******")) - { - settings.setSecret(HashUtils.hash(secret, Helpers.SALT)); - } - else - { - settings.setSecret(controller.getSettings().getSecret()); - } - settings.setUrl(url); - settings.setCurrency(currency); - settings.setRestActivated(radioButtonRestActivated.isSelected()); - settings.setTrustedHosts(trustedHosts); - settings.setLanguage(comboBoxLanguage.getValue()); - settings.setAutoUpdateCheckEnabled(checkboxEnableAutoUpdate.isSelected()); - settings.setServerType(ServerType.ONLINE); - controller.setSettings(settings); - } - - try - { - FileHelper.saveSettings(controller.getSettings()); - } - catch(IOException e) - { - Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_SETTINGS_SAVE), - controller.getIcon(), - controller.getStage(), - null, - false); - } - - textFieldClientSecret.setText("******"); - textFieldSecret.setText("******"); - - RestartHandler restartHandler = new RestartHandler(controller); - restartHandler.handleRestart(previousLanguage); - refreshLabelsUpdate(); - } - - @Override - public void applyStyle() - { - anchorPaneMain.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND)); - scrollPane.setStyle("-fx-background-color: transparent"); - toggleButtonOnline.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_DARK_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14; -fx-background-radius: 3 0 0 3; -fx-effect: innershadow(gaussian, rgba(0,0,0,0.7), 10,0,0,0);"); - toggleButtonLocal.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14; -fx-background-radius: 0 3 3 0"); - labelClientSecret.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - labelSecret.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - labelURL.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - labelCurrency.setStyle("-fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - buttonSave.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); - buttonExportDB.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - buttonImportDB.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - buttonDeleteDB.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_RED) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - buttonSearchUpdates.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;"); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/SettingsController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/SettingsController.java deleted file mode 100644 index 43dd3187ea2fa6d1850109c146be462ad70a35bb..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/SettingsController.java +++ /dev/null @@ -1,44 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.controller.settings; - -import de.deadlocker8.budgetmasterclient.ui.Styleable; -import de.deadlocker8.budgetmasterclient.ui.controller.Controller; -import de.deadlocker8.budgetmasterclient.utils.DatabaseDeleter; -import de.deadlocker8.budgetmasterclient.utils.DatabaseExporter; -import de.deadlocker8.budgetmasterclient.utils.DatabaseImporter; - -public abstract class SettingsController implements Styleable -{ - Controller controller; - - public abstract void init(Controller controller); - - public abstract void prefill(); - - abstract void refreshLabelsUpdate(); - - public abstract void save(); - - public void exportDB() - { - DatabaseExporter exporter = new DatabaseExporter(controller); - exporter.exportDatabase(); - } - - public void importDB() - { - DatabaseImporter importer = new DatabaseImporter(controller); - importer.importDatabase(); - } - - public void deleteDB() - { - DatabaseDeleter deleter = new DatabaseDeleter(controller); - deleter.deleteDatabase(false); - } - - public void checkForUpdates() - { - controller.checkForUpdates(true); - refreshLabelsUpdate(); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/customAlert/CustomAlertController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/customAlert/CustomAlertController.java deleted file mode 100644 index 79e903d39f15162f8b838e43ac3e60467756e2ea..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/customAlert/CustomAlertController.java +++ /dev/null @@ -1,87 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.customAlert; - -import de.deadlocker8.budgetmasterclient.ui.controller.BaseController; -import de.deadlocker8.budgetmasterclient.ui.controller.SplashScreenController; -import javafx.fxml.FXML; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Label; -import javafx.scene.image.Image; -import javafx.scene.image.ImageView; -import javafx.scene.input.KeyCode; -import javafx.scene.layout.AnchorPane; -import javafx.stage.Modality; -import javafx.stage.Stage; -import tools.Localization; - -public class CustomAlertController extends BaseController -{ - @FXML private AnchorPane anchorPaneMain; - @FXML private ImageView imageView; - @FXML private Label labelMessage; - - private Stage parentStage; - private SplashScreenController controller; - private AlertType alertType; - private String title; - private String message; - - public CustomAlertController(Stage parentStage, SplashScreenController controller, AlertType alertType, String title, String message) - { - this.parentStage = parentStage; - this.controller = controller; - this.alertType = alertType; - this.title = title; - this.message = message; - load("/de/deadlocker8/budgetmaster/ui/customAlert/CustomAlert.fxml", Localization.getBundle()); - getStage().showAndWait(); - } - - @Override - public void initStage(Stage stage) - { - stage.initOwner(parentStage); - stage.initModality(Modality.APPLICATION_MODAL); - stage.setTitle(title); - stage.getIcons().add(controller.getIcon()); - stage.setResizable(false); - } - - @Override - public void init() - { - labelMessage.setText(message); - - getStage().getScene().setOnKeyReleased((event)->{ - event.consume(); - if(event.getCode().equals(KeyCode.ENTER)) - { - confirm(); - } - }); - - switch(alertType) - { - case CONFIRMATION: - imageView.setImage(new Image("/com/sun/javafx/scene/control/skin/modena/dialog-confirmation.png")); - break; - case ERROR: - imageView.setImage(new Image("/com/sun/javafx/scene/control/skin/modena/dialog-error.png")); - break; - case INFORMATION: - imageView.setImage(new Image("/com/sun/javafx/scene/control/skin/modena/dialog-information.png")); - break; - case WARNING: - imageView.setImage(new Image("/com/sun/javafx/scene/control/skin/modena/dialog-warning.png")); - break; - default: - imageView.setImage(new Image("/com/sun/javafx/scene/control/skin/modena/dialog-information.png")); - break; - } - } - - @FXML - public void confirm() - { - getStage().close(); - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/tagField/TagField.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/tagField/TagField.java deleted file mode 100644 index 82b3728e3081507a29bd4a7f17666925412bdbb5..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/tagField/TagField.java +++ /dev/null @@ -1,228 +0,0 @@ -package de.deadlocker8.budgetmasterclient.ui.tagField; - -import java.util.ArrayList; -import java.util.Collection; - -import org.controlsfx.control.textfield.AutoCompletionBinding; -import org.controlsfx.control.textfield.TextFields; - -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.controller.NewPaymentController; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.ScrollPane; -import javafx.scene.control.ScrollPane.ScrollBarPolicy; -import javafx.scene.control.TextField; -import javafx.scene.input.KeyCode; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.layout.VBox; -import javafx.util.Callback; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.Localization; - -public class TagField extends VBox -{ - private ArrayList<Tag> tags; - private ArrayList<Tag> allTags; - private HBox hboxTags; - private TextField textField; - private NewPaymentController parentController; - - public TagField(ArrayList<Tag> tags, ArrayList<Tag> allAvailableTags, NewPaymentController parentController) - { - this.tags = tags; - this.allTags = allAvailableTags; - this.parentController = parentController; - - this.hboxTags = initHboxTags(); - ScrollPane scrollPane = new ScrollPane(); - scrollPane.setContent(hboxTags); - scrollPane.setVbarPolicy(ScrollBarPolicy.NEVER); - scrollPane.setMinHeight(50); - scrollPane.setStyle("-fx-background-color: #FFFFFF; -fx-background-radius: 5px; -fx-border-color: #000000; -fx-border-width: 1 1 0 1; -fx-border-radius: 5px 5px 0 0"); - - this.getChildren().add(scrollPane); - VBox.setVgrow(scrollPane, Priority.ALWAYS); - - textField = new TextField(); - textField.setStyle("-fx-background-color: #FFFFFF; -fx-border-color: #000000; -fx-border-width: 1; -fx-background-radius: 5px; -fx-border-radius: 0 0 5px 5px"); - textField.setPromptText(Localization.getString(Strings.TAGFIELD_PLACEHOLDER)); - textField.setMaxWidth(Double.MAX_VALUE); - textField.setOnKeyPressed((event)->{ - if(event.getCode().equals(KeyCode.ENTER)) - { - addTag(textField.getText().trim()); - } - else if(event.getCode().equals(KeyCode.DOWN)) - { - textField.setText(" "); - textField.setText(""); - } - }); - - textField.setOnMousePressed((event)->{ - textField.setText(" "); - textField.setText(""); - }); - - TextFields.bindAutoCompletion(textField, new Callback<AutoCompletionBinding.ISuggestionRequest, Collection<String>>() - { - @Override - public Collection<String> call(org.controlsfx.control.textfield.AutoCompletionBinding.ISuggestionRequest param) - { - ArrayList<String> completions = getCompletions(allTags); - ArrayList<String> remainingCompletions = new ArrayList<>(); - for(String currentCompletion : completions) - { - if(currentCompletion.toLowerCase().contains(param.getUserText().toLowerCase())) - { - remainingCompletions.add(currentCompletion); - } - } - - return remainingCompletions; - } - }); - this.getChildren().add(textField); - - this.setStyle("-fx-background-color: #FFFFFF; -fx-background-radius: 5px;"); - - refresh(false); - } - - private HBox initHboxTags() - { - HBox newHboxTags = new HBox(); - newHboxTags.setSpacing(5); - newHboxTags.setPadding(new Insets(5)); - newHboxTags.setStyle("-fx-background-color: transparent"); - return newHboxTags; - } - - private ArrayList<String> getCompletions(ArrayList<Tag> allTags) - { - ArrayList<String> newCompletions = new ArrayList<>(); - for(Tag currentTag : allTags) - { - boolean isAlreadyInList = false; - for(Tag paymentTag : tags) - { - if(currentTag.getName().equals(paymentTag.getName())) - { - isAlreadyInList = true; - } - } - - if(!isAlreadyInList) - { - newCompletions.add(currentTag.getName()); - } - } - - return newCompletions; - } - - public ArrayList<Tag> getTags() - { - return tags; - } - - public void setTags(ArrayList<Tag> tags) - { - this.tags = tags; - refresh(false); - } - - public void setAllTags(ArrayList<Tag> allTags) - { - this.allTags = allTags; - refresh(false); - } - - public void addTag(String tagName) - { - if(tagName.equals("")) - { - return; - } - - for(Tag currentTag : tags) - { - if(currentTag.getName().equals(tagName)) - { - return; - } - } - - if(tagName.length() > 45) - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_TAG_CHARACTER_LIMIT_REACHED_45), - parentController.getController().getIcon(), - parentController.getStage(), - null, - false); - return; - } - - tags.add(new Tag(-1, tagName)); - refresh(true); - } - - public void removeTag(Tag tag) - { - tags.remove(tag); - refresh(true); - } - - private void refresh(boolean requstFocus) - { - hboxTags.getChildren().clear(); - - for(Tag currentTag : tags) - { - hboxTags.getChildren().add(generateTag(currentTag)); - } - - if(requstFocus) - { - textField.setText(""); - textField.requestFocus(); - } - } - - private HBox generateTag(Tag tag) - { - HBox hboxTag = new HBox(); - hboxTag.setSpacing(5); - hboxTag.setAlignment(Pos.CENTER_LEFT); - hboxTag.setPadding(new Insets(0, 3, 0, 7)); - hboxTag.setStyle("-fx-background-color: #cccccc; -fx-background-radius: 5px;"); - - Label labelTagName = new Label(tag.getName()); - labelTagName.setStyle("-fx-font-size: 13; -fx-text-fill: " + ConvertTo.toRGBHexWithoutOpacity(Colors.TEXT)); - hboxTag.getChildren().add(labelTagName); - - Button buttonDelete = new Button(); - buttonDelete.setGraphic(new FontIcon(FontIconType.TIMES, 13, Colors.TEXT)); - buttonDelete.setStyle("-fx-background-color: transparent;"); - buttonDelete.getStyleClass().add("button-hoverable"); - buttonDelete.setOnAction((event)->{ - removeTag(tag); - }); - hboxTag.getChildren().add(buttonDelete); - - return hboxTag; - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseDeleter.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseDeleter.java deleted file mode 100644 index 83474efdfbe9aaf1c41eb834b0d581a624d62fe8..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseDeleter.java +++ /dev/null @@ -1,91 +0,0 @@ -package de.deadlocker8.budgetmasterclient.utils; - -import java.util.Optional; - -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.controller.Controller; -import javafx.application.Platform; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.TextInputDialog; -import javafx.stage.Stage; -import logger.Logger; -import tools.AlertGenerator; -import tools.BASE58Type; -import tools.ConvertTo; -import tools.Localization; -import tools.RandomCreations; -import tools.Worker; - -public class DatabaseDeleter -{ - private Controller controller; - - public DatabaseDeleter(Controller controller) - { - this.controller = controller; - } - - public void deleteDatabase(boolean importPending) - { - String verificationCode = ConvertTo.toBase58(RandomCreations.generateRandomMixedCaseString(4, true), true, BASE58Type.UPPER); - - TextInputDialog dialog = new TextInputDialog(); - dialog.setTitle(Localization.getString(Strings.INFO_TITLE_DATABASE_DELETE)); - dialog.setHeaderText(Localization.getString(Strings.INFO_HEADER_TEXT_DATABASE_DELETE)); - dialog.setContentText(Localization.getString(Strings.INFO_TEXT_DATABASE_DELETE, verificationCode)); - Stage dialogStage = (Stage)dialog.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(controller.getIcon()); - dialogStage.initOwner(controller.getStage()); - - Optional<String> result = dialog.showAndWait(); - if(result.isPresent()) - { - if(result.get().equals(verificationCode)) - { - LoadingModal.showModal(controller, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_DELETE), controller.getStage(), controller.getIcon()); - - Worker.runLater(() -> { - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - connection.deleteDatabase(); - Platform.runLater(() -> { - LoadingModal.closeModal(); - if(importPending) - { - DatabaseImporter importer = new DatabaseImporter(controller); - importer.importDB(); - } - else - { - controller.refresh(controller.getFilterSettings()); - } - }); - } - catch(Exception e) - { - Logger.error(e); - Platform.runLater(() -> { - LoadingModal.closeModal(); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - }); - } - }); - } - else - { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_WRONG_VERIFICATION_CODE), - controller.getIcon(), - controller.getStage(), - null, - false); - deleteDatabase(importPending); - } - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseExporter.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseExporter.java deleted file mode 100644 index 8a92711fc41b4daaa7ff32f334a8b584a284ac1b..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseExporter.java +++ /dev/null @@ -1,69 +0,0 @@ -package de.deadlocker8.budgetmasterclient.utils; - -import java.io.File; - -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.utils.FileHelper; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.controller.Controller; -import javafx.application.Platform; -import javafx.scene.control.Alert.AlertType; -import javafx.stage.FileChooser; -import logger.Logger; -import tools.AlertGenerator; -import tools.Localization; -import tools.Worker; - -public class DatabaseExporter -{ - private Controller controller; - - public DatabaseExporter(Controller controller) - { - this.controller = controller; - } - - public void exportDatabase() - { - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle(Localization.getString(Strings.TITLE_DATABASE_EXPORT)); - FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("JSON (*.json)", "*.json"); - fileChooser.getExtensionFilters().add(extFilter); - File file = fileChooser.showSaveDialog(controller.getStage()); - if(file != null) - { - LoadingModal.showModal(controller, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_EXPORT), controller.getStage(), controller.getIcon()); - - Worker.runLater(() -> { - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - String databaseJSON = connection.exportDatabase(); - FileHelper.saveDatabaseJSON(file, databaseJSON); - - Platform.runLater(() -> { - LoadingModal.closeModal(); - AlertGenerator.showAlert(AlertType.INFORMATION, - Localization.getString(Strings.INFO_TITLE_DATABASE_EXPORT), - "", - Localization.getString(Strings.INFO_TEXT_DATABASE_EXPORT), - controller.getIcon(), - controller.getStage(), - null, - false); - }); - } - catch(Exception e) - { - Logger.error(e); - Platform.runLater(() -> { - LoadingModal.closeModal(); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - }); - } - }); - } - - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseImporter.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseImporter.java deleted file mode 100644 index 5d6ac00ff20aeb98668fcad0e8edca6792ae43d3..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseImporter.java +++ /dev/null @@ -1,155 +0,0 @@ -package de.deadlocker8.budgetmasterclient.utils; - -import java.io.File; -import java.io.IOException; -import java.util.Optional; - -import de.deadlocker8.budgetmaster.logic.database.Database; -import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.utils.FileHelper; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import de.deadlocker8.budgetmasterclient.ui.controller.Controller; -import javafx.application.Platform; -import javafx.scene.control.Alert; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.ButtonBar.ButtonData; -import javafx.scene.control.ButtonType; -import javafx.scene.control.DialogPane; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyEvent; -import javafx.stage.FileChooser; -import javafx.stage.Stage; -import logger.Logger; -import tools.AlertGenerator; -import tools.Localization; -import tools.Worker; - -public class DatabaseImporter -{ - private Controller controller; - - public DatabaseImporter(Controller controller) - { - this.controller = controller; - } - - public void importDatabase() - { - Alert alert = new Alert(AlertType.CONFIRMATION); - alert.setTitle(Localization.getString(Strings.INFO_TITLE_DATABASE_IMPORT_DIALOG)); - alert.setHeaderText(""); - alert.setContentText(Localization.getString(Strings.INFO_TEXT_DATABASE_IMPORT_DIALOG)); - Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(controller.getIcon()); - dialogStage.initOwner(controller.getStage()); - - ButtonType buttonTypeDelete = new ButtonType(Localization.getString(Strings.INFO_TEXT_DATABASE_IMPORT_DIALOG_DELETE)); - ButtonType buttonTypeAppend = new ButtonType(Localization.getString(Strings.INFO_TEXT_DATABASE_IMPORT_DIALOG_APPEND)); - ButtonType buttonTypeCancel = new ButtonType(Localization.getString(Strings.CANCEL), ButtonData.CANCEL_CLOSE); - alert.getButtonTypes().setAll(buttonTypeDelete, buttonTypeAppend, buttonTypeCancel); - - DialogPane dialogPane = alert.getDialogPane(); - dialogPane.getButtonTypes().stream().map(dialogPane::lookupButton).forEach(button -> button.addEventHandler(KeyEvent.KEY_PRESSED, (event) -> { - if(KeyCode.ENTER.equals(event.getCode()) && event.getTarget() instanceof Button) - { - ((Button)event.getTarget()).fire(); - } - })); - - Optional<ButtonType> result = alert.showAndWait(); - if(result.get() == buttonTypeDelete) - { - DatabaseDeleter deleter = new DatabaseDeleter(controller); - deleter.deleteDatabase(true); - } - else if(result.get() == buttonTypeAppend) - { - importDB(); - } - } - - public void importDB() - { - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle(Localization.getString(Strings.TITLE_DATABASE_IMPORT)); - FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("JSON (*.json)", "*.json"); - fileChooser.getExtensionFilters().add(extFilter); - File file = fileChooser.showOpenDialog(controller.getStage()); - if(file != null) - { - Database database; - try - { - database = FileHelper.loadDatabaseJSON(file); - if(database.getCategories() == null - || database.getNormalPayments() == null - || database.getRepeatingPayments() == null - || database.getTags() == null - || database.getTagMatches() == null) - { - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_DATABASE_IMPORT_WRONG_FILE), - controller.getIcon(), - controller.getStage(), - null, - false); - return; - } - } - catch(IOException e1) - { - Logger.error(e1); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_DATABASE_IMPORT), - controller.getIcon(), - controller.getStage(), - null, - false); - return; - } - - LoadingModal.showModal(controller, Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_IMPORT), controller.getStage(), controller.getIcon()); - - Worker.runLater(() -> { - try - { - ServerConnection connection = new ServerConnection(controller.getSettings()); - connection.importDatabase(database); - - Platform.runLater(() -> { - LoadingModal.closeModal(); - - AlertGenerator.showAlert(AlertType.INFORMATION, - Localization.getString(Strings.INFO_TITLE_DATABASE_IMPORT), - "", - Localization.getString(Strings.INFO_TEXT_DATABASE_IMPORT), - controller.getIcon(), - controller.getStage(), - null, - false); - - controller.refresh(controller.getFilterSettings()); - }); - } - catch(Exception e) - { - Logger.error(e); - Platform.runLater(() -> { - LoadingModal.closeModal(); - controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); - }); - } - }); - } - else - { - controller.refresh(controller.getFilterSettings()); - } - } -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/LoadingModal.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/LoadingModal.java deleted file mode 100644 index 748c5ee5e3c9144f5a62db145b0670a1b64a60e3..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/LoadingModal.java +++ /dev/null @@ -1,78 +0,0 @@ -package de.deadlocker8.budgetmasterclient.utils; - -import java.io.IOException; - -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmasterclient.ui.controller.Controller; -import de.deadlocker8.budgetmasterclient.ui.controller.ModalController; -import javafx.fxml.FXMLLoader; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.scene.image.Image; -import javafx.stage.Modality; -import javafx.stage.Stage; -import logger.Logger; -import tools.Localization; - -public class LoadingModal -{ - private static Stage modalStage; - private static ModalController modalController; - - public static void showModal(Controller controller, String title, String message, Stage owner, Image icon) - { - closeModal(); - modalStage = createModal(controller, title, message, owner, icon); - } - - public static void setMessage(String message) - { - if(modalController != null) - { - modalController.setMessage(message); - } - } - - public static void closeModal() - { - if(modalStage != null) - { - modalController.closeAlert(); - modalStage.close(); - modalStage = null; - modalController = null; - } - } - - public static boolean isShowing() - { - return modalStage != null && modalStage.isShowing(); - } - - private static Stage createModal(Controller controller, String title, String message, Stage owner, Image icon) - { - try - { - FXMLLoader fxmlLoader = new FXMLLoader(Helpers.class.getResource("/de/deadlocker8/budgetmaster/ui/fxml/Modal.fxml")); - Parent root = (Parent)fxmlLoader.load(); - fxmlLoader.setResources(Localization.getBundle()); - Stage newStage = new Stage(); - newStage.initOwner(owner); - newStage.initModality(Modality.APPLICATION_MODAL); - newStage.setTitle(title); - newStage.setScene(new Scene(root)); - newStage.getIcons().add(icon); - newStage.setResizable(false); - modalController = fxmlLoader.getController(); - modalController.init(controller, newStage, message); - newStage.show(); - - return newStage; - } - catch(IOException e) - { - Logger.error(e); - return null; - } - } -} diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/changelog.json b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/changelog.json deleted file mode 100644 index 3c430ae2ffb9994aa954c50b16878759c27d074d..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/changelog.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "1":"Client\n-implemented remaining budget overview\n-implemented payment overview\n-implemented categories\n-implemented settings\n\nServer\n-implemented database creation\n-implemented database queries\n-implemented functionality to calculate rest\n-implemented HTTPS\n-implemented server password\n", - "2":"Added functionality to filter payments\n", - "3":"-added charts\n-added database imprt/export/delete functionality\n-implemented better connection error handling\n-bugfixes\n", - "4":"-added possibility to export payments as pdf reports\n-added possibility to export charts as images\n-added unit tests\n-bugfixes\n-security improvements\n -improved database access\n -added password on start\n", - "5":"-bugfixes\n-reports can now include a budget calculation\n", - "6":"Fixed critical bug that prevents repeating payments from being correctly updated for future months.\n", - "7":"-localized all strings into external file\n-added english localization\n-added language chooser to settings\n-remove javafx.Color from server --> server should no run on linux with normal jdk\n-bugfixes:\n -[FIXED] - report budget is calculated incorrectly\n -[FIXED] - refresh after database imprt/delete missing\n -[FIXED] - critical bug concerning repeating payments\n", - "8":"bugfixes:\n -broken month chart if january is selected\n -wrong footer in month report\n -wrong initial file name for month report\n -server start failure\n", - "9":"-remember report table column order and selection\n-added Updater for easier client update procedure\n-bugfixes\n", - "10":"-added tag system (tag payments, suggestion of already used payments, ...)\n-added search for payments (search by name, description, category, tags and amount)\n-added better month/year picker (click on date to open)\n-payment description is now shown in payment tab\n-added hover effect for buttons in main stage to make more clear that they are clickable\n-replaced font in reports\n-settings are now scrollable\n-categories are now sorted alphabetically\n-bugfixes:\n -various bugs concerning the prefilled values of input fields\n-database import\n-compatibility issues with old ReportPreferences\n-available version label was not updated on manual update search\n-non running server leads to alert that states that the server version is not compatible\n" -} \ No newline at end of file diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/flags/english.png b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/flags/english.png deleted file mode 100644 index 56268bc43902937b857b586498cf5059a7926f36..0000000000000000000000000000000000000000 Binary files a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/flags/english.png and /dev/null differ diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/flags/german.png b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/flags/german.png deleted file mode 100644 index 2644cdb785a2ef8eb806b0ae25bcc03c1160ae52..0000000000000000000000000000000000000000 Binary files a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/flags/german.png and /dev/null differ diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/fonts/OpenSans-Regular.ttf b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/fonts/OpenSans-Regular.ttf deleted file mode 100644 index 2e31d02424ed50b9e05c19b5d82500699a6edbb0..0000000000000000000000000000000000000000 Binary files a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/fonts/OpenSans-Regular.ttf and /dev/null differ diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/icon.png b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/icon.png deleted file mode 100644 index be71fa009b5091dc1b6cdd99c2c171609d25339e..0000000000000000000000000000000000000000 Binary files a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/icon.png and /dev/null differ diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties deleted file mode 100644 index ec351e3a352c2b0d027e065f23f7b2b8ba21b261..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties +++ /dev/null @@ -1,350 +0,0 @@ -# DEFAULT -app.name=BudgetMaster -version.code=13 -version.name=1.8.0 -version.date=17.12.17 -author=Robert Goldmann -credits=L�nderflaggen von Freepik auf https://www.flaticon.com\nVerwendete Schriftarten: OpenSans\nVerwendete Bibliotheken:\ngson 2.8.1\njoda-time 2.9.7\nitextpdf 5.0.6\nlaunch4j-maven-plugin 1.7.21\nspark-core 2.5.4\nslf4j 1.7.21\nmysql-connector 6.0.5\njunit 4.12\nsqlite-jdbc 3.21.0 - -folder=Deadlocker/BudgetMaster -roadmap.url=https://deadlocker.thecodelabs.de/roadmap/php/index.php?id=1 -github.url=https://github.com/deadlocker8/BudgetMaster - - -# TITLE -title.incomes=Einnahmen -title.income=Einnahme -title.payments=Ausgaben -title.payment=Ausgabe -title.categories=Kategorien -title.category=Kategorie -title.category.budgets=Verbrauch nach Kategorien -title.amount=Betrag -title.info=Hinweis -title.warning=Warnung -title.error=Fehler -title.category.new=Neue Kategorie -title.category.edit=Kategorie bearbeiten -title.chart.export=Diagramm exportieren -title.modal=Vorgang l�uft -title.payment.edit={0} bearbeiten -title.payment.new=Neue {0} -title.filter=Filter -title.search=Suchen -title.report.save=Bericht speichern -title.database.export=Datenbank exportieren -title.database.import=Datenbank importieren -title.datepicker=Datum w�hlen -title.tags=Das Tag-Eingabefeld - -# LOAD -load.charts=Lade Diagramme... -load.data=Lade Daten... -load.report.tab=Lade Monatsbericht... -load.report=Der Monatsbericht wird erstellt, bitte warten... -load.database.export=Die Datenbank wird exportiert, bitte warten... -load.database.import=Die Datenbank wird importiert, bitte warten... -load.database.delete=Die Datenbank wird gel�scht, bitte warten... -load.update=Update wird heruntergeladen, bitte warten... -load.search=Buchungen werden gesucht, bitte warten... -load.local.server=Starte lokalen Server, bitte warten... -load.download.local.server=Lade lokalen Server herunter, bitte warten... -load.local.server.connect=Verbinde mit lokalem Server, bitte warten... -load.local.server.retry=Verbinde mit lokalem Server... (Versuch {0}/{1}) - -# MISC -category.none=Keine Kategorie -category.rest=�bertrag -tooltip.chart.categories={0}\n{1} %\n{2} -chart.month.line.sum=Summe in {0} -categories.placeholder=Keine Kategorien verf�gbar -chart.categories.title.incomes=Einnahmen nach Kategorien -chart.categories.title.payments=Ausgaben nach Kategorien -ok=OK -cancel=Abbrechen -home.placeholder=Keine Daten verf�gbar -home.budget=von {0} verbleibend -payments.placeholder=Keine Daten verf�gbar -url.placeholder=z.B. https://yourdomain.de -currency.placeholder=z.B. \u20AC, CHF, $ -trusted.hosts.placeholder=z.B. localhost -undefined=unbekannt -tagfield.placeholder=Neuen Tag hier eingeben -shortcut.dev.console=F12 -local.server.status.ok=Server ist gestartet. -local.server.status.not.started=Server konnte nicht gestartet werden. -local.server.action.not.started=Starten -local.server.status.not.present=Server nicht gefunden. -local.server.action.not.present=Herunterladen -local.server.status.incompatible=Server nicht kompatibel. -local.server.action.incompatible=Aktualisieren - -# REPORT -report.position=Nr. -report.date=Datum -report.repeating=Wiederholend -report.category=Kategorie -report.name=Name -report.description=Notiz -report.tags=Tags -report.rating=+/- -report.amount=Betrag -report.headline=Monatsbericht - {0} -report.headline.payments.overview=Buchungs�bersicht -report.sum.total=Einnahmen: {0} / Ausgaben: {1} -report.sum=Summe: {0} -report.footer.left=BudgetMaster Monatsbericht -report.footer.center=Seite {0} -report.repeating.yes=Ja -report.repeating.no=Nein -report.initial.filename=BudgetMaster Monatsbericht - {0}_{1}.pdf -report.budget=Budget -report.incomes=Einnahmen: -report.payments=Ausgaben: -report.budget.rest=Restbudget: - -# MONTH -month.january=Januar -month.february=Februar -month.march=M�rz -month.april=April -month.may=Mai -month.june=Juni -month.july=Juli -month.august=August -month.september=September -month.october=Oktober -month.november=November -month.december=Dezember - -# NOTIFICATION -notification.chart.export=Diagramm erfolgreich exportiert. -notification.report.save=Bericht erfolgreich gespeichert. -notification.settings.save=Erfolgreich gespeichert. -notification.no.update.available=Kein Update verf�gbar. - -# INFO -info.title.category.delete=Kategorie l�schen -info.text.category.delete=M�chtest du diese Kategorie wirklich unwiderruflich l�schen? -info.title.payment.delete=Zahlung l�schen -info.text.payment.delete=M�chtest du diese Zahlung wirklich unwiderruflich l�schen? -info.text.payment.repeating.delete=Es handelt sich um eine wiederkehrende Zahlung. Welche Zahlungen sollen gel�scht werden? -info.text.payment.repeating.delete.all=Alle -info.text.payment.repeating.delete.futures=Alle zuk�nftigen -info.first.start=Vor der ersten Benutzung musst du deine Serverdaten eingeben. -info.title.chart.export=Erfolgreich erstellt -info.text.chart.export=Das Diagramm wurde erfolgreich exportiert. -info.text.chart.export.open.folder=Ordner �ffnen -info.text.chart.export.open.chart=Diagramm �ffnen -info.title.report.save=Erfolgreich erstellt -info.text.report.save=Der Monatsbericht wurde erfolgreich erstellt. -info.text.report.save.open.folder=Ordner �ffnen -info.text.report.save.open.report=Bericht �ffnen -info.title.database.export=Erfolgreich exportiert -info.text.database.export=Die Datenbank wurde erfolgreich exportiert. -info.title.database.import=Erfolgreich importiert -info.text.database.import=Die Datenbank wurde erfolgreich importiert. -info.title.database.import.dialog=Datebank importieren -info.text.database.import.dialog=Soll die Datenbank vor dem Importieren gel�scht werden? -info.text.database.import.dialog.delete=Ja, Datenbank l�schen -info.text.database.import.dialog.append=Nein, Daten hinzuf�gen -info.title.database.delete=Datenbank l�schen -info.header.text.database.delete=Soll die Datenbank wirklich gel�scht werden? -info.text.database.delete=Zur Best�tigung gib folgenden Code ein:\t{0} -info.title.welcome=Willkommen -info.header.text.welcome=Willkommen beim BudgetMaster -info.text.welcome.first.start=Dies scheint dein erster Besuch zu sein, da noch keine Einstellungen existieren.\nDamit es losgehen kann, �berlege dir ein Passwort und trage es in das Passwortfeld ein.\n\n(Hinweis: Das Passwort kann sp�ter jederzeit ge�ndert werden.)\n\n -info.text.welcome.compatibility=Deine Einstellungsdatei ist veraltet und muss aktualisert werden.\nSeit Version v1.3.0 wird ein Passwort ben�tigt, um BudgetMaster zu entsperren. Damit es losgehen kann, �berlege dir ein Passwort und trage es in das Passwortfeld ein.\n\n(Hinweis: Das Passwort kann sp�ter jederzeit ge�ndert werden.)\n\n -info.title.language.changed=Neustarten -info.text.language.changed=�nderungen der Sprache werden erst nach einem Neustart des Programms wirksam. -info.text.language.changed.restart.now=Jetzt neustarten -info.text.language.changed.restart.later=Sp�ter neustarten -info.title.update.available=Update verf�gbar -info.text.update.available=Ein Update ist verf�gbar.\nNeue Version: {0}\n\n -info.text.update.available.show.changes=�nderungen anzeigen (�ffnet Webbrowser) -info.text.update.available.show.changes.detailed=(detaillierte Infos auf GitHub.com) -info.text.update.available.now=Jetzt updaten -info.title.start.after.update=Update erfolgreich -info.header.text.start.after.update=BudgetMaster wurde erfolgreich auf Version {0} aktualisiert -info.text.start.after.update=Hinweis: Der BudgetMasterServer muss manuell von dir geupdated werden, sofern es sich um keinen lokalen Server handelt! -info.tags=Es erscheinen Vorschl�ge basierend auf bereits verwendeten Tags sobald du zu tippen beginnst.\n\nEnter - F�gt den Inhalt des Eingabefelds als neuen Tag hinzu.\nPfeil nach unten - �ffnet die Vorschl�ge, wenn das Eingabefeld leer ist. -info.title.shutdown=BudgetMaster beenden -info.text.shutdown=M�chtest du BudgetMaster wirklich beenden?\nDies kann w�hrend der Ausf�hrung von Aufgaben zu unvorhersebaren Konsequenzen f�hren. - -# WARNING -warning.enddate.before.startdate=Das Enddatum darf zeitlich nicht vor dem Startdatum liegen. -warning.empty.width.in.pixels=Bitte gib eine Breite in Pixeln an. -warning.integer.width.in.pixels=Nur ganzahlige Werte sind f�r das Feld Breite erlaubt. -warning.empty.height.in.pixels=Bitte gib eine H�he in Pixeln an. -warning.integer.height.in.pixels=Nur ganzahlige Werte sind f�r das Feld H�he erlaubt. -warning.empty.savepath.chart=W�hle einen Speicherort f�r das Diagramm aus. -warning.empty.category.name=Das Feld f�r den Namen darf nicht leer sein. -warning.empty.payment.name=Das Feld f�r den Namen darf nicht leer sein. -warning.name.character.limit.reached.45=Der Name darf maximal 45 Zeichen lang sein. -warning.name.character.limit.reached.150=Der Name darf maximal 150 Zeichen lang sein. -warning.description.character.limit.reached.200=Die Notiz darf maximal 200 Zeichen lang sein. -warning.tag.character.limit.reached.45=Der Name eines Tags darf maximal 45 Zeichen lang sein. -warning.payment.amount=Gib eine g�ltige Zahl f�r den Betrag ein. -warning.empty.payment.date=Bitte w�hle ein Datum aus. -warning.payment.repeating=Wenn Wiederholung aktiviert ist d�rfen nicht beide Eingabefelder 0 sein.\n(Zur Deaktivierung der Wiederholung einfach die Checkbox abw�hlen) -warning.empty.secret.client=Das Feld f�r das Client Passwort darf nicht leer sein. -warning.empty.url=Das Feld f�r die Server URL darf nicht leer sein. -warning.empty.secret.server=Das Server Passwortfeld darf nicht leer sein. -warning.empty.currency=Bitte gib deine gew�nschte W�hrung ein. -warning.wrong.verificationcode=Die Eingabe stimmt nicht mit dem Best�tigungscode �berein. -warning.empty.password=Bitte gib dein Passwort ein. -warning.wrong.password=Das Passwort ist nicht korrekt. -warning.server.version=Die installierte Serverversion (Version: {0}) ist nicht kompatibel mit deinem Client (Version: {1}).\n\nBitte aktualisiere deinen Server:\nSchritt 1: Server stoppen\nSchritt 2: BudgetMasterServer.jar mit aktuellester Version ersetzen\nSchritt 3: Server starten -warning.empty.year=Bitte gib ein Jahr ein. -warning.wrong.year=Bitte gib eine g�ltige Jahreszahl ein (4 Ziffern). - -# ERROR -error.unknown.host=Es konnte keine Verbindung mit dem Internet hergestellt werden. -error.unknown.error=Unbekannter Fehler ({0}) -error.connection.refused=Server nicht erreichbar. -error.https.hostname.wrong=Der Server verwendet ein selbst signiertes Zertifkat f�r die Verschl�sselung. Aus Sicherheitsgr�nden werden diese Zertifikate standardm��ig blockiert. Wenn du dem Zertifikat trotzdem vertrauen m�chtest, dann f�ge den Hostnamen des Servers zur Liste der vertrauensw�rdigen Hosts in den Einstellungen hinzu. -error.400=Der Server erhielt eine fehlerhafte Anfrage oder ung�ltige Parameter. -error.401=Ung�ltiges Server Passwort. -error.500=Beim Ausf�hren der Anfrage ist ein interner Serverfehler ist aufgetreten. -error.create.ui=Beim Erstellen der Benutzeroberfl�che ist ein Fehler aufgetreten. -error.server.connection=Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte �berpr�fe deine Einstellungen. -error.server.connection.with.details=Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte �berpr�fe deine Einstellungen.\n\nFehlerdetails:\n{0} -error.open.folder=Der Ordner konnte nicht ge�ffnet werden.\n\n{0} -error.open.chart=Das Diagramm konnte nicht ge�ffnet werden.\n\n{0} -error.open.report=Der Bericht konnte nicht ge�ffnet werden.\n\n{0} -error.chart.export=Beim Exportieren des Diagramms ist ein Fehler aufgetreten:\n\n{0} -error.report.save=Beim Erstellen des Monatsberichts ist ein Fehler aufgetreten:\n\n{0} -error.settings.save=Beim Speichern der Einstellungen ist ein Fehler aufgetreten. -error.database.import=Beim Einlesen der Datei ist ein Fehler aufgetreten. -error.database.import.wrong.file=Die angegebene Datei enth�lt kein g�ltiges BudgetMaster-Datenformat und kann daher nicht importiert werden. -error.password.save=Beim Speichern des Passworts ist ein Fehler aufgetreten. -error.updater.get.latest.version=Beim �berpr�fen auf Updates ist ein Fehler aufgetreten. Informationen zu neuen Versionen konnten nicht abgerufen werden. Versuche es sp�ter noch einmal. -error.updater.download.latest.version=Beim Herunterladen des Updates ist ein Fehler aufgetreten.\n\n{0} -error.open.browser=Beim �ffnen des Standardwebbrowsers ist ein Fehler aufgetreten. -error.local.server.start=Beim Starten des BudgetMasterServers ist ein Fehler aufgetreten.\n\n{0} -error.local.server.download=Beim Herunterladen des BudgetMasterServers ist ein Fehler aufgetreten.\n\n{0} - -# UI -categorytab.button.category.new=\ Neue Kategorie - -charttab.titlepane.chart.categories=Einnahmen/Ausgaben nach Kategorien -charttab.titlepane.chart.months=Einnahmen/Ausgaben pro Monat -charttab.label.start=Von: -charttab.label.end=Bis: -charttab.checkbox.bars=Balken -charttab.checkbox.lines=Linien - -export.chart.label.width=Breite: -export.chart.label.height=H�he: -export.chart.label.savepath=Speicherort: -export.chart.button.change=�ndern -export.chart.button.export=Exportieren - -filter.headline=Filtern nach: -filter.type=Art -filter.type.income=Einnahme -filter.type.payment=Ausgabe -filter.repeating=Wiederholung -filter.repeating.none=keine -filter.repeating.monthday=monatlich -filter.repeating.interval=alle X Tage -filter.categories=Kategorien -filter.categories.button.all=Alle -filter.categories.button.none=Keine -filter.name=Name -filter.tags=Tags -filter.tags.button.all=Alle -filter.tags.button.none=Keine -filter.button.reset=Zur�cksetzen -filter.button.filter=Filtern - -search.headline=Nach Buchungen suchen -search.by=Suchen in: -search.by.name=Name -search.by.description=Notiz -search.by.category.name=Kategoriename -search.by.tags=Tags -search.by.amount=Betrag eingrenzen -search.button.search=Suchen - -gui.tab.home=Startseite -gui.tab.payments=Buchungen -gui.tab.categories=Kategorien -gui.tab.charts=Diagramme -gui.tab.report=Monatsbericht -gui.tab.settings=Einstellungen - -hometab.categorybudgets=Verbrauch nach Kategorien - -category.new.label.name=Name: -category.new.label.max.characters=(max. 45 Zeichen) -category.new.label.color=Farbe: -category.new.button.save=Speichern - -payment.new.label.name=Name: -payment.new.label.max.characters.name=(max. 150 Zeichen) -payment.new.label.max.characters.description=(max. 200 Zeichen) -payment.new.label.amount=Betrag: -payment.new.label.category=Kategorie: -payment.new.label.date=Datum: -payment.new.label.description=Notiz: -payment.new.label.tags=Tags: -payment.new.label.repeating=Wiederholung: -payment.new.label.repeating.all=Alle -payment.new.label.repeating.days=Tage -payment.new.label.repeating.monthday=jeden Monat am: -payment.new.label.enddate=Enddatum: -payment.new.button.save=Speichern - -paymenttab.button.new.income=\ Neue Einnahme -paymenttab.button.new.payment=\ Neue Ausgabe -paymenttab.button.filter=Filter -paymenttab.label.filter.active=Filter aktiv -paymenttab.label.incomes=Einnahmen: -paymenttab.label.payments=Ausgaben: -paymenttab.button.search=Suchen - -reporttab.checkbox.include.budget=Budgetkalkulation hinzuf�gen -reporttab.checkbox.split.tables=Einnahmen und Ausgaben als getrennte Tabellen -reporttab.checkbox.inclue.categorybudgets=Verbrauch nach Kategorien hinzuf�gen -reporttab.button.generate.report=Bericht erzeugen - -settingstab.label.secret.client=Client Passwort: -settingstab.label.status=Status: -settingstab.label.url=Server URL: -settingstab.label.secret.server=Server Passwort: -settingstab.label.currency=W�hrung: -settingstab.label.rest=�bertrag: -settingstab.label.rest.activated=aktiviert -settingstab.label.rest.deactivated=deaktiviert -settingstab.label.trusted.hosts=Vertrauensw�rdige Hosts: -settingstab.label.trusted.hosts.info=(ein Host pro Zeile) -settingstab.label.language=Sprache: -settingstab.label.database=Datenbank: -settingstab.button.database.export=Exportieren -settingstab.button.database.import=Importieren -settingstab.button.database.delete=L�schen -settingstab.label.updates=Updates: -settingstab.button.updates.search=Suchen -settingstab.button.updates.automatic=Automatisch suchen -settingstab.label.updates.current.version=Installiert: -settingstab.label.updates.latest.version=Verf�gbar: -settingstab.button.save=Speichern -settingstab.button.server.online=Online Server -settingstab.button.server.local=Lokaler Server - -splashscreen.label.password=Passwort: - -datepicker.label.month=Monat: -datepicker.label.year=Jahr: -datepicker.button.confirm=�bernehmen - -# ABOUT -about=�ber {0} -about.roadmap.link=Roadmap �ffnen -about.version=Version: -about.date=Datum: -about.author=Autor: -about.roadmap=Roadmap: -about.sourcecode=Quellcode: -about.credits=Credits: diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties deleted file mode 100644 index 4157b60f9dac6646fcfd11697aba3b693336f15a..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties +++ /dev/null @@ -1,350 +0,0 @@ -# DEFAULT -app.name=BudgetMaster -version.code=13 -version.name=1.8.0 -version.date=17.12.17 -author=Robert Goldmann -credits=Flags by Freepik on https://www.flaticon.com\nFonts used: OpenSans\nLibraries used:\ngson 2.8.1\njoda-time 2.9.7\nitextpdf 5.0.6\nlaunch4j-maven-plugin 1.7.21\nspark-core 2.5.4\nslf4j 1.7.21\nmysql-connector 6.0.5\njunit 4.12\nsqlite-jdbc 3.21.0 - -folder=Deadlocker/BudgetMaster -roadmap.url=https://deadlocker.thecodelabs.de/roadmap/php/index.php?id=2 -github.url=https://github.com/deadlocker8/BudgetMaster - - -# TITLE -title.incomes=Incomes -title.income=Income -title.payments=Payments -title.payment=Payment -title.categories=Categories -title.category=Category -title.category.budgets=Consumption by categories -title.amount=Amount -title.info=Information -title.warning=Warning -title.error=Error -title.category.new=New Category -title.category.edit=Edit Category -title.chart.export=Export Chart -title.modal=Process is running -title.payment.edit=Edit {0} -title.payment.new=New {0} -title.filter=Filter -title.search=Search -title.report.save=Save Report -title.database.export=Export Database -title.database.import=Import Database -title.datepicker=Choose date -title.tags=The Tag-Inputfield - -# LOAD -load.charts=Loading Charts... -load.data=Loading Data... -load.report.tab=Loading Month Report... -load.report=Please wait while the report is being generated... -load.database.export=Please wait while the database is being exported... -load.database.import=Please wait while the database is being imported... -load.database.delete=Please wait while the database is being deleted... -load.update=Please wait while the update is being downloaded... -load.search=Please wait while payments are being searched... -load.local.server=Please wait while the local server is being started... -load.download.local.server=Please wait while the local server is being downloaded... -load.local.server.connect=Connecting to local server... -load.local.server.retry=Connecting to local server... (Retry {0}/{1}) - -# MISC -category.none=No Category -category.rest=Rest -tooltip.chart.categories={0}\n{1} %\n{2} -chart.month.line.sum=Total in {0} -categories.placeholder=No categories available -chart.categories.title.incomes=Incomes by Categories -chart.categories.title.payments=Payments by Categories -ok=OK -cancel=Cancel -home.placeholder=No data available -home.budget=of {0} remaining -payments.placeholder=No data available -url.placeholder=e.g. https://yourdomain.de -currency.placeholder=e.g. \u20AC, CHF, $ -trusted.hosts.placeholder=e.g. localhost -undefined=undefined -tagfield.placeholder=Enter new Tag here -shortcut.dev.console=F12 -local.server.status.ok=Server is running. -local.server.status.not.started=Server couldn't be started. -local.server.action.not.started=Start -local.server.status.not.present=Server not found. -local.server.action.not.present=Download -local.server.status.incompatible=Server is incompatible. -local.server.action.incompatible=Update - -# REPORT -report.position=No. -report.date=Date -report.repeating=Repeating -report.category=Category -report.name=Name -report.description=Description -report.tags=Tags -report.rating=+/- -report.amount=Amount -report.headline=Month Report - {0} -report.headline.payments.overview=Payments Overview -report.sum.total=Incomes: {0} / Payments: {1} -report.sum=Total: {0} -report.footer.left=BudgetMaster Month Report -report.footer.center=Page {0} -report.repeating.yes=Yes -report.repeating.no=No -report.initial.filename=BudgetMaster Month Report - {0}_{1}.pdf -report.budget=Budget -report.incomes=Incomes: -report.payments=Payments: -report.budget.rest=Remaining Budget: - -# MONTH -month.january=January -month.february=February -month.march=March -month.april=April -month.may=May -month.june=June -month.july=July -month.august=August -month.september=September -month.october=October -month.november=November -month.december=December - -# NOTIFICATION -notification.chart.export=Chart successfully exported. -notification.report.save=Report successfully saved. -notification.settings.save=Successfully saved. -notification.no.update.available=No update available. - -# INFO -info.title.category.delete=Delete Category -info.text.category.delete=Do you really want to delete this category? This can't be undone. -info.title.payment.delete=Delete Entry -info.text.payment.delete=Do you really want to delete this entry? This can't be undone. -info.text.payment.repeating.delete=The entry you want to delete is a repeating entry. What entries should be deleted? -info.text.payment.repeating.delete.all=All Entries -info.text.payment.repeating.delete.futures=Future Entries -info.first.start=You must enter your server settings prior to first use. -info.title.chart.export=Successfully Exported -info.text.chart.export=The chart has been successfully exported. -info.text.chart.export.open.folder=Open Folder -info.text.chart.export.open.chart=Open Chart -info.title.report.save=Successfully Created -info.text.report.save=The month report has been successfully created. -info.text.report.save.open.folder=Open Folder -info.text.report.save.open.report=Open Report -info.title.database.export=Successfully Exported -info.text.database.export=The database has been successfully exported. -info.title.database.import=Successfully Imported -info.text.database.import=The database has been successfully imported. -info.title.database.import.dialog=Import Database -info.text.database.import.dialog=Do you want to delete the database before importing? -info.text.database.import.dialog.delete=Yes, delete database -info.text.database.import.dialog.append=No, append data -info.title.database.delete=Delete Database -info.header.text.database.delete=Do you really want to delete this entry? This can't be undone. -info.text.database.delete=Please enter the following code for verification:\t{0} -info.title.welcome=Welcome -info.header.text.welcome=Welcome to BudgetMaster -info.text.welcome.first.start=This seems to be your first visit because there are no settings yet.\nTo enter BudgetMaster consider yourself a password and enter it into the password field.\n\n(Note: the password can be changed at any time.)\n\n -info.text.welcome.compatibility=Your settings file is deprecated and needs to be updated.\nSince version v1.3.0, a password is required to unlock BudgetMaster. To enter BudgetMaster consider yourself a password and enter it into the password field.\n\n(Please note that the password can be changed at any time.)\n\n -info.title.language.changed=Restart -info.text.language.changed=Changes to the language will only take effect after a restart of the program. -info.text.language.changed.restart.now=Restart Now -info.text.language.changed.restart.later=Restart Later -info.title.update.available=Update available -info.text.update.available=An update is available.\nNew version: {0}\n\n -info.text.update.available.show.changes=Show Changes (opens web browsers) -info.text.update.available.show.changes.detailed=(detailed information on GitHub.com) -info.text.update.available.now=Update Now -info.title.start.after.update=Update successful -info.header.text.start.after.update=Successfully updated BudgetMaster to version {0} -info.text.start.after.update=Note: You have to update the BudgetMasterServer manually, if it's no local server! -info.tags=Suggestions based on already used tags will show up once you start typing.\n\nEnter - Appends the current input field content as a new tag.\nArrow Down - Opens the suggestions if the input field is empty. -info.title.shutdown=Shutdown BudgetMaster -info.text.shutdown=Do you really want to shutdown BudgetMaster? This could lead to unforeseen consequences during running tasks. - -# WARNING -warning.enddate.before.startdate=The end date can not be earlier than the start date. -warning.empty.width.in.pixels=Please enter a width in pixels. -warning.integer.width.in.pixels=Only integer values are allowed for the width field. -warning.empty.height.in.pixels=Please enter a height in pixels. -warning.integer.height.in.pixels=Only integer values are allowed for the height field. -warning.empty.savepath.chart=Please select a location where you want to save the chart. -warning.empty.category.name=The field for the name can not be empty. -warning.empty.payment.name=The field for the name can not be empty. -warning.name.character.limit.reached.45=The name must not exceed 45 characters in length. -warning.name.character.limit.reached.150=The name must not exceed 150 characters in length. -warning.description.character.limit.reached.200=The description must not exceed 200 characters in length. -warning.tag.character.limit.reached.45=A tag name must not exceed 45 characters in length. -warning.payment.amount=Please enter a valid number in the amount field. -warning.empty.payment.date=Please select a date. -warning.payment.repeating=If repeating is activated, both input fields may not be 0.\n(To deactivate the repeat, simply deselect the checkbox). -warning.empty.secret.client=The field for the client password can not be empty. -warning.empty.url=The field for the server URL can not be empty. -warning.empty.secret.server=The field for the server password can not be empty. -warning.empty.currency=Please enter your desired currency. -warning.wrong.verificationcode=The input does not match the verification code. -warning.empty.password=Please enter your password. -warning.wrong.password=The password is not correct. -warning.server.version=The installed server version (version: {0}) is not compatible with your client (version: {1}).\n\nPlease update your server:\nStep 1: stop server\nStep 2: replace BudgetMasterServer.jar with latest version\nStep 3: start server -warning.empty.year=Please enter a year. -warning.wrong.year=Please enter a valid year (4 digits). - -# ERROR -error.unknown.host=Could not connect to the Internet. -error.unknown.error=Unknown Error ({0}) -error.connection.refused=Server not available. -error.https.hostname.wrong=The server uses a self-signed certifier for encryption. For security reasons, these certificates are blocked by default. If you want to trust the certificate, add the hostname of the server to the list of trusted hosts in the settings. -error.400=The server received a bad request or invalid parameters. -error.401=Invalid Server Password. -error.500=An internal server error occurred while processing the request. -error.create.ui=An error occurred while creating the user interface. -error.server.connection=An error occurred while connecting to the server. Please check your settings. -error.server.connection.with.details=An error occurred while connecting to the server. Please check your settings.\n\nError details:\n{0} -error.open.folder=The folder couldn't be opened.\n\n{0} -error.open.chart=The chart couldn't be opened.\n\n{0} -error.open.report=The report couldn't be opened.\n\n{0} -error.chart.export=An error occurred while exporting the chart:\n\n{0} -error.report.save=An error occurred while creating the month report:\n\n{0} -error.settings.save=An error occurred while saving the settings. -error.database.import=An error occurred while reading the file. -error.database.import.wrong.file=The specified file does not contain a valid BudgetMaster data format thus can not be imported. -error.password.save=An error occurred while saving the password. -error.updater.get.latest.version=An error occurred while checking for updates. Information about latest versions could not be retrieved. Please try again later. -error.updater.download.latest.version=An error occurred while downloading the update.\n\n{0} -error.open.browser=An error occurred while opening the default web browser. -error.local.server.start=An error occurred while starting the BudgetMasterServer.\n\n{0} -error.local.server.download=An error occurred while downloading the BudgetMasterServer.\n\n{0} - -# UI -categorytab.button.category.new=\ New Category - -charttab.titlepane.chart.categories=Incomes/Payments by Categories -charttab.titlepane.chart.months=Incomes/Payments per Month -charttab.label.start=From: -charttab.label.end=To: -charttab.checkbox.bars=Bars -charttab.checkbox.lines=Lines - -export.chart.label.width=Width: -export.chart.label.height=Height: -export.chart.label.savepath=Location: -export.chart.button.change=Change -export.chart.button.export=Export - -filter.headline=Filter by: -filter.type=Type -filter.type.income=Income -filter.type.payment=Payment -filter.repeating=Repeating -filter.repeating.none=none -filter.repeating.monthday=monthly -filter.repeating.interval=every X days -filter.categories=Categories -filter.categories.button.all=All -filter.categories.button.none=None -filter.name=Name -filter.tags=Tags -filter.tags.button.all=All -filter.tags.button.none=None -filter.button.reset=Reset -filter.button.filter=Filter - -search.headline=Search for payments -search.by=Search in: -search.by.name=Name -search.by.description=Description -search.by.tags=Tags -search.by.category.name=Category Name -search.by.amount=Limit Amount -search.button.search=Search - -gui.tab.home=Home -gui.tab.payments=Payments -gui.tab.categories=Categories -gui.tab.charts=Charts -gui.tab.report=Month Report -gui.tab.settings=Settings - -hometab.categorybudgets=Consumption by categories - -category.new.label.name=Name: -category.new.label.max.characters=(up to 45 characters) -category.new.label.color=Color: -category.new.button.save=Save - -payment.new.label.name=Name: -payment.new.label.max.characters.name=(up to 150 characters) -payment.new.label.max.characters.description=(up to 200 characters) -payment.new.label.amount=Amount: -payment.new.label.category=Category: -payment.new.label.date=Date: -payment.new.label.description=Description: -payment.new.label.tags=Tags: -payment.new.label.repeating=Repeating: -payment.new.label.repeating.all=every -payment.new.label.repeating.days=days -payment.new.label.repeating.monthday=every month at: -payment.new.label.enddate=Enddate: -payment.new.button.save=Save - -paymenttab.button.new.income=\ New Income -paymenttab.button.new.payment=\ New Payment -paymenttab.button.filter=Filter -paymenttab.label.filter.active=Filter active -paymenttab.label.incomes=Incomes: -paymenttab.label.payments=Payments: -paymenttab.button.search=Search - -reporttab.checkbox.include.budget=Include budget calculation -reporttab.checkbox.split.tables=Split incomes and payments into separate tables -reporttab.checkbox.inclue.categorybudgets=Include consumption by categories -reporttab.button.generate.report=Create Report - -settingstab.label.secret.client=Client Password: -settingstab.label.status=Status: -settingstab.label.url=Server URL: -settingstab.label.secret.server=Server Password: -settingstab.label.currency=Currency: -settingstab.label.rest=Rest: -settingstab.label.rest.activated=activated -settingstab.label.rest.deactivated=deactivated -settingstab.label.trusted.hosts=Trusted Hosts: -settingstab.label.trusted.hosts.info=(one per line) -settingstab.label.language=Language: -settingstab.label.database=Database: -settingstab.button.database.export=Export -settingstab.button.database.import=Import -settingstab.button.database.delete=Delete -settingstab.label.updates=Updates: -settingstab.button.updates.search=Search -settingstab.button.updates.automatic=Automatic search -settingstab.label.updates.current.version=Current Version: -settingstab.label.updates.latest.version=Latest Version: -settingstab.button.save=Save -settingstab.button.server.online=Online Server -settingstab.button.server.local=Local Server - -splashscreen.label.password=Password: - -datepicker.label.month=Month: -datepicker.label.year=Year: -datepicker.button.confirm=Apply - -# ABOUT -about=About {0} -about.roadmap.link=Open Roadmap -about.version=Version: -about.date=Date: -about.author=Author: -about.roadmap=Roadmap: -about.sourcecode=Sourcecode: -about.credits=Credits: \ No newline at end of file diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/colorPick/ColorPickGUI.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/colorPick/ColorPickGUI.fxml deleted file mode 100644 index 8acf7b57b2d276d2a73a6bdd1e02c7ce44b5d470..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/colorPick/ColorPickGUI.fxml +++ /dev/null @@ -1,116 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.Slider?> -<?import javafx.scene.control.TextField?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane prefHeight="300.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmasterclient.ui.colorPick.ColorPickController"> - <children> - <HBox layoutX="273.0" layoutY="81.0" spacing="30.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <Label fx:id="labelColor" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS" /> - <VBox prefHeight="205.0" prefWidth="313.0"> - <children> - <HBox alignment="CENTER" prefHeight="0.0" prefWidth="299.0"> - <children> - <Label prefHeight="25.0" prefWidth="47.0" text="Rot:"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Slider fx:id="sliderRed" blockIncrement="1.0" max="255.0" prefHeight="14.0" prefWidth="103.0" value="255.0" HBox.hgrow="ALWAYS"> - <HBox.margin> - <Insets right="20.0" /> - </HBox.margin></Slider> - <TextField fx:id="textFieldRed" prefHeight="30.0" prefWidth="45.0" text="255"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </TextField> - </children> - </HBox> - <HBox alignment="CENTER" prefHeight="0.0" prefWidth="299.0"> - <children> - <Label prefHeight="25.0" prefWidth="47.0" text="Grün:"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Slider fx:id="sliderGreen" blockIncrement="1.0" max="255.0" prefHeight="14.0" prefWidth="103.0" value="255.0" HBox.hgrow="ALWAYS"> - <HBox.margin> - <Insets right="20.0" /> - </HBox.margin></Slider> - <TextField fx:id="textFieldGreen" prefHeight="30.0" prefWidth="45.0" text="255"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </TextField> - </children> - </HBox> - <HBox alignment="CENTER" prefHeight="0.0" prefWidth="299.0"> - <children> - <Label prefHeight="25.0" prefWidth="47.0" text="Blau:"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Slider fx:id="sliderBlue" blockIncrement="1.0" max="255.0" prefHeight="14.0" prefWidth="103.0" value="255.0" HBox.hgrow="ALWAYS"> - <HBox.margin> - <Insets right="20.0" /> - </HBox.margin></Slider> - <TextField fx:id="textFieldBlue" prefHeight="30.0" prefWidth="45.0" text="255"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </TextField> - </children> - </HBox> - <HBox alignment="CENTER_LEFT" prefHeight="0.0" prefWidth="299.0" spacing="25.0"> - <children> - <Label prefHeight="25.0" prefWidth="74.0" text="Hex:"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <TextField fx:id="textFieldHex" prefHeight="30.0" prefWidth="89.0" text="#FFFFFF"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </TextField> - </children> - <VBox.margin> - <Insets top="25.0" /> - </VBox.margin> - </HBox> - <HBox alignment="BOTTOM_CENTER" prefHeight="0.0" prefWidth="299.0" spacing="25.0" VBox.vgrow="ALWAYS"> - <children> - <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="Abbrechen"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Button fx:id="buttonSave" mnemonicParsing="false" onAction="#save" text="Speichern"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - </children> - <VBox.margin> - <Insets /> - </VBox.margin> - </HBox> - </children> - <HBox.margin> - <Insets /> - </HBox.margin> - </VBox> - </children> - </HBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/CommandLineGUI.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/CommandLineGUI.fxml deleted file mode 100644 index 539c299ed11944f92733487994da9ec0674875c7..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/CommandLineGUI.fxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.TextArea?> -<?import javafx.scene.control.TextField?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.VBox?> - -<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmasterclient.ui.commandLine.CommandLineController"> - <children> - <VBox layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <TextArea fx:id="textareaHistory" prefHeight="508.0" prefWidth="572.0" VBox.vgrow="ALWAYS" /> - <TextField fx:id="textfieldInput" prefHeight="46.0" prefWidth="572.0"> - <VBox.margin> - <Insets top="14.0" /> - </VBox.margin> - </TextField> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties deleted file mode 100644 index 7aee4c0633193d4d979808892e7883975091243c..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties +++ /dev/null @@ -1,31 +0,0 @@ -help.list=list - lists all possible commands -help.help=help - shows help for given command\nSYNTAX: help [COMMAND] -help.clear=clear - clears the history -help.shortcuts=shortcuts - lists all available shortcuts - -error.general=An error occurred. -error.unknown.command=Unknown command. Use \"list\" for a list of possible commands. -error.invalid.arguments=Invalid arguments. Use \"help commandname\" for help. -error.invalid.parameter=Invalid parameter {0}.\nUse \"help {1}\" for a detailed list. -error.no.help=Unknown command as parameter. Can't display help. Use \"list\" for a list of possible commands. - -info.shortcuts=[ENTER] - execute command\n[UP] - scroll through recently used commands\n[ESC] - clear input\n[TAB] - autocomplete - -# open -help.open=open - opens files and folders\nSYNTAX: open [PARAMETER]\npossible parameters: settings -open.success=Successfully opened folder {0} - -# delete -help.delete=delete - deletes files\nSYNTAX: delete [PARAMETER]\npossible parameters:\nlog-client\nlog-server -delete.success=Successfully deleted {0} -delete.error.connection=An error occurred while establishing the server connection - -# info -help.info=info - information about client and server \nSYNTAX: info [PARAMETER]\npossible parameters:\client\nserver -info.error.connection=An error occurred while establishing the server connection - -# switch -help.switch=switch - switch betwwen two client settings -switch.new=Second settings file is not present. Copying current settings file... -switch.success=Successfully switched settings -switch.error=An error occurred while switching the settings \ No newline at end of file diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/customAlert/CustomAlert.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/customAlert/CustomAlert.fxml deleted file mode 100644 index 8d850119d369ce4a86164590ee6aee6590961979..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/customAlert/CustomAlert.fxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.image.ImageView?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="90.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <VBox layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <HBox spacing="14.0" VBox.vgrow="ALWAYS"> - <children> - <ImageView fx:id="imageView" fitHeight="45.0" fitWidth="45.0" pickOnBounds="true" preserveRatio="true" /> - <Label fx:id="labelMessage" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS"> - <HBox.margin> - <Insets top="3.0" /> - </HBox.margin></Label> - </children> - </HBox> - <HBox alignment="CENTER_RIGHT"> - <children> - <Button minWidth="75.0" mnemonicParsing="false" onAction="#confirm" prefWidth="75.0" text="%ok" /> - </children> - </HBox> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml deleted file mode 100644 index 25b905501a1283262070d6c5942b814dd4911123..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.ListView?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmasterclient.ui.controller.CategoryController"> - <children> - <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0"> - <children> - <Button fx:id="buttonCategory" mnemonicParsing="false" onAction="#createNewCategory" text="%categorytab.button.category.new"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <ListView fx:id="listView" prefHeight="492.0" prefWidth="772.0" VBox.vgrow="ALWAYS"> - <VBox.margin> - <Insets top="10.0" /> - </VBox.margin> - </ListView> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml deleted file mode 100644 index 3035ad10f079602fa1eff6efa1a6dc966af80919..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml +++ /dev/null @@ -1,154 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Accordion?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.ComboBox?> -<?import javafx.scene.control.DatePicker?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.RadioButton?> -<?import javafx.scene.control.TitledPane?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmasterclient.ui.controller.ChartController"> - <children> - <Accordion fx:id="accordion" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0"> - <panes> - <TitledPane animated="false" text="%charttab.titlepane.chart.categories"> - <content> - <VBox spacing="20.0"> - <children> - <HBox alignment="CENTER" prefHeight="8.0" prefWidth="750.0"> - <children> - <HBox alignment="CENTER_RIGHT" spacing="10.0" HBox.hgrow="ALWAYS"> - <children> - <Label text="%charttab.label.start"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <DatePicker fx:id="datePickerStart" /> - </children> - <HBox.margin> - <Insets right="15.0" /> - </HBox.margin> - </HBox> - <HBox alignment="CENTER_LEFT" spacing="10.0" HBox.hgrow="ALWAYS"> - <children> - <Label text="%charttab.label.end"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <DatePicker fx:id="datePickerEnd" /> - <Button fx:id="buttonChartCategoriesShow" mnemonicParsing="false" onAction="#buttonChartCategoriesShow"> - <font> - <Font name="System Bold" size="12.0" /> - </font> - <HBox.margin> - <Insets left="15.0" /> - </HBox.margin> - </Button> - <Button fx:id="buttonChartCategoriesExport" mnemonicParsing="false" onAction="#chartCategoriesExport"> - <font> - <Font name="System Bold" size="12.0" /> - </font> - </Button> - </children> - <HBox.margin> - <Insets left="15.0" /> - </HBox.margin> - </HBox> - </children> - </HBox> - <VBox fx:id="vboxChartCategories" VBox.vgrow="ALWAYS"> - <VBox.margin> - <Insets /> - </VBox.margin> - <padding> - <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" /> - </padding></VBox> - </children> - </VBox> - </content> - <font> - <Font name="System Bold" size="12.0" /> - </font> - </TitledPane> - <TitledPane animated="false" text="%charttab.titlepane.chart.months"> - <font> - <Font name="System Bold" size="12.0" /> - </font> - <content> - <VBox spacing="20.0"> - <children> - <HBox alignment="CENTER_LEFT" prefHeight="8.0" prefWidth="750.0" spacing="50.0"> - <children> - <VBox spacing="15.0"> - <children> - <HBox alignment="CENTER_RIGHT" spacing="10.0"> - <children> - <Label prefHeight="25.0" prefWidth="45.0" text="%charttab.label.start"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <ComboBox fx:id="comboBoxStartMonth" prefHeight="25.0" prefWidth="115.0" /> - <ComboBox fx:id="comboBoxStartYear" prefWidth="100.0" HBox.hgrow="ALWAYS" /> - </children> - </HBox> - <HBox alignment="CENTER_LEFT" spacing="10.0"> - <children> - <Label prefWidth="45.0" text="%charttab.label.end"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <ComboBox fx:id="comboBoxEndMonth" prefWidth="115.0" /> - <ComboBox fx:id="comboBoxEndYear" prefWidth="100.0" /> - </children> - </HBox> - </children> - </VBox> - <HBox alignment="CENTER_LEFT" spacing="15.0" HBox.hgrow="ALWAYS"> - <children> - <RadioButton fx:id="radioButtonBars" mnemonicParsing="false" text="%charttab.checkbox.bars"> - <font> - <Font size="14.0" /> - </font></RadioButton> - <RadioButton fx:id="radioButtonLines" mnemonicParsing="false" text="%charttab.checkbox.lines"> - <font> - <Font size="14.0" /> - </font></RadioButton> - <Button fx:id="buttonChartMonthShow" mnemonicParsing="false" onAction="#chartMonthShow"> - <font> - <Font name="System Bold" size="12.0" /> - </font> - <HBox.margin> - <Insets left="10.0" /> - </HBox.margin> - </Button> - <Button fx:id="buttonChartMonthExport" mnemonicParsing="false" onAction="#chartMonthExport"> - <font> - <Font name="System Bold" size="12.0" /> - </font> - <HBox.margin> - <Insets left="10.0" /> - </HBox.margin> - </Button> - </children> - </HBox> - </children> - </HBox> - <VBox fx:id="vboxChartMonth" prefHeight="200.0" prefWidth="100.0" VBox.vgrow="ALWAYS" /> - </children> - </VBox> - </content> - </TitledPane> - </panes> - </Accordion> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/DatePickerGUI.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/DatePickerGUI.fxml deleted file mode 100644 index 76cfb1fd918945eaf673d37de9f704194dc72ed5..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/DatePickerGUI.fxml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.ComboBox?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.Spinner?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane prefHeight="180.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <VBox prefHeight="273.0" prefWidth="465.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <HBox alignment="CENTER" prefHeight="30.0" spacing="25.0" VBox.vgrow="ALWAYS"> - <children> - <VBox alignment="CENTER" maxWidth="1.7976931348623157E308" spacing="10.0" HBox.hgrow="ALWAYS"> - <children> - <Label alignment="CENTER" maxWidth="1.7976931348623157E308" prefHeight="29.0" text="%datepicker.label.month"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <ComboBox fx:id="comboBoxMonth" maxWidth="1.7976931348623157E308" minHeight="29.0" prefHeight="29.0" prefWidth="163.0" /> - </children> - </VBox> - <VBox alignment="CENTER" spacing="10.0" HBox.hgrow="ALWAYS"> - <children> - <Label alignment="CENTER" maxWidth="1.7976931348623157E308" prefHeight="29.0" text="%datepicker.label.year"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <Spinner fx:id="spinnerYear" editable="true" maxWidth="1.7976931348623157E308" minHeight="29.0" minWidth="163.0" prefHeight="29.0" prefWidth="163.0" /> - </children> - </VBox> - </children> - </HBox> - <HBox alignment="CENTER" prefHeight="30.0" prefWidth="465.0"> - <children> - <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="%cancel"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Button fx:id="buttonConfirm" mnemonicParsing="false" onAction="#confirm" text="%datepicker.button.confirm"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - <HBox.margin> - <Insets left="25.0" /> - </HBox.margin> - </Button> - </children> - <VBox.margin> - <Insets top="10.0" /> - </VBox.margin> - </HBox> - </children> - <padding> - <Insets bottom="10.0" left="10.0" right="10.0" /> - </padding> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml deleted file mode 100644 index 7a4b32843831ccf867f1472955015d11ef11b553..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.TextField?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="200.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <VBox AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <HBox prefHeight="125.0" prefWidth="372.0" spacing="15.0"> - <children> - <VBox alignment="TOP_RIGHT" prefHeight="125.0" prefWidth="99.0" spacing="15.0"> - <children> - <Label text="%export.chart.label.width"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Label text="%export.chart.label.height"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Label prefHeight="30.0" prefWidth="92.0" text="%export.chart.label.savepath"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - </children> - <HBox.margin> - <Insets /> - </HBox.margin> - </VBox> - <VBox prefHeight="4.0" prefWidth="100.0" spacing="15.0" HBox.hgrow="ALWAYS"> - <children> - <TextField fx:id="textFieldWidth" /> - <TextField fx:id="textFieldHeight" /> - <HBox alignment="CENTER_LEFT" spacing="15.0"> - <children> - <Label fx:id="labelSavePath" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS" /> - <Button fx:id="buttonChooseFile" mnemonicParsing="false" onAction="#chooseFile" text="%export.chart.button.change" /> - </children> - </HBox> - </children> - </VBox> - </children> - </HBox> - <HBox alignment="CENTER" spacing="25.0" VBox.vgrow="ALWAYS"> - <children> - <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="%cancel" /> - <Button fx:id="buttonExport" mnemonicParsing="false" onAction="#export" text="%export.chart.button.export" /> - </children> - </HBox> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml deleted file mode 100644 index 8e1cf6c9545e5a2762a081ef2df94a83450d3e1a..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml +++ /dev/null @@ -1,222 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.CheckBox?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.ScrollPane?> -<?import javafx.scene.control.TextField?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane prefHeight="600.0" prefWidth="650.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <ScrollPane fx:id="scrollPane" hbarPolicy="NEVER" layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <content> - <VBox fx:id="vboxMain" prefHeight="567.0" prefWidth="619.0" spacing="15.0"> - <children> - <Label text="%filter.headline"> - <font> - <Font name="System Bold" size="18.0" /> - </font> - <VBox.margin> - <Insets bottom="-5.0" /> - </VBox.margin> - </Label> - <HBox alignment="TOP_CENTER" VBox.vgrow="ALWAYS"> - <children> - <VBox prefHeight="200.0" prefWidth="100.0" spacing="20.0" HBox.hgrow="ALWAYS"> - <children> - <VBox prefHeight="15.0" prefWidth="422.0" spacing="5.0"> - <children> - <Label text="%filter.type"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <HBox prefHeight="10.0" prefWidth="422.0" spacing="25.0"> - <children> - <CheckBox fx:id="checkBoxIncome" mnemonicParsing="false" text="%filter.type.income"> - <font> - <Font size="14.0" /> - </font> - </CheckBox> - <CheckBox fx:id="checkBoxPayment" mnemonicParsing="false" text="%filter.type.payment"> - <font> - <Font size="14.0" /> - </font> - </CheckBox> - </children> - </HBox> - </children> - <padding> - <Insets right="10.0" /> - </padding> - </VBox> - <Label fx:id="labelSeparatorHorizontalLeft" maxWidth="1.7976931348623157E308" prefHeight="5.0" prefWidth="287.0"> - <font> - <Font size="1.0" /> - </font> - </Label> - <VBox prefHeight="150.0" prefWidth="422.0" spacing="5.0" VBox.vgrow="ALWAYS"> - <children> - <HBox spacing="10.0"> - <children> - <Label maxWidth="1.7976931348623157E308" text="%filter.categories" HBox.hgrow="ALWAYS"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Button fx:id="buttonCategoryAll" mnemonicParsing="false" onAction="#enableAllCategories" text="%filter.categories.button.all"> - <font> - <Font name="System Bold" size="13.0" /> - </font> - </Button> - <Button fx:id="buttonCategoryNone" mnemonicParsing="false" onAction="#disableAllCategories" text="%filter.categories.button.none"> - <font> - <Font name="System Bold" size="13.0" /> - </font> - </Button> - </children> - </HBox> - <ScrollPane prefHeight="183.0" prefWidth="297.0" VBox.vgrow="ALWAYS"> - <content> - <VBox fx:id="vboxCategories" spacing="5.0"> - <padding> - <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> - </padding></VBox> - </content> - </ScrollPane> - </children> - <padding> - <Insets right="10.0" /> - </padding> - </VBox> - </children> - </VBox> - <Label fx:id="labelSeparator" maxHeight="1.7976931348623157E308" /> - <VBox prefHeight="200.0" prefWidth="100.0" spacing="20.0" HBox.hgrow="ALWAYS"> - <children> - <VBox prefHeight="33.0" prefWidth="422.0" spacing="5.0"> - <children> - <Label text="%filter.repeating"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <HBox spacing="10.0"> - <children> - <CheckBox fx:id="checkBoxNoRepeating" mnemonicParsing="false" text="%filter.repeating.none"> - <font> - <Font size="14.0" /> - </font> - </CheckBox> - <CheckBox fx:id="checkBoxMonthlyRepeating" mnemonicParsing="false" text="%filter.repeating.monthday"> - <font> - <Font size="14.0" /> - </font> - </CheckBox> - <CheckBox fx:id="checkBoxRepeatEveryXDays" mnemonicParsing="false" text="%filter.repeating.interval"> - <font> - <Font size="14.0" /> - </font> - </CheckBox> - </children> - </HBox> - </children> - <padding> - <Insets left="10.0" /> - </padding> - </VBox> - <Label fx:id="labelSeparatorHorizontalRight" maxWidth="1.7976931348623157E308"> - <font> - <Font size="1.0" /> - </font> - </Label> - <VBox prefHeight="150.0" prefWidth="422.0" spacing="5.0" VBox.vgrow="ALWAYS"> - <children> - <HBox spacing="10.0"> - <children> - <Label maxWidth="1.7976931348623157E308" text="%filter.tags" HBox.hgrow="ALWAYS"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Button fx:id="buttonTagsAll" mnemonicParsing="false" onAction="#enableAllTags" text="%filter.categories.button.all"> - <font> - <Font name="System Bold" size="13.0" /> - </font> - </Button> - <Button fx:id="buttonTagsNone" mnemonicParsing="false" onAction="#disableAllTags" text="%filter.categories.button.none"> - <font> - <Font name="System Bold" size="13.0" /> - </font> - </Button> - </children> - </HBox> - <ScrollPane prefHeight="85.0" prefWidth="409.0" VBox.vgrow="ALWAYS"> - <content> - <VBox fx:id="vboxTags" spacing="5.0"> - <padding> - <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> - </padding></VBox> - </content> - </ScrollPane> - </children> - <padding> - <Insets left="10.0" /> - </padding> - </VBox> - </children> - </VBox> - </children> - </HBox> - <VBox prefHeight="33.0" prefWidth="422.0" spacing="5.0"> - <children> - <Label text="%filter.name"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <TextField fx:id="textFieldSearch" /> - </children> - </VBox> - <HBox alignment="CENTER" prefHeight="30.0" prefWidth="465.0" spacing="10.0"> - <children> - <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="%cancel"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Button fx:id="buttonReset" mnemonicParsing="false" onAction="#reset" text="%filter.button.reset"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - <HBox.margin> - <Insets left="25.0" /> - </HBox.margin> - </Button> - <Button fx:id="buttonFilter" mnemonicParsing="false" onAction="#filter" text="%filter.button.filter"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - <HBox.margin> - <Insets left="25.0" /> - </HBox.margin> - </Button> - </children> - <VBox.margin> - <Insets top="10.0" /> - </VBox.margin> - </HBox> - </children> - <padding> - <Insets bottom="15.0" /> - </padding> - </VBox> - </content> - </ScrollPane> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml deleted file mode 100644 index 6cde2cc3f6d2d49ee946df5f489dfeae410523cd..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.Tab?> -<?import javafx.scene.control.TabPane?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.Region?> -<?import javafx.scene.layout.StackPane?> -<?import javafx.scene.layout.VBox?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="15.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="14.0"> - <children> - <HBox alignment="CENTER" prefWidth="772.0" spacing="15.0"> - <children> - <Region prefHeight="0.0" prefWidth="200.0" HBox.hgrow="ALWAYS"> - <HBox.margin> - <Insets left="25.0" /> - </HBox.margin> - </Region> - <Button fx:id="buttonLeft" mnemonicParsing="false" onAction="#previousMonth" /> - <Button fx:id="buttonDate" alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" onAction="#openDatePicker" prefHeight="25.0" prefWidth="280.0" textAlignment="CENTER" HBox.hgrow="ALWAYS" /> - <Button fx:id="buttonRight" mnemonicParsing="false" onAction="#nextMonth" /> - <Button fx:id="buttonToday" mnemonicParsing="false" onAction="#today" /> - <Region prefHeight="0.0" prefWidth="200.0" HBox.hgrow="ALWAYS" /> - <Button fx:id="buttonAbout" alignment="CENTER" mnemonicParsing="false" onAction="#about"> - <HBox.margin> - <Insets right="10.0" /> - </HBox.margin> - </Button> - </children> - </HBox> - <StackPane alignment="BOTTOM_CENTER" VBox.vgrow="ALWAYS"> - <children> - <TabPane fx:id="tabPane" prefHeight="200.0" prefWidth="403.0" tabClosingPolicy="UNAVAILABLE"> - <tabs> - <Tab fx:id="tabHome" closable="false" text="%gui.tab.home" /> - <Tab fx:id="tabPayments" closable="false" text="%gui.tab.payments" /> - <Tab fx:id="tabCategories" closable="false" text="%gui.tab.categories" /> - <Tab fx:id="tabCharts" closable="false" text="%gui.tab.charts" /> - <Tab fx:id="tabReports" closable="false" text="%gui.tab.report" /> - <Tab fx:id="tabSettings" closable="false" text="%gui.tab.settings" /> - </tabs> - </TabPane> - <Label fx:id="labelNotification" alignment="CENTER" maxWidth="1.7976931348623157E308" /> - </children> - </StackPane> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml deleted file mode 100644 index ba134717f273ee86ec353ca80bf17a49be77950d..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.ListView?> -<?import javafx.scene.control.ProgressBar?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmasterclient.ui.controller.HomeController"> - <children> - <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="15.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <Label fx:id="labelBudget" text="0,00 €"> - <font> - <Font name="System Bold" size="55.0" /> - </font> - </Label> - <Label fx:id="labelStartBudget"> - <font> - <Font name="System Bold" size="18.0" /> - </font> - </Label> - <ProgressBar fx:id="progressBar" prefHeight="18.0" prefWidth="380.0" progress="0.68" /> - <Label text="%hometab.categorybudgets"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - <VBox.margin> - <Insets top="25.0" /> - </VBox.margin> - </Label> - <ListView fx:id="listView" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS"> - <VBox.margin> - <Insets /> - </VBox.margin> - </ListView> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/Modal.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/Modal.fxml deleted file mode 100644 index 822227df871ae698269f5400859ade651801cb7c..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/Modal.fxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.ProgressIndicator?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="100.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmasterclient.ui.controller.ModalController"> - <children> - <HBox alignment="CENTER_LEFT" spacing="10.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <Label fx:id="labelMessage" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS"> - <font> - <Font size="15.0" /> - </font> - </Label> - <ProgressIndicator prefHeight="72.0" prefWidth="34.0" /> - </children> - </HBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml deleted file mode 100644 index 3661f5a437f9d7fc09e08424fecd8ae7c2bac317..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.TextField?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane prefHeight="180.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <VBox prefHeight="273.0" prefWidth="465.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0"> - <children> - <VBox> - <children> - <Label prefHeight="29.0" prefWidth="125.0" text="%category.new.label.name"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <Label prefHeight="29.0" prefWidth="125.0" text="%category.new.label.max.characters"> - <font> - <Font size="11.0" /> - </font> - </Label> - </children> - </VBox> - <TextField fx:id="textFieldName" prefHeight="29.0" HBox.hgrow="ALWAYS"> - <font> - <Font size="13.0" /> - </font> - <HBox.margin> - <Insets /> - </HBox.margin> - </TextField> - </children> - </HBox> - <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0"> - <children> - <Label prefHeight="29.0" prefWidth="125.0" text="%category.new.label.color"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <Button fx:id="buttonColor" maxWidth="1.7976931348623157E308" mnemonicParsing="false" prefHeight="30.0"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - </children> - </HBox> - <HBox alignment="CENTER" prefHeight="30.0" prefWidth="465.0"> - <children> - <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="%cancel"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Button fx:id="buttonSave" mnemonicParsing="false" onAction="#save" text="%category.new.button.save"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - <HBox.margin> - <Insets left="25.0" /> - </HBox.margin> - </Button> - </children> - <VBox.margin> - <Insets top="10.0" /> - </VBox.margin> - </HBox> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml deleted file mode 100644 index fc79d7620bd15adae658ba5f490b8edb948caeb1..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.CheckBox?> -<?import javafx.scene.control.ComboBox?> -<?import javafx.scene.control.DatePicker?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.RadioButton?> -<?import javafx.scene.control.ScrollPane?> -<?import javafx.scene.control.Separator?> -<?import javafx.scene.control.Spinner?> -<?import javafx.scene.control.TextArea?> -<?import javafx.scene.control.TextField?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane prefHeight="600.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <ScrollPane fx:id="scrollPane" hbarPolicy="NEVER" layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <content> - <VBox fx:id="vboxContent" prefHeight="565.0" prefWidth="414.0" spacing="14.0"> - <children> - <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0"> - <children> - <VBox> - <children> - <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.name"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.max.characters.name"> - <font> - <Font size="11.0" /> - </font> - </Label> - </children> - </VBox> - <TextField fx:id="textFieldName" prefHeight="29.0" HBox.hgrow="ALWAYS"> - <font> - <Font size="13.0" /> - </font> - <HBox.margin> - <Insets /> - </HBox.margin> - </TextField> - </children> - </HBox> - <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0"> - <children> - <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.amount"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <TextField fx:id="textFieldAmount" prefHeight="29.0" HBox.hgrow="ALWAYS"> - <font> - <Font size="13.0" /> - </font> - <HBox.margin> - <Insets /> - </HBox.margin> - </TextField> - </children> - </HBox> - <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0"> - <children> - <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.category"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <ComboBox fx:id="comboBoxCategory" maxWidth="1.7976931348623157E308" prefHeight="30.0" HBox.hgrow="ALWAYS" /> - </children> - </HBox> - <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0"> - <children> - <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.date"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <DatePicker fx:id="datePicker" maxWidth="1.7976931348623157E308" prefHeight="29.0" HBox.hgrow="ALWAYS" /> - </children> - </HBox> - <HBox alignment="CENTER_LEFT" maxHeight="1.7976931348623157E308" prefWidth="422.0" VBox.vgrow="ALWAYS"> - <children> - <VBox alignment="CENTER_LEFT"> - <children> - <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.description"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.max.characters.description"> - <font> - <Font size="11.0" /> - </font> - </Label> - </children> - </VBox> - <TextArea fx:id="textArea" maxWidth="1.7976931348623157E308" prefHeight="37.0" prefWidth="240.0" HBox.hgrow="ALWAYS" /> - </children> - </HBox> - <HBox prefHeight="30.0" prefWidth="465.0"> - <children> - <VBox> - <children> - <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.tags"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <Button fx:id="buttonTagsHelp" mnemonicParsing="false" onAction="#showTagsHelp" /> - </children> - </VBox> - <HBox fx:id="hboxTags" alignment="CENTER_LEFT" HBox.hgrow="ALWAYS" /> - </children> - </HBox> - <VBox prefHeight="214.0" prefWidth="422.0" spacing="20.0"> - <children> - <HBox alignment="CENTER"> - <children> - <CheckBox fx:id="checkBoxRepeat" mnemonicParsing="false" /> - <Label alignment="CENTER" maxWidth="1.7976931348623157E308" prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.repeating"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - </children> - </HBox> - <HBox alignment="TOP_CENTER" prefWidth="422.0"> - <children> - <VBox alignment="TOP_CENTER" spacing="5.0" HBox.hgrow="ALWAYS"> - <children> - <RadioButton fx:id="radioButtonPeriod" mnemonicParsing="false"> - <VBox.margin> - <Insets bottom="10.0" /> - </VBox.margin> - </RadioButton> - <Label fx:id="labelText1" prefHeight="25.0" prefWidth="40.0" text="%payment.new.label.repeating.all"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <Spinner fx:id="spinnerRepeatingPeriod" prefHeight="25.0" prefWidth="90.0" /> - <Label fx:id="labelText2" prefHeight="25.0" prefWidth="36.0" text="%payment.new.label.repeating.days"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - </children> - <padding> - <Insets left="15.0" right="15.0" /> - </padding> - </VBox> - <Separator orientation="VERTICAL" prefHeight="200.0" /> - <VBox alignment="TOP_CENTER" spacing="5.0" HBox.hgrow="ALWAYS"> - <children> - <RadioButton fx:id="radioButtonDay" mnemonicParsing="false"> - <VBox.margin> - <Insets bottom="10.0" /> - </VBox.margin> - </RadioButton> - <Label fx:id="labelText3" prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.repeating.monthday"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <ComboBox fx:id="comboBoxRepeatingDay" prefHeight="25.0" prefWidth="90.0" /> - <Label prefHeight="25.0" prefWidth="36.0"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - </children> - <padding> - <Insets left="15.0" right="15.0" /> - </padding> - </VBox> - </children> - </HBox> - <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0"> - <children> - <Label prefHeight="29.0" prefWidth="125.0" text="%payment.new.label.enddate"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <CheckBox fx:id="checkBoxEndDate" mnemonicParsing="false" /> - <DatePicker fx:id="datePickerEnddate" maxWidth="1.7976931348623157E308" prefHeight="29.0" HBox.hgrow="ALWAYS" /> - </children> - </HBox> - </children> - </VBox> - <HBox alignment="CENTER" prefHeight="30.0" prefWidth="465.0"> - <children> - <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="%cancel"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Button fx:id="buttonSave" mnemonicParsing="false" onAction="#save" text="%payment.new.button.save"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - <HBox.margin> - <Insets left="25.0" /> - </HBox.margin> - </Button> - </children> - <VBox.margin> - <Insets top="5.0" /> - </VBox.margin> - </HBox> - </children> - <padding> - <Insets bottom="5.0" /> - </padding> - </VBox> - </content> - </ScrollPane> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml deleted file mode 100644 index 43cbe9ae740d3b45e5dd9eb9bbbf98173f709882..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml +++ /dev/null @@ -1,101 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.ListView?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.Region?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmasterclient.ui.controller.PaymentController"> - <children> - <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0"> - <children> - <HBox prefHeight="11.0" prefWidth="772.0"> - <children> - <Button fx:id="buttonNewIncome" mnemonicParsing="false" onAction="#newIncome" text="%paymenttab.button.new.income"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Region HBox.hgrow="ALWAYS" /> - <VBox alignment="CENTER" spacing="10.0"> - <children> - <Button fx:id="buttonFilter" mnemonicParsing="false" onAction="#filter" text="%paymenttab.button.filter"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Label fx:id="labelFilterActive" text="%paymenttab.label.filter.active"> - <font> - <Font name="System Bold" size="13.0" /> - </font> - </Label> - </children> - </VBox> - <Region HBox.hgrow="ALWAYS" /> - <Button fx:id="buttonSearch" mnemonicParsing="false" onAction="#search" text="%paymenttab.button.search"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - <HBox.margin> - <Insets /> - </HBox.margin> - </Button> - <Region HBox.hgrow="ALWAYS" /> - <Button fx:id="buttonNewPayment" mnemonicParsing="false" onAction="#newPayment" text="%paymenttab.button.new.payment"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - </children> - <VBox.margin> - <Insets /> - </VBox.margin> - </HBox> - <HBox alignment="CENTER" prefHeight="16.0" prefWidth="772.0"> - <children> - <Label fx:id="labelIncome" prefHeight="27.0" text="%paymenttab.label.incomes"> - <font> - <Font name="System Bold" size="18.0" /> - </font> - </Label> - <Label fx:id="labelIncomes" maxWidth="1.7976931348623157E308" prefHeight="27.0" text="0,00 €"> - <font> - <Font name="System Bold" size="18.0" /> - </font> - <HBox.margin> - <Insets left="25.0" /> - </HBox.margin> - </Label> - <Region prefHeight="27.0" HBox.hgrow="ALWAYS" /> - <Label fx:id="labelPayment" prefHeight="27.0" text="%paymenttab.label.payments"> - <font> - <Font name="System Bold" size="18.0" /> - </font> - </Label> - <Label fx:id="labelPayments" maxWidth="1.7976931348623157E308" prefHeight="27.0" text="0,00 €"> - <font> - <Font name="System Bold" size="18.0" /> - </font> - <HBox.margin> - <Insets left="25.0" /> - </HBox.margin> - </Label> - </children> - <VBox.margin> - <Insets top="10.0" /> - </VBox.margin> - </HBox> - <ListView fx:id="listView" prefHeight="492.0" prefWidth="772.0" VBox.vgrow="ALWAYS"> - <VBox.margin> - <Insets /> - </VBox.margin> - </ListView> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml deleted file mode 100644 index 2e84bb4592c196d3cd7c04a2c370babd7512f680..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.CheckBox?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.TableView?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmasterclient.ui.controller.ReportController"> - <children> - <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="20.0" AnchorPane.bottomAnchor="35.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0"> - <children> - <HBox alignment="CENTER" prefHeight="11.0" prefWidth="772.0"> - <children> - <VBox alignment="CENTER" spacing="10.0"> - <children> - <Button fx:id="buttonFilter" mnemonicParsing="false" onAction="#filter" text="%paymenttab.button.filter"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Label fx:id="labelFilterActive" text="%paymenttab.label.filter.active"> - <font> - <Font name="System Bold" size="13.0" /> - </font> - </Label> - </children> - </VBox> - </children> - <VBox.margin> - <Insets /> - </VBox.margin> - </HBox> - <HBox alignment="CENTER" prefHeight="11.0" prefWidth="772.0"> - <children> - <VBox spacing="10.0"> - <children> - <CheckBox fx:id="checkBoxIncludeBudget" mnemonicParsing="false" text="%reporttab.checkbox.include.budget" /> - <CheckBox fx:id="checkBoxSplitTable" mnemonicParsing="false" text="%reporttab.checkbox.split.tables" /> - <CheckBox fx:id="checkBoxIncludeCategoryBudgets" mnemonicParsing="false" text="%reporttab.checkbox.inclue.categorybudgets" /> - </children> - </VBox> - </children> - <VBox.margin> - <Insets bottom="10.0" /> - </VBox.margin> - </HBox> - <TableView fx:id="tableView" prefHeight="270.0" prefWidth="772.0" VBox.vgrow="ALWAYS"> - <columnResizePolicy> - <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> - </columnResizePolicy></TableView> - <HBox alignment="CENTER" prefHeight="11.0" prefWidth="772.0"> - <children> - <VBox alignment="CENTER" spacing="10.0"> - <children> - <Button fx:id="buttonGenerate" mnemonicParsing="false" onAction="#generate" text="%reporttab.button.generate.report"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - </children> - </VBox> - </children> - <VBox.margin> - <Insets top="15.0" /> - </VBox.margin> - </HBox> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SearchGUI.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SearchGUI.fxml deleted file mode 100644 index bc66cd164a7f00c769b60bc2ae91846c4371e183..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SearchGUI.fxml +++ /dev/null @@ -1,113 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.CheckBox?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.ListView?> -<?import javafx.scene.control.TextField?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane prefHeight="600.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <VBox prefHeight="273.0" prefWidth="465.0" spacing="20.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <Label text="%search.headline"> - <font> - <Font name="System Bold" size="18.0" /> - </font> - </Label> - <VBox spacing="15.0"> - <children> - <HBox spacing="25.0"> - <children> - <VBox spacing="20.0" HBox.hgrow="ALWAYS"> - <children> - <TextField fx:id="textFieldSearch" /> - <HBox spacing="15.0"> - <children> - <Label text="%search.by"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Label> - <CheckBox fx:id="checkBoxName" mnemonicParsing="false" text="%search.by.name"> - <font> - <Font size="14.0" /> - </font> - </CheckBox> - <CheckBox fx:id="checkBoxDescription" mnemonicParsing="false" text="%search.by.description"> - <font> - <Font size="14.0" /> - </font> - </CheckBox> - <CheckBox fx:id="checkBoxCategoryName" mnemonicParsing="false" text="%search.by.category.name"> - <font> - <Font size="14.0" /> - </font> - </CheckBox> - <CheckBox fx:id="checkBoxTags" mnemonicParsing="false" text="%search.by.tags"> - <font> - <Font size="14.0" /> - </font> - </CheckBox> - </children> - </HBox> - </children> - </VBox> - </children> - </HBox> - <Label fx:id="labelSeparator" maxWidth="1.7976931348623157E308"> - <font> - <Font size="1.0" /> - </font> - </Label> - <HBox alignment="CENTER_LEFT" prefHeight="32.0" prefWidth="377.0" spacing="10.0"> - <children> - <CheckBox fx:id="checkBoxSearchByAmount" mnemonicParsing="false" text="%search.by.amount"> - <HBox.margin> - <Insets right="25.0" /> - </HBox.margin> - <font> - <Font size="14.0" /> - </font> - </CheckBox> - <HBox fx:id="hboxSearchByAmount" alignment="CENTER" spacing="10.0" HBox.hgrow="ALWAYS"> - <children> - <TextField fx:id="textFieldAmountMin" prefHeight="25.0" prefWidth="55.0" /> - <HBox fx:id="hboxRangeSlider" prefHeight="32.0" prefWidth="123.0" HBox.hgrow="ALWAYS" /> - <TextField fx:id="textFieldAmountMax" prefHeight="25.0" prefWidth="55.0" /> - </children> - </HBox> - </children> - </HBox> - </children> - </VBox> - <ListView fx:id="listView" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" /> - <HBox alignment="CENTER" prefHeight="30.0" prefWidth="465.0" spacing="10.0"> - <children> - <Button fx:id="buttonCancel" mnemonicParsing="false" onAction="#cancel" text="%cancel"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Button fx:id="buttonSearch" mnemonicParsing="false" onAction="#search" text="%search.button.search"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - <HBox.margin> - <Insets left="25.0" /> - </HBox.margin> - </Button> - </children> - <VBox.margin> - <Insets top="10.0" /> - </VBox.margin> - </HBox> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SettingsTabLocalServer.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SettingsTabLocalServer.fxml deleted file mode 100644 index effda26ce6112e3705520d9762a2544708a2221b..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SettingsTabLocalServer.fxml +++ /dev/null @@ -1,220 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.CheckBox?> -<?import javafx.scene.control.ComboBox?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.RadioButton?> -<?import javafx.scene.control.ScrollPane?> -<?import javafx.scene.control.TextField?> -<?import javafx.scene.control.ToggleButton?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.Region?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmasterclient.ui.controller.settings.LocalServerSettingsController"> - <children> - <VBox alignment="TOP_CENTER" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <ScrollPane fx:id="scrollPane" hbarPolicy="NEVER" VBox.vgrow="ALWAYS"> - <content> - <VBox spacing="14.0"> - <children> - <HBox alignment="TOP_CENTER"> - <children> - <ToggleButton fx:id="toggleButtonOnline" mnemonicParsing="false" text="%settingstab.button.server.online" /> - <ToggleButton fx:id="toggleButtonLocal" mnemonicParsing="false" text="%settingstab.button.server.local" /> - </children> - </HBox> - <HBox fx:id="hboxSettings" prefHeight="359.0" prefWidth="722.0"> - <children> - <VBox alignment="CENTER_RIGHT" prefHeight="25.0" prefWidth="158.0" spacing="15.0"> - <children> - <Label fx:id="labelStatus" prefHeight="25.0" text="%settingstab.label.status"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Label fx:id="labelClientSecret" prefHeight="25.0" text="%settingstab.label.secret.client"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Label fx:id="labelCurrency" prefHeight="25.0" text="%settingstab.label.currency"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Label fx:id="labelSecret11" prefHeight="25.0" text="%settingstab.label.rest"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Label fx:id="labelSecret1112" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" text="%settingstab.label.language" textAlignment="RIGHT" wrapText="true"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - <VBox.margin> - <Insets /> - </VBox.margin> - </Label> - <Label fx:id="labelSecret11122" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" text="%settingstab.label.database" textAlignment="RIGHT" wrapText="true"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - <VBox.margin> - <Insets top="5.0" /> - </VBox.margin> - </Label> - <Label fx:id="labelSecret111221" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" text="%settingstab.label.updates" textAlignment="RIGHT" wrapText="true"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - <VBox.margin> - <Insets top="5.0" /> - </VBox.margin> - </Label> - <Label fx:id="labelSecret11121" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" textAlignment="RIGHT" wrapText="true"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - <VBox.margin> - <Insets top="15.0" /> - </VBox.margin> - </Label> - <Region prefHeight="19.0" prefWidth="158.0" VBox.vgrow="ALWAYS" /> - </children> - <HBox.margin> - <Insets right="25.0" /> - </HBox.margin> - <padding> - <Insets top="3.0" /> - </padding> - </VBox> - <VBox alignment="CENTER_LEFT" prefHeight="200.0" prefWidth="100.0" spacing="15.0" HBox.hgrow="ALWAYS"> - <children> - <HBox alignment="CENTER_LEFT" spacing="10.0"> - <children> - <Label fx:id="labelLocalServerStatus" prefHeight="25.0"> - <font> - <Font size="14.0" /> - </font> - </Label> - <Button fx:id="buttonLocalServerAction" mnemonicParsing="false"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - </children> - </HBox> - <TextField fx:id="textFieldClientSecret" /> - <TextField fx:id="textFieldCurrency" /> - <HBox alignment="CENTER" prefHeight="11.0" prefWidth="539.0" spacing="30.0"> - <children> - <RadioButton fx:id="radioButtonRestActivated" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="%settingstab.label.rest.activated"> - <font> - <Font size="14.0" /> - </font> - <HBox.margin> - <Insets /> - </HBox.margin> - </RadioButton> - <RadioButton fx:id="radioButtonRestDeactivated" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="%settingstab.label.rest.deactivated" HBox.hgrow="ALWAYS"> - <font> - <Font size="14.0" /> - </font> - </RadioButton> - </children> - </HBox> - <ComboBox fx:id="comboBoxLanguage" maxWidth="1.7976931348623157E308" /> - <HBox alignment="CENTER_LEFT" prefHeight="11.0" prefWidth="539.0" spacing="30.0"> - <children> - <Button fx:id="buttonExportDB" minWidth="100.0" mnemonicParsing="false" onAction="#exportDB" text="%settingstab.button.database.export"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Button fx:id="buttonImportDB" minWidth="100.0" mnemonicParsing="false" onAction="#importDB" text="%settingstab.button.database.import"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Button fx:id="buttonDeleteDB" minWidth="100.0" mnemonicParsing="false" onAction="#deleteDB" text="%settingstab.button.database.delete"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - </children> - <VBox.margin> - <Insets /> - </VBox.margin> - </HBox> - <HBox alignment="CENTER_LEFT" prefHeight="100.0" prefWidth="200.0" spacing="20.0"> - <children> - <VBox spacing="10.0" HBox.hgrow="ALWAYS"> - <children> - <Button fx:id="buttonSearchUpdates" minWidth="100.0" mnemonicParsing="false" onAction="#checkForUpdates" text="%settingstab.button.updates.search" /> - <CheckBox fx:id="checkboxEnableAutoUpdate" mnemonicParsing="false" text="%settingstab.button.updates.automatic"> - <font> - <Font size="13.0" /> - </font> - </CheckBox> - </children> - </VBox> - <VBox prefWidth="100.0" spacing="10.0" HBox.hgrow="ALWAYS"> - <children> - <Label contentDisplay="CENTER" minHeight="30.0" text="%settingstab.label.updates.current.version" textAlignment="CENTER" wrapText="true"> - <font> - <Font name="System Bold" size="13.0" /> - </font> - </Label> - <Label alignment="TOP_LEFT" contentDisplay="CENTER" minHeight="25.0" text="%settingstab.label.updates.latest.version" textAlignment="CENTER" wrapText="true"> - <font> - <Font name="System Bold" size="13.0" /> - </font> - <VBox.margin> - <Insets /> - </VBox.margin> - </Label> - </children> - </VBox> - <VBox prefWidth="100.0" spacing="10.0" HBox.hgrow="ALWAYS"> - <children> - <Label fx:id="labelCurrentVersion" contentDisplay="CENTER" minHeight="30.0" textAlignment="CENTER" wrapText="true"> - <font> - <Font size="13.0" /> - </font> - </Label> - <Label fx:id="labelLatestVersion" alignment="TOP_LEFT" contentDisplay="CENTER" textAlignment="CENTER" wrapText="true"> - <font> - <Font size="13.0" /> - </font> - </Label> - </children> - </VBox> - </children> - </HBox> - <Button fx:id="buttonSave" minWidth="100.0" mnemonicParsing="false" onAction="#save" text="%settingstab.button.save"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - <VBox.margin> - <Insets top="15.0" /> - </VBox.margin> - </Button> - <Region prefWidth="158.0" VBox.vgrow="ALWAYS" /> - </children> - </VBox> - </children> - </HBox> - </children> - </VBox> - </content> - </ScrollPane> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SettingsTabOnlineServer.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SettingsTabOnlineServer.fxml deleted file mode 100644 index 69d8a1e129035349e20592a74ab7b44cb55cebdc..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SettingsTabOnlineServer.fxml +++ /dev/null @@ -1,235 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.CheckBox?> -<?import javafx.scene.control.ComboBox?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.RadioButton?> -<?import javafx.scene.control.ScrollPane?> -<?import javafx.scene.control.TextArea?> -<?import javafx.scene.control.TextField?> -<?import javafx.scene.control.ToggleButton?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.Region?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmasterclient.ui.controller.settings.OnlineServerSettingsController"> - <children> - <VBox alignment="TOP_CENTER" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <ScrollPane fx:id="scrollPane" hbarPolicy="NEVER" VBox.vgrow="ALWAYS"> - <content> - <VBox spacing="14.0"> - <children> - <HBox alignment="TOP_CENTER"> - <children> - <ToggleButton fx:id="toggleButtonOnline" mnemonicParsing="false" text="%settingstab.button.server.online" /> - <ToggleButton fx:id="toggleButtonLocal" mnemonicParsing="false" text="%settingstab.button.server.local" /> - </children> - </HBox> - <HBox fx:id="hboxSettings" prefHeight="359.0" prefWidth="722.0"> - <children> - <VBox alignment="CENTER_RIGHT" prefHeight="25.0" prefWidth="158.0" spacing="15.0"> - <children> - <Label fx:id="labelClientSecret" prefHeight="25.0" text="%settingstab.label.secret.client"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Label fx:id="labelURL" prefHeight="25.0" text="%settingstab.label.url"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - <VBox.margin> - <Insets /> - </VBox.margin> - </Label> - <Label fx:id="labelSecret" prefHeight="25.0" text="%settingstab.label.secret.server"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Label fx:id="labelCurrency" prefHeight="25.0" text="%settingstab.label.currency"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Label fx:id="labelSecret11" prefHeight="25.0" text="%settingstab.label.rest"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <Label fx:id="labelSecret111" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" minHeight="60.0" prefWidth="158.0" text="%settingstab.label.trusted.hosts" textAlignment="RIGHT" wrapText="true"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - <VBox.margin> - <Insets top="-7.0" /> - </VBox.margin> - </Label> - <Label fx:id="labelSecret1111" alignment="CENTER" contentDisplay="CENTER" maxHeight="-Infinity" text="%settingstab.label.trusted.hosts.info" textAlignment="CENTER" wrapText="true" VBox.vgrow="ALWAYS"> - <font> - <Font size="14.0" /> - </font> - <VBox.margin> - <Insets top="-20.0" /> - </VBox.margin> - </Label> - <Label fx:id="labelSecret1112" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" text="%settingstab.label.language" textAlignment="RIGHT" wrapText="true"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - <VBox.margin> - <Insets top="50.0" /> - </VBox.margin> - </Label> - <Label fx:id="labelSecret11122" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" text="%settingstab.label.database" textAlignment="RIGHT" wrapText="true"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - <VBox.margin> - <Insets top="5.0" /> - </VBox.margin> - </Label> - <Label fx:id="labelSecret111221" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" text="%settingstab.label.updates" textAlignment="RIGHT" wrapText="true"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - <VBox.margin> - <Insets top="5.0" /> - </VBox.margin> - </Label> - <Label fx:id="labelSecret11121" alignment="CENTER_RIGHT" contentDisplay="RIGHT" maxHeight="-Infinity" prefWidth="158.0" textAlignment="RIGHT" wrapText="true"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - <VBox.margin> - <Insets top="15.0" /> - </VBox.margin> - </Label> - <Region prefHeight="19.0" prefWidth="158.0" VBox.vgrow="ALWAYS" /> - </children> - <HBox.margin> - <Insets right="25.0" /> - </HBox.margin> - </VBox> - <VBox alignment="CENTER_LEFT" prefHeight="200.0" prefWidth="100.0" spacing="15.0" HBox.hgrow="ALWAYS"> - <children> - <TextField fx:id="textFieldClientSecret" /> - <TextField fx:id="textFieldURL" /> - <TextField fx:id="textFieldSecret" /> - <TextField fx:id="textFieldCurrency" /> - <HBox alignment="CENTER" prefHeight="11.0" prefWidth="539.0" spacing="30.0"> - <children> - <RadioButton fx:id="radioButtonRestActivated" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="%settingstab.label.rest.activated"> - <font> - <Font size="14.0" /> - </font> - <HBox.margin> - <Insets /> - </HBox.margin> - </RadioButton> - <RadioButton fx:id="radioButtonRestDeactivated" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="%settingstab.label.rest.deactivated" HBox.hgrow="ALWAYS"> - <font> - <Font size="14.0" /> - </font> - </RadioButton> - </children> - </HBox> - <TextArea fx:id="textAreaTrustedHosts" maxHeight="122.0" minHeight="122.0" prefHeight="122.0" prefWidth="539.0"> - <VBox.margin> - <Insets /> - </VBox.margin> - </TextArea> - <ComboBox fx:id="comboBoxLanguage" maxWidth="1.7976931348623157E308" /> - <HBox alignment="CENTER_LEFT" prefHeight="11.0" prefWidth="539.0" spacing="30.0"> - <children> - <Button fx:id="buttonExportDB" minWidth="100.0" mnemonicParsing="false" onAction="#exportDB" text="%settingstab.button.database.export"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Button fx:id="buttonImportDB" minWidth="100.0" mnemonicParsing="false" onAction="#importDB" text="%settingstab.button.database.import"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - <Button fx:id="buttonDeleteDB" minWidth="100.0" mnemonicParsing="false" onAction="#deleteDB" text="%settingstab.button.database.delete"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - </Button> - </children> - <VBox.margin> - <Insets /> - </VBox.margin> - </HBox> - <HBox alignment="CENTER_LEFT" prefHeight="100.0" prefWidth="200.0" spacing="20.0"> - <children> - <VBox spacing="10.0" HBox.hgrow="ALWAYS"> - <children> - <Button fx:id="buttonSearchUpdates" minWidth="100.0" mnemonicParsing="false" onAction="#checkForUpdates" text="%settingstab.button.updates.search" /> - <CheckBox fx:id="checkboxEnableAutoUpdate" mnemonicParsing="false" text="%settingstab.button.updates.automatic"> - <font> - <Font size="13.0" /> - </font> - </CheckBox> - </children> - </VBox> - <VBox prefWidth="100.0" spacing="10.0" HBox.hgrow="ALWAYS"> - <children> - <Label contentDisplay="CENTER" minHeight="30.0" text="%settingstab.label.updates.current.version" textAlignment="CENTER" wrapText="true"> - <font> - <Font name="System Bold" size="13.0" /> - </font> - </Label> - <Label alignment="TOP_LEFT" contentDisplay="CENTER" text="%settingstab.label.updates.latest.version" textAlignment="CENTER" wrapText="true"> - <font> - <Font name="System Bold" size="13.0" /> - </font> - <VBox.margin> - <Insets /> - </VBox.margin> - </Label> - </children> - </VBox> - <VBox prefWidth="100.0" spacing="10.0" HBox.hgrow="ALWAYS"> - <children> - <Label fx:id="labelCurrentVersion" contentDisplay="CENTER" minHeight="30.0" textAlignment="CENTER" wrapText="true"> - <font> - <Font size="13.0" /> - </font> - </Label> - <Label fx:id="labelLatestVersion" alignment="TOP_LEFT" contentDisplay="CENTER" textAlignment="CENTER" wrapText="true"> - <font> - <Font size="13.0" /> - </font> - </Label> - </children> - </VBox> - </children> - </HBox> - <Button fx:id="buttonSave" minWidth="100.0" mnemonicParsing="false" onAction="#save" text="%settingstab.button.save"> - <font> - <Font name="System Bold" size="14.0" /> - </font> - <VBox.margin> - <Insets top="15.0" /> - </VBox.margin> - </Button> - <Region prefWidth="158.0" VBox.vgrow="ALWAYS" /> - </children> - </VBox> - </children> - </HBox> - </children> - </VBox> - </content> - </ScrollPane> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml deleted file mode 100644 index 398b068412d665c004587a04f5c72a0c112841eb..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.PasswordField?> -<?import javafx.scene.image.ImageView?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import javafx.scene.text.Font?> - -<AnchorPane fx:id="anchorPaneMain" prefHeight="230.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <VBox layoutX="14.0" layoutY="14.0" spacing="10.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> - <children> - <HBox alignment="CENTER_LEFT" spacing="25.0"> - <children> - <ImageView fx:id="imageViewLogo" fitHeight="120.0" fitWidth="120.0" pickOnBounds="true" preserveRatio="true"> - <HBox.margin> - <Insets left="15.0" /> - </HBox.margin></ImageView> - <VBox alignment="CENTER" HBox.hgrow="ALWAYS"> - <children> - <Label alignment="CENTER" maxWidth="1.7976931348623157E308" text="%app.name"> - <font> - <Font name="System Bold" size="25.0" /> - </font> - </Label> - <Label fx:id="labelVersion" alignment="CENTER" maxWidth="1.7976931348623157E308" text="v1.0.0"> - <font> - <Font size="16.0" /> - </font> - </Label> - </children> - </VBox> - </children> - </HBox> - <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="20.0"> - <children> - <Label text="%splashscreen.label.password"> - <font> - <Font name="System Bold" size="16.0" /> - </font> - </Label> - <PasswordField fx:id="textFieldPassword" prefHeight="28.0" prefWidth="159.0" /> - <Button fx:id="buttonLogin" maxHeight="-Infinity" maxWidth="-Infinity" mnemonicParsing="false" onAction="#login" prefHeight="28.0" prefWidth="28.0" /> - </children> - </HBox> - </children> - </VBox> - </children> -</AnchorPane> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/style.css b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/style.css deleted file mode 100644 index f0c0c1e000e2dddc7be6e0501d2e5eabf270af02..0000000000000000000000000000000000000000 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/style.css +++ /dev/null @@ -1,98 +0,0 @@ -.greylabel{ - -fx-text-fill: #212121; -} - -.tab-header-background { - -fx-background-color: transparent; -} -.tab-pane{ - -fx-tab-min-width: 100px; -} - -.tab{ - -fx-background-insets: 0 1 0 1,0,0; - -fx-padding: 5 0 5 0; -} -.tab-pane .tab{ - -fx-font-weight: bold; - -fx-background-color: #A5A5A5; -} - -.tab .tab-label { - -fx-alignment: CENTER; - -fx-font-size: 12px; - -fx-font-weight: bold; -} -.tab-pane .tab:selected -{ - -fx-background-color: #F4F4F4; -} - -.tab:selected .tab-label { - -fx-alignment: CENTER; -} - -.tab-pane > .tab-header-area > .headers-region > .tab { - -fx-background-radius: 0, 0, 0; -} - -.tab-pane:focused > .tab-header-area > .headers-region > .tab:selected .focus-indicator { - -fx-border-radius: 0, 0; - -fx-focus-color: transparent; - -fx-border-color: transparent; -} - - - -.progress-bar { - -fx-indeterminate-bar-length: 60; - -fx-indeterminate-bar-escape: true; - -fx-indeterminate-bar-flip: true; - -fx-indeterminate-bar-animation-time: 2; -} - -.progress-bar > .bar { - -fx-background-color: -fx-accent; - -fx-background-insets: 0 0 0 0; - -fx-background-radius: 0; - -fx-padding: 0.75em; -} - -.progress-bar > .track { - -fx-background-color: #CCCCCC; - -fx-background-insets: 0, 0 0 0 0, 0 0 0 0; - -fx-background-radius: 0, 0, 0; -} - - -.color-view-item { - -fx-stroke: black; - -fx-stroke-width: 2; - -fx-arc-height: 7.5; - -fx-arc-width: 7.5; - } - - .color-view-item:hover { - -fx-stroke: DARKRED; - } - - .color-view-item:pressed { - -fx-stroke: RED; - } - - .picker-color-rect { - -fx-opacity: 0; - } - - .color-picker .arrow-button{ - -fx-opacity: 0; - } - - .button-hoverable:hover{ - -fx-opacity: 0.6; - -fx-cursor: hand; -} - -.scroll-pane > .viewport { - -fx-background-color: transparent; -} \ No newline at end of file diff --git a/BudgetMasterCore/.classpath b/BudgetMasterCore/.classpath deleted file mode 100644 index 8e795b1c7e0c65a33e55e6a4fe23c4a11dd9e703..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/.classpath +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" output="target/classes" path="src/main/java"> - <attributes> - <attribute name="optional" value="true"/> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="src" output="target/test-classes" path="src/test/java"> - <attributes> - <attribute name="optional" value="true"/> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="output" path="target/classes"/> -</classpath> diff --git a/BudgetMasterCore/.project b/BudgetMasterCore/.project deleted file mode 100644 index 5cb225e94a1907fffaac671cb11c963eebaad177..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/.project +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>BudgetMasterCore</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.m2e.core.maven2Builder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - <nature>org.eclipse.m2e.core.maven2Nature</nature> - </natures> -</projectDescription> diff --git a/BudgetMasterCore/.settings/org.eclipse.jdt.core.prefs b/BudgetMasterCore/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 714351aec195a9a572640e6844dcafd51565a2a5..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,5 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/BudgetMasterCore/.settings/org.eclipse.m2e.core.prefs b/BudgetMasterCore/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f1cb2389f85fe6381425d29f0a9866fb65..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/BudgetMasterCore/pom.xml b/BudgetMasterCore/pom.xml deleted file mode 100644 index 73e1ad26d5b81d6e1d7e7a5b67b9a7826db301e6..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/pom.xml +++ /dev/null @@ -1,45 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>de.deadlocker8</groupId> - <artifactId>BudgetMasterCore</artifactId> - <version>0.0.1-SNAPSHOT</version> - <name>BudgetMasterCore</name> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <source>1.8</source> - <target>1.8</target> - </configuration> - </plugin> - </plugins> - </build> - - <dependencies> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - <version>2.8.1</version> - </dependency> - <dependency> - <groupId>joda-time</groupId> - <artifactId>joda-time</artifactId> - <version>2.9.7</version> - </dependency> - <dependency> - <groupId>com.itextpdf</groupId> - <artifactId>itextpdf</artifactId> - <version>5.0.6</version> - </dependency> - <dependency> - <groupId>de.deadlocker8</groupId> - <artifactId>tools</artifactId> - <version>1.0.0</version> - <scope>system</scope> - <systemPath>${basedir}/../lib/Tools.jar</systemPath> - </dependency> - </dependencies> -</project> \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/Budget.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/Budget.java deleted file mode 100644 index 22dc0a7a50369e2141bb3e5779a510cf5ea1e342..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/Budget.java +++ /dev/null @@ -1,48 +0,0 @@ -package de.deadlocker8.budgetmaster.logic; - -import java.util.List; - -import de.deadlocker8.budgetmaster.logic.payment.Payment; - -public class Budget -{ - private double incomeSum; - private double paymentSum; - - public Budget(List<Payment> payments) - { - incomeSum = 0; - paymentSum = 0; - for(Payment currentPayment : payments) - { - double amount = currentPayment.getAmount(); - if(amount > 0) - { - incomeSum += amount; - } - else - { - paymentSum += amount; - } - } - - incomeSum /= 100.0; - paymentSum /= 100.0; - } - - public double getIncomeSum() - { - return incomeSum; - } - - public double getPaymentSum() - { - return paymentSum; - } - - @Override - public String toString() - { - return "Budget [incomeSum=" + incomeSum + ", paymentSum=" + paymentSum + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/FilterSettings.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/FilterSettings.java deleted file mode 100644 index 82818e4c97dc74d42d00f862e135f3079e76c1f2..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/FilterSettings.java +++ /dev/null @@ -1,219 +0,0 @@ -package de.deadlocker8.budgetmaster.logic; - -import java.util.ArrayList; - -public class FilterSettings -{ - private boolean isIncomeAllowed; - private boolean isPaymentAllowed; - private boolean isNoRepeatingAllowed; - private boolean isMonthlyRepeatingAllowed; - private boolean isRepeatingEveryXDaysAllowed; - private ArrayList<Integer> allowedCategoryIDs; - private ArrayList<Integer> allowedTagIDs; - private String name; - - public FilterSettings(boolean isIncomeAllowed, boolean isPaymentAllowed, boolean isNoRepeatingAllowed, boolean isMonthlyRepeatingAllowed, boolean isRepeatingEveryXDaysAllowed, ArrayList<Integer> allowedCategoryIDs, ArrayList<Integer> allowedTagIDs, String name) - { - this.isIncomeAllowed = isIncomeAllowed; - this.isPaymentAllowed = isPaymentAllowed; - this.isNoRepeatingAllowed = isNoRepeatingAllowed; - this.isMonthlyRepeatingAllowed = isMonthlyRepeatingAllowed; - this.isRepeatingEveryXDaysAllowed = isRepeatingEveryXDaysAllowed; - this.allowedCategoryIDs = allowedCategoryIDs; - this.allowedTagIDs = allowedTagIDs; - this.name = name; - } - - public FilterSettings() - { - this.isIncomeAllowed = true; - this.isPaymentAllowed = true; - this.isNoRepeatingAllowed = true; - this.isMonthlyRepeatingAllowed = true; - this.isRepeatingEveryXDaysAllowed = true; - this.allowedCategoryIDs = null; - this.allowedTagIDs = null; - this.name = null; - } - - public boolean isIncomeAllowed() - { - return isIncomeAllowed; - } - - public void setIncomeAllowed(boolean isIncomeAllowed) - { - this.isIncomeAllowed = isIncomeAllowed; - } - - public boolean isPaymentAllowed() - { - return isPaymentAllowed; - } - - public void setPaymentAllowed(boolean isPaymentAllowed) - { - this.isPaymentAllowed = isPaymentAllowed; - } - - public boolean isNoRepeatingAllowed() - { - return isNoRepeatingAllowed; - } - - public void setNoRepeatingAllowed(boolean isNoRepeatingAllowed) - { - this.isNoRepeatingAllowed = isNoRepeatingAllowed; - } - - public boolean isMonthlyRepeatingAllowed() - { - return isMonthlyRepeatingAllowed; - } - - public void setMonthlyRepeatingAllowed(boolean isMonthlyRepeatingAllowed) - { - this.isMonthlyRepeatingAllowed = isMonthlyRepeatingAllowed; - } - - public boolean isRepeatingEveryXDaysAllowed() - { - return isRepeatingEveryXDaysAllowed; - } - - public void setRepeatingEveryXDaysAllowed(boolean isRepeatingEveryXDaysAllowed) - { - this.isRepeatingEveryXDaysAllowed = isRepeatingEveryXDaysAllowed; - } - - public ArrayList<Integer> getAllowedCategoryIDs() - { - return allowedCategoryIDs; - } - - public void setAllowedCategoryIDs(ArrayList<Integer> allowedCategoryIDs) - { - this.allowedCategoryIDs = allowedCategoryIDs; - } - - public ArrayList<Integer> getAllowedTagIDs() - { - return allowedTagIDs; - } - - public void setAllowedTagIDs(ArrayList<Integer> allowedTagIDs) - { - this.allowedTagIDs = allowedTagIDs; - } - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - @Override - public String toString() - { - return "FilterSettings [isIncomeAllowed=" + isIncomeAllowed + ", isPaymentAllowed=" + isPaymentAllowed + ", isNoRepeatingAllowed=" + isNoRepeatingAllowed + ", isMonthlyRepeatingAllowed=" + isMonthlyRepeatingAllowed + ", isRepeatingEveryXDaysAllowed=" + isRepeatingEveryXDaysAllowed - + ", allowedCategoryIDs=" + allowedCategoryIDs + ", allowedTagIDs=" + allowedTagIDs + ", name=" + name + "]"; - } - - public boolean equals(Object other) - { - if(other == null) return false; - if(other == this) return true; - if(!(other instanceof FilterSettings)) return false; - FilterSettings otherSettings = (FilterSettings)other; - if(isIncomeAllowed == otherSettings.isIncomeAllowed() && - isPaymentAllowed == otherSettings.isPaymentAllowed && - isNoRepeatingAllowed == otherSettings.isNoRepeatingAllowed && - isMonthlyRepeatingAllowed == otherSettings.isMonthlyRepeatingAllowed && - isRepeatingEveryXDaysAllowed == otherSettings.isRepeatingEveryXDaysAllowed) - { - if(name == null) - { - if(otherSettings.getName() != null) - { - return false; - } - } - else - { - if(otherSettings.getName() == null) - { - return false; - } - else - { - if(!name.equals(otherSettings.getName())) return false; - } - } - - - if(allowedCategoryIDs == null) - { - if(otherSettings.getAllowedCategoryIDs() != null) - { - return false; - } - else - { - return isEqualTagIDs(otherSettings); - } - } - else - { - if(otherSettings.getAllowedCategoryIDs() == null) - { - return false; - } - else - { - if(allowedCategoryIDs.equals(otherSettings.getAllowedCategoryIDs())) - { - return isEqualTagIDs(otherSettings); - } - } - } - } - - return false; - } - - private boolean isEqualTagIDs(FilterSettings otherSettings) - { - if(allowedTagIDs == null) - { - if(otherSettings.getAllowedTagIDs() != null) - { - return false; - } - else - { - return true; - } - } - else - { - if(otherSettings.getAllowedTagIDs() == null) - { - return false; - } - else - { - if(allowedTagIDs.equals(otherSettings.getAllowedTagIDs())) - { - return true; - } - } - } - - return false; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/ServerType.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/ServerType.java deleted file mode 100644 index 9db45810d8bf6e7bbb5569e4b0eea0f87383d701..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/ServerType.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.deadlocker8.budgetmaster.logic; - -public enum ServerType -{ - ONLINE, LOCAL; -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/Settings.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/Settings.java deleted file mode 100644 index dd115b4e200e52e761e7a6c934a6a3324f582fbd..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/Settings.java +++ /dev/null @@ -1,151 +0,0 @@ -package de.deadlocker8.budgetmaster.logic; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.utils.LanguageType; -import de.deadlocker8.budgetmaster.logic.utils.SaveFileType; - -public class Settings -{ - /* - * VERSIONS - * - * --> 1 - * initial - * - * --> 2 - * added field for "serverType" - * - */ - - private final String TYPE = SaveFileType.BUDGETMASTER_SETTINGS.toString(); - private final int VERSION = 2; - private ServerType serverType; - private String clientSecret; - private String url; - private String secret; - private String currency; - private boolean restActivated = true; - private ArrayList<String> trustedHosts; - private LanguageType language = LanguageType.ENGLISH; - private boolean autoUpdateCheckEnabled = true; - - public Settings() - { - - } - - public ServerType getServerType() - { - return serverType; - } - - public void setServerType(ServerType serverType) - { - this.serverType = serverType; - } - - public String getClientSecret() - { - return clientSecret; - } - - public void setClientSecret(String clientPassword) - { - this.clientSecret = clientPassword; - } - - public String getUrl() - { - return url; - } - - public void setUrl(String url) - { - this.url = url; - } - - public String getSecret() - { - return secret; - } - - public void setSecret(String secret) - { - this.secret = secret; - } - - public String getCurrency() - { - return currency; - } - - public void setCurrency(String currency) - { - this.currency = currency; - } - - public boolean isRestActivated() - { - return restActivated; - } - - public void setRestActivated(boolean restActivated) - { - this.restActivated = restActivated; - } - - public ArrayList<String> getTrustedHosts() - { - return trustedHosts; - } - - public void setTrustedHosts(ArrayList<String> trustedHosts) - { - this.trustedHosts = trustedHosts; - } - - public LanguageType getLanguage() - { - return language; - } - - public void setLanguage(LanguageType language) - { - this.language = language; - } - - public boolean isAutoUpdateCheckEnabled() - { - return autoUpdateCheckEnabled; - } - - public void setAutoUpdateCheckEnabled(boolean autoUpdateCheckEnabled) - { - this.autoUpdateCheckEnabled = autoUpdateCheckEnabled; - } - - public boolean isComplete() - { - if(url == null) - return false; - if(secret == null) - return false; - if(currency == null) - return false; - - return true; - } - - public int getVERSION() - { - return VERSION; - } - - @Override - public String toString() - { - return "Settings [TYPE=" + TYPE + ", VERSION=" + VERSION + ", serverType=" + serverType + ", clientSecret=" + clientSecret + ", url=" + url + ", secret=" + secret + ", currency=" + currency + ", restActivated=" + restActivated + ", trustedHosts=" + trustedHosts + ", language=" + language - + ", autoUpdateCheckEnabled=" + autoUpdateCheckEnabled + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/category/Category.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/category/Category.java deleted file mode 100644 index b9daf6e12bda7ca7462e8a6997f14bd72190fca3..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/category/Category.java +++ /dev/null @@ -1,75 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.category; - -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import tools.Localization; - -public class Category -{ - private int ID; - private String name; - private String color; - - public Category(String name, String color) - { - this.name = name; - this.color = color; - } - - public Category(int ID, String name, String color) - { - this.ID = ID; - this.name = name; - this.color = color; - } - - public int getID() - { - return ID; - } - - public String getName() - { - if(ID == 1) - { - return Localization.getString(Strings.CATEGORY_NONE); - } - - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public String getColor() - { - return color; - } - - public void setColor(String color) - { - this.color = color; - } - - @Override - public String toString() - { - return "Category [ID=" + ID + ", name=" + name + ", color=" + color + "]"; - } - - @Override - public boolean equals(Object obj) - { - if(this == obj) - return true; - if(obj == null) - return false; - if(getClass() != obj.getClass()) - return false; - Category other = (Category)obj; - if(ID != other.ID) - return false; - return true; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/category/CategoryBudget.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/category/CategoryBudget.java deleted file mode 100644 index 25ad57c5cdb8bc08dd84900464c4275d2f8ec3e2..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/category/CategoryBudget.java +++ /dev/null @@ -1,39 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.category; - -public class CategoryBudget -{ - private Category category; - private double budget; - - public CategoryBudget(Category category, double budget) - { - this.category = category; - this.budget = budget; - } - - public Category getCategory() - { - return category; - } - - public void setCategory(Category category) - { - this.category = category; - } - - public double getBudget() - { - return budget; - } - - public void setBudget(double budget) - { - this.budget = budget; - } - - @Override - public String toString() - { - return "CategoryBudget [category=" + category + ", budget=" + budget + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/category/CategoryHandler.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/category/CategoryHandler.java deleted file mode 100644 index 06fd51b8aac2958a453fb7f947b05c34760d7517..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/category/CategoryHandler.java +++ /dev/null @@ -1,61 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.category; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import tools.Localization; - -public class CategoryHandler -{ - private ArrayList<Category> categories; - - public CategoryHandler(ArrayList<Category> categories) - { - this.categories = new ArrayList<>(); - if(categories != null) - { - this.categories.addAll(categories); - - //set correct localized name for category "rest" - for(Category currentCategory : categories) - { - if(currentCategory.getID() == 2) - { - currentCategory.setName(Localization.getString(Strings.CATEGORY_REST)); - } - } - } - } - - public ArrayList<Category> getCategories() - { - return categories; - } - - public ArrayList<Category> getCategoriesWithoutNone() - { - ArrayList<Category> categoriesWithoutNone = new ArrayList<>(); - for(Category currentCategory : categories) - { - if(currentCategory.getID() != 1) - { - categoriesWithoutNone.add(currentCategory); - } - } - - return categoriesWithoutNone; - } - - public Category getCategory(int ID) - { - for(Category currentCategory : categories) - { - if(currentCategory.getID() == ID) - { - return currentCategory; - } - } - - return new Category(1, "NONE", "#FFFFFF"); - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java deleted file mode 100644 index 5921ab8cd892b66e60b3935b92117e72c1631b3a..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java +++ /dev/null @@ -1,352 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.charts; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.Scene; -import javafx.scene.SnapshotParameters; -import javafx.scene.control.Label; -import javafx.scene.control.Tooltip; -import javafx.scene.image.WritableImage; -import javafx.scene.layout.GridPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.layout.Region; -import javafx.scene.layout.VBox; -import javafx.scene.paint.Color; -import javafx.scene.text.Font; -import javafx.scene.transform.Transform; -import javafx.stage.Modality; -import javafx.stage.Stage; -import tools.ConvertTo; -import tools.Localization; - -public class CategoriesChart extends VBox implements ChartExportable -{ - private String titleIncomes; - private String titlePayments; - private ArrayList<CategoryInOutSum> categoryInOutSums; - private String currency; - private double totalIncomes; - private double totalPayments; - private LegendType legendType; - private final double CHART_HEIGHT = 200; - private final double FULL_LEGEND_ITEM_HEIGHT = 40; - private final double DELIMITER_HEIGHT = 21; - - public CategoriesChart(String titleIncomes, String titlePayments, ArrayList<CategoryInOutSum> categoryInOutSums, String currency, LegendType legendType) - { - this.titleIncomes = titleIncomes; - this.titlePayments = titlePayments; - if(categoryInOutSums == null) - { - this.categoryInOutSums = new ArrayList<>(); - } - else - { - this.categoryInOutSums = categoryInOutSums; - } - - this.currency = currency; - this.totalIncomes = getTotal(this.categoryInOutSums, true); - this.totalPayments = getTotal(categoryInOutSums, false); - this.legendType = legendType; - - this.setSpacing(10); - - this.getChildren().add(generate(titleIncomes, true)); - this.getChildren().add(generate(titlePayments, false)); - - Region spacer = new Region(); - this.getChildren().add(spacer); - VBox.setVgrow(spacer, Priority.ALWAYS); - - if(this.legendType == LegendType.NORMAL) - { - this.getChildren().add(generateLegend()); - } - else if(this.legendType == LegendType.FULL) - { - this.getChildren().add(generateFullLegend()); - } - } - - private VBox generate(String title, boolean useIncomes) - { - VBox generatedChart = new VBox(); - HBox chart = new HBox(); - chart.setMinHeight(50); - - Label labelTitle = new Label(title); - labelTitle.setStyle("-fx-font-size: 16; -fx-font-weight: bold;"); - generatedChart.getChildren().add(labelTitle); - VBox.setMargin(labelTitle, new Insets(0, 0, 10, 0)); - - for(CategoryInOutSum currentItem : categoryInOutSums) - { - Label currentPart = new Label(); - currentPart.setStyle("-fx-background-color: " + currentItem.getColor()); - currentPart.prefHeightProperty().bind(chart.heightProperty()); - chart.getChildren().add(currentPart); - - double value; - double percentage; - if(useIncomes) - { - value = currentItem.getBudgetIN() / 100.0; - percentage = value / totalIncomes; - } - else - { - value = -currentItem.getBudgetOUT() / 100.0; - percentage = value / totalPayments; - } - - currentPart.prefWidthProperty().bind(chart.widthProperty().multiply(percentage)); - - Tooltip tooltip = new Tooltip(); - tooltip.setText(Localization.getString(Strings.TOOLTIP_CHART_CATEGORIES, - currentItem.getName(), - Helpers.NUMBER_FORMAT.format(percentage * 100), - Helpers.getCurrencyString(value, currency))); - currentPart.setTooltip(tooltip); - } - - generatedChart.getChildren().add(chart); - - return generatedChart; - } - - private GridPane generateLegend() - { - GridPane legend = new GridPane(); - legend.setPadding(new Insets(10)); - legend.setHgap(20); - legend.setVgap(10); - legend.setAlignment(Pos.CENTER); - legend.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_CHART_LEGEND) + "; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;"); - - if(categoryInOutSums.size() == 0) - { - return legend; - } - - ArrayList<HBox> legendItems = new ArrayList<>(); - for(CategoryInOutSum currentItem : categoryInOutSums) - { - legendItems.add(getLegendItem(currentItem.getName(), Color.web(currentItem.getColor()))); - } - - int legendWidth; - int numberOfItems = legendItems.size(); - if(numberOfItems <= 3) - { - legendWidth = numberOfItems; - } - else - { - legendWidth = (int)Math.ceil(Math.sqrt(numberOfItems)); - } - - for(int i = 0; i < numberOfItems; i++) - { - int columnIndex = i % legendWidth; - int rowIndex = i / legendWidth; - legend.add(legendItems.get(i), columnIndex, rowIndex); - } - - return legend; - } - - private VBox generateFullLegend() - { - VBox legend = new VBox(); - legend.setPadding(new Insets(10)); - legend.setSpacing(10); - legend.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_CHART_LEGEND) + "; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;"); - - if(categoryInOutSums.size() == 0) - { - return legend; - } - - double totalIn = getTotal(categoryInOutSums, true); - double totalOut = getTotal(categoryInOutSums, false); - - HBox hboxLegend = new HBox(); - hboxLegend.setSpacing(0); - - VBox vboxCircles = new VBox(); - vboxCircles.setSpacing(10); - VBox vboxNames = new VBox(); - vboxNames.setSpacing(10); - VBox vboxIn = new VBox(); - vboxIn.setSpacing(10); - VBox vboxOut = new VBox(); - vboxOut.setSpacing(10); - - Label labelHeaderSpacer = new Label(); - labelHeaderSpacer.setMinWidth(20); - labelHeaderSpacer.setMinHeight(20); - vboxCircles.getChildren().add(labelHeaderSpacer); - - Label labelHeaderName = new Label(Localization.getString(Strings.TITLE_CATEGORIES)); - labelHeaderName.setStyle("-fx-font-weight: bold; -fx-underline: true;"); - labelHeaderName.setMinHeight(20); - labelHeaderName.setPadding(new Insets(0, 0, 0, 10)); - vboxNames.getChildren().add(labelHeaderName); - - Label labelHeaderIn = new Label(Localization.getString(Strings.TITLE_INCOMES)); - labelHeaderIn.setStyle("-fx-font-weight: bold; -fx-underline: true;"); - labelHeaderIn.setMinHeight(20); - vboxIn.getChildren().add(labelHeaderIn); - - Label labelHeaderOut = new Label(Localization.getString(Strings.TITLE_PAYMENTS)); - labelHeaderOut.setStyle("-fx-font-weight: bold; -fx-underline: true;"); - labelHeaderOut.setMinHeight(20); - vboxOut.getChildren().add(labelHeaderOut); - - for(int i = 0; i < categoryInOutSums.size(); i++) - { - CategoryInOutSum currentItem = categoryInOutSums.get(i); - - Label labelCircle = new Label(); - labelCircle.setMinWidth(20); - labelCircle.setMinHeight(20); - labelCircle.setStyle("-fx-background-color: " + currentItem.getColor() + "; -fx-background-radius: 50%; -fx-border-width: 1; -fx-border-color: black - fx-border-radius: 50%"); - vboxCircles.getChildren().add(labelCircle); - - Label labelName = new Label(currentItem.getName()); - labelName.setStyle("-fx-font-weight: bold;"); - labelName.setMinHeight(20); - labelName.setPadding(new Insets(0, 0, 0, 10)); - vboxNames.getChildren().add(labelName); - - String percentageIn = totalIn != 0 ? Helpers.NUMBER_FORMAT.format(Math.abs((currentItem.getBudgetIN() / totalIn))) : "0,00"; - Label labelInSum = new Label("+" + Helpers.getCurrencyString(currentItem.getBudgetIN(), currency) + " (" + percentageIn + "%)"); - labelInSum.setStyle("-fx-font-weight: bold;"); - labelInSum.setMinHeight(20); - vboxIn.getChildren().add(labelInSum); - - String percentageOut = totalOut != 0 ? Helpers.NUMBER_FORMAT.format(Math.abs((currentItem.getBudgetOUT() / totalOut))) : "0,00"; - Label labelOutSum = new Label(Helpers.getCurrencyString(currentItem.getBudgetOUT(), currency) + " (" + percentageOut + "%)"); - labelOutSum.setStyle("-fx-font-weight: bold;"); - labelOutSum.setMinHeight(20); - vboxOut.getChildren().add(labelOutSum); - - if(i < categoryInOutSums.size()-1) - { - //add delimiters - vboxCircles.getChildren().add(generateNewSeparator()); - vboxNames.getChildren().add(generateNewSeparator()); - vboxIn.getChildren().add(generateNewSeparator()); - vboxOut.getChildren().add(generateNewSeparator()); - } - } - - hboxLegend.getChildren().add(vboxCircles); - hboxLegend.getChildren().add(vboxNames); - HBox.setHgrow(vboxNames, Priority.ALWAYS); - hboxLegend.getChildren().add(vboxIn); - HBox.setHgrow(vboxIn, Priority.ALWAYS); - hboxLegend.getChildren().add(vboxOut); - HBox.setHgrow(vboxOut, Priority.ALWAYS); - legend.getChildren().add(hboxLegend); - - return legend; - } - - private HBox getLegendItem(String name, Color color) - { - HBox legendItem = new HBox(); - Label labelCircle = new Label(); - labelCircle.setMinWidth(20); - labelCircle.setMinHeight(20); - labelCircle.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(color) + "; -fx-background-radius: 50%; -fx-border-width: 1; -fx-border-color: black - fx-border-radius: 50%"); - - Label labelText = new Label(name); - labelText.setStyle("-fx-font-weight: bold;"); - - legendItem.getChildren().add(labelCircle); - legendItem.getChildren().add(labelText); - HBox.setMargin(labelText, new Insets(0, 0, 0, 5)); - - return legendItem; - } - - private Label generateNewSeparator() - { - Label separator = new Label(); - separator.setStyle("-fx-background-color: #212121; -fx-padding: 0;"); - separator.setFont(new Font(1)); - separator.setMinHeight(1); - separator.setMaxHeight(1); - separator.setMaxWidth(Double.MAX_VALUE); - return separator; - } - - private double getTotal(ArrayList<CategoryInOutSum> categoryInOutSums, boolean useIncomes) - { - double total = 0; - for(CategoryInOutSum currentItem : categoryInOutSums) - { - if(useIncomes) - { - total += currentItem.getBudgetIN() / 100.0; - } - else - { - total += -currentItem.getBudgetOUT() / 100.0; - } - } - return total; - } - - @Override - public WritableImage export(int width, int height) - { - VBox root = new VBox(); - - root.setStyle("-fx-background-color: transparent;"); - root.setPadding(new Insets(25)); - root.setSpacing(10); - - root.getChildren().add(generate(titleIncomes, true)); - root.getChildren().add(generate(titlePayments, false)); - - Region spacer = new Region(); - spacer.setMinHeight(25); - root.getChildren().add(spacer); - VBox.setVgrow(spacer, Priority.ALWAYS); - - root.getChildren().add(generateFullLegend()); - - Stage newStage = new Stage(); - newStage.initModality(Modality.NONE); - newStage.setScene(new Scene(root, width, height)); - newStage.setResizable(false); - newStage.show(); - - SnapshotParameters sp = new SnapshotParameters(); - sp.setTransform(Transform.scale(width / root.getWidth(), height / root.getHeight())); - newStage.close(); - - return root.snapshot(sp, null); - } - - @Override - public double getSuggestedWidth() - { - return getWidth() + 50; - } - - @Override - public double getSuggestedHeight() - { - return CHART_HEIGHT + categoryInOutSums.size() * (FULL_LEGEND_ITEM_HEIGHT + DELIMITER_HEIGHT) + 50; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/CategoryInOutSum.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/CategoryInOutSum.java deleted file mode 100644 index 2d921f896e0c51f7c262772847f4c0c3761b6c34..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/CategoryInOutSum.java +++ /dev/null @@ -1,98 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.charts; - -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import tools.Localization; - -public class CategoryInOutSum -{ - private int ID; - private String name; - private String color; - private int budgetIN; - private int budgetOUT; - - public CategoryInOutSum(int ID, String name, String color, int budgetIN, int budgetOUT) - { - this.ID = ID; - this.name = name; - this.color = color; - this.budgetIN = budgetIN; - this.budgetOUT = budgetOUT; - } - - public int getID() - { - return ID; - } - - public String getName() - { - if(ID == 1) - { - return Localization.getString(Strings.CATEGORY_NONE); - } - - if(ID == 2) - { - return Localization.getString(Strings.CATEGORY_REST); - } - - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public String getColor() - { - return color; - } - - public void setColor(String color) - { - this.color = color; - } - - public int getBudgetIN() - { - return budgetIN; - } - - public void setBudgetIN(int budgetIN) - { - this.budgetIN = budgetIN; - } - - public int getBudgetOUT() - { - return budgetOUT; - } - - public void setBudgetOUT(int budgetOUT) - { - this.budgetOUT = budgetOUT; - } - - @Override - public boolean equals(Object obj) - { - if(this == obj) - return true; - if(obj == null) - return false; - if(getClass() != obj.getClass()) - return false; - CategoryInOutSum other = (CategoryInOutSum)obj; - if(ID != other.ID) - return false; - return true; - } - - @Override - public String toString() - { - return "CategoryInOutSum [ID=" + ID + ", name=" + name + ", color=" + color + ", budgetIN=" + budgetIN + ", budgetOUT=" + budgetOUT + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/ChartExportable.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/ChartExportable.java deleted file mode 100644 index d5516e19c0d8e96c4c32e025251938c566a0e3c2..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/ChartExportable.java +++ /dev/null @@ -1,16 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.charts; - -import javafx.scene.image.WritableImage; - -public interface ChartExportable -{ - WritableImage export(int width, int height); - - double getWidth(); - - double getHeight(); - - double getSuggestedWidth(); - - double getSuggestedHeight(); -} diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/LegendType.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/LegendType.java deleted file mode 100644 index d9f8e6a41912883961dcfc25fc07a0739b236ff1..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/LegendType.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.charts; - -public enum LegendType -{ - NONE, NORMAL, FULL; -} diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java deleted file mode 100644 index d579605e536fff2528cb3e6bdf5a8dfa56cc7618..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java +++ /dev/null @@ -1,306 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.charts; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import javafx.geometry.Insets; -import javafx.geometry.Orientation; -import javafx.geometry.Pos; -import javafx.scene.Node; -import javafx.scene.Scene; -import javafx.scene.SnapshotParameters; -import javafx.scene.control.Label; -import javafx.scene.control.ScrollPane; -import javafx.scene.control.ScrollPane.ScrollBarPolicy; -import javafx.scene.control.Separator; -import javafx.scene.control.Tooltip; -import javafx.scene.image.WritableImage; -import javafx.scene.layout.GridPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.layout.Region; -import javafx.scene.layout.VBox; -import javafx.scene.paint.Color; -import javafx.scene.text.TextAlignment; -import javafx.scene.transform.Transform; -import javafx.stage.Modality; -import javafx.stage.Stage; -import tools.ConvertTo; -import tools.Localization; - -public class MonthBarChart extends VBox implements ChartExportable -{ - private ArrayList<MonthInOutSum> monthInOutSums; - private String currency; - - public MonthBarChart(ArrayList<MonthInOutSum> monthInOutSums, String currency) - { - if(monthInOutSums == null) - { - this.monthInOutSums = new ArrayList<>(); - } - else - { - this.monthInOutSums = monthInOutSums; - } - this.currency = currency; - - ScrollPane scrollPane = new ScrollPane(); - scrollPane.setVbarPolicy(ScrollBarPolicy.NEVER); - scrollPane.setFocusTraversable(false); - scrollPane.setStyle("-fx-background-color: transparent; -fx-background-insets: 0; -fx-border-color: transparent; -fx-border-width: 0; -fx-border-insets: 0;"); - scrollPane.setPadding(new Insets(0, 0, 10, 0)); - - HBox generatedChart = generate(); - scrollPane.setContent(generatedChart); - generatedChart.prefHeightProperty().bind(scrollPane.heightProperty().subtract(30)); - this.getChildren().add(scrollPane); - VBox.setVgrow(scrollPane, Priority.ALWAYS); - - this.getChildren().add(generateLegend()); - } - - private HBox generate() - { - HBox generatedChart = new HBox(); - generatedChart.setAlignment(Pos.TOP_CENTER); - generatedChart.setSpacing(25); - - double total = getMaximum(monthInOutSums); - - for(MonthInOutSum currentMonthSum : monthInOutSums) - { - VBox chartPart = new VBox(); - chartPart.setAlignment(Pos.TOP_CENTER); - - HBox hboxChart = new HBox(); - hboxChart.setAlignment(Pos.BOTTOM_CENTER); - hboxChart.setSpacing(10); - VBox chartIncome = generateChart(currentMonthSum.getSums(), total, true); - hboxChart.getChildren().add(chartIncome); - HBox.setHgrow(chartIncome, Priority.ALWAYS); - VBox chartPayment = generateChart(currentMonthSum.getSums(), total, false); - hboxChart.getChildren().add(chartPayment); - HBox.setHgrow(chartPayment, Priority.ALWAYS); - - chartPart.getChildren().add(hboxChart); - VBox.setVgrow(hboxChart, Priority.ALWAYS); - - Label labelTitle = new Label(currentMonthSum.getDate().toString("MMMM \nYY")); - labelTitle.setStyle("-fx-font-size: 12;"); - labelTitle.setTextAlignment(TextAlignment.CENTER); - chartPart.getChildren().add(labelTitle); - VBox.setMargin(labelTitle, new Insets(10, 0, 0, 0)); - - generatedChart.getChildren().add(chartPart); - generatedChart.getChildren().add(new Separator(Orientation.VERTICAL)); - } - - return generatedChart; - } - - private VBox generateChart(ArrayList<CategoryInOutSum> categoryInOutSums, double total, boolean useBudgetIN) - { - VBox result = new VBox(); - - Label labelAmount = new Label(Helpers.getCurrencyString(getTotal(categoryInOutSums, useBudgetIN), currency)); - labelAmount.setStyle("-fx-font-size: 12; -fx-font-weight: bold;"); - result.getChildren().add(labelAmount); - VBox.setMargin(labelAmount, new Insets(0, 0, 10, 0)); - - VBox chart = new VBox(); - chart.setAlignment(Pos.BOTTOM_CENTER); - - for(CategoryInOutSum currentItem : categoryInOutSums) - { - Label currentPart = new Label(); - currentPart.setStyle("-fx-background-color: " + currentItem.getColor()); - currentPart.prefWidthProperty().bind(chart.widthProperty()); - chart.getChildren().add(currentPart); - - double value; - if(useBudgetIN) - { - value = currentItem.getBudgetIN() / 100.0; - } - else - { - value = -currentItem.getBudgetOUT() / 100.0; - } - - double percentage = value / total; - - currentPart.setMinHeight(0); - currentPart.prefHeightProperty().bind(chart.heightProperty().multiply(percentage)); - - Tooltip tooltip = new Tooltip(); - tooltip.setText(Localization.getString(Strings.TOOLTIP_CHART_CATEGORIES, - currentItem.getName(), - Helpers.NUMBER_FORMAT.format(percentage * 100), - Helpers.getCurrencyString(value, currency))); - currentPart.setTooltip(tooltip); - } - - result.getChildren().add(chart); - VBox.setVgrow(chart, Priority.ALWAYS); - - return result; - } - - private GridPane generateLegend() - { - GridPane legend = new GridPane(); - legend.setPadding(new Insets(10)); - legend.setHgap(20); - legend.setVgap(10); - legend.setAlignment(Pos.CENTER); - legend.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_CHART_LEGEND) + "; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;"); - - if(monthInOutSums.size() == 0) - { - return legend; - } - - ArrayList<HBox> legendItems = new ArrayList<>(); - for(CategoryInOutSum currentItem : monthInOutSums.get(0).getSums()) - { - legendItems.add(getLegendItem(currentItem.getName(), Color.web(currentItem.getColor()))); - } - - int legendWidth; - int numberOfItems = legendItems.size(); - if(numberOfItems <= 3) - { - legendWidth = numberOfItems; - } - else - { - legendWidth = (int)Math.ceil(Math.sqrt(numberOfItems)); - } - - for(int i = 0; i < numberOfItems; i++) - { - int columnIndex = i % legendWidth; - int rowIndex = i / legendWidth; - legend.add(legendItems.get(i), columnIndex, rowIndex); - } - - return legend; - } - - private HBox getLegendItem(String name, Color color) - { - HBox legendItem = new HBox(); - Label labelCircle = new Label(); - labelCircle.setMinWidth(20); - labelCircle.setMinHeight(20); - labelCircle.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(color) + "; -fx-background-radius: 50%; -fx-border-width: 1; -fx-border-color: black - fx-border-radius: 50%"); - - Label labelText = new Label(name); - labelText.setStyle("-fx-font-weight: bold;"); - - legendItem.getChildren().add(labelCircle); - legendItem.getChildren().add(labelText); - HBox.setMargin(labelText, new Insets(0, 0, 0, 5)); - - return legendItem; - } - - private double getTotal(ArrayList<CategoryInOutSum> categoryInOutSums, boolean useBudgetIN) - { - double total = 0; - for(CategoryInOutSum currentItem : categoryInOutSums) - { - if(useBudgetIN) - { - total += currentItem.getBudgetIN() / 100.0; - } - else - { - total += -currentItem.getBudgetOUT() / 100.0; - } - } - return total; - } - - private double getMaximum(ArrayList<MonthInOutSum> monthInOutSums) - { - double maximum = 0; - for(MonthInOutSum currentItem : monthInOutSums) - { - if(currentItem.getBudgetIN() > maximum) - { - maximum = currentItem.getBudgetIN(); - } - - if(Math.abs(currentItem.getBudgetOUT()) > maximum) - { - maximum = Math.abs(currentItem.getBudgetOUT()); - } - } - return maximum / 100.0; - } - - @Override - public WritableImage export(int width, int height) - { - VBox root = new VBox(); - root.setStyle("-fx-background-color: transparent;"); - root.setPadding(new Insets(25)); - - HBox generatedChart = generate(); - root.getChildren().add(generatedChart); - VBox.setVgrow(generatedChart, Priority.ALWAYS); - - Region spacer = new Region(); - spacer.setMinHeight(30); - root.getChildren().add(spacer); - - root.getChildren().add(generateLegend()); - - Stage newStage = new Stage(); - newStage.initModality(Modality.NONE); - newStage.setScene(new Scene(root, width, height)); - newStage.setResizable(false); - newStage.show(); - - SnapshotParameters sp = new SnapshotParameters(); - sp.setTransform(Transform.scale(width / root.getWidth(), height / root.getHeight())); - newStage.close(); - - return root.snapshot(sp, null); - } - - @Override - public double getSuggestedWidth() - { - if(this.getChildren().size() < 2) - { - return 0; - } - - Node currentNode = this.getChildren().get(0); - - if(!(currentNode instanceof ScrollPane)) - { - return 0; - } - - ScrollPane scrollPane = (ScrollPane)currentNode; - Node content = scrollPane.getContent(); - if(content == null) - { - return 0; - } - - return ((Region)content).getWidth() + 50; - } - - @Override - public double getSuggestedHeight() - { - return getHeight() + 50; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/MonthInOutSum.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/MonthInOutSum.java deleted file mode 100644 index 9d008662dc016bf1a33851a624fed5e44ab5f270..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/MonthInOutSum.java +++ /dev/null @@ -1,67 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.charts; - -import java.util.ArrayList; - -import org.joda.time.DateTime; - -public class MonthInOutSum -{ - private int month; - private int year; - private ArrayList<CategoryInOutSum> sums; - - public MonthInOutSum(int month, int year, ArrayList<CategoryInOutSum> sums) - { - this.month = month; - this.year = year; - this.sums = sums; - } - - public int getMonth() - { - return month; - } - - public int getYear() - { - return year; - } - - public ArrayList<CategoryInOutSum> getSums() - { - return sums; - } - - public DateTime getDate() - { - return DateTime.now().withYear(year).withMonthOfYear(month).withDayOfMonth(1); - } - - public int getBudgetIN() - { - int budget = 0; - for(CategoryInOutSum currentCategorySum : sums) - { - budget += currentCategorySum.getBudgetIN(); - } - - return budget; - } - - public int getBudgetOUT() - { - int budget = 0; - for(CategoryInOutSum currentCategorySum : sums) - { - budget += currentCategorySum.getBudgetOUT(); - } - - return budget; - } - - @Override - public String toString() - { - return "MonthInOutSum [month=" + month + ", year=" + year + ", sums=" + sums + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java deleted file mode 100644 index 015d9da3c1f45951cbc50c2a17f6382b9885d1b8..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java +++ /dev/null @@ -1,187 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.charts; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.Set; - -import de.deadlocker8.budgetmaster.logic.utils.Colors; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import javafx.event.EventHandler; -import javafx.geometry.Insets; -import javafx.geometry.Point2D; -import javafx.scene.Node; -import javafx.scene.Scene; -import javafx.scene.SnapshotParameters; -import javafx.scene.chart.CategoryAxis; -import javafx.scene.chart.LineChart; -import javafx.scene.chart.NumberAxis; -import javafx.scene.chart.XYChart; -import javafx.scene.control.Label; -import javafx.scene.control.Tooltip; -import javafx.scene.image.WritableImage; -import javafx.scene.input.MouseEvent; -import javafx.scene.layout.VBox; -import javafx.scene.transform.Transform; -import javafx.stage.Modality; -import javafx.stage.Stage; -import tools.ConvertTo; -import tools.Localization; - -public class MonthLineChart extends VBox implements ChartExportable -{ - private ArrayList<MonthInOutSum> monthInOutSums; - private String currency; - - public MonthLineChart(ArrayList<MonthInOutSum> monthInOutSums, String currency) - { - this.monthInOutSums = monthInOutSums; - this.currency = currency; - - this.setSpacing(10); - this.getChildren().add(generate(true)); - } - - private LineChart<String, Number> generate(boolean animated) - { - final CategoryAxis xAxis = new CategoryAxis(); - final NumberAxis yAxis = new NumberAxis(); - final LineChart<String, Number> generatedChart = new LineChart<>(xAxis, yAxis); - generatedChart.setTitle(null); - generatedChart.setAnimated(animated); - - xAxis.setLabel(""); - yAxis.setLabel(Localization.getString(Strings.CHART_MONTH_LINE_SUM, currency)); - - XYChart.Series<String, Number> seriesIN = new XYChart.Series<String, Number>(); - seriesIN.setName(Localization.getString(Strings.TITLE_INCOMES)); - XYChart.Series<String, Number> seriesOUT = new XYChart.Series<String, Number>(); - seriesOUT.setName(Localization.getString(Strings.TITLE_PAYMENTS)); - - for(MonthInOutSum currentItem : monthInOutSums) - { - String label = currentItem.getDate().toString("MMMM YY"); - - seriesIN.getData().add(new XYChart.Data<String, Number>(label, currentItem.getBudgetIN() / 100.0)); - seriesOUT.getData().add(new XYChart.Data<String, Number>(label, -currentItem.getBudgetOUT() / 100.0)); - } - - generatedChart.getData().add(seriesIN); - generatedChart.getData().add(seriesOUT); - - generatedChart.setLegendVisible(true); - - // add tooltip to every segment - generatedChart.getData().stream().forEach(tool -> { - for(XYChart.Data<String, Number> data : tool.getData()) - { - Tooltip tooltip = new Tooltip(); - - tooltip.setText(Helpers.getCurrencyString(data.getYValue().doubleValue(), currency)); - Tooltip.install(tool.getNode(), tooltip); - Node node = data.getNode(); - node.setOnMouseEntered(new EventHandler<MouseEvent>() - { - @Override - public void handle(MouseEvent event) - { - Point2D p = node.localToScreen(event.getX() + 5, event.getY() + 7); - tooltip.show(node, p.getX(), p.getY()); - } - }); - node.setOnMouseExited(new EventHandler<MouseEvent>() - { - @Override - public void handle(MouseEvent event) - { - tooltip.hide(); - } - }); - } - }); - - // style line for incomes - for(Node n : generatedChart.lookupAll(".default-color0.chart-series-line")) - { - n.setStyle("-fx-stroke: " + ConvertTo.toRGBHexWithoutOpacity(Colors.INCOME) + ";"); - } - - // style line dots for incomes - for(Node n : generatedChart.lookupAll(".default-color0.chart-line-symbol")) - { - n.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.INCOME) + ", white;"); - } - - // style line for payments - for(Node n : generatedChart.lookupAll(".default-color1.chart-series-line")) - { - n.setStyle("-fx-stroke: " + ConvertTo.toRGBHexWithoutOpacity(Colors.PAYMENT) + ";"); - } - - // style line dots for payments - for(Node n : generatedChart.lookupAll(".default-color1.chart-line-symbol")) - { - n.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.PAYMENT) + ", white;"); - } - - // style legend item according to color - Set<Node> nodes = generatedChart.lookupAll(".chart-legend-item"); - if(nodes.size() > 0) - { - Iterator<Node> iterator = nodes.iterator(); - int counter = 0; - while(iterator.hasNext()) - { - Node node = iterator.next(); - if(node instanceof Label) - { - Label labelLegendItem = (Label)node; - if(counter == 0) - { - labelLegendItem.getGraphic().setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.INCOME) + ";"); - } - else - { - labelLegendItem.getGraphic().setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.PAYMENT) + ";"); - } - } - counter++; - } - } - - return generatedChart; - } - - @Override - public WritableImage export(int width, int height) { - VBox root = new VBox(); - root.setStyle("-fx-background-color: transparent;"); - root.setPadding(new Insets(25)); - - root.getChildren().add(generate(false)); - - Stage newStage = new Stage(); - newStage.initModality(Modality.NONE); - newStage.setScene(new Scene(root, width, height)); - newStage.setResizable(false); - newStage.show(); - - SnapshotParameters sp = new SnapshotParameters(); - sp.setTransform(Transform.scale(width / root.getWidth(), height / root.getHeight())); - newStage.close(); - - return root.snapshot(sp, null); - } - - @Override - public double getSuggestedWidth() - { - return getWidth() + 50; - } - - @Override - public double getSuggestedHeight() - { - return getHeight() + 50; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/comparators/DateComparator.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/comparators/DateComparator.java deleted file mode 100644 index 7ae06eda2bf3ff56ca0d847ac9abec97e2a520a9..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/comparators/DateComparator.java +++ /dev/null @@ -1,18 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.comparators; - -import java.util.Comparator; - -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormat; - -public class DateComparator implements Comparator<String> -{ - @Override - public int compare(String o1, String o2) - { - DateTime a = DateTime.parse(o1, DateTimeFormat.forPattern("dd.MM.YYYY")); - DateTime b = DateTime.parse(o2, DateTimeFormat.forPattern("dd.MM.YYYY")); - - return a.compareTo(b); - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/comparators/RatingComparator.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/comparators/RatingComparator.java deleted file mode 100644 index 76b69cc5a9623089571a3e2f892d4ca16b19ebb4..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/comparators/RatingComparator.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.comparators; - -import java.util.Comparator; - -public class RatingComparator implements Comparator<Integer> -{ - @Override - public int compare(Integer o1, Integer o2) - { - Integer a = o1 > 0 ? 1 : 0; - Integer b = o2 > 0 ? 1 : 0; - - return a.compareTo(b); - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/database/Database.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/database/Database.java deleted file mode 100644 index 67b7ca2aae86844d829f7667a71d7b85f99702b2..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/database/Database.java +++ /dev/null @@ -1,82 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.database; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmaster.logic.tag.TagMatch; -import de.deadlocker8.budgetmaster.logic.utils.SaveFileType; - -public class Database -{ - /* - * VERSIONS - * - * --> 1 - * initial - * - * --> 2 - * added tags and tag matches (additional tables) - */ - - @SuppressWarnings("unused") - private final String TYPE = SaveFileType.BUDGETMASTER_DATABASE.toString(); - private final int VERSION = 2; - private ArrayList<Category> categories; - private ArrayList<NormalPayment> normalPayments; - private ArrayList<RepeatingPayment> repeatingPayments; - private ArrayList<Tag> tags; - private ArrayList<TagMatch> tagMatches; - - public Database() - { - - } - - public Database(ArrayList<Category> categories, ArrayList<NormalPayment> normalPayments, ArrayList<RepeatingPayment> repeatingPayments, ArrayList<Tag> tags, ArrayList<TagMatch> tagMatches) - { - this.categories = categories; - this.normalPayments = normalPayments; - this.repeatingPayments = repeatingPayments; - this.tags = tags; - this.tagMatches = tagMatches; - } - - public ArrayList<Category> getCategories() - { - return categories; - } - - public ArrayList<NormalPayment> getNormalPayments() - { - return normalPayments; - } - - public ArrayList<RepeatingPayment> getRepeatingPayments() - { - return repeatingPayments; - } - - public int getVERSION() - { - return VERSION; - } - - public ArrayList<Tag> getTags() - { - return tags; - } - - public ArrayList<TagMatch> getTagMatches() - { - return tagMatches; - } - - @Override - public String toString() - { - return "Database [VERSION=" + VERSION + ", categories=" + categories + ", normalPayments=" + normalPayments + ", repeatingPayments=" + repeatingPayments + ", tags=" + tags + ", tagMatches=" + tagMatches + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/database/DatabaseImportExport.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/database/DatabaseImportExport.java deleted file mode 100644 index 9fb4dae18f94e49901b45b2f437d1ac8b506756e..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/database/DatabaseImportExport.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.database; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Used to mark model classes that only exists in order to allow gson to import and export the database - * - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.SOURCE) -public @interface DatabaseImportExport {} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/database/OldDatabase.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/database/OldDatabase.java deleted file mode 100644 index 51b0448a043cd8767d5625239d059dde97ca07d6..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/database/OldDatabase.java +++ /dev/null @@ -1,45 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.database; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; - -/** - * this class is only used for backwards compatibility while importing database jsons files - */ -@Deprecated -public class OldDatabase -{ - private ArrayList<Category> categories; - private ArrayList<NormalPayment> normalPayments; - private ArrayList<RepeatingPayment> repeatingPayments; - - public OldDatabase() - { - - } - - public OldDatabase(ArrayList<Category> categories, ArrayList<NormalPayment> normalPayments, ArrayList<RepeatingPayment> repeatingPayments) - { - this.categories = categories; - this.normalPayments = normalPayments; - this.repeatingPayments = repeatingPayments; - } - - public ArrayList<Category> getCategories() - { - return categories; - } - - public ArrayList<NormalPayment> getNormalPayments() - { - return normalPayments; - } - - public ArrayList<RepeatingPayment> getRepeatingPayments() - { - return repeatingPayments; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerException.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerException.java deleted file mode 100644 index 13c3778cb70c92e56936aa3a834a75ea0920b0a7..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerException.java +++ /dev/null @@ -1,11 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.localserver; - -public class LocalServerException extends Exception -{ - private static final long serialVersionUID = 3925464782915168752L; - - public LocalServerException(String message) - { - super(message); - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerHandler.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerHandler.java deleted file mode 100644 index 1a820f387bb706a6434fed41318b253ac17ae563..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerHandler.java +++ /dev/null @@ -1,144 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.localserver; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintWriter; -import java.net.URL; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.Settings; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import logger.Logger; -import tools.HashUtils; -import tools.Localization; -import tools.PathUtils; - -public class LocalServerHandler -{ - private static final String BUILD_FOLDER = "https://github.com/deadlocker8/BudgetMaster/raw/{}/build/"; - - public LocalServerHandler() - { - - } - - public boolean isServerPresent() - { - File file = new File(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/localServer/BudgetMasterServer.jar"); - return file.exists(); - } - - public boolean isServerRunning() - { - try - { - Settings settings = new Settings(); - settings.setUrl("https://localhost:9000"); - settings.setSecret(HashUtils.hash("BudgetMaster", Helpers.SALT)); - ArrayList<String> trustedHosts = new ArrayList<>(); - trustedHosts.add("localhost"); - settings.setTrustedHosts(trustedHosts); - ServerConnection connection = new ServerConnection(settings); - connection.getServerInfo(); - - return true; - } - catch(Exception e) - { - Logger.debug(e); - return false; - } - } - - public void shutdownServer() throws Exception - { - Settings settings = new Settings(); - settings.setUrl("https://localhost:9000"); - settings.setSecret(HashUtils.hash("BudgetMaster", Helpers.SALT)); - ArrayList<String> trustedHosts = new ArrayList<>(); - trustedHosts.add("localhost"); - settings.setTrustedHosts(trustedHosts); - ServerConnection connection = new ServerConnection(settings); - connection.shutdownServer(); - } - - public void createServerSettingsIfNotExists() throws FileNotFoundException - { - File settingsFile = new File(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/localServer/settings.json"); - if(settingsFile.exists()) - { - return; - } - Logger.debug("Creating settings file for local server..."); - - String databasePath = PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/localServer/BudgetMaster.db"; - String settings = "{\"databaseType\": \"sqlite\"," + - "\"databaseUrl\": \"" + databasePath.replace("\\", "/") + "\"," + - "\"databaseName\": \"budgetmaster\"," + - "\"databaseUsername\": \"root\"," + - "\"databasePassword\": \"\"," + - "\"serverPort\": 9000," + - "\"serverSecret\": \"BudgetMaster\"," + - "\"keystorePath\": \"default\"," + - "\"keystorePassword\": \"BudgetMaster\"}"; - PrintWriter writer = new PrintWriter(settingsFile); - writer.println(settings); - writer.close(); - } - - public void downloadServer(String versionName) throws Exception - { - Logger.debug("Downloading BudgetMasterServer from " + BUILD_FOLDER.replace("{}", "v" + versionName)); - PathUtils.checkFolder(new File(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/localServer")); - - //download into temp directory and file - Path target = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/localServer/BudgetMasterServer.jar"); - download(BUILD_FOLDER.replace("{}", "v" + Localization.getString(Strings.VERSION_NAME)) + "BudgetMasterServer.jar", target); - Logger.debug("Successfully downloaded BudgetMasterServer " + versionName); - } - - private void download(String url, Path target) throws IOException - { - URL website = new URL(url); - InputStream in = website.openStream(); - Files.copy(in, target, StandardCopyOption.REPLACE_EXISTING); - } - - public Process startServer() throws IOException - { - ProcessBuilder pb = new ProcessBuilder("java", "-jar", Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/localServer/BudgetMasterServer.jar").toString()); - return pb.start(); - } - - public LocalServerStatus getServerStatus() - { - LocalServerHandler serverHandler = new LocalServerHandler(); - if(serverHandler.isServerPresent()) - { - Logger.debug("Local server found"); - if(serverHandler.isServerRunning()) - { - Logger.debug("Local server is running"); - return LocalServerStatus.ACTIVE; - } - else - { - Logger.debug("Local server is NOT running"); - return LocalServerStatus.INACTIVE; - } - } - else - { - Logger.debug("Local server NOT found"); - return LocalServerStatus.MISSING; - } - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerStatus.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerStatus.java deleted file mode 100644 index 7f36dcd26e0a4cb093f2783293089044c82dd86f..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerStatus.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.localserver; - -public enum LocalServerStatus -{ - ACTIVE, INACTIVE, MISSING; -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/LatestRepeatingPayment.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/LatestRepeatingPayment.java deleted file mode 100644 index ada7d739c10d23a9c10763097fab8082aec39f4c..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/LatestRepeatingPayment.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.payment; - -public class LatestRepeatingPayment -{ - private int ID; - private int repeatingPaymentID; - private String lastDate; - - public LatestRepeatingPayment(int ID, int repeatingPaymentID, String lastDate) - { - this.ID = ID; - this.repeatingPaymentID = repeatingPaymentID; - this.lastDate = lastDate; - } - - public int getID() - { - return ID; - } - - public int getRepeatingPaymentID() - { - return repeatingPaymentID; - } - - public String getLastDate() - { - return lastDate; - } - - @Override - public String toString() - { - return "LatestRepeatingPayment [ID=" + ID + ", repeatingPaymentID=" + repeatingPaymentID + ", lastDate=" + lastDate + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/NormalPayment.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/NormalPayment.java deleted file mode 100644 index 2b168c2f7f8a6a3db9f86d54286eb72d9e216cfe..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/NormalPayment.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.payment; - -public class NormalPayment extends Payment -{ - public NormalPayment(int ID, int amount, String date, int categoryID, String name, String description) - { - super(ID, amount, date, categoryID, name, description); - } - - public NormalPayment() - { - super(); - } - - @Override - public String toString() - { - return "NormalPayment [ID=" + super.getID() + ", amount=" + super.getAmount() + ", date=" + super.getDate() + ", categoryID=" + super.getCategoryID() + ", name=" + super.getName() + ", description=" + super.getDescription() + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/Payment.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/Payment.java deleted file mode 100644 index 4e6525e3f4d3ae77cea0c361c476be28ef679a21..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/Payment.java +++ /dev/null @@ -1,91 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.payment; - -public abstract class Payment -{ - private int ID; - private int amount; - private String date; - private int categoryID; - private String name; - private String description; - - public Payment(int ID, int amount, String date, int categoryID, String name, String description) - { - this.ID = ID; - this.amount = amount; - this.date = date; - this.categoryID = categoryID; - this.name = name; - this.description = description; - } - - public Payment() - { - - } - - public int getID() - { - return ID; - } - - public void setID(int iD) - { - ID = iD; - } - - public int getAmount() - { - return amount; - } - - public void setAmount(int amount) - { - this.amount = amount; - } - - public String getDate() - { - return date; - } - - public void setDate(String date) - { - this.date = date; - } - - public int getCategoryID() - { - return categoryID; - } - - public void setCategoryID(int categoryID) - { - this.categoryID = categoryID; - } - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public String getDescription() - { - return description; - } - - public void setDescription(String description) - { - this.description = description; - } - - public boolean isIncome() - { - return amount > 0; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/PaymentHandler.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/PaymentHandler.java deleted file mode 100644 index a4732006121adbb03432f11cd7c0ae1d64d25595..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/PaymentHandler.java +++ /dev/null @@ -1,202 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.payment; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.stream.Collectors; - -import de.deadlocker8.budgetmaster.logic.FilterSettings; -import de.deadlocker8.budgetmaster.logic.tag.TagHandler; - -public class PaymentHandler -{ - private ArrayList<Payment> payments; - - public PaymentHandler() - { - payments = new ArrayList<>(); - } - - public ArrayList<Payment> getPayments() - { - return payments; - } - - public void setPayments(ArrayList<Payment> payments) - { - this.payments = payments; - } - - public int getPosition(Payment payment) - { - if(payment == null) - return -1; - - for(int i = 0; i < payments.size(); i++) - { - if(payment.getID() == payments.get(i).getID()) - { - return i; - } - } - - return -1; - } - - public void sort() - { - Collections.sort(payments, new Comparator<Payment>() { - @Override - public int compare(Payment payment1, Payment payment2) - { - return payment2.getDate().compareTo(payment1.getDate()); - } - }); - } - - private ArrayList<Payment> filterByRepeating(FilterSettings filterSettings, ArrayList<Payment> paymentsList) - { - if(filterSettings.isNoRepeatingAllowed() && filterSettings.isMonthlyRepeatingAllowed() && filterSettings.isRepeatingEveryXDaysAllowed()) - { - return paymentsList; - } - - ArrayList<Payment> filteredPayments = new ArrayList<>(); - for(Payment currentPayment : paymentsList) - { - //NormalPayment or rest - if(currentPayment instanceof NormalPayment || currentPayment.getID() == -1) - { - if(filterSettings.isNoRepeatingAllowed()) - { - filteredPayments.add(currentPayment); - } - } - //RepeatingPayment - else - { - RepeatingPaymentEntry repeatingPayment = (RepeatingPaymentEntry)currentPayment; - if((repeatingPayment.getRepeatInterval() != 0 && filterSettings.isRepeatingEveryXDaysAllowed()) || - (repeatingPayment.getRepeatMonthDay() != 0 && filterSettings.isMonthlyRepeatingAllowed())) - { - filteredPayments.add(currentPayment); - } - } - } - - return filteredPayments; - } - - private ArrayList<Payment> filterByCategory(FilterSettings filterSettings, ArrayList<Payment> paymentsList) - { - if(filterSettings.getAllowedCategoryIDs() == null) - { - return paymentsList; - } - - if(filterSettings.getAllowedCategoryIDs().size() == 0) - { - return new ArrayList<>(); - } - - ArrayList<Payment> filteredPayments = new ArrayList<>(); - for(Payment currentPayment : paymentsList) - { - if(filterSettings.getAllowedCategoryIDs().contains(currentPayment.getCategoryID())) - { - filteredPayments.add(currentPayment); - } - } - - return filteredPayments; - } - - private ArrayList<Payment> filterByName(FilterSettings filterSettings, ArrayList<Payment> paymentsList) - { - if(filterSettings.getName() == null) - { - return paymentsList; - } - - ArrayList<Payment> filteredPayments = new ArrayList<>(); - for(Payment currentPayment : paymentsList) - { - if(currentPayment.getName().toLowerCase().contains(filterSettings.getName().toLowerCase())) - { - filteredPayments.add(currentPayment); - } - } - - return filteredPayments; - } - - private ArrayList<Payment> filterByType(FilterSettings filterSettings, ArrayList<Payment> paymentsList) - { - if(filterSettings.isIncomeAllowed() && filterSettings.isPaymentAllowed()) - { - return paymentsList; - } - - if(filterSettings.isIncomeAllowed()) - { - return new ArrayList<Payment>(paymentsList.stream(). - filter(p -> p.getAmount() > 0). - collect(Collectors.toList())); - } - else if(filterSettings.isPaymentAllowed()) - { - return new ArrayList<Payment>(paymentsList.stream(). - filter(p -> p.getAmount() < 0). - collect(Collectors.toList())); - } - - return new ArrayList<>(); - } - - private ArrayList<Payment> filterByTag(FilterSettings filterSettings, ArrayList<Payment> paymentsList, TagHandler tagHandler) throws Exception - { - if(filterSettings.getAllowedTagIDs() == null) - { - return paymentsList; - } - - if(filterSettings.getAllowedTagIDs().size() == 0) - { - return new ArrayList<>(); - } - - ArrayList<Payment> filteredPayments = new ArrayList<>(); - for(Payment currentPayment : paymentsList) - { - ArrayList<Integer> paymentTagIDs = tagHandler.getTagIDs(currentPayment); - - for(Integer tagID : filterSettings.getAllowedTagIDs()) - { - if(paymentTagIDs.contains(tagID)) - { - filteredPayments.add(currentPayment); - break; - } - } - } - - return filteredPayments; - } - - public void filter(FilterSettings filterSettings, TagHandler tagHandler) throws Exception - { - ArrayList<Payment> filteredPayments = filterByType(filterSettings, payments); - filteredPayments = filterByType(filterSettings, filteredPayments); - filteredPayments = filterByRepeating(filterSettings, filteredPayments); - filteredPayments = filterByCategory(filterSettings, filteredPayments); - filteredPayments = filterByName(filterSettings, filteredPayments); - filteredPayments = filterByTag(filterSettings, filteredPayments, tagHandler); - - payments = filteredPayments; - } - - public String toString() - { - return "PaymentHandler [payments=" + payments + "]"; - } -} diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/PaymentJSONDeserializer.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/PaymentJSONDeserializer.java deleted file mode 100644 index 84bb9fd2143399ab9fb5cf83c7fc093558bbc36c..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/PaymentJSONDeserializer.java +++ /dev/null @@ -1,59 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.payment; - -import java.util.ArrayList; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonNull; -import com.google.gson.JsonObject; - -public class PaymentJSONDeserializer -{ - public static Payment deserializePayment(JsonObject paymentObject) - { - if(paymentObject.get("classType").getAsString().equals("NormalPayment")) - { - Payment payment = new NormalPayment(); - payment.setID(paymentObject.get("ID").getAsInt()); - payment.setAmount(paymentObject.get("amount").getAsInt()); - payment.setDate(paymentObject.get("date").getAsString()); - payment.setCategoryID(paymentObject.get("categoryID").getAsInt()); - payment.setName(paymentObject.get("name").getAsString()); - payment.setDescription(paymentObject.get("description").getAsString()); - return payment; - } - - if(paymentObject.get("classType").getAsString().equals("RepeatingPayment")) - { - RepeatingPayment payment = new RepeatingPayment(); - payment.setID(paymentObject.get("ID").getAsInt()); - payment.setAmount(paymentObject.get("amount").getAsInt()); - payment.setDate(paymentObject.get("date").getAsString()); - payment.setCategoryID(paymentObject.get("categoryID").getAsInt()); - payment.setName(paymentObject.get("name").getAsString()); - payment.setDescription(paymentObject.get("description").getAsString()); - - payment.setRepeatInterval(paymentObject.get("repeatInterval").getAsInt()); - payment.setRepeatMonthDay(paymentObject.get("repeatMonthDay").getAsInt()); - - JsonElement repeatEndDate = paymentObject.get("repeatEndDate"); - payment.setRepeatEndDate(repeatEndDate != JsonNull.INSTANCE ? repeatEndDate.getAsString() : null); - - return payment; - } - - return null; - } - - public static ArrayList<Payment> deserializePaymentList(JsonArray paymentArray) - { - ArrayList<Payment> payments = new ArrayList<>(); - - for(JsonElement currentElement : paymentArray) - { - payments.add(deserializePayment(currentElement.getAsJsonObject())); - } - - return payments; - } -} diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/PaymentJSONSerializer.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/PaymentJSONSerializer.java deleted file mode 100644 index 0727bebe753c19ee0ea60394a41676e69ece999a..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/PaymentJSONSerializer.java +++ /dev/null @@ -1,53 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.payment; - -import java.util.List; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; - -public class PaymentJSONSerializer -{ - public static JsonObject serializePayment(Payment payment) - { - JsonObject paymentObject = new JsonObject(); - paymentObject.addProperty("ID", payment.getID()); - paymentObject.addProperty("amount", payment.getAmount()); - paymentObject.addProperty("date", payment.getDate()); - paymentObject.addProperty("categoryID", payment.getCategoryID()); - paymentObject.addProperty("name", payment.getName()); - paymentObject.addProperty("description", payment.getDescription()); - - if(payment instanceof NormalPayment) - { - paymentObject.addProperty("classType", "NormalPayment"); - } - - if(payment instanceof RepeatingPayment) - { - RepeatingPayment repeatingPayment = (RepeatingPayment)payment; - - paymentObject.addProperty("repeatInterval", repeatingPayment.getRepeatInterval()); - paymentObject.addProperty("repeatMonthDay", repeatingPayment.getRepeatMonthDay()); - paymentObject.addProperty("repeatEndDate", repeatingPayment.getRepeatEndDate()); - - paymentObject.addProperty("classType", "RepeatingPayment"); - } - - return paymentObject; - } - - public static JsonObject serializePaymentList(List<Payment> payments) - { - JsonArray paymentArray = new JsonArray(); - - for(Payment currentPayment : payments) - { - paymentArray.add(serializePayment(currentPayment)); - } - - JsonObject result = new JsonObject(); - result.add("payments", paymentArray); - - return result; - } -} diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/RepeatingPayment.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/RepeatingPayment.java deleted file mode 100644 index 6e2e0d8d1b64fde5b52d45edd8d2c183f16fe5df..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/RepeatingPayment.java +++ /dev/null @@ -1,71 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.payment; - -public class RepeatingPayment extends Payment -{ - private int repeatInterval; - private String repeatEndDate; - private int repeatMonthDay; - - public RepeatingPayment(int ID, int amount, String date, int categoryID, String name, String description, int repeatInterval, String repeatEndDate, int repeatMonthDay) - { - super(ID, amount, date, categoryID, name, description); - this.repeatInterval = repeatInterval; - this.repeatEndDate = repeatEndDate; - this.repeatMonthDay = repeatMonthDay; - } - - public RepeatingPayment() - { - - } - - public int getRepeatInterval() - { - return repeatInterval; - } - - public void setRepeatInterval(int repeatInterval) - { - this.repeatInterval = repeatInterval; - } - - public String getRepeatEndDate() - { - return repeatEndDate; - } - - public void setRepeatEndDate(String repeatEndDate) - { - this.repeatEndDate = repeatEndDate; - } - - public int getRepeatMonthDay() - { - return repeatMonthDay; - } - - public void setRepeatMonthDay(int repeatMonthDay) - { - this.repeatMonthDay = repeatMonthDay; - } - - @Override - public String toString() - { - return "RepeatingPayment [ID=" + super.getID() + ", amount=" + super.getAmount() + ", date=" + super.getDate() + ", categoryID=" + super.getCategoryID() + ", name=" + super.getName() + ", description=" + super.getDescription() + ", repeatInterval=" + repeatInterval + ", repeatEndDate=" + repeatEndDate + ", repeatMonthDay=" + repeatMonthDay + "]"; - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof LatestRepeatingPayment) - { - return super.getID() == ((LatestRepeatingPayment)obj).getRepeatingPaymentID(); - } - else if(obj instanceof RepeatingPayment) - { - return super.getID() == ((RepeatingPayment)obj).getID(); - } - return super.equals(obj); - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/RepeatingPaymentEntry.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/RepeatingPaymentEntry.java deleted file mode 100644 index 9b97a7a91908920bc8deedfd1f834196258eaa41..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/payment/RepeatingPaymentEntry.java +++ /dev/null @@ -1,45 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.payment; - -public class RepeatingPaymentEntry extends Payment -{ - private int repeatingPaymentID; - private int repeatInterval; - private String repeatEndDate; - private int repeatMonthDay; - - public RepeatingPaymentEntry(int ID, int repeatingPaymentID, String date, int amount, int categoryID, String name, String description, int repeatInterval, String repeatEndDate, int repeatMonthDay) - { - super(ID, amount, date, categoryID, name, description); - this.repeatingPaymentID = repeatingPaymentID; - this.repeatInterval = repeatInterval; - this.repeatEndDate = repeatEndDate; - this.repeatMonthDay = repeatMonthDay; - } - - public int getRepeatingPaymentID() - { - return repeatingPaymentID; - } - - public int getRepeatInterval() - { - return repeatInterval; - } - - public String getRepeatEndDate() - { - return repeatEndDate; - } - - public int getRepeatMonthDay() - { - return repeatMonthDay; - } - - @Override - public String toString() - { - return "RepeatingPaymentEntry [ID=" + super.getID() + ", repeatingPaymentID=" + repeatingPaymentID + ", date=" + super.getDate() + ", amount=" + super.getAmount() + ", categoryID=" + super.getCategoryID() + ", name=" + super.getName() + ", description=" + super.getDescription() + ", repeatInterval=" + repeatInterval + ", repeatEndDate=" + repeatEndDate + ", repeatMonthDay=" - + repeatMonthDay + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/AmountType.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/AmountType.java deleted file mode 100644 index a114ffd7c1c5aaf362a0499818a285b4266075bc..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/AmountType.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.report; - -public enum AmountType -{ - INCOME, PAYMENT, BOTH -} diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ColumnFilter.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ColumnFilter.java deleted file mode 100644 index cf722850917b0d79e28735d4763cf26981940fff..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ColumnFilter.java +++ /dev/null @@ -1,45 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.report; - -import java.util.HashSet; - -public class ColumnFilter -{ - private HashSet<ColumnType> columns; - - public ColumnFilter() - { - columns = new HashSet<ColumnType>(); - } - - public void addColumn(ColumnType column) - { - columns.add(column); - } - - public void removeColumn(ColumnType column) - { - columns.remove(column); - } - - public void toggleColumn(ColumnType column, boolean add) - { - if(add) - { - columns.add(column); - } - else - { - columns.remove(column); - } - } - - public HashSet<ColumnType> getColumns() - { - return columns; - } - - public boolean containsColumn(ColumnType column) - { - return columns.contains(column); - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ColumnOrder.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ColumnOrder.java deleted file mode 100644 index b049de10d75a6207b0988943d6d4a1347e994940..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ColumnOrder.java +++ /dev/null @@ -1,29 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.report; - -import java.util.ArrayList; - -public class ColumnOrder -{ - private ArrayList<ColumnType> columns; - - public ColumnOrder() - { - columns = new ArrayList<ColumnType>(); - } - - public ArrayList<ColumnType> getColumns() - { - return columns; - } - - public void addColumn(ColumnType column) - { - columns.add(column); - } - - @Override - public String toString() - { - return "ColumnOrder [columns=" + columns + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ColumnType.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ColumnType.java deleted file mode 100644 index 5401e1ffbd82e4c39ba02803e3f3944c7646ae3f..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ColumnType.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.report; - -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import tools.Localization; - -public enum ColumnType -{ - POSITION(Strings.REPORT_POSITION, 1), - DATE(Strings.REPORT_DATE, 2), - REPEATING(Strings.REPORT_REPEATING, 1), - CATEGORY(Strings.REPORT_CATEGORY, 3), - NAME(Strings.REPORT_NAME, 3), - DESCRIPTION(Strings.REPORT_DESCRIPTION, 3), - TAGS(Strings.REPORT_TAGS, 3), - RATING(Strings.REPORT_RATING, 1), - AMOUNT(Strings.REPORT_AMOUNT, 2); - - private String name; - private float proportion; - - private ColumnType(String name, float proportion) - { - this.name = name; - this.proportion = proportion; - } - - public String getName() - { - return Localization.getString(name); - } - - public float getProportion() - { - return proportion; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/HeaderFooterPageEvent.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/HeaderFooterPageEvent.java deleted file mode 100644 index 6ed310d207ddbdc2293fa9a6e87cf49386e63119..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/HeaderFooterPageEvent.java +++ /dev/null @@ -1,35 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.report; - -import org.joda.time.DateTime; - -import com.itextpdf.text.BaseColor; -import com.itextpdf.text.Document; -import com.itextpdf.text.Element; -import com.itextpdf.text.Font; -import com.itextpdf.text.FontFactory; -import com.itextpdf.text.Phrase; -import com.itextpdf.text.pdf.BaseFont; -import com.itextpdf.text.pdf.ColumnText; -import com.itextpdf.text.pdf.PdfPageEventHelper; -import com.itextpdf.text.pdf.PdfWriter; - -import de.deadlocker8.budgetmaster.logic.utils.Fonts; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import tools.Localization; - -public class HeaderFooterPageEvent extends PdfPageEventHelper -{ - public void onStartPage(PdfWriter writer, Document document) - { - - } - - public void onEndPage(PdfWriter writer, Document document) - { - Font font = FontFactory.getFont(Fonts.OPEN_SANS, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 8, Font.NORMAL, BaseColor.BLACK); - - ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase(Localization.getString(Strings.REPORT_FOOTER_LEFT), font), 100, 25, 0); - ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase(Localization.getString(Strings.REPORT_FOOTER_CENTER, document.getPageNumber()), font), 300, 25, 0); - ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase(DateTime.now().toString("dd.MM.YYYY"), font), 500, 25, 0); - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java deleted file mode 100644 index 73166530c9db3bce34c556496334264efbbe85d2..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java +++ /dev/null @@ -1,297 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.report; - -import java.awt.Color; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.util.ArrayList; - -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormat; - -import com.itextpdf.text.BaseColor; -import com.itextpdf.text.Chapter; -import com.itextpdf.text.Chunk; -import com.itextpdf.text.Document; -import com.itextpdf.text.DocumentException; -import com.itextpdf.text.Element; -import com.itextpdf.text.Font; -import com.itextpdf.text.FontFactory; -import com.itextpdf.text.Paragraph; -import com.itextpdf.text.Phrase; -import com.itextpdf.text.pdf.BaseFont; -import com.itextpdf.text.pdf.GrayColor; -import com.itextpdf.text.pdf.PdfPCell; -import com.itextpdf.text.pdf.PdfPTable; -import com.itextpdf.text.pdf.PdfWriter; - -import de.deadlocker8.budgetmaster.logic.Budget; -import de.deadlocker8.budgetmaster.logic.category.CategoryBudget; -import de.deadlocker8.budgetmaster.logic.utils.Fonts; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import tools.Localization; - -public class ReportGenerator -{ - private ArrayList<ReportItem> reportItems; - private ArrayList<CategoryBudget> categoryBudgets; - private ReportPreferences reportPreferences; - private File savePath; - private String currency; - private DateTime date; - private Budget budget; - private final String FONT = Fonts.OPEN_SANS; - - public ReportGenerator(ArrayList<ReportItem> reportItems, ArrayList<CategoryBudget> categoryBudgets, ReportPreferences reportPreferences, File savePath, String currency, DateTime date, Budget budget) - { - this.reportItems = reportItems; - this.categoryBudgets = categoryBudgets; - this.reportPreferences = reportPreferences; - this.savePath = savePath; - this.currency = currency; - this.date = date; - this.budget = budget; - } - - private Chapter generateHeader() - { - Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 16, Font.BOLDITALIC, BaseColor.BLACK); - Chunk chunk = new Chunk(Localization.getString(Strings.REPORT_HEADLINE, date.toString("MMMM yyyy")), font); - Chapter chapter = new Chapter(new Paragraph(chunk), 1); - chapter.setNumberDepth(0); - chapter.add(Chunk.NEWLINE); - return chapter; - } - - private PdfPTable generateTable(int tableWidth, AmountType amountType) - { - int numberOfColumns = reportPreferences.getColumnOrder().getColumns().size(); - int totalIncome = 0; - int totalPayment = 0; - - if(numberOfColumns > 0) - { - float[] proportions = new float[numberOfColumns]; - for(int i = 0; i < reportPreferences.getColumnOrder().getColumns().size(); i++) - { - proportions[i] = reportPreferences.getColumnOrder().getColumns().get(i).getProportion(); - } - - PdfPTable table = new PdfPTable(proportions); - table.setWidthPercentage(tableWidth); - Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 8, Font.NORMAL, GrayColor.BLACK); - - for(ColumnType column : reportPreferences.getColumnOrder().getColumns()) - { - PdfPCell cell = new PdfPCell(new Phrase(column.getName(), font)); - cell.setBackgroundColor(GrayColor.LIGHT_GRAY); - cell.setHorizontalAlignment(Element.ALIGN_CENTER); - cell.setVerticalAlignment(Element.ALIGN_MIDDLE); - table.addCell(cell); - } - - for(ReportItem currentItem : reportItems) - { - if(currentItem.getAmount() > 0) - { - totalIncome += currentItem.getAmount(); - if(amountType == AmountType.PAYMENT) - { - continue; - } - } - else - { - totalPayment += currentItem.getAmount(); - if(amountType == AmountType.INCOME) - { - continue; - } - } - - for(ColumnType column : reportPreferences.getColumnOrder().getColumns()) - { - PdfPCell cell = new PdfPCell(new Phrase(getProperty(currentItem, column), font)); - cell.setBackgroundColor(new BaseColor(Color.WHITE)); - cell.setHorizontalAlignment(Element.ALIGN_CENTER); - cell.setVerticalAlignment(Element.ALIGN_MIDDLE); - table.addCell(cell); - } - } - - PdfPCell cellTotal; - String total = ""; - switch(amountType) - { - case BOTH: - String totalIncomeString = Helpers.getCurrencyString(totalIncome, currency); - String totalPaymentString = Helpers.getCurrencyString(totalPayment, currency); - total = Localization.getString(Strings.REPORT_SUM_TOTAL, totalIncomeString, totalPaymentString); - break; - case INCOME: - total = Localization.getString(Strings.REPORT_SUM, Helpers.getCurrencyString(totalIncome, currency)); - break; - case PAYMENT: - total = Localization.getString(Strings.REPORT_SUM, Helpers.getCurrencyString(totalPayment, currency)); - break; - default: - break; - } - - cellTotal = new PdfPCell(new Phrase(total, font)); - cellTotal.setBackgroundColor(new BaseColor(Color.WHITE)); - cellTotal.setColspan(numberOfColumns); - cellTotal.setHorizontalAlignment(Element.ALIGN_RIGHT); - cellTotal.setVerticalAlignment(Element.ALIGN_MIDDLE); - table.addCell(cellTotal); - - return table; - } - return null; - } - - public void generate() throws FileNotFoundException, DocumentException - { - Document document = new Document(); - PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(savePath)); - writer.setPageEvent(new HeaderFooterPageEvent()); - document.open(); - document.setMargins(50, 45, 50, 70); - Font headerFont = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 14, Font.BOLD, BaseColor.BLACK); - Font smallHeaderFont = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12, Font.BOLD, BaseColor.BLACK); - - document.add(generateHeader()); - document.add(Chunk.NEWLINE); - - if(reportPreferences.isIncludeBudget()) - { - Font fontGreen = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12, Font.NORMAL, new BaseColor(36, 122, 45)); - Font fontRed = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12, Font.NORMAL, BaseColor.RED); - Font fontBlack = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12, Font.BOLD, BaseColor.BLACK); - - document.add(new Paragraph(Localization.getString(Strings.REPORT_BUDGET), headerFont)); - document.add(Chunk.NEWLINE); - document.add(new Paragraph(Localization.getString(Strings.REPORT_INCOMES) + Helpers.getCurrencyString(budget.getIncomeSum(), currency), fontGreen)); - document.add(new Paragraph(Localization.getString(Strings.REPORT_PAYMENTS) + Helpers.getCurrencyString(budget.getPaymentSum(), currency), fontRed)); - document.add(new Paragraph(Localization.getString(Strings.REPORT_BUDGET_REST) + Helpers.getCurrencyString(budget.getIncomeSum() + budget.getPaymentSum(), currency), fontBlack)); - document.add(Chunk.NEWLINE); - } - - document.add(new Paragraph(Localization.getString(Strings.REPORT_HEADLINE_PAYMENTS_OVERVIEW), headerFont)); - document.add(Chunk.NEWLINE); - - if(reportPreferences.isSplitTable()) - { - document.add(new Paragraph(Localization.getString(Strings.TITLE_INCOMES), smallHeaderFont)); - document.add(Chunk.NEWLINE); - - PdfPTable table = generateTable(100, AmountType.INCOME); - if(table != null) - { - document.add(table); - } - - document.add(Chunk.NEWLINE); - document.add(new Paragraph(Localization.getString(Strings.TITLE_PAYMENTS), smallHeaderFont)); - document.add(Chunk.NEWLINE); - - table = generateTable(100, AmountType.PAYMENT); - if(table != null) - { - document.add(table); - } - } - else - { - PdfPTable table = generateTable(100, AmountType.BOTH); - if(table != null) - { - document.add(table); - } - } - - if(reportPreferences.isIncludeCategoryBudgets()) - { - document.add(Chunk.NEWLINE); - document.add(new Paragraph(Localization.getString(Strings.TITLE_CATEGORY_BUDGETS), smallHeaderFont)); - document.add(Chunk.NEWLINE); - - PdfPTable table = generateCategoryBudgets(); - if(table != null) - { - document.add(table); - } - } - - document.close(); - } - - private PdfPTable generateCategoryBudgets() - { - PdfPTable table = new PdfPTable(2); - table.setWidthPercentage(100); - Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 8, Font.NORMAL, BaseColor.BLACK); - - //header cells - PdfPCell cellHeaderCategory = new PdfPCell(new Phrase(Localization.getString(Strings.TITLE_CATEGORY), font)); - cellHeaderCategory.setBackgroundColor(GrayColor.LIGHT_GRAY); - cellHeaderCategory.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(cellHeaderCategory); - PdfPCell cellHeaderAmount = new PdfPCell(new Phrase(Localization.getString(Strings.TITLE_AMOUNT), font)); - cellHeaderAmount.setBackgroundColor(GrayColor.LIGHT_GRAY); - cellHeaderAmount.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(cellHeaderAmount); - - for(CategoryBudget budget : categoryBudgets) - { - PdfPCell cellName = new PdfPCell(new Phrase(budget.getCategory().getName(), font)); - cellName.setBackgroundColor(new BaseColor(Color.WHITE)); - cellName.setHorizontalAlignment(Element.ALIGN_CENTER); - cellName.setVerticalAlignment(Element.ALIGN_MIDDLE); - table.addCell(cellName); - - PdfPCell cellAmount = new PdfPCell(new Phrase(Helpers.getCurrencyString(budget.getBudget() / 100.0, currency), font)); - cellAmount.setBackgroundColor(new BaseColor(Color.WHITE)); - cellAmount.setHorizontalAlignment(Element.ALIGN_CENTER); - cellAmount.setVerticalAlignment(Element.ALIGN_MIDDLE); - table.addCell(cellAmount); - } - - return table; - } - - private String getProperty(ReportItem reportItem, ColumnType columnType) - { - switch(columnType) - { - case AMOUNT: - return Helpers.getCurrencyString(reportItem.getAmount(), currency); - case CATEGORY: - return reportItem.getCategory().getName(); - case DATE: - return DateTime.parse(reportItem.getDate(), DateTimeFormat.forPattern("YYYY-MM-dd")).toString("dd.MM.YYYY"); - case DESCRIPTION: - return reportItem.getDescription(); - case TAGS: - return reportItem.getTags(); - case NAME: - return reportItem.getName(); - case POSITION: - return String.valueOf(reportItem.getPosition()); - case RATING: - return reportItem.getAmount() > 0 ? "+" : "-"; - case REPEATING: - if(reportItem.getRepeating()) - { - return Localization.getString(Strings.REPORT_REPEATING_YES); - } - else - { - return Localization.getString(Strings.REPORT_REPEATING_NO); - } - default: - return null; - } - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportItem.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportItem.java deleted file mode 100644 index c26a6e4f6a0c93ccdb0bf935b59ecaa56fe24871..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportItem.java +++ /dev/null @@ -1,106 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.report; - -import de.deadlocker8.budgetmaster.logic.category.Category; - -public class ReportItem -{ - private int position; - private int amount; - private String date; - private Category category; - private String name; - private String description; - private String tags; - private boolean repeating; - - public ReportItem() - { - - } - - public int getPosition() - { - return position; - } - - public void setPosition(int position) - { - this.position = position; - } - - public int getAmount() - { - return amount; - } - - public void setAmount(int amount) - { - this.amount = amount; - } - - public String getDate() - { - return date; - } - - public void setDate(String date) - { - this.date = date; - } - - public Category getCategory() - { - return category; - } - - public void setCategory(Category category) - { - this.category = category; - } - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public String getDescription() - { - return description; - } - - public void setDescription(String description) - { - this.description = description; - } - - public String getTags() - { - return tags; - } - - public void setTags(String tags) - { - this.tags = tags; - } - - public boolean getRepeating() - { - return repeating; - } - - public void setRepeating(boolean repeating) - { - this.repeating = repeating; - } - - @Override - public String toString() - { - return "ReportItem [position=" + position + ", amount=" + amount + ", date=" + date + ", category=" + category + ", name=" + name + ", description=" + description + ", tags=" + tags + ", repeating=" + repeating + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportPreferences.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportPreferences.java deleted file mode 100644 index e358e1817d682a66006cc7c42033b9eace929272..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportPreferences.java +++ /dev/null @@ -1,112 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.report; - -import de.deadlocker8.budgetmaster.logic.utils.SaveFileType; - -public class ReportPreferences -{ - /* - * VERSIONS - * - * --> 1 - * initial - * - * --> 2 - * added last export folder as reportFolderPath - */ - - @SuppressWarnings("unused") - private final String TYPE = SaveFileType.BUDGETMASTER_REPORT_PREFERENCES.toString(); - private final int VERSION = 2; - private ColumnOrder columnOrder; - private boolean includeBudget; - private boolean splitTable; - private boolean includeCategoryBudgets; - private ReportSorting reportSorting; - private String reportFolderPath; - - public ReportPreferences() - { - - } - - public ReportPreferences(ColumnOrder columnOrder, boolean includeBudget, boolean splitTable, boolean includeCategoryBudgets, ReportSorting reportSorting, String reportFolderPath) - { - this.columnOrder = columnOrder; - this.includeBudget = includeBudget; - this.splitTable = splitTable; - this.includeCategoryBudgets = includeCategoryBudgets; - this.reportSorting = reportSorting; - this.reportFolderPath = reportFolderPath; - } - - public int getVERSION() - { - return VERSION; - } - - public ColumnOrder getColumnOrder() - { - return columnOrder; - } - - public void setColumnOrder(ColumnOrder columnOrder) - { - this.columnOrder = columnOrder; - } - - public boolean isIncludeBudget() - { - return includeBudget; - } - - public void setIncludeBudget(boolean includeBudget) - { - this.includeBudget = includeBudget; - } - - public boolean isSplitTable() - { - return splitTable; - } - - public void setSplitTable(boolean splitTable) - { - this.splitTable = splitTable; - } - - public boolean isIncludeCategoryBudgets() - { - return includeCategoryBudgets; - } - - public void setIncludeCategoryBudgets(boolean includeCategoryBudgets) - { - this.includeCategoryBudgets = includeCategoryBudgets; - } - - public ReportSorting getReportSorting() - { - return reportSorting; - } - - public void setReportSorting(ReportSorting reportSorting) - { - this.reportSorting = reportSorting; - } - - public String getReportFolderPath() - { - return reportFolderPath; - } - - public void setReportFolderPath(String reportFolderPath) - { - this.reportFolderPath = reportFolderPath; - } - - @Override - public String toString() - { - return "ReportPreferences [VERSION=" + VERSION + ", columnOrder=" + columnOrder + ", includeBudget=" + includeBudget + ", splitTable=" + splitTable + ", includeCategoryBudgets=" + includeCategoryBudgets + ", reportSorting=" + reportSorting + ", reportFolderPath=" + reportFolderPath + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportSorting.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportSorting.java deleted file mode 100644 index 3607a97e1230569a8fcf5e478bff1782e21f1b65..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/report/ReportSorting.java +++ /dev/null @@ -1,46 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.report; - -import javafx.scene.control.TableColumn.SortType; - -public class ReportSorting -{ - private ColumnType columnType; - private SortType sortType; - - public ReportSorting() - { - - } - - public ReportSorting(ColumnType columnType, SortType sortType) - { - this.columnType = columnType; - this.sortType = sortType; - } - - public ColumnType getColumnType() - { - return columnType; - } - - public void setColumnType(ColumnType columnType) - { - this.columnType = columnType; - } - - public SortType getSortType() - { - return sortType; - } - - public void setSortType(SortType sortType) - { - this.sortType = sortType; - } - - @Override - public String toString() - { - return "ReportSorting [columnType=" + columnType + ", sortType=" + sortType + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/search/SearchPreferences.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/search/SearchPreferences.java deleted file mode 100644 index 3c327559e63a93289df9c0da74d6d9dcf513641f..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/search/SearchPreferences.java +++ /dev/null @@ -1,122 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.search; - -public class SearchPreferences -{ - private String lastQuery; - private boolean searchName; - private boolean searchDescription; - private boolean searchCategorNames; - private boolean searchTags; - private boolean searchAmount; - private int minAmount; - private int maxAmount; - - public SearchPreferences() - { - - } - - public SearchPreferences(String lastQuery, boolean searchName, boolean searchDescription, boolean searchCategorNames, boolean searchTags, boolean searchAmount, int minAmount, int maxAmount) - { - this.lastQuery = lastQuery; - this.searchName = searchName; - this.searchDescription = searchDescription; - this.searchCategorNames = searchCategorNames; - this.searchTags = searchTags; - this.searchAmount = searchAmount; - this.minAmount = minAmount; - this.maxAmount = maxAmount; - } - - public String getLastQuery() - { - return lastQuery; - } - - public void setLastQuery(String lastQuery) - { - this.lastQuery = lastQuery; - } - - public boolean isSearchName() - { - return searchName; - } - - public void setSearchName(boolean searchName) - { - this.searchName = searchName; - } - - public boolean isSearchDescription() - { - return searchDescription; - } - - public void setSearchDescription(boolean searchDescription) - { - this.searchDescription = searchDescription; - } - - public boolean isSearchCategorNames() - { - return searchCategorNames; - } - - public void setSearchCategorNames(boolean searchCategorNames) - { - this.searchCategorNames = searchCategorNames; - } - - public boolean isSearchTags() - { - return searchTags; - } - - public void setSearchTags(boolean searchTags) - { - this.searchTags = searchTags; - } - - public boolean isSearchAmount() - { - return searchAmount; - } - - public void setSearchAmount(boolean searchAmount) - { - this.searchAmount = searchAmount; - } - - public int getMinAmount() - { - return minAmount; - } - - public void setMinAmount(int minAmount) - { - this.minAmount = minAmount; - } - - public int getMaxAmount() - { - return maxAmount; - } - - public void setMaxAmount(int maxAmount) - { - this.maxAmount = maxAmount; - } - - public void searchPreferences(int maxAmount) - { - this.maxAmount = maxAmount; - } - - @Override - public String toString() - { - return "SearchPreferences [lastQuery=" + lastQuery + ", searchName=" + searchName + ", searchDescription=" + searchDescription + ", searchCategorNames=" + searchCategorNames + ", searchTags=" + searchTags + ", searchAmount=" + searchAmount + ", minAmount=" + minAmount + ", maxAmount=" - + maxAmount + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ExceptionHandler.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ExceptionHandler.java deleted file mode 100644 index c22912ac563283d82d669161db027d942146cf03..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ExceptionHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.serverconnection; - -import java.net.UnknownHostException; - -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import tools.Localization; - -public class ExceptionHandler -{ - public static String getMessageForException(Exception e) - { - if(e instanceof ServerConnectionException) - { - return handleServerConnectionException(e); - } - - if(e instanceof UnknownHostException) - { - return Localization.getString(Strings.ERROR_UNKNOWN_HOST); - } - - if(e.getMessage() == null) - { - return Localization.getString(Strings.ERROR_UNKNOWN_ERROR, e.getClass()); - } - - if(e.getMessage().contains("Connection refused")) - { - return Localization.getString(Strings.ERROR_CONNECTION_REFUSED); - } - else if(e.getMessage().contains("HTTPS hostname wrong")) - { - return Localization.getString(Strings.ERROR_HTTPS_HOSTNAME_WRONG); - } - return e.getMessage(); - } - - private static String handleServerConnectionException(Exception e) - { - switch(e.getMessage()) - { - case "400": return Localization.getString(Strings.ERROR_400); - case "401": return Localization.getString(Strings.ERROR_401); - case "500": return Localization.getString(Strings.ERROR_500); - default: return e.getMessage(); - } - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java deleted file mode 100644 index 92ea3b1cfd035e865888bd082df97b96900eace6..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java +++ /dev/null @@ -1,639 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.serverconnection; - -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.lang.reflect.Type; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.security.cert.X509Certificate; -import java.util.ArrayList; - -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; - -import org.joda.time.DateTime; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; -import com.google.gson.reflect.TypeToken; - -import de.deadlocker8.budgetmaster.logic.Settings; -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.category.CategoryBudget; -import de.deadlocker8.budgetmaster.logic.charts.CategoryInOutSum; -import de.deadlocker8.budgetmaster.logic.charts.MonthInOutSum; -import de.deadlocker8.budgetmaster.logic.database.Database; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.payment.PaymentJSONDeserializer; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; -import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import tools.Read; - -public class ServerConnection -{ - private Settings settings; - private Gson gson; - - public ServerConnection(Settings settings) throws Exception - { - this.settings = settings; - this.gson = new Gson(); - - TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() - { - public java.security.cert.X509Certificate[] getAcceptedIssuers() - { - return null; - } - - public void checkClientTrusted(X509Certificate[] certs, String authType) - { - } - - public void checkServerTrusted(X509Certificate[] certs, String authType) - { - } - } }; - - // Install the all-trusting trust manager - SSLContext sc = SSLContext.getInstance("SSL"); - sc.init(null, trustAllCerts, new java.security.SecureRandom()); - HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); - - // check whitelist - HttpsURLConnection.setDefaultHostnameVerifier((hostname, sslSession) -> settings.getTrustedHosts().contains(hostname)); - } - - /* - * Category - */ - public ArrayList<Category> getCategories() throws Exception - { - URL url = new URL(settings.getUrl() + "/category?secret=" + Helpers.getURLEncodedString(settings.getSecret())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - // required by GSON - Type listType = new TypeToken<ArrayList<Category>>() - { - }.getType(); - return gson.fromJson(result, listType); - } - else - { - return new ArrayList<>(); - } - } - - public Category getCategory(int ID) throws Exception - { - URL url = new URL(settings.getUrl() + "/category/single?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&id=" + ID); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, Category.class); - } - else - { - return null; - } - } - - public void addCategory(Category category) throws Exception - { - URL url = new URL(settings.getUrl() + "/category?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&name=" + Helpers.getURLEncodedString(category.getName()) + "&color=" + category.getColor().replace("#", "")); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("POST"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void updateCategory(Category category) throws Exception - { - URL url = new URL(settings.getUrl() + "/category?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&id=" + category.getID() + "&name=" + Helpers.getURLEncodedString(category.getName()) + "&color=" + category.getColor().replace("#", "")); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("PUT"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void deleteCategory(int ID) throws Exception - { - URL url = new URL(settings.getUrl() + "/category?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&id=" + ID); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("DELETE"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - /* - * Payment - */ - public ArrayList<NormalPayment> getPayments(int year, int month) throws Exception - { - URL url = new URL(settings.getUrl() + "/payment?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&year=" + year + "&month=" + month); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - // required by GSON - Type listType = new TypeToken<ArrayList<NormalPayment>>() - { - }.getType(); - return gson.fromJson(result, listType); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public ArrayList<RepeatingPaymentEntry> getRepeatingPayments(int year, int month) throws Exception - { - URL url = new URL(settings.getUrl() + "/repeatingpayment?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&year=" + year + "&month=" + month); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - // required by GSON - Type listType = new TypeToken<ArrayList<RepeatingPaymentEntry>>() - { - }.getType(); - return gson.fromJson(result, listType); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public RepeatingPayment getRepeatingPayment(int ID) throws Exception - { - URL url = new URL(settings.getUrl() + "/repeatingpayment/single?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&id=" + ID); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, RepeatingPayment.class); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public Integer addNormalPayment(NormalPayment payment) throws Exception - { - URL url = new URL(settings.getUrl() + "/payment?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&amount=" + payment.getAmount() + "&date=" + payment.getDate() + "&categoryID=" + payment.getCategoryID() + "&name=" + Helpers.getURLEncodedString(payment.getName()) - + "&description=" + Helpers.getURLEncodedString(payment.getDescription())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("POST"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, Integer.class); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void updateNormalPayment(NormalPayment payment) throws Exception - { - URL url = new URL(settings.getUrl() + "/payment?secret=" + settings.getSecret() + "&id=" + payment.getID() + "&amount=" + payment.getAmount() + "&date=" + payment.getDate() + "&categoryID=" + payment.getCategoryID() + "&name=" + Helpers.getURLEncodedString(payment.getName()) - + "&description=" + Helpers.getURLEncodedString(payment.getDescription())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("PUT"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public Integer addRepeatingPayment(RepeatingPayment payment) throws Exception - { - String repeatEndDate = payment.getRepeatEndDate(); - if(repeatEndDate == null || repeatEndDate.equals("")) - { - // A is placeholder for empty repeatEndDate - repeatEndDate = "A"; - } - - URL url = new URL(settings.getUrl() + "/repeatingpayment?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&amount=" + payment.getAmount() + "&date=" + payment.getDate() + "&categoryID=" + payment.getCategoryID() + "&name=" + Helpers.getURLEncodedString(payment.getName()) - + "&repeatInterval=" + payment.getRepeatInterval() + "&repeatEndDate=" + repeatEndDate + "&repeatMonthDay=" + payment.getRepeatMonthDay() + "&description=" + Helpers.getURLEncodedString(payment.getDescription())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("POST"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, Integer.class); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void deleteNormalPayment(NormalPayment payment) throws Exception - { - URL url = new URL(settings.getUrl() + "/payment?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&id=" + payment.getID()); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("DELETE"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void deleteRepeatingPayment(RepeatingPaymentEntry payment) throws Exception - { - URL url = new URL(settings.getUrl() + "/repeatingpayment?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&id=" + payment.getRepeatingPaymentID()); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("DELETE"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public ArrayList<Payment> getPaymentsForSearch(String query, boolean searchName, boolean searchDescription, boolean searchCategoryName, boolean searchTags, boolean searchAmount, int minAmount, int maxAmount) throws Exception - { - String urlString = settings.getUrl() + "/payment/search?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&query=" + Helpers.getURLEncodedString(query); - if(searchName) - { - urlString += "&name=" + 1; - } - - if(searchDescription) - { - urlString += "&description=" + 1; - } - - if(searchCategoryName) - { - urlString += "&categoryName=" + 1; - } - - if(searchTags) - { - urlString += "&tags=" + 1; - } - - if(searchAmount) - { - urlString += "&minAmount=" + minAmount; - urlString += "&maxAmount=" + maxAmount; - } - - URL url = new URL(urlString); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - JsonParser parser = new JsonParser(); - JsonElement resultJSON = parser.parse(result); - - return PaymentJSONDeserializer.deserializePaymentList(resultJSON.getAsJsonObject().get("payments").getAsJsonArray()); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public int getMaxAmount() throws Exception - { - URL url = new URL(settings.getUrl() + "/payment/search/maxAmount?secret=" + Helpers.getURLEncodedString(settings.getSecret())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, Integer.class); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - /* - * CATEGORYBUDGET - */ - public ArrayList<CategoryBudget> getCategoryBudgets(int year, int month) throws Exception - { - URL url = new URL(settings.getUrl() + "/categorybudget?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&year=" + year + "&month=" + month); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - // required by GSON - Type listType = new TypeToken<ArrayList<CategoryBudget>>() - { - }.getType(); - return gson.fromJson(result, listType); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - /* - * REST - */ - public int getRestForAllPreviousMonths(int year, int month) throws Exception - { - URL url = new URL(settings.getUrl() + "/rest?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&year=" + year + "&month=" + month); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, Integer.class); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - /* - * DATABASE - */ - public void deleteDatabase() throws Exception - { - URL url = new URL(settings.getUrl() + "/database?secret=" + Helpers.getURLEncodedString(settings.getSecret())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("DELETE"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public String exportDatabase() throws Exception - { - URL url = new URL(settings.getUrl() + "/database?secret=" + Helpers.getURLEncodedString(settings.getSecret())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - return Read.getStringFromInputStream(httpsCon.getInputStream()); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void importDatabase(Database database) throws Exception - { - String databaseJSON = new Gson().toJson(database); - - URL url = new URL(settings.getUrl() + "/database?secret=" + Helpers.getURLEncodedString(settings.getSecret())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("POST"); - httpsCon.setRequestProperty("Content-Type", "application/json"); - httpsCon.setRequestProperty("Accept", "application/json"); - httpsCon.setDoInput(true); - httpsCon.setDoOutput(true); - PrintWriter writer = new PrintWriter(new OutputStreamWriter(httpsCon.getOutputStream(), StandardCharsets.UTF_8)); - writer.write(databaseJSON); - writer.flush(); - writer.close(); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - /* - * CHARTS - */ - public ArrayList<CategoryInOutSum> getCategoryInOutSumForMonth(DateTime startDate, DateTime endDate) throws Exception - { - URL url = new URL(settings.getUrl() + "/charts/categoryInOutSum?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + - "&startDate=" + startDate.toString("yyyy-MM-dd") + - "&endDate=" + endDate.toString("yyyy-MM-dd")); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - // required by GSON - Type listType = new TypeToken<ArrayList<CategoryInOutSum>>() - { - }.getType(); - return gson.fromJson(result, listType); - } - else - { - return null; - } - } - - public ArrayList<MonthInOutSum> getMonthInOutSum(DateTime startDate, DateTime endDate) throws Exception - { - URL url = new URL(settings.getUrl() + "/charts/monthInOutSum?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + - "&startDate=" + startDate.toString("yyyy-MM-dd") + - "&endDate=" + endDate.toString("yyyy-MM-dd")); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - // required by GSON - Type listType = new TypeToken<ArrayList<MonthInOutSum>>() - { - }.getType(); - return gson.fromJson(result, listType); - } - else - { - return null; - } - } - - /* - * INFORMATION - */ - public ServerInformation getServerInfo() throws Exception - { - URL url = new URL(settings.getUrl() + "/info?secret=" + Helpers.getURLEncodedString(settings.getSecret())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, ServerInformation.class); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public VersionInformation getServerVersion() throws Exception - { - URL url = new URL(settings.getUrl() + "/version?secret=" + Helpers.getURLEncodedString(settings.getSecret())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, VersionInformation.class); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void deleteLog() throws Exception - { - URL url = new URL(settings.getUrl() + "/log?secret=" + Helpers.getURLEncodedString(settings.getSecret())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("DELETE"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void shutdownServer() throws Exception - { - URL url = new URL(settings.getUrl() + "/shutdown?secret=" + Helpers.getURLEncodedString(settings.getSecret())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("GET"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnectionException.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnectionException.java deleted file mode 100644 index 4415d8625928515f62717b77cfa8ed93228a029a..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnectionException.java +++ /dev/null @@ -1,31 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.serverconnection; - -public class ServerConnectionException extends Exception -{ - private static final long serialVersionUID = 2784475774757068549L; - - public ServerConnectionException() - { - super(); - } - - public ServerConnectionException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) - { - super(message, cause, enableSuppression, writableStackTrace); - } - - public ServerConnectionException(String message, Throwable cause) - { - super(message, cause); - } - - public ServerConnectionException(String message) - { - super(message); - } - - public ServerConnectionException(Throwable cause) - { - super(cause); - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerInformation.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerInformation.java deleted file mode 100644 index d4172b446694ea58eb4b269f57903837d87f17bc..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerInformation.java +++ /dev/null @@ -1,84 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.serverconnection; - -import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; - -public class ServerInformation -{ - private String databaseUrl; - private String databaseName; - private String databaseUsername; - private int serverPort; - private String keystorePath; - private VersionInformation versionInfo; - - public ServerInformation() - { - - } - - public String getDatabaseUrl() - { - return databaseUrl; - } - - public void setDatabaseUrl(String databaseUrl) - { - this.databaseUrl = databaseUrl; - } - - public String getDatabaseName() - { - return databaseName; - } - - public void setDatabaseName(String databaseName) - { - this.databaseName = databaseName; - } - - public String getDatabaseUsername() - { - return databaseUsername; - } - - public void setDatabaseUsername(String databaseUsername) - { - this.databaseUsername = databaseUsername; - } - - public int getServerPort() - { - return serverPort; - } - - public void setServerPort(int serverPort) - { - this.serverPort = serverPort; - } - - public String getKeystorePath() - { - return keystorePath; - } - - public void setKeystorePath(String keystorePath) - { - this.keystorePath = keystorePath; - } - - public VersionInformation getVersionInfo() - { - return versionInfo; - } - - public void setVersionInfo(VersionInformation versionInfo) - { - this.versionInfo = versionInfo; - } - - @Override - public String toString() - { - return "ServerInfo [databaseUrl=" + databaseUrl + ", databaseName=" + databaseName + ", databaseUsername=" + databaseUsername + ", serverPort=" + serverPort + ", keystorePath=" + keystorePath + ", versionInfo=" + versionInfo + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerTagConnection.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerTagConnection.java deleted file mode 100644 index 858de8646b233295b714d2117a919c65caf4088d..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerTagConnection.java +++ /dev/null @@ -1,309 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.serverconnection; - -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.lang.reflect.Type; -import java.net.URL; -import java.security.cert.X509Certificate; -import java.util.ArrayList; - -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import de.deadlocker8.budgetmaster.logic.Settings; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import tools.Read; - -public class ServerTagConnection -{ - private Settings settings; - private Gson gson; - - public ServerTagConnection(Settings settings) throws Exception - { - this.settings = settings; - this.gson = new Gson(); - - TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() - { - public java.security.cert.X509Certificate[] getAcceptedIssuers() - { - return null; - } - - public void checkClientTrusted(X509Certificate[] certs, String authType) - { - } - - public void checkServerTrusted(X509Certificate[] certs, String authType) - { - } - } }; - - // Install the all-trusting trust manager - SSLContext sc = SSLContext.getInstance("SSL"); - sc.init(null, trustAllCerts, new java.security.SecureRandom()); - HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); - - // check whitelist - HttpsURLConnection.setDefaultHostnameVerifier((hostname, sslSession) -> settings.getTrustedHosts().contains(hostname)); - } - - public ArrayList<Tag> getTags() throws Exception - { - URL url = new URL(settings.getUrl() + "/tag?secret=" + Helpers.getURLEncodedString(settings.getSecret())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - // required by GSON - Type listType = new TypeToken<ArrayList<Tag>>() - { - }.getType(); - return gson.fromJson(result, listType); - } - else - { - return new ArrayList<>(); - } - } - - public Tag getTag(int ID) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag/single?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&id=" + ID); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, Tag.class); - } - else - { - return null; - } - } - - public Tag getTag(String name) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag/single/byName?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&name=" + Helpers.getURLEncodedString(name)); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, Tag.class); - } - else - { - return null; - } - } - - public void addTag(Tag tag) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&name=" + Helpers.getURLEncodedString(tag.getName())); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("POST"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void deleteTag(int ID) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&id=" + ID); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("DELETE"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - /* - * tag match - */ - public boolean isMatchExistingForPayment(int tagID, NormalPayment payment) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag/match/normal?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&tagID=" + tagID + "&paymentID=" + payment.getID()); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, Boolean.class); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public boolean isMatchExistingForRepeatingPayment(int tagID, RepeatingPayment payment) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag/match/repeating?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&tagID=" + tagID + "&repeatingPaymentID=" + payment.getID()); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - return gson.fromJson(result, Boolean.class); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void addTagMatchForPayment(int tagID, NormalPayment payment) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag/match/normal?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&tagID=" + tagID + "&paymentID=" + payment.getID()); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("POST"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void addTagMatchForRepeatingPayment(int tagID, RepeatingPayment payment) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag/match/repeating?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&tagID=" + tagID + "&repeatingPaymentID=" + payment.getID()); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("POST"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void deleteTagMatchForPayment(int tagID, NormalPayment payment) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag/match/normal?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&tagID=" + tagID + "&paymentID=" + payment.getID()); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("DELETE"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public void deleteTagMatchForRepeatingPayment(int tagID, RepeatingPayment payment) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag/match/repeating?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&tagID=" + tagID + "&repeatingPaymentID=" + payment.getID()); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setRequestMethod("DELETE"); - httpsCon.setDoInput(true); - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - InputStream stream = httpsCon.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); - reader.close(); - } - else - { - throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); - } - } - - public ArrayList<Tag> getAllTagsForPayment(NormalPayment payment) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag/match/all/normal?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&paymentID=" + payment.getID()); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - // required by GSON - Type listType = new TypeToken<ArrayList<Tag>>() - { - }.getType(); - return gson.fromJson(result, listType); - } - else - { - return new ArrayList<>(); - } - } - - public ArrayList<Tag> getAllTagsForRepeatingPayment(int repeatingPaymentID) throws Exception - { - URL url = new URL(settings.getUrl() + "/tag/match/all/repeating?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&repeatingPaymentID=" + repeatingPaymentID); - HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); - httpsCon.setDoOutput(true); - httpsCon.setRequestMethod("GET"); - - if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) - { - String result = Read.getStringFromInputStream(httpsCon.getInputStream()); - // required by GSON - Type listType = new TypeToken<ArrayList<Tag>>() - { - }.getType(); - return gson.fromJson(result, listType); - } - else - { - return new ArrayList<>(); - } - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/Tag.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/Tag.java deleted file mode 100644 index a9a23fc0fe4e2ad97054a1ba6a420b5a1f1f961f..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/Tag.java +++ /dev/null @@ -1,39 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.tag; - -public class Tag -{ - private int ID; - private String name; - - public Tag(int ID, String name) - { - this.ID = ID; - this.name = name; - } - - public int getID() - { - return ID; - } - - public void setID(int ID) - { - this.ID = ID; - } - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - @Override - public String toString() - { - return "Tag [ID=" + ID + ", Name=" + name + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/TagCache.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/TagCache.java deleted file mode 100644 index 12638c224f8de8328e058b3024f7849c46b726c9..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/TagCache.java +++ /dev/null @@ -1,67 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.tag; - -import java.util.ArrayList; -import java.util.HashMap; - -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; - -public class TagCache -{ - private HashMap<Integer, ArrayList<Tag>> normalPaymentTagCache; - private HashMap<Integer, ArrayList<Tag>> repeatingPaymentTagCache; - - public TagCache() - { - clear(); - } - - public void clear() - { - normalPaymentTagCache = new HashMap<>(); - repeatingPaymentTagCache = new HashMap<>(); - } - - public void addTags(Payment payment, ArrayList<Tag> tags) - { - if(payment instanceof RepeatingPaymentEntry) - { - repeatingPaymentTagCache.put(((RepeatingPaymentEntry)payment).getRepeatingPaymentID(), tags); - } - else - { - normalPaymentTagCache.put(payment.getID(), tags); - } - } - - public ArrayList<Tag> getTags(Payment payment) - { - if(payment instanceof RepeatingPaymentEntry) - { - RepeatingPaymentEntry repeatingPayment = (RepeatingPaymentEntry)payment; - if(repeatingPaymentTagCache.containsKey(repeatingPayment.getRepeatingPaymentID())) - { - return repeatingPaymentTagCache.get(repeatingPayment.getRepeatingPaymentID()); - } - } - else - { - if(normalPaymentTagCache.containsKey(payment.getID())) - { - return normalPaymentTagCache.get(payment.getID()); - } - } - - return null; - } - - public HashMap<Integer, ArrayList<Tag>> getNormalPaymentTagCache() - { - return normalPaymentTagCache; - } - - public HashMap<Integer, ArrayList<Tag>> getRepeatingPaymentTagCache() - { - return repeatingPaymentTagCache; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/TagHandler.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/TagHandler.java deleted file mode 100644 index a6fb9dfe3b538dffc630e4a5d30fcd5fe1833686..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/TagHandler.java +++ /dev/null @@ -1,74 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.tag; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.Settings; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerTagConnection; - -public class TagHandler -{ - private Settings settings; - private TagCache tagCache; - - public TagHandler(Settings settings) - { - this.settings = settings; - this.tagCache = new TagCache(); - } - - public ArrayList<Tag> getTags(Payment payment) throws Exception - { - ArrayList<Tag> tags = new ArrayList<>(); - ArrayList<Tag> cachedTags = tagCache.getTags(payment); - if(cachedTags != null) - { - return cachedTags; - } - - ServerTagConnection connection = new ServerTagConnection(settings); - - if(payment instanceof NormalPayment) - { - tags.addAll(connection.getAllTagsForPayment((NormalPayment)payment)); - } - else - { - tags.addAll(connection.getAllTagsForRepeatingPayment(((RepeatingPaymentEntry)payment).getRepeatingPaymentID())); - } - - tagCache.addTags(payment, tags); - - return tags; - } - - public String getTagsAsString(Payment payment) throws Exception - { - ArrayList<Tag> tags = getTags(payment); - StringBuilder sb = new StringBuilder(); - for(int i = 0; i < tags.size(); i++) - { - sb.append(tags.get(i).getName()); - if(i != tags.size()-1) - { - sb.append(", "); - } - } - - return sb.toString(); - } - - public ArrayList<Integer> getTagIDs(Payment payment) throws Exception - { - ArrayList<Tag> tags = getTags(payment); - ArrayList<Integer> ids = new ArrayList<>(); - for(Tag currentTag : tags) - { - ids.add(currentTag.getID()); - } - - return ids; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/TagMatch.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/TagMatch.java deleted file mode 100644 index 7177bee480e0335e410f6ce00065781bdddf9b8c..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/tag/TagMatch.java +++ /dev/null @@ -1,59 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.tag; - -import de.deadlocker8.budgetmaster.logic.database.DatabaseImportExport; - -@DatabaseImportExport -public class TagMatch -{ - private int tagID; - private int paymentID; - private int repeatingPaymentID; - - public TagMatch(int tagID, int paymentID, int repeatingPaymentID) - { - this.tagID = tagID; - this.paymentID = paymentID; - this.repeatingPaymentID = repeatingPaymentID; - } - - public TagMatch() - { - - } - - public int getTagID() - { - return tagID; - } - - public void setTagID(int tagID) - { - this.tagID = tagID; - } - - public int getPaymentID() - { - return paymentID; - } - - public void setPaymentID(int paymentID) - { - this.paymentID = paymentID; - } - - public int getRepeatingPaymentID() - { - return repeatingPaymentID; - } - - public void setRepeatingPaymentID(int repeatingPaymentID) - { - this.repeatingPaymentID = repeatingPaymentID; - } - - @Override - public String toString() - { - return "TagMatch [tagID=" + tagID + ", paymentID=" + paymentID + ", repeatingPaymentID=" + repeatingPaymentID + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/updater/Updater.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/updater/Updater.java deleted file mode 100644 index 1eb50a9c751204c7d61a535d62c9ce3f7fad978a..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/updater/Updater.java +++ /dev/null @@ -1,141 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.updater; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; -import java.net.URLConnection; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; -import java.util.Properties; - -import de.deadlocker8.budgetmaster.logic.utils.Strings; -import logger.Logger; -import nativeWindows.NativeLauncher; -import tools.Localization; -import tools.OS; -import tools.OS.OSType; -import tools.PathUtils; - -public class Updater -{ - private VersionInformation latestVersion; - private static final String LATEST_VERSION_INFO_URL = "https://raw.githubusercontent.com/deadlocker8/BudgetMaster/master/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties"; - private static final String BUILD_FOLDER = "https://github.com/deadlocker8/BudgetMaster/raw/master/build/"; - - public Updater() - { - latestVersion = new VersionInformation(0, "-", "-"); - } - - private VersionInformation getLatestVersionInformationFromServer() throws IOException - { - URL webseite = new URL(LATEST_VERSION_INFO_URL); - URLConnection connection = webseite.openConnection(); - - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream())); - - VersionInformation versionInfo = new VersionInformation(); - Properties properties = new Properties(); - properties.load(bufferedReader); - versionInfo.setVersionCode(Integer.parseInt(properties.getProperty("version.code", "-1"))); - versionInfo.setVersionName(properties.getProperty("version.name")); - versionInfo.setDate(properties.getProperty("version.date")); - - if(!versionInfo.isComplete()) - throw new IllegalArgumentException("VersionInformation not complete"); - - return versionInfo; - } - - public boolean isUpdateAvailable(int currentVersionCode) throws IOException - { - latestVersion = getLatestVersionInformationFromServer(); - return currentVersionCode < latestVersion.getVersionCode(); - } - - public VersionInformation getLatestVersion() - { - return latestVersion; - } - - private void downloadLatestUpdater(OSType osType) throws IOException - { - //download into temp directory and file - String ending = "jar"; - if(osType == OSType.Windows) - { - ending = "exe"; - } - - Path target = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/Updater." + ending); - download(BUILD_FOLDER + "Updater." + ending, target); - Logger.debug("Successfully downloaded latest updater"); - } - - private File getCurrentExecutableName() - { - return new File(Updater.class.getProtectionDomain().getCodeSource().getLocation().getPath()); - } - - - public void downloadLatestVersion() throws Exception - { - File currentExecutable = getCurrentExecutableName(); - String currentFileName = currentExecutable.getName(); - - //check if BudgetMaster is running from executable - //no updating procedure if running from source - if(!currentFileName.contains(".")) - { - Logger.debug("Update procedure will be skipped because BudgetMaster is running from source"); - return; - } - - PathUtils.checkFolder(new File(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER))); - - //download latest updater.jar - - downloadLatestUpdater(OS.getType()); - - //download into temp directory and file - Path target; - if(currentFileName.endsWith(".exe")) - { - target = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/update_BudgetMaster.exe"); - download(BUILD_FOLDER + "BudgetMaster.exe", target); - Logger.debug("Successfully downloaded latest EXE"); - } - else - { - target = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/update_BudgetMasterClient.jar"); - download(BUILD_FOLDER + "BudgetMasterClient.jar", target); - Logger.debug("Successfully downloaded latest JAR"); - } - - String params = target.toString().replace(" ", "%20") + " " + currentExecutable.getAbsolutePath().replace(" ", "%20") + " " + Localization.getString(Strings.APP_NAME); - Logger.debug(params); - - if(OS.getType() == OSType.Windows) - { - NativeLauncher.executeAsAdministrator(Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/Updater.exe").toString(), params); - } - else - { - ProcessBuilder pb = new ProcessBuilder("java", "-jar", Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/Updater.jar").toString(), target.toString().replace(" ", "%20"), currentExecutable.toString().replace(" ", "%20"), Localization.getString(Strings.APP_NAME)); - pb.start(); - } - System.exit(0); - } - - public void download(String url, Path target) throws IOException - { - URL website = new URL(url); - InputStream in = website.openStream(); - Files.copy(in, target, StandardCopyOption.REPLACE_EXISTING); - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/updater/VersionInformation.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/updater/VersionInformation.java deleted file mode 100644 index 4af7faf0316d2e4df03ef836a3551c733f0e534f..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/updater/VersionInformation.java +++ /dev/null @@ -1,61 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.updater; - -public class VersionInformation -{ - private int versionCode; - private String versionName; - private String date; - - public VersionInformation(int versionCode, String versionName, String date) - { - this.versionCode = versionCode; - this.versionName = versionName; - this.date = date; - } - - public VersionInformation() - { - this.versionCode = -1; - } - - public int getVersionCode() - { - return versionCode; - } - - public void setVersionCode(int versionCode) - { - this.versionCode = versionCode; - } - - public String getVersionName() - { - return versionName; - } - - public void setVersionName(String versionName) - { - this.versionName = versionName; - } - - public String getDate() - { - return date; - } - - public void setDate(String date) - { - this.date = date; - } - - public boolean isComplete() - { - return versionCode != -1 && versionName != null && date != null; - } - - @Override - public String toString() - { - return "VersionInformation [versionCode=" + versionCode + ", versionName=" + versionName + ", date=" + date + "]"; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Colors.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Colors.java deleted file mode 100644 index 1403601fb0f381e4136bb805b2ca01509c52da98..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Colors.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.utils; - -import javafx.scene.paint.Color; - -public class Colors -{ - public static final Color TEXT = Color.web("#212121"); - public static final Color TEXT_RED = Color.web("#CC0000"); - public static final Color INCOME = Color.web("#22BAD9"); - public static final Color PAYMENT = Color.web("#F2612D"); - public static final Color BACKGROUND = Color.web("#F4F4F4"); - public static final Color BACKGROUND_MAIN = Color.web("#DDDDDD"); - public static final Color BACKGROUND_BUTTON_BLUE = Color.web("#2E79B9"); - public static final Color BACKGROUND_BUTTON_DARK_BLUE = Color.web("#246091"); - public static final Color BACKGROUND_BUTTON_RED = Color.web("#FF5047"); - public static final Color BACKGROUND_NOTIFICATION = Color.web("#323232"); - public static final Color BACKGROUND_REPORT_TABLE_HEADER_DISABLED = Color.SALMON; - public static final Color BACKGROUND_CHART_LEGEND = Color.web("#DDDDDD"); - - // CATEGORIES - public static final Color CATEGORIES_LIGHT_GREY = Color.web("#EEEEEE"); - public static final Color CATEGORIES_GREY = Color.web("#888888"); - public static final Color CATEGORIES_DARK_GREY = Color.web("#333333"); - public static final Color CATEGORIES_LIGHT_YELLOW = Color.rgb(255,241,119); - public static final Color CATEGORIES_YELLOW = Color.rgb(255,204,0); - public static final Color CATEGORIES_ORANGE = Color.rgb(255,149,0); - public static final Color CATEGORIES_RED = Color.rgb(255,59,48); - public static final Color CATEGORIES_DARK_RED = Color.rgb(169,3,41); - public static final Color CATEGORIES_PINK = Color.rgb(255,81,151); - public static final Color CATEGORIES_PURPLE = Color.rgb(155,89,182); - public static final Color CATEGORIES_DARK_PURPLE = Color.rgb(88,86,214); - public static final Color CATEGORIES_BLUE = Color.rgb(0,122,250); - public static final Color CATEGORIES_LIGHT_BLUE = Color.rgb(90,200,250); - public static final Color CATEGORIES_LIGHT_GREEN = Color.rgb(76,217,100); - public static final Color CATEGORIES_DARK_GREEN = Color.rgb(46,124,43); -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/FileHelper.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/FileHelper.java deleted file mode 100644 index b6f809e40b2bb71e03a897ecad488896064ceb98..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/FileHelper.java +++ /dev/null @@ -1,106 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.utils; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.Reader; -import java.io.Writer; -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.ArrayList; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.Settings; -import de.deadlocker8.budgetmaster.logic.database.Database; -import de.deadlocker8.budgetmaster.logic.database.OldDatabase; -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmaster.logic.tag.TagMatch; -import tools.Localization; -import tools.PathUtils; - -@SuppressWarnings("deprecation") -public class FileHelper -{ - public static Settings loadSettings() - { - Settings settings; - try - { - Gson gson = new Gson(); - Reader reader = Files.newBufferedReader(Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/settings.json"), Charset.forName("UTF-8")); - settings = gson.fromJson(reader, Settings.class); - reader.close(); - return settings; - } - catch(Exception e) - { - return null; - } - } - - public static void saveSettings(Settings settings) throws IOException - { - Gson gson = new Gson(); - String jsonString = gson.toJson(settings); - PathUtils.checkFolder(new File(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER))); - Writer writer = Files.newBufferedWriter(Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/settings.json"), Charset.forName("UTF-8")); - writer.write(jsonString); - writer.close(); - } - - public static Database loadDatabaseJSON(File file) throws IOException - { - Gson gson = new Gson(); - BufferedReader reader = Files.newBufferedReader(Paths.get(file.getAbsolutePath()), Charset.forName("UTF-8")); - - StringBuilder sb = new StringBuilder(); - String line; - while((line = reader.readLine()) != null) - { - sb.append(line); - } - - reader.close(); - String jsonString = sb.toString(); - if(jsonString.contains("BUDGETMASTER_DATABASE")) - { - if(jsonString.contains("VERSION")) - { - int start = jsonString.indexOf("\"VERSION\": "); - start = start + 11; - int version = Integer.parseInt(jsonString.substring(start, start + 1)); - Database database; - - switch(version) - { - case 2: database = gson.fromJson(jsonString, Database.class); - break; - default: return loadOldDatabase(gson, jsonString); - } - return database; - } - } - - return loadOldDatabase(gson, jsonString); - } - - private static Database loadOldDatabase(Gson gson, String jsonString) throws IOException - { - // database version = 1 (prior to BudgetMaster 1.6.0) - OldDatabase olDatabase = gson.fromJson(jsonString, OldDatabase.class); - return new Database(olDatabase.getCategories(), - olDatabase.getNormalPayments(), - olDatabase.getRepeatingPayments(), - new ArrayList<Tag>(), - new ArrayList<TagMatch>()); - } - - public static void saveDatabaseJSON(File file, String databaseJSON) throws IOException - { - Writer writer = Files.newBufferedWriter(Paths.get(file.getAbsolutePath()), Charset.forName("UTF-8")); - writer.write(databaseJSON); - writer.close(); - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Fonts.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Fonts.java deleted file mode 100644 index d69997c9f1de948ce2c6ea35c83402ac17e94d1f..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Fonts.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.utils; - -public class Fonts -{ - public static final String OPEN_SANS = "/de/deadlocker8/budgetmaster/resources/fonts/OpenSans-Regular.ttf"; -} diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Helpers.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Helpers.java deleted file mode 100644 index 6bd8a0a6c8f9cbd371ff0bf5b893c9c28fdd0e8c..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Helpers.java +++ /dev/null @@ -1,112 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.utils; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.text.DecimalFormat; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; - -import javafx.scene.paint.Color; -import tools.Localization; - -public class Helpers -{ - public static final DecimalFormat NUMBER_FORMAT = new DecimalFormat("0.00"); - public static final String SALT = "ny9/Y+G|WrJ,82|oIYQQ X %i-sq#4,uA-qKPtwFPnw+s(k2`rV)^-a1|t{D3Z>S"; - public static final String ROADMAP_URL = "https://deadlocker.thecodelabs.de/roadmap/php/index.php?id=1"; - - public static String getCurrencyString(int amount, String currency) - { - return String.valueOf(NUMBER_FORMAT.format(amount / 100.0).replace(".", ",")) + " " + currency; - } - - public static String getCurrencyString(double amount, String currency) - { - return String.valueOf(NUMBER_FORMAT.format(amount).replace(".", ",")) + " " + currency; - } - - public static String getURLEncodedString(String input) - { - try - { - return URLEncoder.encode(input, "UTF-8"); - } - catch(UnsupportedEncodingException e) - { - return input; - } - } - - public static String getDateString(LocalDate date) - { - if(date == null) - { - return ""; - } - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - return date.format(formatter); - } - - public static ArrayList<String> getMonthList() - { - ArrayList<String> monthNames = new ArrayList<>(); - monthNames.add(Localization.getString(Strings.MONTH_JANUARY)); - monthNames.add(Localization.getString(Strings.MONTH_FEBRUARY)); - monthNames.add(Localization.getString(Strings.MONTH_MARCH)); - monthNames.add(Localization.getString(Strings.MONTH_APRIL)); - monthNames.add(Localization.getString(Strings.MONTH_MAY)); - monthNames.add(Localization.getString(Strings.MONTH_JUNE)); - monthNames.add(Localization.getString(Strings.MONTH_JULY)); - monthNames.add(Localization.getString(Strings.MONTH_AUGUST)); - monthNames.add(Localization.getString(Strings.MONTH_SEPTEMBER)); - monthNames.add(Localization.getString(Strings.MONTH_OCTOBER)); - monthNames.add(Localization.getString(Strings.MONTH_NOVEMBER)); - monthNames.add(Localization.getString(Strings.MONTH_DECEMBER)); - return monthNames; - } - - public static ArrayList<String> getYearList() - { - ArrayList<String> years = new ArrayList<>(); - for(int i = 2000; i < 2100; i++) - { - years.add(String.valueOf(i)); - } - return years; - } - - public static ArrayList<Color> getCategoryColorList() - { - ArrayList<Color> colors = new ArrayList<>(); - colors.add(Colors.CATEGORIES_LIGHT_GREY); - colors.add(Colors.CATEGORIES_GREY); - colors.add(Colors.CATEGORIES_DARK_GREY); - colors.add(Colors.CATEGORIES_LIGHT_YELLOW); - colors.add(Colors.CATEGORIES_YELLOW); - colors.add(Colors.CATEGORIES_ORANGE); - colors.add(Colors.CATEGORIES_RED); - colors.add(Colors.CATEGORIES_DARK_RED); - colors.add(Colors.CATEGORIES_PINK); - colors.add(Colors.CATEGORIES_PURPLE); - colors.add(Colors.CATEGORIES_DARK_PURPLE); - colors.add(Colors.CATEGORIES_BLUE); - colors.add(Colors.CATEGORIES_LIGHT_BLUE); - colors.add(Colors.CATEGORIES_LIGHT_GREEN); - colors.add(Colors.CATEGORIES_DARK_GREEN); - - return colors; - } - - /** - * Replaces line breaks and tabs with spaces - * @param text - * @return String - */ - public static String getFlatText(String text) - { - text = text.replace("\n", " "); - text = text.replace("\t", " "); - return text; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/LanguageType.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/LanguageType.java deleted file mode 100644 index f9ed0a08066df8eee6cd6866cbbd2702ab89bd1b..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/LanguageType.java +++ /dev/null @@ -1,35 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.utils; - -import java.util.Locale; - -public enum LanguageType -{ - GERMAN("Deutsch", Locale.GERMAN, "german"), - ENGLISH("English", Locale.ENGLISH, "english"); - - private String name; - private Locale locale; - private String iconName; - - private LanguageType(String name, Locale locale, String iconName) - { - this.name = name; - this.locale = locale; - this.iconName = iconName; - } - - public String getName() - { - return name; - } - - public Locale getLocale() - { - return locale; - } - - public String getIconName() - { - return iconName; - } -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/SaveFileType.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/SaveFileType.java deleted file mode 100644 index a5cf884f072415e071f093dc90e155b3363c5dbd..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/SaveFileType.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.utils; - -public enum SaveFileType -{ - BUDGETMASTER_DATABASE, - BUDGETMASTER_REPORT_PREFERENCES, - BUDGETMASTER_SETTINGS -} \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java deleted file mode 100644 index f972c712be2f5f9f468811e9f1fa4a1a3bdf68c5..0000000000000000000000000000000000000000 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java +++ /dev/null @@ -1,240 +0,0 @@ -package de.deadlocker8.budgetmaster.logic.utils; - -public class Strings -{ - //APP_INFO - public static final String APP_NAME = "app.name"; - public static final String VERSION_CODE = "version.code"; - public static final String VERSION_NAME = "version.name"; - public static final String VERSION_DATE = "version.date"; - public static final String AUTHOR = "author"; - public static final String CREDITS = "credits"; - public static final String FOLDER = "folder"; - public static final String ROADMAP_URL = "roadmap.url"; - public static final String GITHUB_URL = "github.url"; - - //TITLE - public static final String TITLE_INCOMES = "title.incomes"; - public static final String TITLE_INCOME = "title.income"; - public static final String TITLE_PAYMENTS = "title.payments"; - public static final String TITLE_PAYMENT = "title.payment"; - public static final String TITLE_CATEGORY = "title.category"; - public static final String TITLE_CATEGORIES = "title.categories"; - public static final String TITLE_CATEGORY_BUDGETS = "title.category.budgets"; - public static final String TITLE_AMOUNT = "title.amount"; - public static final String TITLE_INFO = "title.info"; - public static final String TITLE_WARNING = "title.warning"; - public static final String TITLE_ERROR = "title.error"; - public static final String TITLE_CATEGORY_NEW = "title.category.new"; - public static final String TITLE_CATEGORY_EDIT = "title.category.edit"; - public static final String TITLE_CHART_EXPORT = "title.chart.export"; - public static final String TITLE_MODAL = "title.modal"; - public static final String TITLE_PAYMENT_EDIT = "title.payment.edit"; - public static final String TITLE_PAYMENT_NEW = "title.payment.new"; - public static final String TITLE_FILTER = "title.filter"; - public static final String TITLE_SEARCH = "title.search"; - public static final String TITLE_REPORT_SAVE = "title.report.save"; - public static final String TITLE_DATABASE_EXPORT = "title.database.export"; - public static final String TITLE_DATABASE_IMPORT = "title.database.import"; - public static final String TITLE_DATEPICKER = "title.datepicker"; - public static final String TITLE_TAGS = "title.tags"; - - //LOAD - public static final String LOAD_CHARTS = "load.charts"; - public static final String LOAD_DATA = "load.data"; - public static final String LOAD_REPORT_TAB = "load.report.tab"; - public static final String LOAD_REPORT = "load.report"; - public static final String LOAD_DATABASE_EXPORT = "load.database.export"; - public static final String LOAD_DATABASE_IMPORT = "load.database.import"; - public static final String LOAD_DATABASE_DELETE = "load.database.delete"; - public static final String LOAD_UPDATE = "load.update"; - public static final String LOAD_SEARCH = "load.search"; - public static final String LOAD_LOCAL_SERVER = "load.local.server"; - public static final String LOAD_DOWNLOAD_LOCAL_SERVER = "load.download.local.server"; - public static final String LOAD_LOCAL_SERVER_CONNECT = "load.local.server.connect"; - public static final String LOAD_LOCAL_SERVER_RETRY = "load.local.server.retry"; - - - //MISC - public static final String CATEGORY_NONE = "category.none"; - public static final String CATEGORY_REST = "category.rest"; - public static final String TOOLTIP_CHART_CATEGORIES = "tooltip.chart.categories"; - public static final String CHART_MONTH_LINE_SUM = "chart.month.line.sum"; - public static final String CATEGORIES_PLACEHOLDER = "categories.placeholder"; - public static final String CHART_CATEGORIES_TITLE_INCOMES = "chart.categories.title.incomes"; - public static final String CHART_CATEGORIES_TITLE_PAYMENTS = "chart.categories.title.payments"; - public static final String OK = "ok"; - public static final String CANCEL = "cancel"; - public static final String HOME_PLACEHOLDER = "home.placeholder"; - public static final String HOME_BUDGET = "home.budget"; - public static final String PAYMENTS_PLACEHOLDER = "payments.placeholder"; - public static final String URL_PLACEHOLDER = "url.placeholder"; - public static final String CURRENCY_PLACEHOLDER = "currency.placeholder"; - public static final String TRUSTED_HOSTS_PLACEHOLDER = "trusted.hosts.placeholder"; - public static final String VERSION = "version"; - public static final String UNDEFINED = "undefined"; - public static final String TAGFIELD_PLACEHOLDER = "tagfield.placeholder"; - public static final String SHORTCUT_DEV_CONSOLE = "shortcut.dev.console"; - public static final String LOCAL_SERVER_STATUS_OK = "local.server.status.ok"; - public static final String LOCAL_SERVER_STATUS_NOT_STARTED = "local.server.status.not.started"; - public static final String LOCAL_SERVER_ACTION_NOT_STARTED = "local.server.action.not.started"; - public static final String LOCAL_SERVER_STATUS_NOT_PRESENT = "local.server.status.not.present"; - public static final String LOCAL_SERVER_ACTION_NOT_PRESENT = "local.server.action.not.present"; - public static final String LOCAL_SERVER_STATUS_INCOMPATIBLE = "local.server.status.incompatible"; - public static final String LOCAL_SERVER_ACTION_INCOMPATIBLE = "local.server.action.incompatible"; - - //REPORT - public static final String REPORT_POSITION = "report.position"; - public static final String REPORT_DATE = "report.date"; - public static final String REPORT_REPEATING = "report.repeating"; - public static final String REPORT_CATEGORY = "report.category"; - public static final String REPORT_NAME = "report.name"; - public static final String REPORT_DESCRIPTION = "report.description"; - public static final String REPORT_TAGS = "report.tags"; - public static final String REPORT_RATING = "report.rating"; - public static final String REPORT_AMOUNT = "report.amount"; - public static final String REPORT_HEADLINE = "report.headline"; - public static final String REPORT_HEADLINE_PAYMENTS_OVERVIEW = "report.headline.payments.overview"; - public static final String REPORT_SUM_TOTAL = "report.sum.total"; - public static final String REPORT_SUM = "report.sum"; - public static final String REPORT_FOOTER_LEFT = "report.footer.left"; - public static final String REPORT_FOOTER_CENTER = "report.footer.center"; - public static final String REPORT_REPEATING_YES ="report.repeating.yes"; - public static final String REPORT_REPEATING_NO ="report.repeating.no"; - public static final String REPORT_INITIAL_FILENAME ="report.initial.filename"; - public static final String REPORT_BUDGET = "report.budget"; - public static final String REPORT_INCOMES = "report.incomes"; - public static final String REPORT_PAYMENTS = "report.payments"; - public static final String REPORT_BUDGET_REST = "report.budget.rest"; - - //MONTH_NAMES - public static final String MONTH_JANUARY ="month.january"; - public static final String MONTH_FEBRUARY ="month.february"; - public static final String MONTH_MARCH ="month.march"; - public static final String MONTH_APRIL ="month.april"; - public static final String MONTH_MAY ="month.may"; - public static final String MONTH_JUNE ="month.june"; - public static final String MONTH_JULY ="month.july"; - public static final String MONTH_AUGUST ="month.august"; - public static final String MONTH_SEPTEMBER ="month.september"; - public static final String MONTH_OCTOBER ="month.october"; - public static final String MONTH_NOVEMBER ="month.november"; - public static final String MONTH_DECEMBER ="month.december"; - - //NOTIFICATION - public static final String NOTIFICATION_CHART_EXPORT = "notification.chart.export"; - public static final String NOTIFICATION_REPORT_SAVE = "notification.report.save"; - public static final String NOTIFICATION_SETTINGS_SAVE = "notification.settings.save"; - public static final String NOTIFICATION_NO_UPDATE_AVAILABLE = "notification.no.update.available"; - - //INFO - public static final String INFO_TITLE_CATEGORY_DELETE = "info.title.category.delete"; - public static final String INFO_TEXT_CATEGORY_DELETE = "info.text.category.delete"; - public static final String INFO_TITLE_PAYMENT_DELETE = "info.title.payment.delete"; - public static final String INFO_TEXT_PAYMENT_DELETE = "info.text.payment.delete"; - public static final String INFO_TEXT_PAYMENT_REPEATING_DELETE = "info.text.payment.repeating.delete"; - public static final String INFO_TEXT_PAYMENT_REPEATING_DELETE_ALL = "info.text.payment.repeating.delete.all"; - public static final String INFO_TEXT_PAYMENT_REPEATING_DELETE_FUTURES = "info.text.payment.repeating.delete.futures"; - public static final String INFO_FIRST_START = "info.first.start"; - public static final String INFO_TITLE_CHART_EXPORT = "info.title.chart.export"; - public static final String INFO_TEXT_CHART_EXPORT = "info.text.chart.export"; - public static final String INFO_TEXT_CHART_EXPORT_OPEN_FOLDER = "info.text.chart.export.open.folder"; - public static final String INFO_TEXT_CHART_EXPORT_OPEN_CHART = "info.text.chart.export.open.chart"; - public static final String INFO_TITLE_REPORT_SAVE = "info.title.report.save"; - public static final String INFO_TEXT_REPORT_SAVE = "info.text.report.save"; - public static final String INFO_TEXT_REPORT_SAVE_OPEN_FOLDER = "info.text.report.save.open.folder"; - public static final String INFO_TEXT_REPORT_SAVE_OPEN_REPORT = "info.text.report.save.open.report"; - public static final String INFO_TITLE_DATABASE_EXPORT = "info.title.database.export"; - public static final String INFO_TEXT_DATABASE_EXPORT = "info.text.database.export"; - public static final String INFO_TITLE_DATABASE_IMPORT = "info.title.database.import"; - public static final String INFO_TEXT_DATABASE_IMPORT = "info.text.database.import"; - public static final String INFO_TITLE_DATABASE_IMPORT_DIALOG = "info.title.database.import.dialog"; - public static final String INFO_TEXT_DATABASE_IMPORT_DIALOG = "info.text.database.import.dialog"; - public static final String INFO_TEXT_DATABASE_IMPORT_DIALOG_DELETE = "info.text.database.import.dialog.delete"; - public static final String INFO_TEXT_DATABASE_IMPORT_DIALOG_APPEND = "info.text.database.import.dialog.append"; - public static final String INFO_TITLE_DATABASE_DELETE = "info.title.database.delete"; - public static final String INFO_HEADER_TEXT_DATABASE_DELETE = "info.header.text.database.delete"; - public static final String INFO_TEXT_DATABASE_DELETE = "info.text.database.delete"; - public static final String INFO_TITLE_WELCOME = "info.title.welcome"; - public static final String INFO_HEADER_TEXT_WELCOME = "info.header.text.welcome"; - public static final String INFO_TEXT_WELCOME_FIRST_START = "info.text.welcome.first.start"; - public static final String INFO_TEXT_WELCOME_COMPATIBILITY = "info.text.welcome.compatibility"; - public static final String INFO_TITLE_LANGUAGE_CHANGED = "info.title.language.changed"; - public static final String INFO_TEXT_LANGUAGE_CHANGED = "info.text.language.changed"; - public static final String INFO_TEXT_LANGUAGE_CHANGED_RESTART_NOW = "info.text.language.changed.restart.now"; - public static final String INFO_TEXT_LANGUAGE_CHANGED_RESTART_LATER = "info.text.language.changed.restart.later"; - public static final String INFO_TITLE_UPDATE_AVAILABLE = "info.title.update.available"; - public static final String INFO_TEXT_UPDATE_AVAILABLE = "info.text.update.available"; - public static final String INFO_TEXT_UPDATE_AVAILABLE_SHOW_CHANGES = "info.text.update.available.show.changes"; - public static final String INFO_TEXT_UPDATE_AVAILABLE_SHOW_CHANGES_DETAILED = "info.text.update.available.show.changes.detailed"; - public static final String INFO_TEXT_UPDATE_AVAILABLE_NOW = "info.text.update.available.now"; - public static final String INFO_TITLE_START_AFTER_UPDATE = "info.title.start.after.update"; - public static final String INFO_HEADER_TEXT_START_AFTER_UPDATE = "info.header.text.start.after.update"; - public static final String INFO_TEXT_START_AFTER_UPDATE = "info.text.start.after.update"; - public static final String INFO_TAGS = "info.tags"; - public static final String INFO_TITLE_SHUTDOWN = "info.title.shutdown"; - public static final String INFO_TEXT_SHUTDOWN = "info.text.shutdown"; - - //WARNING - public static final String WARNING_ENDDATE_BEFORE_STARTDATE = "warning.enddate.before.startdate"; - public static final String WARNING_EMPTY_WIDTH_IN_PIXELS = "warning.empty.width.in.pixels"; - public static final String WARNING_INTEGER_WIDTH_IN_PIXELS = "warning.integer.width.in.pixels"; - public static final String WARNING_EMPTY_HEIGHT_IN_PIXELS = "warning.empty.height.in.pixels"; - public static final String WARNING_INTEGER_HEIGHT_IN_PIXELS = "warning.integer.height.in.pixels"; - public static final String WARNING_EMPTY_SAVEPATH_CHART = "warning.empty.savepath.chart"; - public static final String WARNING_EMPTY_CATEGORY_NAME = "warning.empty.category.name"; - public static final String WARNING_EMPTY_PAYMENT_NAME = "warning.empty.payment.name"; - public static final String WARNING_NAME_CHARACTER_LIMIT_REACHED_45 = "warning.name.character.limit.reached.45"; - public static final String WARNING_NAME_CHARACTER_LIMIT_REACHED_150 = "warning.name.character.limit.reached.150"; - public static final String WARNING_DESCRIPTION_CHARACTER_LIMIT_REACHED_150 = "warning.description.character.limit.reached.150"; - public static final String WARNING_TAG_CHARACTER_LIMIT_REACHED_45 = "warning.tag.character.limit.reached.45"; - public static final String WARNING_PAYMENT_AMOUNT = "warning.payment.amount"; - public static final String WARNING_EMPTY_PAYMENT_DATE = "warning.empty.payment.date"; - public static final String WARNING_PAYMENT_REPEATING = "warning.payment.repeating"; - public static final String WARNING_EMPTY_SECRET_CLIENT = "warning.empty.secret.client"; - public static final String WARNING_EMPTY_URL = "warning.empty.url"; - public static final String WARNING_EMPTY_SECRET_SERVER = "warning.empty.secret.server"; - public static final String WARNING_EMPTY_CURRENCY = "warning.empty.currency"; - public static final String WARNING_WRONG_VERIFICATION_CODE = "warning.wrong.verificationcode"; - public static final String WARNING_EMPTY_PASSWORD = "warning.empty.password"; - public static final String WARNING_WRONG_PASSWORD = "warning.wrong.password"; - public static final String WARNING_SERVER_VERSION = "warning.server.version"; - public static final String WARNING_EMPTY_YEAR = "warning.empty.year"; - public static final String WARNING_WRONG_YEAR = "warning.wrong.year"; - - //ERROR - public static final String ERROR_UNKNOWN_HOST = "error.unknown.host"; - public static final String ERROR_UNKNOWN_ERROR = "error.unknown.error"; - public static final String ERROR_CONNECTION_REFUSED = "error.connection.refused"; - public static final String ERROR_HTTPS_HOSTNAME_WRONG = "error.https.hostname.wrong"; - public static final String ERROR_400 = "error.400"; - public static final String ERROR_401 = "error.401"; - public static final String ERROR_500 = "error.500"; - public static final String ERROR_CREATE_UI = "error.create.ui"; - public static final String ERROR_SERVER_CONNECTION = "error.server.connection"; - public static final String ERROR_SERVER_CONNECTION_WITH_DETAILS = "error.server.connection.with.details"; - public static final String ERROR_OPEN_FOLDER = "error.open.folder"; - public static final String ERROR_OPEN_CHART = "error.open.chart"; - public static final String ERROR_OPEN_REPORT = "error.open.report"; - public static final String ERROR_CHART_EXPORT = "error.chart.export"; - public static final String ERROR_REPORT_SAVE = "error.report.save"; - public static final String ERROR_SETTINGS_SAVE = "error.settings.save"; - public static final String ERROR_DATABASE_IMPORT = "error.database.import"; - public static final String ERROR_DATABASE_IMPORT_WRONG_FILE = "error.database.import.wrong.file"; - public static final String ERROR_PASSWORD_SAVE = "error.password.save"; - public static final String ERROR_UPDATER_GET_LATEST_VERSION = "error.updater.get.latest.version"; - public static final String ERROR_UPDATER_DOWNLOAD_LATEST_VERSION = "error.updater.download.latest.version"; - public static final String ERROR_OPEN_BROWSER = "error.open.browser"; - public static final String ERROR_LOCAL_SERVER_START = "error.local.server.start"; - public static final String ERROR_LOCAL_SERVER_DOWNLOAD = "error.local.server.download"; - - //ABOUT - public static final String ABOUT = "about"; - public static final String ABOUT_ROADMAP_LINK = "about.roadmap.link"; - public static final String ABOUT_VERSION = "about.version"; - public static final String ABOUT_DATE = "about.date"; - public static final String ABOUT_AUTHOR = "about.author"; - public static final String ABOUT_ROADMAP = "about.roadmap"; - public static final String ABOUT_SOURCECODE = "about.sourcecode"; - public static final String ABOUT_CREDITS = "about.credits"; -} \ No newline at end of file diff --git a/BudgetMasterServer/.classpath b/BudgetMasterServer/.classpath deleted file mode 100644 index 8e795b1c7e0c65a33e55e6a4fe23c4a11dd9e703..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/.classpath +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" output="target/classes" path="src/main/java"> - <attributes> - <attribute name="optional" value="true"/> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="src" output="target/test-classes" path="src/test/java"> - <attributes> - <attribute name="optional" value="true"/> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> - <attributes> - <attribute name="maven.pomderived" value="true"/> - </attributes> - </classpathentry> - <classpathentry kind="output" path="target/classes"/> -</classpath> diff --git a/BudgetMasterServer/.project b/BudgetMasterServer/.project deleted file mode 100644 index 3af6b4d3f9ec19391adbd671158bdb0a3019a56e..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/.project +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>BudgetMasterServer</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.m2e.core.maven2Builder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - <nature>org.eclipse.m2e.core.maven2Nature</nature> - </natures> -</projectDescription> diff --git a/BudgetMasterServer/.settings/org.eclipse.jdt.core.prefs b/BudgetMasterServer/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 714351aec195a9a572640e6844dcafd51565a2a5..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,5 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/BudgetMasterServer/.settings/org.eclipse.m2e.core.prefs b/BudgetMasterServer/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f1cb2389f85fe6381425d29f0a9866fb65..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/BudgetMasterServer/pom.xml b/BudgetMasterServer/pom.xml deleted file mode 100644 index b3a9bffdae599cd06b11cba02255e73b622bf952..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/pom.xml +++ /dev/null @@ -1,95 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>de.deadlocker8</groupId> - <artifactId>BudgetMasterServer</artifactId> - <version>1.8.0</version> - <name>BudgetMasterServer</name> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.7.0</version> - <configuration> - <source>1.8</source> - <target>1.8</target> - </configuration> - </plugin> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <outputDirectory>../build/${project.version}</outputDirectory> - <finalName>BudgetMasterServer-v${project.version}</finalName> - <appendAssemblyId>false</appendAssemblyId> - <archive> - <manifest> - <mainClass>de.deadlocker8.budgetmasterserver.main.Main</mainClass> - </manifest> - </archive> - <descriptorRefs> - <descriptorRef>jar-with-dependencies</descriptorRef> - </descriptorRefs> - </configuration> - <executions> - <execution> - <id>make-assembly</id> <!-- this is used for inheritance merges --> - <phase>package</phase> <!-- bind to the packaging phase --> - <goals> - <goal>single</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - - <dependencies> - <dependency> - <groupId>com.sparkjava</groupId> - <artifactId>spark-core</artifactId> - <version>2.5.4</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-simple</artifactId> - <version>1.7.21</version> - </dependency> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - <version>2.8.1</version> - </dependency> - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - <version>6.0.5</version> - </dependency> - <dependency> - <groupId>joda-time</groupId> - <artifactId>joda-time</artifactId> - <version>2.9.7</version> - </dependency> - <dependency> - <groupId>de.deadlocker8</groupId> - <artifactId>tools</artifactId> - <version>1.0.0</version> - </dependency> - <dependency> - <groupId>de.deadlocker8</groupId> - <artifactId>BudgetMasterCore</artifactId> - <version>0.0.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.12</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.xerial</groupId> - <artifactId>sqlite-jdbc</artifactId> - <version>3.21.0</version> - </dependency> - </dependencies> -</project> \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/AdvancedRoute.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/AdvancedRoute.java deleted file mode 100644 index 898188ab93f524f557a02a756856f7d5007f7092..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/AdvancedRoute.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic; - -import spark.Request; -import spark.Response; -import spark.Route; - -public interface AdvancedRoute extends Route -{ - void before(); - Object handleRequest(Request req, Response res); - void after(); - default Object handle(Request request, Response response) throws Exception - { - before(); - Object value = handleRequest(request, response); - after(); - return value; - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Settings.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Settings.java deleted file mode 100644 index fe2227c3fe6bd06b27b41d149dd45cee50d04ffc..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Settings.java +++ /dev/null @@ -1,204 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic; - -public class Settings -{ - private String databaseType; - private String databaseUrl; - private String databaseName; - private String databaseUsername; - private String databasePassword; - private int serverPort; - private String serverSecret; - private String keystorePath; - private String keystorePassword; - - public Settings() - { - - } - - public String getDatabaseType() - { - return databaseType; - } - - public void setDatabaseType(String databaseType) - { - this.databaseType = databaseType; - } - - public String getDatabaseUrl() - { - return databaseUrl; - } - - public void setDatabaseUrl(String databaseUrl) - { - this.databaseUrl = databaseUrl; - } - - public String getDatabaseName() - { - return databaseName; - } - - public void setDatabaseName(String databaseName) - { - this.databaseName = databaseName; - } - - public String getDatabaseUsername() - { - return databaseUsername; - } - - public void setDatabaseUsername(String databaseUsername) - { - this.databaseUsername = databaseUsername; - } - - public String getDatabasePassword() - { - return databasePassword; - } - - public void setDatabasePassword(String databasePassword) - { - this.databasePassword = databasePassword; - } - - public int getServerPort() - { - return serverPort; - } - - public void setServerPort(int serverPort) - { - this.serverPort = serverPort; - } - - public String getServerSecret() - { - return serverSecret; - } - - public void setServerSecret(String serverSecret) - { - this.serverSecret = serverSecret; - } - - public String getKeystorePath() - { - return keystorePath; - } - - public void setKeystorePath(String keystorePath) - { - this.keystorePath = keystorePath; - } - - public String getKeystorePassword() - { - return keystorePassword; - } - - public void setKeystorePassword(String keystorePassword) - { - this.keystorePassword = keystorePassword; - } - - @Override - public String toString() - { - return "Settings [databaseType=" + databaseType + ", databaseUrl=" + databaseUrl + ", databaseName=" + databaseName + ", databaseUsername=" + databaseUsername + ", databasePassword=" + databasePassword + ", serverPort=" + serverPort + ", serverSecret=" + serverSecret + ", keystorePath=" - + keystorePath + ", keystorePassword=" + keystorePassword + "]"; - } - - @Override - public int hashCode() - { - final int prime = 31; - int result = 1; - result = prime * result + ((databaseName == null) ? 0 : databaseName.hashCode()); - result = prime * result + ((databasePassword == null) ? 0 : databasePassword.hashCode()); - result = prime * result + ((databaseType == null) ? 0 : databaseType.hashCode()); - result = prime * result + ((databaseUrl == null) ? 0 : databaseUrl.hashCode()); - result = prime * result + ((databaseUsername == null) ? 0 : databaseUsername.hashCode()); - result = prime * result + ((keystorePassword == null) ? 0 : keystorePassword.hashCode()); - result = prime * result + ((keystorePath == null) ? 0 : keystorePath.hashCode()); - result = prime * result + serverPort; - result = prime * result + ((serverSecret == null) ? 0 : serverSecret.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) - { - if(this == obj) - return true; - if(obj == null) - return false; - if(getClass() != obj.getClass()) - return false; - Settings other = (Settings)obj; - if(databaseName == null) - { - if(other.databaseName != null) - return false; - } - else if(!databaseName.equals(other.databaseName)) - return false; - if(databasePassword == null) - { - if(other.databasePassword != null) - return false; - } - else if(!databasePassword.equals(other.databasePassword)) - return false; - if(databaseType == null) - { - if(other.databaseType != null) - return false; - } - else if(!databaseType.equals(other.databaseType)) - return false; - if(databaseUrl == null) - { - if(other.databaseUrl != null) - return false; - } - else if(!databaseUrl.equals(other.databaseUrl)) - return false; - if(databaseUsername == null) - { - if(other.databaseUsername != null) - return false; - } - else if(!databaseUsername.equals(other.databaseUsername)) - return false; - if(keystorePassword == null) - { - if(other.keystorePassword != null) - return false; - } - else if(!keystorePassword.equals(other.keystorePassword)) - return false; - if(keystorePath == null) - { - if(other.keystorePath != null) - return false; - } - else if(!keystorePath.equals(other.keystorePath)) - return false; - if(serverPort != other.serverPort) - return false; - if(serverSecret == null) - { - if(other.serverSecret != null) - return false; - } - else if(!serverSecret.equals(other.serverSecret)) - return false; - return true; - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Utils.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Utils.java deleted file mode 100644 index 0a0b2adabe7520255a6644b918521784883d103d..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Utils.java +++ /dev/null @@ -1,101 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic; - -import java.io.IOException; -import java.io.Writer; -import java.net.URISyntaxException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.creator.MysqlDatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.creator.SqliteDatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.handler.MysqlDatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.handler.SqliteDatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.MysqlDatabaseTagHandler; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.SqliteDatabaseTagHandler; - -public class Utils -{ - public static Settings loadSettings() throws IOException, URISyntaxException - { - String settingsJSON; - Settings settings; - - Gson gson = new Gson(); - - settingsJSON = new String(Files.readAllBytes(Paths.get(Settings.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParent().resolve("settings.json"))); - settings = gson.fromJson(settingsJSON, Settings.class); - return settings; - } - - public static void saveSettings(Settings settings) throws IOException, URISyntaxException - { - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - String jsonString = gson.toJson(settings); - Writer writer = Files.newBufferedWriter(Paths.get(Settings.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParent().resolve("settings.json")); - writer.write(jsonString); - writer.close(); - } - - public static Connection getDatabaseConnection(Settings settings) throws SQLException, ClassNotFoundException - { - Class.forName("org.sqlite.JDBC"); - - if(settings.getDatabaseType().equals("mysql")) - { - return DriverManager.getConnection("jdbc:mysql://" + settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin&autoReconnect=true&wait_timeout=86400", settings.getDatabaseUsername(), settings.getDatabasePassword()); - } - else - { - return DriverManager.getConnection("jdbc:sqlite://" + settings.getDatabaseUrl()); - } - } - - public static DatabaseCreator getDatabaseCreator(Connection connection, Settings settings) - { - if(settings.getDatabaseType().equals("mysql")) - { - return new MysqlDatabaseCreator(connection, settings); - } - else - { - return new SqliteDatabaseCreator(connection, settings); - } - } - - public static DatabaseHandler getDatabaseHandler(Settings settings) throws ClassNotFoundException - { - Class.forName("org.sqlite.JDBC"); - - if(settings.getDatabaseType().equals("mysql")) - { - return new MysqlDatabaseHandler(settings); - } - else - { - return new SqliteDatabaseHandler(settings); - } - } - - public static DatabaseTagHandler getDatabaseTagHandler(Settings settings) throws ClassNotFoundException - { - Class.forName("org.sqlite.JDBC"); - - if(settings.getDatabaseType().equals("mysql")) - { - return new MysqlDatabaseTagHandler(settings); - } - else - { - return new SqliteDatabaseTagHandler(settings); - } - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java deleted file mode 100644 index fb0dc3277e444078ec989a9d48910f2c60273a55..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java +++ /dev/null @@ -1,217 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic.database; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.database.Database; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmaster.logic.tag.TagMatch; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.Utils; -import logger.Logger; - -public class DatabaseExporter -{ - private Connection connection; - - public DatabaseExporter(Settings settings) throws IllegalStateException - { - try - { - this.connection = Utils.getDatabaseConnection(settings); - } - catch(Exception e) - { - Logger.error(e); - throw new IllegalStateException("Cannot connect the database!", e); - } - } - - public Database exportDatabase() - { - ArrayList<Category> categories = getAllCategories(); - ArrayList<NormalPayment> normalPayments = getAllNormalPayments(); - ArrayList<RepeatingPayment> repeatingPayments = getAllRepeatingPayments(); - ArrayList<Tag> tags = getAllTags(); - ArrayList<TagMatch> tagMatches = getAllTagMatches(); - - return new Database(categories, normalPayments, repeatingPayments, tags, tagMatches); - } - - private void closeConnection(Statement statement) - { - if(statement != null) - { - try - { - statement.close(); - } - catch(SQLException e) - { - } - } - } - - private ArrayList<Category> getAllCategories() - { - PreparedStatement stmt = null; - ArrayList<Category> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM category ORDER BY category.ID"); - ResultSet rs = stmt.executeQuery(); - while(rs.next()) - { - int id = rs.getInt("ID"); - String name = rs.getString("Name"); - String color = rs.getString("Color"); - - results.add(new Category(id, name, color)); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeConnection(stmt); - } - - return results; - } - - private ArrayList<NormalPayment> getAllNormalPayments() - { - PreparedStatement stmt = null; - ArrayList<NormalPayment> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM payment;"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - String description = rs.getString("Description"); - - results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeConnection(stmt); - } - - return results; - } - - private ArrayList<RepeatingPayment> getAllRepeatingPayments() - { - PreparedStatement stmt = null; - ArrayList<RepeatingPayment> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM repeating_payment;"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - String description = rs.getString("Description"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - int repeatInterval = rs.getInt("RepeatInterval"); - String repeatEndDate = rs.getString("RepeatEndDate"); - int repeatMonthDay = rs.getInt("RepeatMonthDay"); - - results.add(new RepeatingPayment(resultID, amount, date, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay)); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeConnection(stmt); - } - - return results; - } - - private ArrayList<Tag> getAllTags() - { - PreparedStatement stmt = null; - ArrayList<Tag> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM tag;"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - - results.add(new Tag(resultID, name)); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeConnection(stmt); - } - - return results; - } - - private ArrayList<TagMatch> getAllTagMatches() - { - PreparedStatement stmt = null; - ArrayList<TagMatch> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM tag_match;"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int tagID = rs.getInt("Tag_ID"); - int paymentID = rs.getInt("Payment_ID"); - int repeatingPaymentID = rs.getInt("RepeatingPayment_ID"); - results.add(new TagMatch(tagID, paymentID, repeatingPaymentID)); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeConnection(stmt); - } - - return results; - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImporter.java deleted file mode 100644 index 091440c113937302906d18ecb2144da6c15f8cf7..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImporter.java +++ /dev/null @@ -1,236 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic.database; - -import java.util.ArrayList; -import java.util.Iterator; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.database.Database; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmaster.logic.tag.TagMatch; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; - -public class DatabaseImporter -{ - private DatabaseHandler handler; - private DatabaseTagHandler tagHandler; - private ArrayList<Category> categories; - private ArrayList<NormalPayment> normalPayments; - private ArrayList<RepeatingPayment> repeatingPayments; - private ArrayList<NormalPayment> changedNormalPayments; - private ArrayList<RepeatingPayment> changedRepeatingPayments; - private ArrayList<Tag> tags; - private ArrayList<TagMatch> tagMatches; - private ArrayList<TagMatch> changedTagMatches; - - public DatabaseImporter(DatabaseHandler handler, DatabaseTagHandler tagHandler) throws IllegalStateException - { - this.handler = handler; - this.tagHandler = tagHandler; - } - - public void importDatabase(Database database) - { - this.categories = database.getCategories(); - this.normalPayments = database.getNormalPayments(); - this.repeatingPayments = database.getRepeatingPayments(); - this.changedNormalPayments = new ArrayList<>(); - this.changedRepeatingPayments = new ArrayList<>(); - this.tags = database.getTags(); - this.tagMatches = database.getTagMatches(); - this.changedTagMatches = new ArrayList<>(); - - importAll(); - } - - private void importAll() - { - for(Category currentCategory : categories) - { - if(currentCategory.getID() == 1 || currentCategory.getID() == 2) - { - continue; - } - - Category existingCategory = handler.getCategory(currentCategory.getName(), currentCategory.getColor()); - if(existingCategory == null) - { - handler.addCategory(currentCategory.getName(), currentCategory.getColor()); - int newID = handler.getLastInsertID(); - - updatePayments(currentCategory.getID(), newID); - } - else - { - updatePayments(currentCategory.getID(), existingCategory.getID()); - } - } - - //merge changed and remaining payments - normalPayments.addAll(changedNormalPayments); - repeatingPayments.addAll(changedRepeatingPayments); - - importNormalPayments(normalPayments); - tagMatches.addAll(changedTagMatches); - changedTagMatches = new ArrayList<>(); - - importRepeatingPayments(repeatingPayments); - tagMatches.addAll(changedTagMatches); - changedTagMatches = new ArrayList<>(); - - // import tags - for(Tag currentTag : tags) - { - int tagID = currentTag.getID(); - - Tag existingTag = tagHandler.getTagByName(currentTag.getName()); - if(existingTag == null) - { - tagHandler.addTag(currentTag.getName()); - int newID = tagHandler.getLastInsertID(); - - updateTagMatchesByTagID(tagID, newID); - } - else - { - updateTagMatchesByTagID(tagID, existingTag.getID()); - } - } - - tagMatches.addAll(changedTagMatches); - importTagMatches(tagMatches); - } - - private void updatePayments(int oldID, int newID) - { - //check normal payments for old category ID - Iterator<NormalPayment> iterator = normalPayments.iterator(); - while(iterator.hasNext()) - { - NormalPayment currentPayment = iterator.next(); - if(currentPayment.getCategoryID() == oldID) - { - currentPayment.setCategoryID(newID); - /* - * remove payment from payments list to avoid overriding category ID again on future calls of this method - * e.g.: call 1 = replace ID 2 with 3 - * call 2 = replace ID 3 with 4 - * --> would replace category IDs in payments where category ID has already been replaced - * --> would lead to wrong import - * --> remove payment from list but add to "changedPayments" in order not to loose the payment completely - * --> remaining payments in list and all payments from "changedPayments" will be merged after all categories are imported - */ - changedNormalPayments.add(currentPayment); - iterator.remove(); - } - } - - //check repeating payments for old category ID - Iterator<RepeatingPayment> iterator2 = repeatingPayments.iterator(); - while(iterator2.hasNext()) - { - RepeatingPayment currentPayment = iterator2.next(); - if(currentPayment.getCategoryID() == oldID) - { - currentPayment.setCategoryID(newID); - /* - * see explanation in NormalPayments loop - */ - changedRepeatingPayments.add(currentPayment); - iterator2.remove(); - } - } - } - - private void importNormalPayments(ArrayList<NormalPayment> normalPayments) - { - for(NormalPayment currentPayment : normalPayments) - { - int newID = handler.addNormalPayment(currentPayment.getAmount(), currentPayment.getDate(), currentPayment.getCategoryID(), currentPayment.getName(), currentPayment.getDescription()); - updateTagMatchesByPaymentID(currentPayment.getID(), newID); - } - } - - private void importRepeatingPayments(ArrayList<RepeatingPayment> repeatingPayments) - { - for(RepeatingPayment currentPayment : repeatingPayments) - { - int newID = handler.addRepeatingPayment(currentPayment.getAmount(), currentPayment.getDate(), currentPayment.getCategoryID(), currentPayment.getName(), currentPayment.getDescription(), currentPayment.getRepeatInterval(), currentPayment.getRepeatEndDate(), currentPayment.getRepeatMonthDay()); - updateTagMatchesByRepeatingPaymentID(currentPayment.getID(), newID); - } - } - - private void updateTagMatchesByTagID(int oldID, int newID) - { - //check tag matches for old tag ID - Iterator<TagMatch> iterator = tagMatches.iterator(); - while(iterator.hasNext()) - { - TagMatch currentTagMatch = iterator.next(); - if(currentTagMatch.getTagID() == oldID) - { - currentTagMatch.setTagID(newID); - /* - * see explanation in updatePayments() - */ - changedTagMatches.add(currentTagMatch); - iterator.remove(); - } - } - } - - private void updateTagMatchesByPaymentID(int oldID, int newID) - { - //check tag matches for old payment ID - Iterator<TagMatch> iterator = tagMatches.iterator(); - while(iterator.hasNext()) - { - TagMatch currentTagMatch = iterator.next(); - if(currentTagMatch.getPaymentID() == oldID) - { - currentTagMatch.setPaymentID(newID); - /* - * see explanation in updatePayments() - */ - changedTagMatches.add(currentTagMatch); - iterator.remove(); - } - } - } - - private void updateTagMatchesByRepeatingPaymentID(int oldID, int newID) - { - //check tag matches for old payment ID - Iterator<TagMatch> iterator = tagMatches.iterator(); - while(iterator.hasNext()) - { - TagMatch currentTagMatch = iterator.next(); - if(currentTagMatch.getRepeatingPaymentID() == oldID) - { - currentTagMatch.setRepeatingPaymentID(newID); - /* - * see explanation in updatePayments() - */ - changedTagMatches.add(currentTagMatch); - iterator.remove(); - } - } - } - - private void importTagMatches(ArrayList<TagMatch> tagMatches) - { - for(TagMatch currentTagMatch : tagMatches) - { - if(currentTagMatch.getRepeatingPaymentID() == -1) - { - tagHandler.addTagMatchForPayment(currentTagMatch.getTagID(), currentTagMatch.getPaymentID()); - } - else - { - tagHandler.addTagMatchForRepeatingPayment(currentTagMatch.getTagID(), currentTagMatch.getRepeatingPaymentID()); - } - } - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/DatabaseCreator.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/DatabaseCreator.java deleted file mode 100644 index 2fef700c27eb32a763cc2c21fe02a9cbb43b501e..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/DatabaseCreator.java +++ /dev/null @@ -1,73 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic.database.creator; - -import java.sql.Connection; -import java.util.ArrayList; - -import de.deadlocker8.budgetmasterserver.logic.Settings; -import logger.Logger; - -public abstract class DatabaseCreator -{ - Connection connection; - Settings settings; - - public DatabaseCreator(Connection connection, Settings settings) - { - this.connection = connection; - this.settings = settings; - } - - public void createTables() - { - Logger.info("Checking tables..."); - createTables(getExistingTables()); - Logger.info("Checking tables [DONE]"); - } - - public abstract ArrayList<String> getExistingTables(); - - private void createTables(ArrayList<String> existingTables) - { - if(!existingTables.contains("category")) - { - createTableCategory(); - } - - if(!existingTables.contains("payment")) - { - createTablePayment(); - } - - if(!existingTables.contains("repeating_payment")) - { - createTableRepeatingPayment(); - } - - if(!existingTables.contains("repeating_entry")) - { - createTableRepeatingEntry(); - } - - if(!existingTables.contains("tag")) - { - createTableTag(); - } - - if(!existingTables.contains("tag_match")) - { - createTableTagMatch(); - } - } - - public abstract void createTableCategory(); - - public abstract void createTablePayment(); - - public abstract void createTableRepeatingEntry(); - - public abstract void createTableRepeatingPayment(); - - public abstract void createTableTag(); - - public abstract void createTableTagMatch(); -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/MysqlDatabaseCreator.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/MysqlDatabaseCreator.java deleted file mode 100644 index 7c73373c7df95cf01e5c68955f9d843e85ff33ae..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/MysqlDatabaseCreator.java +++ /dev/null @@ -1,280 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic.database.creator; - -import java.sql.Connection; -import java.sql.DatabaseMetaData; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -import de.deadlocker8.budgetmasterserver.logic.Settings; -import logger.Logger; - -public class MysqlDatabaseCreator extends DatabaseCreator -{ - public MysqlDatabaseCreator(Connection connection, Settings settings) - { - super(connection, settings); - } - - @Override - public ArrayList<String> getExistingTables() - { - ArrayList<String> tables = new ArrayList<>(); - try - { - DatabaseMetaData meta = connection.getMetaData(); - ResultSet res = meta.getTables(settings.getDatabaseName(), null, "", new String[] { "TABLE" }); - while(res.next()) - { - tables.add(res.getString("TABLE_NAME")); - } - } - catch(Exception e) - { - Logger.error(e); - } - return tables; - } - - @Override - public void createTableCategory() - { - Statement stmt = null; - String query = "CREATE TABLE `category` (`ID` int(11) NOT NULL COMMENT 'ID'," + - " `Name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'category name'," + - "`Color` text COLLATE utf8_unicode_ci NOT NULL COMMENT 'color hexcode'" + - ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"; - String query2 = "INSERT INTO `category` (`ID`, `Name`, `Color`) VALUES(1, 'NONE', '#FFFFFF'),(2, 'Übertrag', '#FFFF00');"; - String query3 = "ALTER TABLE `category` ADD PRIMARY KEY (`ID`);"; - String query4 = "ALTER TABLE `category` MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', AUTO_INCREMENT=3;"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - stmt.execute(query2); - stmt.execute(query3); - stmt.execute(query4); - Logger.info("Successfully created table category"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } - - @Override - public void createTablePayment() - { - Statement stmt = null; - String query = "CREATE TABLE `payment` (" + - "`ID` int(11) NOT NULL COMMENT 'ID'," + - "`Name` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'payment name (description)'," + - "`CategoryID` int(11) DEFAULT NULL COMMENT 'category ID'," + - "`Amount` int(11) DEFAULT NULL COMMENT 'amount in cents'," + - "`Date` date DEFAULT NULL COMMENT 'payment date'," + - "`Description` varchar(150) DEFAULT NULL COMMENT 'optional description'" + - ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"; - String query2 = "ALTER TABLE `payment` ADD PRIMARY KEY (`ID`);"; - String query3 = "ALTER TABLE `payment` MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID';"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - stmt.execute(query2); - stmt.execute(query3); - Logger.info("Successfully created table payment"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } - - @Override - public void createTableRepeatingEntry() - { - Statement stmt = null; - String query = "CREATE TABLE `repeating_entry` (" + - "`ID` int(11) NOT NULL," + - "`RepeatingPaymentID` int(11) NOT NULL," + - "`Date` date NOT NULL" + - ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"; - String query2 = "ALTER TABLE `repeating_entry` ADD PRIMARY KEY (`ID`), ADD KEY `RepeatingPaymentID` (`RepeatingPaymentID`);"; - String query3 = "ALTER TABLE `repeating_entry` MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID';"; - String query4 = "ALTER TABLE `repeating_entry` ADD CONSTRAINT `constraint_1` FOREIGN KEY (`RepeatingPaymentID`) REFERENCES `repeating_payment` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE;"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - stmt.execute(query2); - stmt.execute(query3); - stmt.execute(query4); - Logger.info("Successfully created table repeating_entry"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } - - @Override - public void createTableRepeatingPayment() - { - Statement stmt = null; - String query = "CREATE TABLE `repeating_payment` (" + - "`ID` int(11) NOT NULL COMMENT 'ID'," + - "`Name` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'payment name (description)'," + - "`CategoryID` int(11) DEFAULT NULL COMMENT 'category ID'," + - "`Amount` int(11) DEFAULT NULL COMMENT 'amount in cents'," + - "`Date` date DEFAULT NULL COMMENT 'payment date'," + - "`Description` varchar(150) DEFAULT NULL COMMENT 'optional description'," + - "`RepeatInterval` int(11) DEFAULT NULL COMMENT 'repeat interval in days'," + - "`RepeatEndDate` date DEFAULT NULL COMMENT 'repeat end date'," + - "`RepeatMonthDay` int(11) DEFAULT NULL COMMENT 'day in month on which payment repeats'" + - ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"; - String query2 = "ALTER TABLE `repeating_payment` ADD PRIMARY KEY (`ID`);"; - String query3 = "ALTER TABLE `repeating_payment` MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID';"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - stmt.execute(query2); - stmt.execute(query3); - Logger.info("Successfully created table repeating_payment"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } - - @Override - public void createTableTag() - { - Statement stmt = null; - String query = "CREATE TABLE `tag` (`ID` int(11) NOT NULL COMMENT 'ID'," + - " `Name` varchar(45) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Name'" + - ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"; - String query2 = "ALTER TABLE `tag` ADD PRIMARY KEY (`ID`);"; - String query3 = "ALTER TABLE `tag` MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID';"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - stmt.execute(query2); - stmt.execute(query3); - Logger.info("Successfully created table tag"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } - - @Override - public void createTableTagMatch() - { - Statement stmt = null; - String query = "CREATE TABLE `tag_match` (`Tag_ID` int(11) NOT NULL," + - "`Payment_ID` int(11) NOT NULL," + - "`RepeatingPayment_ID` int(11) NOT NULL" + - ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"; - String query2 = "ALTER TABLE `tag_match` ADD KEY `Tag_ID` (`Tag_ID`), ADD KEY `Payment_ID` (`Payment_ID`), ADD KEY `RepeatingPayment_ID` (`RepeatingPayment_ID`);"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - stmt.execute(query2); - Logger.info("Successfully created table tag_match"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/SqliteDatabaseCreator.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/SqliteDatabaseCreator.java deleted file mode 100644 index 0e869e60c48b7fe9db3663fdbaa008acb4c1de1d..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/SqliteDatabaseCreator.java +++ /dev/null @@ -1,248 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic.database.creator; - -import java.sql.Connection; -import java.sql.DatabaseMetaData; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -import de.deadlocker8.budgetmasterserver.logic.Settings; -import logger.Logger; - -public class SqliteDatabaseCreator extends DatabaseCreator -{ - public SqliteDatabaseCreator(Connection connection, Settings settings) - { - super(connection, settings); - } - - @Override - public ArrayList<String> getExistingTables() - { - ArrayList<String> tables = new ArrayList<>(); - try - { - DatabaseMetaData meta = connection.getMetaData(); - ResultSet res = meta.getTables(settings.getDatabaseName(), null, "", new String[] { "TABLE" }); - while(res.next()) - { - tables.add(res.getString("TABLE_NAME")); - } - } - catch(Exception e) - { - Logger.error(e); - } - return tables; - } - - @Override - public void createTableCategory() - { - Statement stmt = null; - String query = "CREATE TABLE `category` (`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `Name` TEXT DEFAULT NULL, `Color` TEXT NOT NULL);"; - String query2 = "INSERT INTO `category` (`ID`, `Name`, `Color`) VALUES(1, 'NONE', '#FFFFFF'),(2, 'Übertrag', '#FFFF00');"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - stmt.execute(query2); - Logger.info("Successfully created table category"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } - - @Override - public void createTablePayment() - { - Statement stmt = null; - String query = "CREATE TABLE `payment` (" + - "`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," + - "`Name` TEXT DEFAULT NULL," + - "`CategoryID` INTEGER DEFAULT NULL," + - "`Amount` INTEGER DEFAULT NULL," + - "`Date` TEXT DEFAULT NULL," + - "`Description` TEXT DEFAULT NULL);"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - Logger.info("Successfully created table payment"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } - - @Override - public void createTableRepeatingEntry() - { - Statement stmt = null; - String query = "CREATE TABLE `repeating_entry` (" + - "`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," + - "`RepeatingPaymentID` INTEGER NOT NULL," + - "`Date` TEXT NOT NULL," + - "FOREIGN KEY (RepeatingPaymentID) REFERENCES repeating_payment(ID) ON DELETE CASCADE ON UPDATE CASCADE);"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - Logger.info("Successfully created table repeating_entry"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } - - @Override - public void createTableRepeatingPayment() - { - Statement stmt = null; - String query = "CREATE TABLE `repeating_payment` (\r\n" + - "`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\r\n" + - "`Name` TEXT DEFAULT NULL,\r\n" + - "`CategoryID` INTEGER DEFAULT NULL,\r\n" + - "`Amount` INTEGER DEFAULT NULL,\r\n" + - "`Date` TEXT DEFAULT NULL,\r\n" + - "`Description` TEXT DEFAULT NULL,\r\n" + - "`RepeatInterval` INTEGER DEFAULT NULL,\r\n" + - "`RepeatEndDate` TEXT DEFAULT NULL,\r\n" + - "`RepeatMonthDay` INTEGER DEFAULT NULL);"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - Logger.info("Successfully created table repeating_payment"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } - - @Override - public void createTableTag() - { - Statement stmt = null; - String query = "CREATE TABLE `tag` (`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `Name` TEXT NOT NULL);"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - Logger.info("Successfully created table tag"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } - - @Override - public void createTableTagMatch() - { - Statement stmt = null; - String query = "CREATE TABLE `tag_match` (`Tag_ID` INTEGER NOT NULL," + - "`Payment_ID` INTEGER NOT NULL," + - "`RepeatingPayment_ID` INTEGER NOT NULL);"; - - try - { - stmt = connection.createStatement(); - stmt.execute(query); - Logger.info("Successfully created table tag_match"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - if(stmt != null) - { - try - { - stmt.close(); - } - catch(SQLException e) - { - } - } - } - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/DatabaseHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/DatabaseHandler.java deleted file mode 100644 index d211841f2be15da2fe5a7391995fa01df568e8d3..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/DatabaseHandler.java +++ /dev/null @@ -1,829 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic.database.handler; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.payment.LatestRepeatingPayment; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.Utils; -import logger.Logger; - -public abstract class DatabaseHandler -{ - Connection connection; - Settings settings; - final DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd"); - - public DatabaseHandler(Settings settings) throws IllegalStateException - { - this.settings = settings; - } - - public void connect() - { - try - { - if(connection == null || connection.isClosed()) - { - connection = Utils.getDatabaseConnection(settings); - } - } - catch(Exception e) - { - Logger.error(e); - throw new IllegalStateException("Cannot connect the database!", e); - } - } - - public void closeConnection() - { - try - { - connection.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - } - - void closeStatement(Statement statement) - { - if(statement != null) - { - try - { - statement.close(); - } - catch(SQLException e) - { - } - } - } - - /* - * GET - */ - public abstract int getLastInsertID(); - - public DateTime getFirstNormalPaymentDate() - { - PreparedStatement stmt = null; - DateTime dateTime = null; - try - { - stmt = connection.prepareStatement("SELECT MIN(Date) as \"min\" FROM payment"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - String min = rs.getString("min"); - if(min == null) - { - dateTime = null; - } - else - { - dateTime = formatter.parseDateTime(rs.getString("min")); - } - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return dateTime; - } - - public DateTime getFirstRepeatingPaymentDate() - { - PreparedStatement stmt = null; - DateTime dateTime = null; - try - { - stmt = connection.prepareStatement("SELECT MIN(Date) as \"min\" FROM repeating_payment"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - String min = rs.getString("min"); - if(min == null) - { - dateTime = null; - } - else - { - dateTime = formatter.parseDateTime(rs.getString("min")); - } - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return dateTime; - } - - public int getRestForAllPreviousMonths(int year, int month) - { - DateTimeFormatter formatter = DateTimeFormat.forPattern("MM.yyyy"); - String dateString = String.valueOf(month) + "." + year; - DateTime currentDate = formatter.parseDateTime(dateString); - - DateTime firstNormalPaymentDate = getFirstNormalPaymentDate(); - if(firstNormalPaymentDate == null) - { - firstNormalPaymentDate = currentDate; - } - DateTime firstRepeatingPaymentDate = getFirstRepeatingPaymentDate(); - if(firstRepeatingPaymentDate == null) - { - firstRepeatingPaymentDate = currentDate; - } - - DateTime firstDate = firstNormalPaymentDate; - if(firstRepeatingPaymentDate.isBefore(firstNormalPaymentDate)) - { - firstDate = firstRepeatingPaymentDate; - } - - if(firstDate.isAfter(currentDate)) - { - return 0; - } - - int startYear = firstDate.getYear(); - int startMonth = firstDate.getMonthOfYear(); - int totalRest = 0; - - while(startYear < year || startMonth < month) - { - totalRest += getRest(startYear, startMonth); - - startMonth++; - if(startMonth > 12) - { - startMonth = 1; - startYear++; - } - } - return totalRest; - } - - public int getRest(int year, int month) - { - ArrayList<Payment> payments = new ArrayList<>(); - payments.addAll(getPayments(year, month)); - payments.addAll(getRepeatingPayments(year, month)); - - int rest = 0; - for(Payment currentPayment : payments) - { - rest += currentPayment.getAmount(); - } - - return rest; - } - - public ArrayList<Category> getCategories() - { - PreparedStatement stmt = null; - ArrayList<Category> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM category ORDER BY category.ID"); - ResultSet rs = stmt.executeQuery(); - while(rs.next()) - { - int id = rs.getInt("ID"); - String name = rs.getString("Name"); - String color = rs.getString("Color"); - - results.add(new Category(id, name, color)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - public Category getCategory(int ID) - { - PreparedStatement stmt = null; - Category result = null; - try - { - stmt = connection.prepareStatement("SELECT * FROM category WHERE category.ID = ?"); - stmt.setInt(1, ID); - ResultSet rs = stmt.executeQuery(); - while(rs.next()) - { - int id = rs.getInt("ID"); - String name = rs.getString("Name"); - String color = rs.getString("Color"); - - result = new Category(id, name, color); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return result; - } - - public Category getCategory(String name, String color) - { - PreparedStatement stmt = null; - Category result = null; - try - { - stmt = connection.prepareStatement("SELECT * FROM category WHERE category.name = ? AND category.color = ?;"); - stmt.setString(1, name); - stmt.setString(2, color); - - ResultSet rs = stmt.executeQuery(); - while(rs.next()) - { - int id = rs.getInt("ID"); - String categoryName = rs.getString("Name"); - String categoryColor = rs.getString("Color"); - - result = new Category(id, categoryName, categoryColor); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return result; - } - - public boolean categoryExists(int ID) - { - PreparedStatement stmt = null; - boolean exists = false; - try - { - stmt = connection.prepareStatement("SELECT COUNT(ID) as \"count\" FROM category WHERE category.ID = ?;"); - stmt.setInt(1, ID); - ResultSet rs = stmt.executeQuery(); - while(rs.next()) - { - if(rs.getInt("count") > 0) - { - exists = true; - } - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return exists; - } - - public NormalPayment getPayment(int ID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("SELECT * FROM payment WHERE payment.ID= ?;"); - stmt.setInt(1, ID); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - String description = rs.getString("Description"); - rs.close(); - return new NormalPayment(resultID, amount, date, categoryID, name, description); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return null; - } - - public ArrayList<NormalPayment> getAllNormalPayments() - { - PreparedStatement stmt = null; - - ArrayList<NormalPayment> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM payment;"); - - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - String description = rs.getString("Description"); - - results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - public abstract ArrayList<NormalPayment> getPayments(int year, int month); - - public abstract ArrayList<NormalPayment> getPaymentsBetween(String startDate, String endDate); - - public abstract ArrayList<RepeatingPaymentEntry> getRepeatingPayments(int year, int month); - - public abstract ArrayList<RepeatingPaymentEntry> getRepeatingPaymentsBetween(String startDate, String endDate); - - public ArrayList<RepeatingPayment> getAllRepeatingPayments() - { - PreparedStatement stmt = null; - - ArrayList<RepeatingPayment> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM repeating_payment;"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - String description = rs.getString("Description"); - int categoryID = rs.getInt("CategoryID"); - int repeatInterval = rs.getInt("RepeatInterval"); - String repeatEndDate = rs.getString("RepeatEndDate"); - int repeatMonthDay = rs.getInt("RepeatMonthDay"); - - results.add(new RepeatingPayment(resultID, amount, date, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - public ArrayList<LatestRepeatingPayment> getLatestRepeatingPaymentEntries() - { - PreparedStatement stmt = null; - - ArrayList<LatestRepeatingPayment> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT ID, RepeatingPaymentID, MAX(Date) as 'LastDate' FROM repeating_entry GROUP BY RepeatingPaymentID"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - int repeatingPaymentID = rs.getInt("repeatingPaymentID"); - String date = rs.getString("LastDate"); - - results.add(new LatestRepeatingPayment(resultID, repeatingPaymentID, date)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - public RepeatingPayment getRepeatingPayment(int ID) - { - PreparedStatement stmt = null; - RepeatingPayment result = null; - try - { - stmt = connection.prepareStatement("SELECT * FROM repeating_payment WHERE ID = ?;"); - stmt.setInt(1, ID); - ResultSet rs = stmt.executeQuery(); - while(rs.next()) - { - int id = rs.getInt("ID"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - String name = rs.getString("Name"); - String description = rs.getString("Description"); - int repeatInterval = rs.getInt("repeatInterval"); - String repeatEndDate = rs.getString("repeatEndDate"); - int repeatMonthDay = rs.getInt("repeatMonthDay"); - - result = new RepeatingPayment(id, amount, date, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return result; - } - - public int getNormalPaymentMaxAmount() - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("SELECT MAX(ABS(Amount)) as'max' FROM payment;"); ; - ResultSet rs = stmt.executeQuery(); - while(rs.next()) - { - int result = rs.getInt("max"); - rs.close(); - return result; - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return -1; - } - - public int getRepeatingPaymentMaxAmount() - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("SELECT MAX(ABS(Amount)) as'max' FROM repeating_payment;"); ; - ResultSet rs = stmt.executeQuery(); - while(rs.next()) - { - int result = rs.getInt("max"); - rs.close(); - return result; - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return -1; - } - - /* - * DELETE - */ - public void deleteCategory(int ID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("DELETE FROM category WHERE category.ID = ?;"); - stmt.setInt(1, ID); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public void deletePayment(int ID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("DELETE FROM payment WHERE payment.ID = ?;"); - stmt.setInt(1, ID); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public void deleteRepeatingPayment(int ID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("DELETE FROM repeating_payment WHERE repeating_payment.ID = ?;"); - stmt.setInt(1, ID); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public abstract void deleteDatabase(); - - /* - * ADD - */ - public void addCategory(String name, String color) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("INSERT INTO category (Name, Color) VALUES(?, ?);"); - stmt.setString(1, name); - stmt.setString(2, color); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public void importCategory(Category category) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("INSERT INTO category (ID, Name, Color) VALUES(?, ?, ?);"); - stmt.setInt(1, category.getID()); - stmt.setString(2, category.getName()); - stmt.setString(3, category.getColor()); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public Integer addNormalPayment(int amount, String date, int categoryID, String name, String description) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("INSERT INTO payment (Amount, Date, CategoryID, Name, Description) VALUES(?, ?, ?, ?, ?);", - Statement.RETURN_GENERATED_KEYS); - stmt.setInt(1, amount); - stmt.setString(2, date); - stmt.setInt(3, categoryID); - stmt.setString(4, name); - stmt.setString(5, description); - stmt.execute(); - - ResultSet rs = stmt.getGeneratedKeys(); - if(rs.next()) - { - int result = rs.getInt(1); - rs.close(); - return result; - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return -1; - } - - public Integer addRepeatingPayment(int amount, String date, int categoryID, String name, String description, int repeatInterval, String repeatEndDate, int repeatMonthDay) - { - PreparedStatement stmt = null; - String correctRepeatEndDate = repeatEndDate; - if(correctRepeatEndDate == null || correctRepeatEndDate.equals("A")) - { - correctRepeatEndDate = null; - } - - try - { - stmt = connection.prepareStatement("INSERT INTO repeating_payment (Amount, Date, CategoryID, Name, RepeatInterval, RepeatEndDate, RepeatMonthDay, Description) VALUES(?, ?, ?, ?, ?, ?, ?, ?);", - Statement.RETURN_GENERATED_KEYS); - stmt.setInt(1, amount); - stmt.setString(2, date); - stmt.setInt(3, categoryID); - stmt.setString(4, name); - stmt.setInt(5, repeatInterval); - stmt.setString(6, correctRepeatEndDate); - stmt.setInt(7, repeatMonthDay); - stmt.setString(8, description); - stmt.execute(); - - ResultSet rs = stmt.getGeneratedKeys(); - if(rs.next()) - { - int result = rs.getInt(1); - rs.close(); - return result; - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return -1; - } - - public void addRepeatingPaymentEntry(int repeatingPaymentID, String date) - { - PreparedStatement stmt = null; - - try - { - stmt = connection.prepareStatement("INSERT INTO repeating_entry (RepeatingPaymentID, Date) VALUES(?, ?);"); - stmt.setInt(1, repeatingPaymentID); - stmt.setString(2, date); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - /* - * UPDATE - */ - public void updateCategory(int ID, String name, String color) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("UPDATE category SET name=? , color=? WHERE ID = ?;"); - stmt.setString(1, name); - stmt.setString(2, color); - stmt.setInt(3, ID); - stmt.executeUpdate(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public void updateNormalPayment(int ID, int amount, String date, int categoryID, String name, String description) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("UPDATE payment SET amount=?, date=?, categoryID=?, name=?, description=? WHERE ID=?;"); - stmt.setInt(1, amount); - stmt.setString(2, date); - stmt.setInt(3, categoryID); - stmt.setString(4, name); - stmt.setString(5, description); - stmt.setInt(6, ID); - stmt.executeUpdate(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/MysqlDatabaseHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/MysqlDatabaseHandler.java deleted file mode 100644 index b2c8e92b994416230be328b23fa86e561bd684c2..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/MysqlDatabaseHandler.java +++ /dev/null @@ -1,247 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic.database.handler; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import logger.Logger; - -public class MysqlDatabaseHandler extends DatabaseHandler -{ - public MysqlDatabaseHandler(Settings settings) throws IllegalStateException - { - super(settings); - connect(); - } - - @Override - public int getLastInsertID() - { - PreparedStatement stmt = null; - int lastInsertID = 0; - try - { - stmt = connection.prepareStatement("SELECT LAST_INSERT_ID();"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - lastInsertID = rs.getInt("LAST_INSERT_ID()"); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return lastInsertID; - } - - @Override - public ArrayList<NormalPayment> getPayments(int year, int month) - { - PreparedStatement stmt = null; - - ArrayList<NormalPayment> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM payment WHERE YEAR(Date) = ? AND MONTH(Date) = ?;"); - stmt.setInt(1, year); - stmt.setInt(2, month); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - String description = rs.getString("Description"); - - results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - @Override - public ArrayList<RepeatingPaymentEntry> getRepeatingPayments(int year, int month) - { - PreparedStatement stmt = null; - - ArrayList<RepeatingPaymentEntry> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay, repeating_payment.Description FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND YEAR(repeating_entry.Date) = ? AND MONTH(repeating_entry.Date) = ?;"); - stmt.setInt(1, year); - stmt.setInt(2, month); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - int repeatingPaymentID = rs.getInt("repeatingPaymentID"); - String name = rs.getString("Name"); - String description = rs.getString("Description"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - int repeatInterval = rs.getInt("RepeatInterval"); - String repeatEndDate = rs.getString("RepeatEndDate"); - int repeatMonthDay = rs.getInt("RepeatMonthDay"); - - results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - @Override - public ArrayList<NormalPayment> getPaymentsBetween(String startDate, String endDate) - { - PreparedStatement stmt = null; - - ArrayList<NormalPayment> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM payment WHERE DATE(Date) BETWEEN ? AND ?;"); - stmt.setString(1, startDate); - stmt.setString(2, endDate); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - String description = rs.getString("Description"); - - results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - @Override - public ArrayList<RepeatingPaymentEntry> getRepeatingPaymentsBetween(String startDate, String endDate) - { - PreparedStatement stmt = null; - - ArrayList<RepeatingPaymentEntry> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay, repeating_payment.Description FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND DATE(repeating_entry.Date) BETWEEN ? AND ?;"); - stmt.setString(1, startDate); - stmt.setString(2, endDate); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - int repeatingPaymentID = rs.getInt("repeatingPaymentID"); - String name = rs.getString("Name"); - String description = rs.getString("Description"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - int repeatInterval = rs.getInt("RepeatInterval"); - String repeatEndDate = rs.getString("RepeatEndDate"); - int repeatMonthDay = rs.getInt("RepeatMonthDay"); - - results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description,repeatInterval, repeatEndDate, repeatMonthDay)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - @Override - public void deleteDatabase() - { - Statement stmt = null; - String tableCategory = "DROP TABLE IF EXISTS category;"; - String tablePayment = "DROP TABLE IF EXISTS payment;"; - String tableRepeatingPayment = "DROP TABLE IF EXISTS repeating_payment;"; - String tableRepeatingEntry = "DROP TABLE IF EXISTS repeating_entry;"; - String tableTag = "DROP TABLE IF EXISTS tag;"; - String tableTagMatch = "DROP TABLE IF EXISTS tag_match;"; - try - { - stmt = connection.createStatement(); - stmt.execute("SET FOREIGN_KEY_CHECKS = 0;"); - stmt.execute(tableCategory); - Logger.info("Deleted table: category"); - stmt.execute(tablePayment); - Logger.info("Deleted table: payment"); - stmt.execute(tableRepeatingPayment); - Logger.info("Deleted table: repeating_payment"); - stmt.execute(tableRepeatingEntry); - Logger.info("Deleted table: repeating_entry"); - stmt.execute(tableTag); - Logger.info("Deleted table: tag"); - stmt.execute(tableTagMatch); - Logger.info("Deleted table: tag_match"); - stmt.execute("SET FOREIGN_KEY_CHECKS = 1;"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/SqliteDatabaseHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/SqliteDatabaseHandler.java deleted file mode 100644 index 139b20dff3bcc44e08da074c40301cef425c1a93..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/SqliteDatabaseHandler.java +++ /dev/null @@ -1,245 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic.database.handler; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import logger.Logger; - -public class SqliteDatabaseHandler extends DatabaseHandler -{ - public SqliteDatabaseHandler(Settings settings) throws IllegalStateException - { - super(settings); - connect(); - } - - @Override - public int getLastInsertID() - { - PreparedStatement stmt = null; - int lastInsertID = 0; - try - { - stmt = connection.prepareStatement("SELECT last_insert_rowid() as `ID`"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - lastInsertID = rs.getInt("ID"); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return lastInsertID; - } - - @Override - public ArrayList<NormalPayment> getPayments(int year, int month) - { - PreparedStatement stmt = null; - - ArrayList<NormalPayment> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM payment WHERE strftime('%Y', Date) = ? AND strftime('%m', Date) = ?;"); - stmt.setString(1, String.format("%02d", year)); - stmt.setString(2, String.format("%02d", month)); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - String description = rs.getString("Description"); - - results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - @Override - public ArrayList<RepeatingPaymentEntry> getRepeatingPayments(int year, int month) - { - PreparedStatement stmt = null; - - ArrayList<RepeatingPaymentEntry> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay, repeating_payment.Description FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND strftime('%Y', repeating_entry.Date) = ? AND strftime('%m', repeating_entry.Date) = ?;"); - stmt.setString(1, String.format("%02d", year)); - stmt.setString(2, String.format("%02d", month)); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - int repeatingPaymentID = rs.getInt("repeatingPaymentID"); - String name = rs.getString("Name"); - String description = rs.getString("Description"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - int repeatInterval = rs.getInt("RepeatInterval"); - String repeatEndDate = rs.getString("RepeatEndDate"); - int repeatMonthDay = rs.getInt("RepeatMonthDay"); - - results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - @Override - public ArrayList<NormalPayment> getPaymentsBetween(String startDate, String endDate) - { - PreparedStatement stmt = null; - - ArrayList<NormalPayment> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM payment WHERE Date BETWEEN ? AND ?;"); - stmt.setString(1, startDate); - stmt.setString(2, endDate); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - String description = rs.getString("Description"); - - results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - @Override - public ArrayList<RepeatingPaymentEntry> getRepeatingPaymentsBetween(String startDate, String endDate) - { - PreparedStatement stmt = null; - - ArrayList<RepeatingPaymentEntry> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay, repeating_payment.Description FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND repeating_entry.Date BETWEEN ? AND ?;"); - stmt.setString(1, startDate); - stmt.setString(2, endDate); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - int repeatingPaymentID = rs.getInt("repeatingPaymentID"); - String name = rs.getString("Name"); - String description = rs.getString("Description"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - int repeatInterval = rs.getInt("RepeatInterval"); - String repeatEndDate = rs.getString("RepeatEndDate"); - int repeatMonthDay = rs.getInt("RepeatMonthDay"); - - results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description,repeatInterval, repeatEndDate, repeatMonthDay)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - @Override - public void deleteDatabase() - { - Statement stmt = null; - String tableCategory = "DROP TABLE IF EXISTS category;"; - String tablePayment = "DROP TABLE IF EXISTS payment;"; - String tableRepeatingPayment = "DROP TABLE IF EXISTS repeating_payment;"; - String tableRepeatingEntry = "DROP TABLE IF EXISTS repeating_entry;"; - String tableTag = "DROP TABLE IF EXISTS tag;"; - String tableTagMatch = "DROP TABLE IF EXISTS tag_match;"; - try - { - stmt = connection.createStatement(); - stmt.execute(tableCategory); - Logger.info("Deleted table: category"); - stmt.execute(tablePayment); - Logger.info("Deleted table: payment"); - stmt.execute(tableRepeatingPayment); - Logger.info("Deleted table: repeating_payment"); - stmt.execute(tableRepeatingEntry); - Logger.info("Deleted table: repeating_entry"); - stmt.execute(tableTag); - Logger.info("Deleted table: tag"); - stmt.execute(tableTagMatch); - Logger.info("Deleted table: tag_match"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/DatabaseTagHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/DatabaseTagHandler.java deleted file mode 100644 index 4b65d91329fc409ebcdd4835c63209bda5bba1a0..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/DatabaseTagHandler.java +++ /dev/null @@ -1,412 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic.database.taghandler; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.Utils; -import logger.Logger; - -public abstract class DatabaseTagHandler -{ - Connection connection; - Settings settings; - - public DatabaseTagHandler(Settings settings) throws IllegalStateException - { - this.settings = settings; - } - - public void connect() - { - try - { - if(connection == null || connection.isClosed()) - { - this.connection = Utils.getDatabaseConnection(settings); - } - } - catch(Exception e) - { - Logger.error(e); - throw new IllegalStateException("Cannot connect the database!", e); - } - } - - public void closeConnection() - { - try - { - connection.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - } - - void closeStatement(Statement statement) - { - if(statement != null) - { - try - { - statement.close(); - } - catch(SQLException e) - { - } - } - } - - public abstract int getLastInsertID(); - - public ArrayList<Tag> getAllTags() - { - PreparedStatement stmt = null; - ArrayList<Tag> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM tag ORDER BY tag.Name"); - ResultSet rs = stmt.executeQuery(); - while(rs.next()) - { - int id = rs.getInt("ID"); - String name = rs.getString("Name"); - - results.add(new Tag(id, name)); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - public Tag getTagByID(int ID) - { - PreparedStatement stmt = null; - Tag tag = null; - try - { - stmt = connection.prepareStatement("SELECT * FROM tag WHERE tag.ID= ?;"); - stmt.setInt(1, ID); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int id = rs.getInt("ID"); - String name = rs.getString("Name"); - - tag = new Tag(id, name); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return tag; - } - - public Tag getTagByName(String name) - { - PreparedStatement stmt = null; - Tag tag = null; - try - { - stmt = connection.prepareStatement("SELECT * FROM tag WHERE tag.Name= ?;"); - stmt.setString(1, name); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int id = rs.getInt("ID"); - String newName = rs.getString("Name"); - - tag = new Tag(id, newName); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return tag; - } - - public void addTag(String name) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("INSERT INTO tag (Name) VALUES(?);"); - stmt.setString(1, name); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public void deleteTag(int ID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("DELETE FROM tag WHERE tag.ID = ?;"); - stmt.setInt(1, ID); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public boolean isMatchExistingForPaymentID(int tagID, int paymentID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("SELECT * FROM tag_match WHERE tag_match.Tag_ID = ? AND tag_match.Payment_ID = ?;"); - stmt.setInt(1, tagID); - stmt.setInt(2, paymentID); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - return true; - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return false; - } - - public boolean isMatchExistingForRepeatingPaymentID(int tagID, int repeatingPaymentID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("SELECT * FROM tag_match WHERE tag_match.Tag_ID = ? AND tag_match.RepeatingPayment_ID = ?;"); - stmt.setInt(1, tagID); - stmt.setInt(2, repeatingPaymentID); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - return true; - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return false; - } - - public ArrayList<Integer> getAllTagsForPayment(int paymentID) - { - PreparedStatement stmt = null; - ArrayList<Integer> tagIDs = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM tag_match WHERE tag_match.Payment_ID = ?;"); - stmt.setInt(1, paymentID); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int tagID = rs.getInt("Tag_ID"); - tagIDs.add(tagID); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return tagIDs; - } - - public ArrayList<Integer> getAllTagsForRepeatingPayment(int repeatingPaymentID) - { - PreparedStatement stmt = null; - ArrayList<Integer> tagIDs = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM tag_match WHERE tag_match.RepeatingPayment_ID = ?;"); - stmt.setInt(1, repeatingPaymentID); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int tagID = rs.getInt("Tag_ID"); - tagIDs.add(tagID); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return tagIDs; - } - - public void addTagMatchForPayment(int tagID, int paymentID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("INSERT INTO tag_match (Tag_ID, Payment_ID, RepeatingPayment_ID) VALUES(?, ?, ?);"); - stmt.setInt(1, tagID); - stmt.setInt(2, paymentID); - stmt.setInt(3, -1); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public void addTagMatchForRepeatingPayment(int tagID, int repeatingPaymentID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("INSERT INTO tag_match (Tag_ID, Payment_ID, RepeatingPayment_ID) VALUES(?, ?, ?);"); - stmt.setInt(1, tagID); - stmt.setInt(2, -1); - stmt.setInt(3, repeatingPaymentID); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public void deleteTagMatchForPayment(int tagID, int paymentID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("DELETE FROM tag_match WHERE tag_match.Tag_ID = ? AND tag_match.Payment_ID = ?;"); - stmt.setInt(1, tagID); - stmt.setInt(2, paymentID); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public void deleteTagMatchForRepeatingPayment(int tagID, int repeatingPaymentID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("DELETE FROM tag_match WHERE tag_match.Tag_ID = ? AND tag_match.repeatingPayment_ID = ?;"); - stmt.setInt(1, tagID); - stmt.setInt(2, repeatingPaymentID); - stmt.execute(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } - - public boolean isTagUsedInMatches(int tagID) - { - PreparedStatement stmt = null; - try - { - stmt = connection.prepareStatement("SELECT * FROM tag_match WHERE tag_match.Tag_ID = ?;"); - stmt.setInt(1, tagID); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - return true; - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return false; - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/MysqlDatabaseTagHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/MysqlDatabaseTagHandler.java deleted file mode 100644 index 70b319a02a894763d907bfac904ce61563688c64..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/MysqlDatabaseTagHandler.java +++ /dev/null @@ -1,45 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic.database.taghandler; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - -import de.deadlocker8.budgetmasterserver.logic.Settings; -import logger.Logger; - -public class MysqlDatabaseTagHandler extends DatabaseTagHandler -{ - public MysqlDatabaseTagHandler(Settings settings) throws IllegalStateException - { - super(settings); - connect(); - } - - @Override - public int getLastInsertID() - { - PreparedStatement stmt = null; - int lastInsertID = 0; - try - { - stmt = connection.prepareStatement("SELECT LAST_INSERT_ID();"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - lastInsertID = rs.getInt("LAST_INSERT_ID()"); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return lastInsertID; - } - -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/SqliteDatabaseTagHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/SqliteDatabaseTagHandler.java deleted file mode 100644 index d3e3fcba629a9d10f84e03bc75388457fe4459a8..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/SqliteDatabaseTagHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package de.deadlocker8.budgetmasterserver.logic.database.taghandler; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - -import de.deadlocker8.budgetmasterserver.logic.Settings; -import logger.Logger; - -public class SqliteDatabaseTagHandler extends DatabaseTagHandler -{ - public SqliteDatabaseTagHandler(Settings settings) throws IllegalStateException - { - super(settings); - connect(); - } - - @Override - public int getLastInsertID() - { - PreparedStatement stmt = null; - int lastInsertID = 0; - try - { - stmt = connection.prepareStatement("SELECT last_insert_rowid() as `ID`"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - lastInsertID = rs.getInt("ID"); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return lastInsertID; - } - -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/main/Main.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/main/Main.java deleted file mode 100644 index 6083c46fefc9700a5de59b90022c9667cc755012..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/main/Main.java +++ /dev/null @@ -1,114 +0,0 @@ -package de.deadlocker8.budgetmasterserver.main; - -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Locale; - -import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.Utils; -import de.deadlocker8.budgetmasterserver.server.SparkServer; -import logger.FileOutputMode; -import logger.LogLevel; -import logger.Logger; -import tools.Localization; - -public class Main -{ - public static void main(String[] args) - { - //for category.none in class Category - Localization.init("de/deadlocker8/budgetmasterserver/"); - Localization.loadLanguage(Locale.ENGLISH); - - Logger.setLevel(LogLevel.ALL); - Logger.appInfo(Localization.getString("app.name"), - Localization.getString("version.name"), - Localization.getString("version.code"), - Localization.getString("version.date")); - try - { - File logFolder = Paths.get(SparkServer.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParent().toFile(); - Logger.enableFileOutput(logFolder, System.out, System.err, FileOutputMode.COMBINED); - } - catch(URISyntaxException e1) - { - Logger.error(e1); - } - - try - { - Path settingsPath = Paths.get(Settings.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParent().resolve("settings.json"); - - if(!Files.exists(settingsPath)) - { - Logger.warning("No settings file found! Creating default settings file..."); - try - { - Files.copy(SparkServer.class.getClassLoader().getResourceAsStream("de/deadlocker8/budgetmasterserver/settings.json"), settingsPath); - } - catch(IOException e) - { - Logger.error(e); - } - } - - Settings settings; - try - { - settings = Utils.loadSettings(); - boolean settingsChanged = false; - if(settings.getDatabaseType() == null) - { - settings.setDatabaseType("mysql"); - settingsChanged = true; - } - - if(!settings.getDatabaseType().equals("mysql") && !settings.getDatabaseType().equals("sqlite")) - { - Logger.error(settings.getDatabaseType() + " is no valid database type! (allowed types are: mysql and sqlite)"); - return; - } - - if(settings.getDatabaseType().equals("sqlite") && (settings.getDatabaseUrl() == null || settings.getDatabaseUrl().equals(""))) - { - Logger.warning("There is no save path specified for the sqlite database file. It will be saved as \"BudgetMaster.db\" in current directory."); - settings.setDatabaseUrl(System.getProperty("user.dir").replace("\\", "/") + "/BudgetMaster.db"); - settingsChanged = true; - } - - if(settings.getDatabaseUrl().contains("jdbc")) - { - settings.setDatabaseUrl(settings.getDatabaseUrl().replace("jdbc:mysql://", "")); - settingsChanged = true; - } - - - if(settingsChanged) - { - Logger.warning("Settings file is not up to date! Updated settings to new version."); - Utils.saveSettings(settings); - } - - VersionInformation versionInfo = new VersionInformation(); - versionInfo.setVersionCode(Integer.parseInt(Localization.getString("version.code"))); - versionInfo.setVersionName(Localization.getString("version.name")); - versionInfo.setDate(Localization.getString("version.date")); - - new SparkServer(settings, versionInfo); - } - catch(IOException | URISyntaxException e) - { - Logger.error(e); - } - } - catch(URISyntaxException e1) - { - Logger.error(e1); - } - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java deleted file mode 100644 index d1c397ea7b1a79ee1e581841c16b165d43597491..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java +++ /dev/null @@ -1,221 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server; - -import static spark.Spark.after; -import static spark.Spark.before; -import static spark.Spark.delete; -import static spark.Spark.get; -import static spark.Spark.halt; -import static spark.Spark.port; -import static spark.Spark.post; -import static spark.Spark.put; -import static spark.Spark.secure; - -import java.io.File; -import java.sql.Connection; - -import org.joda.time.DateTime; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; -import de.deadlocker8.budgetmaster.logic.utils.Helpers; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.Utils; -import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.server.category.CategoryAdd; -import de.deadlocker8.budgetmasterserver.server.category.CategoryDelete; -import de.deadlocker8.budgetmasterserver.server.category.CategoryGet; -import de.deadlocker8.budgetmasterserver.server.category.CategoryGetAll; -import de.deadlocker8.budgetmasterserver.server.category.CategoryUpdate; -import de.deadlocker8.budgetmasterserver.server.categorybudget.CategoryBudgetGet; -import de.deadlocker8.budgetmasterserver.server.charts.CategoryInOutSumForMonth; -import de.deadlocker8.budgetmasterserver.server.charts.MonthInOutSum; -import de.deadlocker8.budgetmasterserver.server.database.DatabaseDelete; -import de.deadlocker8.budgetmasterserver.server.database.DatabaseExport; -import de.deadlocker8.budgetmasterserver.server.database.DatabaseImport; -import de.deadlocker8.budgetmasterserver.server.info.InformationGet; -import de.deadlocker8.budgetmasterserver.server.info.VersionGet; -import de.deadlocker8.budgetmasterserver.server.log.LogDelete; -import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentAdd; -import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentDelete; -import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentGet; -import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentUpdate; -import de.deadlocker8.budgetmasterserver.server.payment.repeating.RepeatingPaymentAdd; -import de.deadlocker8.budgetmasterserver.server.payment.repeating.RepeatingPaymentDelete; -import de.deadlocker8.budgetmasterserver.server.payment.repeating.RepeatingPaymentGet; -import de.deadlocker8.budgetmasterserver.server.payment.repeating.RepeatingPaymentGetAll; -import de.deadlocker8.budgetmasterserver.server.payment.search.PaymentMaxAmount; -import de.deadlocker8.budgetmasterserver.server.payment.search.PaymentSearch; -import de.deadlocker8.budgetmasterserver.server.rest.RestGet; -import de.deadlocker8.budgetmasterserver.server.shutdown.Shutdown; -import de.deadlocker8.budgetmasterserver.server.tag.match.TagMatchAddForPayment; -import de.deadlocker8.budgetmasterserver.server.tag.match.TagMatchAddForRepeatingPayment; -import de.deadlocker8.budgetmasterserver.server.tag.match.TagMatchDeleteForPayment; -import de.deadlocker8.budgetmasterserver.server.tag.match.TagMatchDeleteForRepeatingPayment; -import de.deadlocker8.budgetmasterserver.server.tag.match.TagMatchExistingForPayment; -import de.deadlocker8.budgetmasterserver.server.tag.match.TagMatchExistingForRepeatingPayment; -import de.deadlocker8.budgetmasterserver.server.tag.match.TagMatchGetAllForPayment; -import de.deadlocker8.budgetmasterserver.server.tag.match.TagMatchGetAllForRepeatingPayment; -import de.deadlocker8.budgetmasterserver.server.tag.tag.TagAdd; -import de.deadlocker8.budgetmasterserver.server.tag.tag.TagDelete; -import de.deadlocker8.budgetmasterserver.server.tag.tag.TagGet; -import de.deadlocker8.budgetmasterserver.server.tag.tag.TagGetAll; -import de.deadlocker8.budgetmasterserver.server.tag.tag.TagGetByName; -import de.deadlocker8.budgetmasterserver.server.updater.RepeatingPaymentUpdater; -import logger.Logger; -import spark.Spark; -import spark.route.RouteOverview; -import tools.HashUtils; - -public class SparkServer -{ - private Gson gson; - private boolean shutdownInProgress = false; - - public SparkServer(Settings settings, VersionInformation versionInfo) - { - Logger.info("Initializing SparkServer..."); - - gson = new GsonBuilder().setPrettyPrinting().create(); - - port(settings.getServerPort()); - - try - { - String filePath = settings.getKeystorePath(); - if(filePath.equals("")) - { - throw new Exception("empty string is no valid keystorePath"); - } - else if(settings.getKeystorePath().equals("default")) - { - Logger.info("Connections are secured with default keystore"); - Logger.warning("The Server is running with the default keystore. This is only recommended if the server is running in a local area network and is not exposed to the internet. Please check if this is intended."); - secure(SparkServer.class.getClassLoader().getResource("de/deadlocker8/budgetmasterserver/certificate/default_keystore.jks").toString(), settings.getKeystorePassword(), null, null); - } - else - { - Logger.info("Connections are secured with custom keystore"); - secure(new File(filePath).getAbsolutePath(), settings.getKeystorePassword(), null, null); - } - } - catch(Exception e) - { - Logger.error(e); - Logger.info("CANCELED server initialization"); - return; - } - - RouteOverview.enableRouteOverview(); - - Logger.info("Trying to connect to database (jdbc:" + settings.getDatabaseType() + "://" + settings.getDatabaseUrl() + ", databaseName: " + settings.getDatabaseName() + ")"); - - try - { - Connection connection = Utils.getDatabaseConnection(settings); - DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); - creator.createTables(); - Logger.info("Successfully initialized database (jdbc:" + settings.getDatabaseType() + "://" + settings.getDatabaseUrl() + ", databaseName: " + settings.getDatabaseName() + ")"); - connection.close(); - } - catch(Exception e) - { - Logger.error(e); - throw new IllegalStateException("Cannot connect the database!", e); - } - - before((request, response) -> { - String clientSecret = request.queryMap("secret").value(); - - if(clientSecret == null || !clientSecret.equals(HashUtils.hash(settings.getServerSecret(), Helpers.SALT))) - { - Logger.debug("Unauthorized request from " + request.ip()); - halt(401, "Unauthorized"); - } - - DatabaseHandler handler = Utils.getDatabaseHandler(settings); - RepeatingPaymentUpdater paymentUpdater = new RepeatingPaymentUpdater(handler); - paymentUpdater.updateRepeatingPayments(DateTime.now()); - handler.closeConnection(); - }); - - try - { - // Category - get("/category", new CategoryGetAll(Utils.getDatabaseHandler(settings), gson)); - get("/category/single", new CategoryGet(Utils.getDatabaseHandler(settings), gson)); - post("/category", new CategoryAdd(Utils.getDatabaseHandler(settings))); - put("/category", new CategoryUpdate(Utils.getDatabaseHandler(settings))); - delete("/category", new CategoryDelete(Utils.getDatabaseHandler(settings))); - - // Payment - get("/payment/search", new PaymentSearch(Utils.getDatabaseHandler(settings), Utils.getDatabaseTagHandler(settings))); - get("/payment/search/maxAmount", new PaymentMaxAmount(Utils.getDatabaseHandler(settings), gson)); - // Normal - get("/payment", new PaymentGet(Utils.getDatabaseHandler(settings), gson)); - post("/payment", new PaymentAdd(Utils.getDatabaseHandler(settings), gson)); - put("/payment", new PaymentUpdate(Utils.getDatabaseHandler(settings))); - delete("/payment", new PaymentDelete(Utils.getDatabaseHandler(settings), Utils.getDatabaseTagHandler(settings))); - - // Repeating - get("/repeatingpayment/single", new RepeatingPaymentGet(Utils.getDatabaseHandler(settings), gson)); - get("/repeatingpayment", new RepeatingPaymentGetAll(Utils.getDatabaseHandler(settings), gson)); - post("/repeatingpayment", new RepeatingPaymentAdd(Utils.getDatabaseHandler(settings), gson)); - delete("/repeatingpayment", new RepeatingPaymentDelete(Utils.getDatabaseHandler(settings), Utils.getDatabaseTagHandler(settings))); - - // CategoryBudget - get("/categorybudget", new CategoryBudgetGet(Utils.getDatabaseHandler(settings), gson)); - - // Rest - get("/rest", new RestGet(Utils.getDatabaseHandler(settings), gson)); - - // charts - get("/charts/categoryInOutSum", new CategoryInOutSumForMonth(Utils.getDatabaseHandler(settings), gson)); - get("/charts/monthInOutSum", new MonthInOutSum(Utils.getDatabaseHandler(settings), gson)); - - // tag - get("/tag/single", new TagGet(Utils.getDatabaseTagHandler(settings), gson)); - get("/tag/single/byName", new TagGetByName(Utils.getDatabaseTagHandler(settings), gson)); - get("/tag", new TagGetAll(Utils.getDatabaseTagHandler(settings), gson)); - post("/tag", new TagAdd(Utils.getDatabaseTagHandler(settings))); - delete("/tag", new TagDelete(Utils.getDatabaseTagHandler(settings))); - - // tag match - get("/tag/match/all/normal", new TagMatchGetAllForPayment(Utils.getDatabaseTagHandler(settings), gson)); - get("/tag/match/all/repeating", new TagMatchGetAllForRepeatingPayment(Utils.getDatabaseTagHandler(settings), gson)); - get("/tag/match/normal", new TagMatchExistingForPayment(Utils.getDatabaseTagHandler(settings), gson)); - get("/tag/match/repeating", new TagMatchExistingForRepeatingPayment(Utils.getDatabaseTagHandler(settings), gson)); - post("/tag/match/normal", new TagMatchAddForPayment(Utils.getDatabaseTagHandler(settings))); - post("/tag/match/repeating", new TagMatchAddForRepeatingPayment(Utils.getDatabaseTagHandler(settings))); - delete("/tag/match/normal", new TagMatchDeleteForPayment(Utils.getDatabaseTagHandler(settings))); - delete("/tag/match/repeating", new TagMatchDeleteForRepeatingPayment(Utils.getDatabaseTagHandler(settings))); - - // Database - get("/database", new DatabaseExport(settings, gson)); - post("/database", new DatabaseImport(Utils.getDatabaseHandler(settings), Utils.getDatabaseTagHandler(settings), gson)); - delete("/database", new DatabaseDelete(Utils.getDatabaseHandler(settings), settings)); - - get("/info", new InformationGet(gson, versionInfo, settings)); - get("/version", new VersionGet(gson, versionInfo)); - delete("/log", new LogDelete()); - get("/shutdown", new Shutdown(shutdownInProgress)); - } - catch(ClassNotFoundException e) - { - Logger.error(e); - } - - after((request, response) -> { - DatabaseHandler handler = Utils.getDatabaseHandler(settings); - RepeatingPaymentUpdater paymentUpdater = new RepeatingPaymentUpdater(handler); - paymentUpdater.updateRepeatingPayments(DateTime.now()); - handler.closeConnection(); - }); - - Spark.exception(Exception.class, (exception, request, response) -> { - Logger.error(exception); - }); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryAdd.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryAdd.java deleted file mode 100644 index 4a5e3fa258a2bdd2ff3c5fb1f18a7e4b439e13ab..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryAdd.java +++ /dev/null @@ -1,56 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.category; - -import static spark.Spark.halt; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class CategoryAdd implements AdvancedRoute -{ - private DatabaseHandler handler; - - public CategoryAdd(DatabaseHandler handler) - { - this.handler = handler; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("name") || !req.queryParams().contains("color")) - { - halt(400, "Bad Request"); - } - - try - { - handler.addCategory(req.queryMap("name").value(), "#" + req.queryMap("color").value()); - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryDelete.java deleted file mode 100644 index e1b80572c702584a7e63b41e35754f579c273fc4..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryDelete.java +++ /dev/null @@ -1,68 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.category; - -import static spark.Spark.halt; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class CategoryDelete implements AdvancedRoute -{ - private DatabaseHandler handler; - - public CategoryDelete(DatabaseHandler handler) - { - this.handler = handler; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("id")) - { - halt(400, "Bad Request"); - } - - int id = -1; - - try - { - id = Integer.parseInt(req.queryMap("id").value()); - - if(id < 0) - { - halt(400, "Bad Request"); - } - - try - { - handler.deleteCategory(id); - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGet.java deleted file mode 100644 index 1fd8abe32f79a99dbc0205d81961865d13898438..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGet.java +++ /dev/null @@ -1,73 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.category; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class CategoryGet implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public CategoryGet(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("id")) - { - halt(400, "Bad Request"); - } - - int id = -1; - - try - { - id = Integer.parseInt(req.queryMap("id").value()); - - if(id < 0) - { - halt(400, "Bad Request"); - } - - try - { - Category categeory = handler.getCategory(id); - - return gson.toJson(categeory); - } - catch(IllegalStateException e) - { - e.printStackTrace(); - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - return null; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGetAll.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGetAll.java deleted file mode 100644 index 1e6af5f18d3bb93134e76ca200c25dc5c22f427c..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGetAll.java +++ /dev/null @@ -1,55 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.category; - -import static spark.Spark.halt; - -import java.util.ArrayList; -import java.util.Collections; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class CategoryGetAll implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public CategoryGetAll(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - try - { - ArrayList<Category> categories = handler.getCategories(); - Collections.sort(categories, (c1, c2) -> c1.getName().toLowerCase().compareTo(c2.getName().toLowerCase())); - - return gson.toJson(categories); - } - catch(IllegalStateException e) - { - halt(500, "Internal Server Error"); - } - return null; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryUpdate.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryUpdate.java deleted file mode 100644 index 8f651e484a685143788ee9a128d275771aeed184..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryUpdate.java +++ /dev/null @@ -1,68 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.category; - -import static spark.Spark.halt; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class CategoryUpdate implements AdvancedRoute -{ - private DatabaseHandler handler; - - public CategoryUpdate(DatabaseHandler handler) - { - this.handler = handler; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("id") ||!req.queryParams().contains("name") || !req.queryParams().contains("color")) - { - halt(400, "Bad Request"); - } - - int id = -1; - - try - { - id = Integer.parseInt(req.queryMap("id").value()); - - if(id < 0) - { - halt(400, "Bad Request"); - } - - try - { - handler.updateCategory(id, req.queryMap("name").value(), "#" + req.queryMap("color").value()); - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java deleted file mode 100644 index 545365e594dbbf0bf95a647de9093e62e75acae2..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java +++ /dev/null @@ -1,118 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.categorybudget; - -import static spark.Spark.halt; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Iterator; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.category.CategoryBudget; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class CategoryBudgetGet implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public CategoryBudgetGet(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("year") || !req.queryParams().contains("month")) - { - halt(400, "Bad Request"); - } - - int year = 0; - int month = 0; - - try - { - year = Integer.parseInt(req.queryMap("year").value()); - month = Integer.parseInt(req.queryMap("month").value()); - - if(year < 0 || month < 1 || month > 12) - { - halt(400, "Bad Request"); - } - - try - { - ArrayList<Payment> payments = new ArrayList<>(); - payments.addAll(handler.getPayments(year, month)); - payments.addAll(handler.getRepeatingPayments(year, month)); - - ArrayList<CategoryBudget> budgets = new ArrayList<>(); - - for(Category currentCategory : handler.getCategories()) - { - budgets.add(new CategoryBudget(currentCategory, 0)); - CategoryBudget currentBudget = budgets.get(budgets.size() - 1); - for(Payment currentPayment : payments) - { - if(currentCategory.getID() == currentPayment.getCategoryID()) - { - currentBudget.setBudget(currentBudget.getBudget() + currentPayment.getAmount()); - } - } - } - - // filter empty categories - Iterator<CategoryBudget> iterator = budgets.iterator(); - while(iterator.hasNext()) - { - if(iterator.next().getBudget() == 0) - { - iterator.remove(); - } - } - - Collections.sort(budgets, new Comparator<CategoryBudget>() - { - @Override - public int compare(CategoryBudget budget1, CategoryBudget budget2) - { - return Double.compare(budget1.getBudget(), budget2.getBudget()); - } - }); - - return gson.toJson(budgets); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return null; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/CategoryInOutSumForMonth.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/CategoryInOutSumForMonth.java deleted file mode 100644 index 6aad5ea8afdfbdfb497b8e66247a26a3ced7a84b..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/CategoryInOutSumForMonth.java +++ /dev/null @@ -1,86 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.charts; - -import static spark.Spark.halt; - -import java.util.ArrayList; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.charts.CategoryInOutSum; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class CategoryInOutSumForMonth implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public CategoryInOutSumForMonth(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("startDate") || !req.queryParams().contains("endDate")) - { - halt(400, "Bad Request"); - } - - try - { - ArrayList<Payment> payments = new ArrayList<>(); - payments.addAll(handler.getPaymentsBetween(req.queryMap("startDate").value(), req.queryMap("endDate").value())); - payments.addAll(handler.getRepeatingPaymentsBetween(req.queryMap("startDate").value(), req.queryMap("endDate").value())); - - ArrayList<CategoryInOutSum> inOutSums = new ArrayList<>(); - - for(Category currentCategory : handler.getCategories()) - { - inOutSums.add(new CategoryInOutSum(currentCategory.getID(), currentCategory.getName(), currentCategory.getColor(), 0, 0)); - CategoryInOutSum currentInOutSum = inOutSums.get(inOutSums.size() - 1); - for(Payment currentPayment : payments) - { - if(currentCategory.getID() == currentPayment.getCategoryID()) - { - int amount = currentPayment.getAmount(); - if(amount > 0) - { - currentInOutSum.setBudgetIN(currentInOutSum.getBudgetIN() + amount); - } - else - { - currentInOutSum.setBudgetOUT(currentInOutSum.getBudgetOUT() + amount); - } - } - } - } - - return gson.toJson(inOutSums); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - - return null; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/MonthInOutSum.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/MonthInOutSum.java deleted file mode 100644 index 292fae1f31afa02f271be7ef1406c5587de8a96a..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/MonthInOutSum.java +++ /dev/null @@ -1,100 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.charts; - -import static spark.Spark.halt; - -import java.util.ArrayList; - -import org.joda.time.DateTime; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.charts.CategoryInOutSum; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class MonthInOutSum implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public MonthInOutSum(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("startDate") || !req.queryParams().contains("endDate")) - { - halt(400, "Bad Request"); - } - - try - { - DateTime startDate = DateTime.parse(req.queryMap("startDate").value()).withDayOfMonth(1); - DateTime endDate = DateTime.parse(req.queryMap("endDate").value()).withDayOfMonth(1); - - ArrayList<de.deadlocker8.budgetmaster.logic.charts.MonthInOutSum> monthInOutSums = new ArrayList<>(); - - while(startDate.isBefore(endDate) || startDate.isEqual(endDate)) - { - ArrayList<Payment> currentMonthPayments = new ArrayList<>(); - currentMonthPayments.addAll(handler.getPayments(startDate.getYear(), startDate.getMonthOfYear())); - currentMonthPayments.addAll(handler.getRepeatingPayments(startDate.getYear(), startDate.getMonthOfYear())); - - ArrayList<CategoryInOutSum> sums = new ArrayList<>(); - - for(Category currentCategory : handler.getCategories()) - { - sums.add(new CategoryInOutSum(currentCategory.getID(), currentCategory.getName(), currentCategory.getColor(), 0, 0)); - CategoryInOutSum currentInOutSum = sums.get(sums.size() - 1); - for(Payment currentPayment : currentMonthPayments) - { - if(currentCategory.getID() == currentPayment.getCategoryID()) - { - int amount = currentPayment.getAmount(); - if(amount > 0) - { - currentInOutSum.setBudgetIN(currentInOutSum.getBudgetIN() + amount); - } - else - { - currentInOutSum.setBudgetOUT(currentInOutSum.getBudgetOUT() + amount); - } - } - } - } - - monthInOutSums.add(new de.deadlocker8.budgetmaster.logic.charts.MonthInOutSum(startDate.getMonthOfYear(), startDate.getYear(), sums)); - - startDate = startDate.plusMonths(1); - } - - return gson.toJson(monthInOutSums); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - - return null; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseDelete.java deleted file mode 100644 index c9a6c13791fe99da67c8f0b4a43577ff3144a7ac..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseDelete.java +++ /dev/null @@ -1,60 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.database; - -import static spark.Spark.halt; - -import java.sql.Connection; -import java.sql.SQLException; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.Utils; -import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import logger.Logger; -import spark.Request; -import spark.Response; - -public class DatabaseDelete implements AdvancedRoute -{ - private DatabaseHandler handler; - private Settings settings; - - public DatabaseDelete(DatabaseHandler handler, Settings settings) - { - this.handler = handler; - this.settings = settings; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - try - { - handler.deleteDatabase(); - Connection connection = Utils.getDatabaseConnection(settings); - DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); - creator.createTables(); - Logger.info("Successfully initialized database (" + settings.getDatabaseUrl() + settings.getDatabaseName() + ")"); - - return ""; - } - catch(IllegalStateException | SQLException | ClassNotFoundException ex) - { - halt(500, "Internal Server Error"); - } - - return ""; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseExport.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseExport.java deleted file mode 100644 index a108686d4996aa3f6306fdfcbcbfe98ea3e02f2a..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseExport.java +++ /dev/null @@ -1,51 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.database; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseExporter; -import logger.Logger; -import spark.Request; -import spark.Response; - -public class DatabaseExport implements AdvancedRoute -{ - private Settings settings; - private Gson gson; - - public DatabaseExport(Settings settings, Gson gson) - { - this.settings = settings; - this.gson = gson; - } - - @Override - public void before() - { - } - - @Override - public Object handleRequest(Request req, Response res) - { - try - { - DatabaseExporter exporter = new DatabaseExporter(settings); - return gson.toJson(exporter.exportDatabase()); - } - catch(Exception e) - { - Logger.error(e); - halt(500, "Internal Server Error"); - } - - return ""; - } - - @Override - public void after() - { - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseImport.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseImport.java deleted file mode 100644 index 65800d25ddff4083fccc56b147893bb58b8f65f2..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseImport.java +++ /dev/null @@ -1,64 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.database; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.database.Database; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseImporter; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import logger.Logger; -import spark.Request; -import spark.Response; - -public class DatabaseImport implements AdvancedRoute -{ - private DatabaseHandler handler; - private DatabaseTagHandler tagHandler; - private Gson gson; - - public DatabaseImport(DatabaseHandler handler, DatabaseTagHandler tagHandler, Gson gson) - { - this.handler = handler; - this.tagHandler = tagHandler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - String databaseJSON = req.body(); - - try - { - Database database = gson.fromJson(databaseJSON, Database.class); - - DatabaseImporter importer = new DatabaseImporter(handler, tagHandler); - importer.importDatabase(database); - return ""; - } - catch(Exception e) - { - Logger.error(e); - halt(500, "Internal Server Error"); - } - - return ""; - } - - @Override - public void after() - { - handler.closeConnection(); - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/InformationGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/InformationGet.java deleted file mode 100644 index 93abe986555c5fe59b2a5e45b18d93de12de9527..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/InformationGet.java +++ /dev/null @@ -1,48 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.info; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.serverconnection.ServerInformation; -import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import spark.Request; -import spark.Response; - -public class InformationGet implements AdvancedRoute -{ - private Gson gson; - private VersionInformation versionInfo; - private Settings settings; - - public InformationGet(Gson gson, VersionInformation versionInfo, Settings settings) - { - this.gson = gson; - this.versionInfo = versionInfo; - this.settings = settings; - } - - @Override - public void before() - { - } - - @Override - public Object handleRequest(Request req, Response res) - { - ServerInformation serverInfo = new ServerInformation(); - serverInfo.setDatabaseUrl(settings.getDatabaseUrl()); - serverInfo.setDatabaseName(settings.getDatabaseName()); - serverInfo.setDatabaseUsername(settings.getDatabaseUsername()); - serverInfo.setServerPort(settings.getServerPort()); - serverInfo.setKeystorePath(settings.getKeystorePath()); - serverInfo.setVersionInfo(versionInfo); - - return gson.toJson(serverInfo); - } - - @Override - public void after() - { - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/VersionGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/VersionGet.java deleted file mode 100644 index c2720a593ae67495768dfcff6e79985cb0716354..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/VersionGet.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.info; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import spark.Request; -import spark.Response; - -public class VersionGet implements AdvancedRoute -{ - private Gson gson; - private VersionInformation versionInfo; - - public VersionGet(Gson gson, VersionInformation versionInfo) - { - this.gson = gson; - this.versionInfo = versionInfo; - } - - @Override - public void before() - { - } - - @Override - public Object handleRequest(Request req, Response res) - { - return gson.toJson(versionInfo); - } - - @Override - public void after() - { - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/log/LogDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/log/LogDelete.java deleted file mode 100644 index daf3cd9488a9f12fc1d4ba38a9a9ddfcd80c39fb..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/log/LogDelete.java +++ /dev/null @@ -1,42 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.log; - -import static spark.Spark.halt; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import logger.Logger; -import spark.Request; -import spark.Response; - -public class LogDelete implements AdvancedRoute -{ - public LogDelete() - { - - } - - @Override - public void before() - { - } - - @Override - public Object handleRequest(Request req, Response res) - { - try - { - Logger.clearLogFile(); - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - - return ""; - } - - @Override - public void after() - { - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java deleted file mode 100644 index b6bc9fd85da4272e16e8d2d0f8ce07673ed8a191..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java +++ /dev/null @@ -1,77 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.payment.normal; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class PaymentAdd implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public PaymentAdd(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("amount") || - !req.queryParams().contains("date") || - !req.queryParams().contains("categoryID") || - !req.queryParams().contains("name") || - !req.queryParams().contains("description")) - { - halt(400, "Bad Request"); - } - - int amount = 0; - int categoryID = 0; - - try - { - amount = Integer.parseInt(req.queryMap("amount").value()); - categoryID = Integer.parseInt(req.queryMap("categoryID").value()); - - try - { - Integer id = handler.addNormalPayment(amount, - req.queryMap("date").value(), - categoryID, - req.queryMap("name").value(), - req.queryMap("description").value()); - - return gson.toJson(id); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentDelete.java deleted file mode 100644 index fe70574aa24ff13f1d01908331426bf316588bb5..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentDelete.java +++ /dev/null @@ -1,79 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.payment.normal; - -import static spark.Spark.halt; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class PaymentDelete implements AdvancedRoute -{ - private DatabaseHandler handler; - private DatabaseTagHandler tagHandler; - - public PaymentDelete(DatabaseHandler handler, DatabaseTagHandler tagHandler) - { - this.handler = handler; - this.tagHandler = tagHandler; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("id")) - { - halt(400, "Bad Request"); - } - - int id = -1; - - try - { - id = Integer.parseInt(req.queryMap("id").value()); - - if(id < 0) - { - halt(400, "Bad Request"); - } - - try - { - handler.deletePayment(id); - ArrayList<Integer> tagIDs = tagHandler.getAllTagsForPayment(id); - for(Integer currentTagID : tagIDs) - { - tagHandler.deleteTagMatchForPayment(currentTagID, id); - } - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - handler.closeConnection(); - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java deleted file mode 100644 index d82b8842b3a37c968785968711fb2981e0867f8b..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java +++ /dev/null @@ -1,90 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.payment.normal; - -import static spark.Spark.halt; - -import java.util.ArrayList; - -import org.joda.time.DateTime; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.server.updater.RepeatingPaymentUpdater; -import spark.Request; -import spark.Response; - -public class PaymentGet implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public PaymentGet(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("year") || !req.queryParams().contains("month")) - { - halt(400, "Bad Request"); - } - - int year = 0; - int month = 0; - - try - { - year = Integer.parseInt(req.queryMap("year").value()); - month = Integer.parseInt(req.queryMap("month").value()); - - if(year < 0 || month < 1 || month > 12) - { - halt(400, "Bad Request"); - } - - //refresh repeating entries - DateTime date = DateTime.now().withYear(year).withMonthOfYear(month); - date = date.dayOfMonth().withMaximumValue(); - if(date.isBefore(DateTime.now())) - { - date = DateTime.now().dayOfMonth().withMaximumValue(); - } - new RepeatingPaymentUpdater(handler).updateRepeatingPayments(date); - - try - { - ArrayList<NormalPayment> payments = new ArrayList<>(); - payments.addAll(handler.getPayments(year, month)); - - return gson.toJson(payments); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return null; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java deleted file mode 100644 index e0e94e52d9e2bbdb7f5a81e53188486d625759fd..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java +++ /dev/null @@ -1,82 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.payment.normal; - -import static spark.Spark.halt; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class PaymentUpdate implements AdvancedRoute -{ - private DatabaseHandler handler; - - public PaymentUpdate(DatabaseHandler handler) - { - this.handler = handler; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("id") || - !req.queryParams().contains("amount") || - !req.queryParams().contains("date") || - !req.queryParams().contains("categoryID") || - !req.queryParams().contains("name") || - !req.queryParams().contains("description")) - { - halt(400, "Bad Request"); - } - - int id = -1; - int amount = 0; - int categoryID = -1; - - try - { - id = Integer.parseInt(req.queryMap("id").value()); - amount = Integer.parseInt(req.queryMap("amount").value()); - categoryID = Integer.parseInt(req.queryMap("categoryID").value()); - - if(id < 0) - { - halt(400, "Bad Request"); - } - - try - { - handler.updateNormalPayment(id, - amount, - req.queryMap("date").value(), - categoryID, - req.queryMap("name").value(), - req.queryMap("description").value()); - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java deleted file mode 100644 index 05c1bd614d6f3b557f97cdc7f78148acda90c5fa..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java +++ /dev/null @@ -1,81 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.payment.repeating; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class RepeatingPaymentAdd implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public RepeatingPaymentAdd(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("amount") - || !req.queryParams().contains("date") - || !req.queryParams().contains("categoryID") - || !req.queryParams().contains("name") - || !req.queryParams().contains("repeatInterval") - || !req.queryParams().contains("repeatEndDate") - || !req.queryParams().contains("repeatMonthDay") - || !req.queryParams().contains("description")) - { - halt(400, "Bad Request"); - } - - int amount = 0; - int categoryID = 0; - int repeatInterval = 0; - int repeatMonthDay = 0; - - try - { - amount = Integer.parseInt(req.queryMap("amount").value()); - categoryID = Integer.parseInt(req.queryMap("categoryID").value()); - repeatInterval = Integer.parseInt(req.queryMap("repeatInterval").value()); - repeatMonthDay = Integer.parseInt(req.queryMap("repeatMonthDay").value()); - - try - { - Integer id = handler.addRepeatingPayment(amount, req.queryMap("date").value(), categoryID, req.queryMap("name").value(), req.queryMap("description").value(), repeatInterval, req.queryMap("repeatEndDate").value(), repeatMonthDay); - - return gson.toJson(id); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - e.printStackTrace(); - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentDelete.java deleted file mode 100644 index 1ba52b1a2c90a42603eb733e8f2fcd1cc14c93f6..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentDelete.java +++ /dev/null @@ -1,80 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.payment.repeating; - -import static spark.Spark.halt; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class RepeatingPaymentDelete implements AdvancedRoute -{ - private DatabaseHandler handler; - private DatabaseTagHandler tagHandler; - - public RepeatingPaymentDelete(DatabaseHandler handler, DatabaseTagHandler tagHandler) - { - this.handler = handler; - this.tagHandler = tagHandler; - } - - @Override - public void before() - { - handler.connect(); - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("id")) - { - halt(400, "Bad Request"); - } - - int id = -1; - - try - { - id = Integer.parseInt(req.queryMap("id").value()); - - if(id < 0) - { - halt(400, "Bad Request"); - } - - try - { - handler.deleteRepeatingPayment(id); - ArrayList<Integer> tagIDs = tagHandler.getAllTagsForRepeatingPayment(id); - for(Integer currentTagID : tagIDs) - { - tagHandler.deleteTagMatchForRepeatingPayment(currentTagID, id); - } - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - handler.closeConnection(); - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGet.java deleted file mode 100644 index f1ef2b2a38d0be9f6f710e9eb3e46f3d7089c1ab..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGet.java +++ /dev/null @@ -1,73 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.payment.repeating; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class RepeatingPaymentGet implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public RepeatingPaymentGet(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("id")) - { - halt(400, "Bad Request"); - } - - int id = -1; - - try - { - id = Integer.parseInt(req.queryMap("id").value()); - - if(id < 0) - { - halt(400, "Bad Request"); - } - - try - { - RepeatingPayment payment = handler.getRepeatingPayment(id); - - return gson.toJson(payment); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java deleted file mode 100644 index 88dbe39ffb5c270158febc78ceeed0a20c084985..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java +++ /dev/null @@ -1,90 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.payment.repeating; - -import static spark.Spark.halt; - -import java.util.ArrayList; - -import org.joda.time.DateTime; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.server.updater.RepeatingPaymentUpdater; -import spark.Request; -import spark.Response; - -public class RepeatingPaymentGetAll implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public RepeatingPaymentGetAll(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("year") || !req.queryParams().contains("month")) - { - halt(400, "Bad Request"); - } - - int year = 0; - int month = 0; - - try - { - year = Integer.parseInt(req.queryMap("year").value()); - month = Integer.parseInt(req.queryMap("month").value()); - - if(year < 0 || month < 1 || month > 12) - { - halt(400, "Bad Request"); - } - - //refresh repeating entries - DateTime date = DateTime.now().withYear(year).withMonthOfYear(month); - date = date.dayOfMonth().withMaximumValue(); - if(date.isBefore(DateTime.now())) - { - date = DateTime.now().dayOfMonth().withMaximumValue(); - } - new RepeatingPaymentUpdater(handler).updateRepeatingPayments(date); - - try - { - ArrayList<RepeatingPaymentEntry> payments = new ArrayList<>(); - payments.addAll(handler.getRepeatingPayments(year, month)); - - return gson.toJson(payments); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return null; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentMaxAmount.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentMaxAmount.java deleted file mode 100644 index e64331e253b10ebaa7d919b8fd431a4224101912..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentMaxAmount.java +++ /dev/null @@ -1,58 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.payment.search; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class PaymentMaxAmount implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public PaymentMaxAmount(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - try - { - int maxNormal = handler.getNormalPaymentMaxAmount(); - int maxRepeating = handler.getRepeatingPaymentMaxAmount(); - - int max = maxNormal; - if(maxRepeating > max) - { - max = maxRepeating; - } - //plus 1 to allow all amounts up to maxNormal.99 € - return gson.toJson((max+1)/100); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - - return null; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentSearch.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentSearch.java deleted file mode 100644 index 4c9a8987e82bdf727f7e067661d1c683cd1e2b27..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentSearch.java +++ /dev/null @@ -1,203 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.payment.search; - -import static spark.Spark.halt; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.Payment; -import de.deadlocker8.budgetmaster.logic.payment.PaymentJSONSerializer; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class PaymentSearch implements AdvancedRoute -{ - private DatabaseHandler handler; - private DatabaseTagHandler tagHandler; - - public PaymentSearch(DatabaseHandler handler, DatabaseTagHandler tagHandler) - { - this.handler = handler; - this.tagHandler = tagHandler; - } - - private boolean meetsCriteria(Request req, Payment payment) - { - boolean otherChecksThanAmount = false; - - if(req.queryMap("query").value().toLowerCase().equals("")) - return checkAmount(req, payment); - - if(!req.queryParams().contains("name") - && !req.queryParams().contains("description") - && !req.queryParams().contains("categoryName") - && !req.queryParams().contains("tags") - && !req.queryParams().contains("minAmount") - && !req.queryParams().contains("maxAmount")) - return false; - - if(req.queryParams().contains("name")) - { - otherChecksThanAmount = true; - if(payment.getName().toLowerCase().contains(req.queryMap("query").value().toLowerCase())) - { - return checkAmount(req, payment); - } - } - - if(req.queryParams().contains("description")) - { - otherChecksThanAmount = true; - if(payment.getDescription().toLowerCase().contains(req.queryMap("query").value().toLowerCase())) - { - return checkAmount(req, payment); - } - } - - if(req.queryParams().contains("categoryName")) - { - otherChecksThanAmount = true; - int id = payment.getCategoryID(); - //TODO - if(id == -1) - return false; - - Category category = handler.getCategory(payment.getCategoryID()); - if(category.getName().toLowerCase().contains(req.queryMap("query").value().toLowerCase())) - { - return checkAmount(req, payment); - } - } - - if(req.queryParams().contains("tags")) - { - otherChecksThanAmount = true; - ArrayList<Integer> tagIDs = new ArrayList<>(); - if(payment instanceof NormalPayment) - { - tagIDs = tagHandler.getAllTagsForPayment(payment.getID()); - } - else - { - tagIDs = tagHandler.getAllTagsForRepeatingPayment(payment.getID()); - } - - if(tagIDs.size() > 0) - { - for(Integer currentTagID : tagIDs) - { - Tag currentTag = tagHandler.getTagByID(currentTagID); - if(currentTag != null) - { - if(currentTag.getName().toLowerCase().contains(req.queryMap("query").value().toLowerCase())) - { - return checkAmount(req, payment); - } - } - } - } - } - - if(otherChecksThanAmount) - { - return false; - } - else - { - return checkAmount(req, payment); - } - } - - private boolean checkAmount(Request req, Payment payment) - { - if(req.queryParams().contains("minAmount") && req.queryParams().contains("maxAmount")) - { - try - { - int minAmount = Integer.parseInt(req.queryMap("minAmount").value()); - int maxAmount = Integer.parseInt(req.queryMap("maxAmount").value()); - int amount = Math.abs(payment.getAmount()); - - if(amount >= minAmount && amount <= maxAmount) - { - return true; - } - else - { - return false; - } - } - catch(NumberFormatException e) - { - halt(400, "Bad Request"); - } - } - - return true; - } - - @Override - public void before() - { - handler.connect(); - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - try - { - ArrayList<Payment> payments = new ArrayList<>(); - ArrayList<NormalPayment> normalPayments = handler.getAllNormalPayments(); - ArrayList<RepeatingPayment> repeatingPayments = handler.getAllRepeatingPayments(); - for(Payment currentPayment : normalPayments) - { - if(meetsCriteria(req, currentPayment)) - { - payments.add(currentPayment); - } - } - - for(Payment currentPayment : repeatingPayments) - { - if(meetsCriteria(req, currentPayment)) - { - payments.add(currentPayment); - } - } - - Collections.sort(payments, new Comparator<Payment>() - { - @Override - public int compare(Payment o1, Payment o2) - { - return o1.getDate().compareTo(o2.getDate()); - } - }); - - return PaymentJSONSerializer.serializePaymentList(payments); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - - return null; - } - - @Override - public void after() - { - handler.closeConnection(); - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/rest/RestGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/rest/RestGet.java deleted file mode 100644 index 03e26be3425bf53cf418cd7aa6956a1e635bc6b2..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/rest/RestGet.java +++ /dev/null @@ -1,74 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.rest; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import spark.Request; -import spark.Response; - -public class RestGet implements AdvancedRoute -{ - private DatabaseHandler handler; - private Gson gson; - - public RestGet(DatabaseHandler handler, Gson gson) - { - this.handler = handler; - this.gson = gson; - } - - @Override - public void before() - { - handler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("year") || !req.queryParams().contains("month")) - { - halt(400, "Bad Request"); - } - - int year = 0; - int month = 0; - - try - { - year = Integer.parseInt(req.queryMap("year").value()); - month = Integer.parseInt(req.queryMap("month").value()); - - if(year < 0 || month < 1 || month > 12) - { - halt(400, "Bad Request"); - } - - try - { - int rest = handler.getRestForAllPreviousMonths(year, month); - - return gson.toJson(rest); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return null; - } - - @Override - public void after() - { - handler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/shutdown/Shutdown.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/shutdown/Shutdown.java deleted file mode 100644 index 9befe246b7dd6b51c0da296e04479b13ba6a8efe..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/shutdown/Shutdown.java +++ /dev/null @@ -1,57 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.shutdown; - -import java.util.Timer; -import java.util.TimerTask; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import logger.Logger; -import spark.Request; -import spark.Response; - -public class Shutdown implements AdvancedRoute -{ - private boolean shutdownInProgress; - - public Shutdown(boolean shutdownInProgress) - { - this.shutdownInProgress = shutdownInProgress; - } - - @Override - public void before() - { - } - - @Override - public Object handleRequest(Request req, Response res) - { - Logger.info("Shutting down server due to client request"); - if(!shutdownInProgress) - { - shutdownInProgress = true; - TimerTask task = new TimerTask() - { - @Override - public void run() - { - Logger.info("Shutdown DONE"); - System.exit(0); - } - }; - - Timer timer = new Timer(); - timer.schedule(task, 2000); - return ""; - } - else - { - Logger.info("Shutdown is already scheduled"); - return ""; - } - } - - @Override - public void after() - { - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForPayment.java deleted file mode 100644 index 85533edccee9ded42a02bb95ca0edcd3f65dcd8f..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForPayment.java +++ /dev/null @@ -1,64 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.match; - -import static spark.Spark.halt; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class TagMatchAddForPayment implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - - public TagMatchAddForPayment(DatabaseTagHandler tagHandler) - { - this.tagHandler = tagHandler; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("tagID") || !req.queryParams().contains("paymentID")) - { - halt(400, "Bad Request"); - } - - try - { - int tagID = Integer.parseInt(req.queryMap("tagID").value()); - int paymentID = Integer.parseInt(req.queryMap("paymentID").value()); - - if(tagID < 0 || paymentID < 0) - { - halt(400, "Bad Request"); - } - - tagHandler.addTagMatchForPayment(tagID, paymentID); - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForRepeatingPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForRepeatingPayment.java deleted file mode 100644 index f82989dce43ad5d3f20d99d31d7822ef0f410fcd..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForRepeatingPayment.java +++ /dev/null @@ -1,64 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.match; - -import static spark.Spark.halt; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class TagMatchAddForRepeatingPayment implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - - public TagMatchAddForRepeatingPayment(DatabaseTagHandler tagHandler) - { - this.tagHandler = tagHandler; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("tagID") || !req.queryParams().contains("repeatingPaymentID")) - { - halt(400, "Bad Request"); - } - - try - { - int tagID = Integer.parseInt(req.queryMap("tagID").value()); - int repeatingPaymentID = Integer.parseInt(req.queryMap("repeatingPaymentID").value()); - - if(tagID < 0 || repeatingPaymentID < 0) - { - halt(400, "Bad Request"); - } - - tagHandler.addTagMatchForRepeatingPayment(tagID, repeatingPaymentID); - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForPayment.java deleted file mode 100644 index b607b3fc8a475e88bd1298c850b69d6983e2bbef..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForPayment.java +++ /dev/null @@ -1,68 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.match; - -import static spark.Spark.halt; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import de.deadlocker8.budgetmasterserver.server.updater.TagUpdater; -import spark.Request; -import spark.Response; - -public class TagMatchDeleteForPayment implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - - public TagMatchDeleteForPayment(DatabaseTagHandler tagHandler) - { - this.tagHandler = tagHandler; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("tagID") || !req.queryParams().contains("paymentID")) - { - halt(400, "Bad Request"); - } - - try - { - int tagID = Integer.parseInt(req.queryMap("tagID").value()); - int paymentID = Integer.parseInt(req.queryMap("paymentID").value()); - - if(tagID < 0 || paymentID < 0) - { - halt(400, "Bad Request"); - } - - tagHandler.deleteTagMatchForPayment(tagID, paymentID); - - TagUpdater tagUpdater = new TagUpdater(tagHandler); - tagUpdater.deleteTagsIfNotReferenced(); - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForRepeatingPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForRepeatingPayment.java deleted file mode 100644 index e8d9b4dd61a70d470c03207e57680bd3d3e4cbf3..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForRepeatingPayment.java +++ /dev/null @@ -1,68 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.match; - -import static spark.Spark.halt; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import de.deadlocker8.budgetmasterserver.server.updater.TagUpdater; -import spark.Request; -import spark.Response; - -public class TagMatchDeleteForRepeatingPayment implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - - public TagMatchDeleteForRepeatingPayment(DatabaseTagHandler tagHandler) - { - this.tagHandler = tagHandler; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("tagID") || !req.queryParams().contains("repeatingPaymentID")) - { - halt(400, "Bad Request"); - } - - try - { - int tagID = Integer.parseInt(req.queryMap("tagID").value()); - int repeatingPaymentID = Integer.parseInt(req.queryMap("repeatingPaymentID").value()); - - if(tagID < 0 || repeatingPaymentID < 0) - { - halt(400, "Bad Request"); - } - - tagHandler.deleteTagMatchForRepeatingPayment(tagID, repeatingPaymentID); - - TagUpdater tagUpdater = new TagUpdater(tagHandler); - tagUpdater.deleteTagsIfNotReferenced(); - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForPayment.java deleted file mode 100644 index c14317c7e6318de787c50ddedcf476d0880f8619..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForPayment.java +++ /dev/null @@ -1,66 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.match; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class TagMatchExistingForPayment implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - private Gson gson; - - public TagMatchExistingForPayment(DatabaseTagHandler tagHandler, Gson gson) - { - this.tagHandler = tagHandler; - this.gson = gson; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("tagID") || !req.queryParams().contains("paymentID")) - { - halt(400, "Bad Request"); - } - - try - { - int tagID = Integer.parseInt(req.queryMap("tagID").value()); - int paymentID = Integer.parseInt(req.queryMap("paymentID").value()); - - if(tagID < 0 || paymentID < 0) - { - halt(400, "Bad Request"); - } - - return gson.toJson(tagHandler.isMatchExistingForPaymentID(tagID, paymentID)); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return null; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForRepeatingPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForRepeatingPayment.java deleted file mode 100644 index 6bc8dd8a2d84d8eb7ce2b0767d572c9dce76597c..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForRepeatingPayment.java +++ /dev/null @@ -1,66 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.match; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class TagMatchExistingForRepeatingPayment implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - private Gson gson; - - public TagMatchExistingForRepeatingPayment(DatabaseTagHandler tagHandler, Gson gson) - { - this.tagHandler = tagHandler; - this.gson = gson; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("tagID") || !req.queryParams().contains("repeatingPaymentID")) - { - halt(400, "Bad Request"); - } - - try - { - int tagID = Integer.parseInt(req.queryMap("tagID").value()); - int repeatingPaymentID = Integer.parseInt(req.queryMap("repeatingPaymentID").value()); - - if(tagID < 0 || repeatingPaymentID < 0) - { - halt(400, "Bad Request"); - } - - return gson.toJson(tagHandler.isMatchExistingForRepeatingPaymentID(tagID, repeatingPaymentID)); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return null; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForPayment.java deleted file mode 100644 index dcea960f421f1115b3eb11f1aa6b3b71abe93b52..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForPayment.java +++ /dev/null @@ -1,79 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.match; - -import static spark.Spark.halt; - -import java.util.ArrayList; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class TagMatchGetAllForPayment implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - private Gson gson; - - public TagMatchGetAllForPayment(DatabaseTagHandler tagHandler, Gson gson) - { - this.tagHandler = tagHandler; - this.gson = gson; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("paymentID")) - { - halt(400, "Bad Request"); - } - - try - { - int paymentID = Integer.parseInt(req.queryMap("paymentID").value()); - - if(paymentID < 0) - { - halt(400, "Bad Request"); - } - - ArrayList<Integer> tagIDs = tagHandler.getAllTagsForPayment(paymentID); - ArrayList<Tag> tags = new ArrayList<>(); - for(Integer currentTagID : tagIDs) - { - Tag currentTag = tagHandler.getTagByID(currentTagID); - if(currentTag != null) - { - tags.add(currentTag); - } - } - - return gson.toJson(tags); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return null; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForRepeatingPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForRepeatingPayment.java deleted file mode 100644 index 45d3ec84f142eeb61b8d433bdf36d9a4093fccbe..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForRepeatingPayment.java +++ /dev/null @@ -1,79 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.match; - -import static spark.Spark.halt; - -import java.util.ArrayList; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class TagMatchGetAllForRepeatingPayment implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - private Gson gson; - - public TagMatchGetAllForRepeatingPayment(DatabaseTagHandler tagHandler, Gson gson) - { - this.tagHandler = tagHandler; - this.gson = gson; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("repeatingPaymentID")) - { - halt(400, "Bad Request"); - } - - try - { - int repeatingPaymentID = Integer.parseInt(req.queryMap("repeatingPaymentID").value()); - - if(repeatingPaymentID < 0) - { - halt(400, "Bad Request"); - } - - ArrayList<Integer> tagIDs = tagHandler.getAllTagsForRepeatingPayment(repeatingPaymentID); - ArrayList<Tag> tags = new ArrayList<>(); - for(Integer currentTagID : tagIDs) - { - Tag currentTag = tagHandler.getTagByID(currentTagID); - if(currentTag != null) - { - tags.add(currentTag); - } - } - - return gson.toJson(tags); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return null; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagAdd.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagAdd.java deleted file mode 100644 index 03dddec883199737478b354444cc5fcfbddbd250..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagAdd.java +++ /dev/null @@ -1,56 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.tag; - -import static spark.Spark.halt; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class TagAdd implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - - public TagAdd(DatabaseTagHandler tagHandler) - { - this.tagHandler = tagHandler; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("name")) - { - halt(400, "Bad Request"); - } - - try - { - tagHandler.addTag(req.queryMap("name").value()); - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagDelete.java deleted file mode 100644 index df498f1d5260d39867692ce4f39133708e228d79..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagDelete.java +++ /dev/null @@ -1,68 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.tag; - -import static spark.Spark.halt; - -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class TagDelete implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - - public TagDelete(DatabaseTagHandler tagHandler) - { - this.tagHandler = tagHandler; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("id")) - { - halt(400, "Bad Request"); - } - - int id = -1; - - try - { - id = Integer.parseInt(req.queryMap("id").value()); - - if(id < 0) - { - halt(400, "Bad Request"); - } - - try - { - tagHandler.deleteTag(id); - - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGet.java deleted file mode 100644 index 1a6f419b191e2c762250d394449550c18b9885b9..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGet.java +++ /dev/null @@ -1,72 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.tag; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class TagGet implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - private Gson gson; - - public TagGet(DatabaseTagHandler tagHandler, Gson gson) - { - this.tagHandler = tagHandler; - this.gson = gson; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("id")) - { - halt(400, "Bad Request"); - } - - int id = -1; - - try - { - id = Integer.parseInt(req.queryMap("id").value()); - - if(id < 0) - { - halt(400, "Bad Request"); - } - - try - { - Tag tag = tagHandler.getTagByID(id); - - return gson.toJson(tag); - } - catch(IllegalStateException e) - { - halt(500, "Internal Server Error"); - } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - return null; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetAll.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetAll.java deleted file mode 100644 index 3fc9d143729c636eb20a22cd58a76a4e50807e46..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetAll.java +++ /dev/null @@ -1,54 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.tag; - -import static spark.Spark.halt; - -import java.util.ArrayList; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class TagGetAll implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - private Gson gson; - - public TagGetAll(DatabaseTagHandler tagHandler, Gson gson) - { - this.tagHandler = tagHandler; - this.gson = gson; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - try - { - ArrayList<Tag> tags = tagHandler.getAllTags(); - - return gson.toJson(tags); - } - catch(IllegalStateException e) - { - halt(500, "Internal Server Error"); - } - - return null; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetByName.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetByName.java deleted file mode 100644 index c2d834a1b04e30820f5d305eb2fd89dcb9e87e9f..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetByName.java +++ /dev/null @@ -1,56 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.tag.tag; - -import static spark.Spark.halt; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import spark.Request; -import spark.Response; - -public class TagGetByName implements AdvancedRoute -{ - private DatabaseTagHandler tagHandler; - private Gson gson; - - public TagGetByName(DatabaseTagHandler tagHandler, Gson gson) - { - this.tagHandler = tagHandler; - this.gson = gson; - } - - @Override - public void before() - { - tagHandler.connect(); - } - - @Override - public Object handleRequest(Request req, Response res) - { - if(!req.queryParams().contains("name")) - { - halt(400, "Bad Request"); - } - - try - { - Tag tag = tagHandler.getTagByName(req.queryMap("name").value()); - return gson.toJson(tag); - } - catch(Exception e) - { - halt(500, "Internal Server Error"); - } - - return null; - } - - @Override - public void after() - { - tagHandler.closeConnection(); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java deleted file mode 100644 index 6baa1a309ee9fa16db207ec8692bec8bead0089e..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java +++ /dev/null @@ -1,102 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.updater; - -import java.util.ArrayList; - -import org.joda.time.DateTime; -import org.joda.time.Days; -import org.joda.time.Months; - -import de.deadlocker8.budgetmaster.logic.payment.LatestRepeatingPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import logger.Logger; - -public class RepeatingPaymentUpdater -{ - private DatabaseHandler handler; - - public RepeatingPaymentUpdater(DatabaseHandler handler) - { - this.handler = handler; - } - - @SuppressWarnings("unlikely-arg-type") - public void updateRepeatingPayments(DateTime now) - { - try - { - ArrayList<RepeatingPayment> repeatingPayments = handler.getAllRepeatingPayments(); - ArrayList<LatestRepeatingPayment> latest = handler.getLatestRepeatingPaymentEntries(); - - for(RepeatingPayment currentPayment : repeatingPayments) - { - DateTime date = now; - int index = latest.indexOf(currentPayment); - if(currentPayment.getRepeatEndDate() != null) - { - DateTime endDate = DateTime.parse(currentPayment.getRepeatEndDate()); - if(endDate.isBefore(date)) - { - date = endDate; - } - } - ArrayList<DateTime> correctDates = getCorrectRepeatingDates(currentPayment, date); - - if(index != -1) - { - LatestRepeatingPayment currentLatest = latest.get(index); - DateTime latestDate = DateTime.parse(currentLatest.getLastDate()); - - for(int i = correctDates.size()-1; i > 0; i--) - { - DateTime currentDate = correctDates.get(i); - if(currentDate.isBefore(latestDate) || currentDate.isEqual(latestDate)) - { - break; - } - - handler.addRepeatingPaymentEntry(currentLatest.getRepeatingPaymentID(), currentDate.toString("yyyy-MM-dd")); - } - } - else - { - for(DateTime currentDate : correctDates) - { - handler.addRepeatingPaymentEntry(currentPayment.getID(), currentDate.toString("yyyy-MM-dd")); - } - } - } - } - catch(IllegalStateException ex) - { - Logger.error(ex); - } - } - - private ArrayList<DateTime> getCorrectRepeatingDates(RepeatingPayment payment, DateTime now) - { - ArrayList<DateTime> dates = new ArrayList<>(); - DateTime startDate = DateTime.parse(payment.getDate()); - - //repeat every x days - if(payment.getRepeatInterval() != 0) - { - int numberOfDays = Days.daysBetween(startDate, now).getDays(); - int occurrences = numberOfDays / payment.getRepeatInterval(); - for(int i = 0; i <= occurrences; i++) - { - dates.add(startDate.plusDays(i * payment.getRepeatInterval())); - } - } - //repeat every month on day x - else - { - int numberOfMonths = Months.monthsBetween(startDate.withDayOfMonth(payment.getRepeatMonthDay()), now).getMonths(); - for(int i = 0; i <= numberOfMonths; i++) - { - dates.add(startDate.plusMonths(i)); - } - } - return dates; - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/TagUpdater.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/TagUpdater.java deleted file mode 100644 index 1776c9be0d3ed3367181b8b5e588750c93b1b841..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/TagUpdater.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.deadlocker8.budgetmasterserver.server.updater; - -import java.util.ArrayList; - -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; - -public class TagUpdater -{ - private DatabaseTagHandler tagHandler; - - public TagUpdater(DatabaseTagHandler tagHandler) - { - this.tagHandler = tagHandler; - } - - public void deleteTagsIfNotReferenced() - { - ArrayList<Tag> tags = tagHandler.getAllTags(); - for(Tag currentTag : tags) - { - if(!tagHandler.isTagUsedInMatches(currentTag.getID())) - { - tagHandler.deleteTag(currentTag.getID()); - } - } - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/_en.properties b/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/_en.properties deleted file mode 100644 index 18fa55ffc20c2327236e5cd4c09f4e2676eb9dfc..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/_en.properties +++ /dev/null @@ -1,8 +0,0 @@ -app.name=BudgetMasterServer -version.code=13 -version.name=1.8.0 -version.date=17.12.17 -author=Robert Goldmann - -category.none=No Category -category.rest=Rest \ No newline at end of file diff --git a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/certificate/default_certificate.crt b/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/certificate/default_certificate.crt deleted file mode 100644 index e64160ce6c2abbf275469868fcd6ecd512009fef..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/certificate/default_certificate.crt +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDHjCCAgYCCQDMkgYSh6618zANBgkqhkiG9w0BAQsFADBQMQswCQYDVQQGEwJE -RTEUMBIGA1UECgwLZGVhZGxvY2tlcjgxFTATBgNVBAsMDEJ1ZGdldE1hc3RlcjEU -MBIGA1UEAwwLZGVhZGxvY2tlcjgwIBcNMTcxMTI1MTAwMzM3WhgPMjA4NTEyMTIx -MDAzMzdaMFAxCzAJBgNVBAYTAkRFMRQwEgYDVQQKDAtkZWFkbG9ja2VyODEVMBMG -A1UECwwMQnVkZ2V0TWFzdGVyMRQwEgYDVQQDDAtkZWFkbG9ja2VyODCCASIwDQYJ -KoZIhvcNAQEBBQADggEPADCCAQoCggEBALzI08zIpuoK2zbgbOtAAEfwYxRZTeJr -d0+iFAYPoCgDruh2ldO6BXGpanw1QYh0dFkW/o+DhfuYnFknpwxQrBWmlG/hjFbz -QdT+5zefc1q6rX7tOJMFUY1Qj5s3l1ZFHAuD4kOUr8lgDQqoc4l4B+WTXiXPYnJh -+DcTH6oBHJVu40YXsTyGwBW+DDBn5VvkrhNkqqfedL/qQ0Nl41UTLOSG5Lg7hezP -DQiG3mEbpugGbqWV5t2CgyPr0eZMQKKo2srKPm+aIDp0kWyOIR3B7Bv9Onp70/QM -etMyLa9QWJyaGHaFkl7xwBwCl2L209iTYmJSC1GZQ252uT701VwIX70CAwEAATAN -BgkqhkiG9w0BAQsFAAOCAQEAZSH6BN4J7vLhBnZAVXrqVv/+ALEuKOpWG9pk8jfF -k1DWvH6NwIjrgrY13e6iEai/YbplGrb3U90bDF+kSH3fCu+9DueoSRlZ/pPmMDGT -1hFXU0QNNV8rjWYlttndpzaHqnxitJ4ERBcts4sFLUFq+aIQdGYR5/gpQQcXmk10 -l3suT7O8NeSM7QGFO5rMm6k6XdLOBVvzaFwzuOwxOSvxV5dFwuRFuMxYddCnBGYH -kyPom4WfRKCvcbNT6RvJWQvBX5YOjIXpOV4gmwVtBbmhxrkSQvE56zrc2mewH6MN -dDTJmV5ZYlA4hXxSELOvmNqPE1SPtK3rNjtH55BtXuqvQQ== ------END CERTIFICATE----- diff --git a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/certificate/default_keystore.jks b/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/certificate/default_keystore.jks deleted file mode 100644 index 5850e6d1244ed95c4abe60eaed0faee3ca80f247..0000000000000000000000000000000000000000 Binary files a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/certificate/default_keystore.jks and /dev/null differ diff --git a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/settings.json b/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/settings.json deleted file mode 100644 index bbe6f030a7ca760d8308ba046d6068565acf28e1..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/settings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "databaseType": "mysql", - "databaseUrl": "localhost:3306/", - "databaseName": "budgetmaster", - "databaseUsername": "root", - "databasePassword": "", - "serverPort": 9000, - "serverSecret": "BudgetMaster", - "keystorePath": "default", - "keystorePassword": "BudgetMaster" -} \ No newline at end of file diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseHandlerTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseHandlerTest.java deleted file mode 100644 index 216c65fc477c7f2bbb08dd09953a98d604225343..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseHandlerTest.java +++ /dev/null @@ -1,282 +0,0 @@ -package de.deadlocker8.budgetmaster.tests.database; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.net.URISyntaxException; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Locale; - -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.payment.LatestRepeatingPayment; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.Utils; -import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import tools.Localization; - -public class DatabaseHandlerTest -{ - private static DatabaseHandler databaseHandler; - - @BeforeClass - public static void init() - { - try - { - //init - Settings settings = Utils.loadSettings(); - System.out.println(settings); - DatabaseHandler handler = Utils.getDatabaseHandler(settings); - handler.deleteDatabase(); - handler.closeConnection(); - Connection connection = Utils.getDatabaseConnection(settings); - DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); - creator.createTables(); - connection.close(); - databaseHandler = Utils.getDatabaseHandler(settings); - - Localization.init("de/deadlocker8/budgetmaster/"); - Localization.loadLanguage(Locale.ENGLISH); - } - catch(IOException | URISyntaxException | SQLException | ClassNotFoundException e) - { - fail(e.getMessage()); - } - } - - @Before - public void before() - { - databaseHandler.connect(); - } - - @After - public void after() - { - databaseHandler.closeConnection(); - } - - @Test - public void testLastInsertID() - { - Category expected = new Category("123 Tü+?est Category", "#FF0000"); - databaseHandler.addCategory(expected.getName(), expected.getColor()); - //3 because "NONE" and "Übertrag" has already been inserted at database creation - assertEquals(3, databaseHandler.getLastInsertID()); - } - - @Test - public void testCategory() - { - //add - Category expected = new Category("123 Tü+?est Category", "#FF0000"); - databaseHandler.addCategory(expected.getName(), expected.getColor()); - ArrayList<Category> categories = databaseHandler.getCategories(); - - //get - Category category = databaseHandler.getCategory(categories.get(categories.size()-1).getID()); - assertEquals(expected.getName(), category.getName()); - assertEquals(expected.getColor(), category.getColor()); - - //update - Category expectedUpdated = new Category(category.getID(), "456", "#00FF00"); - databaseHandler.updateCategory(expectedUpdated.getID(), expectedUpdated.getName(), expectedUpdated.getColor()); - category = databaseHandler.getCategory(expectedUpdated.getID()); - assertEquals(expectedUpdated.getName(), category.getName()); - assertEquals(expectedUpdated.getColor(), category.getColor()); - - //misc - category = databaseHandler.getCategory("NONE", "#FFFFFF"); - assertEquals(1, category.getID()); - - assertTrue(databaseHandler.categoryExists(1)); - } - - @Test - public void testDeleteCategory() - { - //add - Category expected = new Category("123 Tü+?est Category", "#FF0000"); - databaseHandler.addCategory(expected.getName(), expected.getColor()); - - int id = databaseHandler.getLastInsertID(); - - databaseHandler.deleteCategory(id); - Category category = databaseHandler.getCategory(id); - - assertNull(category); - } - - @Test - public void testNormalPayment() - { - //add - NormalPayment expectedPayment = new NormalPayment(1, 1000, "2017-03-01", 2, "Buchung", "Lorem Ipsum"); - - databaseHandler.addNormalPayment(expectedPayment.getAmount(), - expectedPayment.getDate(), - expectedPayment.getCategoryID(), - expectedPayment.getName(), - expectedPayment.getDescription()); - - int id = databaseHandler.getLastInsertID(); - - //get - NormalPayment payment = databaseHandler.getPayment(id); - - assertEquals(expectedPayment.getAmount(), payment.getAmount()); - assertEquals(expectedPayment.getDate(), payment.getDate()); - assertEquals(expectedPayment.getCategoryID(), payment.getCategoryID()); - assertEquals(expectedPayment.getName(), payment.getName()); - assertEquals(expectedPayment.getDescription(), payment.getDescription()); - - //update - NormalPayment expectedUpdated = new NormalPayment(id, 2000, "2017-03-02", 1, "Buchung 2", "Lorem Ipsum"); - databaseHandler.updateNormalPayment(expectedUpdated.getID(), - expectedUpdated.getAmount(), - expectedUpdated.getDate(), - expectedUpdated.getCategoryID(), - expectedUpdated.getName(), - expectedUpdated.getDescription()); - - payment = databaseHandler.getPayment(id); - - assertEquals(expectedUpdated.getAmount(), payment.getAmount()); - assertEquals(expectedUpdated.getDate(), payment.getDate()); - assertEquals(expectedUpdated.getCategoryID(), payment.getCategoryID()); - assertEquals(expectedUpdated.getName(), payment.getName()); - assertEquals(expectedUpdated.getDescription(), payment.getDescription()); - - //misc - assertEquals(1, databaseHandler.getPayments(2017, 03).size()); - assertEquals(0, databaseHandler.getPayments(2015, 03).size()); - - assertEquals(1, databaseHandler.getPaymentsBetween("2016-01-01", "2018-01-01").size()); - assertEquals(0, databaseHandler.getPaymentsBetween("2018-01-01", "2019-01-01").size()); - } - - @Test - public void testDeleteNormalPayment() - { - //add - NormalPayment expectedPayment = new NormalPayment(1, 1000, "2017-03-01", 2, "Buchung", "Lorem Ipsum"); - - databaseHandler.addNormalPayment(expectedPayment.getAmount(), - expectedPayment.getDate(), - expectedPayment.getCategoryID(), - expectedPayment.getName(), - expectedPayment.getDescription()); - - int id = databaseHandler.getLastInsertID(); - - databaseHandler.deletePayment(id); - NormalPayment payment = databaseHandler.getPayment(id); - - assertNull(payment); - } - - @Test - public void testRepeatingPayment() - { - //add - RepeatingPayment expectedPayment = new RepeatingPayment(1, 1000, "2017-03-01", 2, "Buchung", "Lorem Ipsum", 0, null, 15); - - databaseHandler.addRepeatingPayment(expectedPayment.getAmount(), - expectedPayment.getDate(), - expectedPayment.getCategoryID(), - expectedPayment.getName(), - expectedPayment.getDescription(), - expectedPayment.getRepeatInterval(), - expectedPayment.getRepeatEndDate(), - expectedPayment.getRepeatMonthDay()); - //get - RepeatingPayment payment = databaseHandler.getRepeatingPayment(databaseHandler.getLastInsertID()); - - assertEquals(expectedPayment.getAmount(), payment.getAmount()); - assertEquals(expectedPayment.getDate(), payment.getDate()); - assertEquals(expectedPayment.getCategoryID(), payment.getCategoryID()); - assertEquals(expectedPayment.getName(), payment.getName()); - assertEquals(expectedPayment.getDescription(), payment.getDescription()); - assertEquals(expectedPayment.getRepeatInterval(), payment.getRepeatInterval()); - assertEquals(expectedPayment.getRepeatEndDate(), payment.getRepeatEndDate()); - assertEquals(expectedPayment.getRepeatMonthDay(), payment.getRepeatMonthDay()); - - //RepeatingPaymentEntry - databaseHandler.addRepeatingPaymentEntry(expectedPayment.getID(), "2017-03-15"); - ArrayList<LatestRepeatingPayment> latestPayments = databaseHandler.getLatestRepeatingPaymentEntries(); - assertEquals(1, latestPayments.size()); - assertEquals(expectedPayment.getID(), latestPayments.get(0).getRepeatingPaymentID()); - assertEquals("2017-03-15", latestPayments.get(0).getLastDate()); - - //misc - assertEquals(1, databaseHandler.getRepeatingPayments(2017, 03).size()); - assertEquals(0, databaseHandler.getRepeatingPayments(2015, 03).size()); - - assertEquals(1, databaseHandler.getRepeatingPaymentsBetween("2016-01-01", "2018-01-01").size()); - assertEquals(0, databaseHandler.getRepeatingPaymentsBetween("2018-01-01", "2019-01-01").size()); - - assertEquals(1, databaseHandler.getAllRepeatingPayments().size()); - } - - @Test - public void testDeleteRepeatingPayment() - { - RepeatingPayment expectedPayment = new RepeatingPayment(1, 1000, "2017-03-01", 2, "Buchung", "Lorem Ipsum", 0, null, 15); - - databaseHandler.addRepeatingPayment(expectedPayment.getAmount(), - expectedPayment.getDate(), - expectedPayment.getCategoryID(), - expectedPayment.getName(), - expectedPayment.getDescription(), - expectedPayment.getRepeatInterval(), - expectedPayment.getRepeatEndDate(), - expectedPayment.getRepeatMonthDay()); - - int id = databaseHandler.getLastInsertID(); - - databaseHandler.deleteRepeatingPayment(id); - RepeatingPayment payment = databaseHandler.getRepeatingPayment(id); - - assertNull(payment); - } - - @Test - public void testRest() - { - //add payments for previous months - NormalPayment expectedPayment = new NormalPayment(1, 1000, "2017-03-01", 2, "Buchung", "Lorem Ipsum"); - databaseHandler.addNormalPayment(expectedPayment.getAmount(), - expectedPayment.getDate(), - expectedPayment.getCategoryID(), - expectedPayment.getName(), - expectedPayment.getDescription()); - int idPayment1 = databaseHandler.getLastInsertID(); - - expectedPayment = new NormalPayment(2, -800, "2017-02-01", 2, "Buchung", "Lorem Ipsum"); - databaseHandler.addNormalPayment(expectedPayment.getAmount(), - expectedPayment.getDate(), - expectedPayment.getCategoryID(), - expectedPayment.getName(), - expectedPayment.getDescription()); - int idPayment2 = databaseHandler.getLastInsertID(); - - assertEquals(1000, databaseHandler.getRest(2017, 3)); - assertEquals(200, databaseHandler.getRestForAllPreviousMonths(2017, 4)); - - databaseHandler.deletePayment(idPayment1); - databaseHandler.deletePayment(idPayment2); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseImportExportTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseImportExportTest.java deleted file mode 100644 index ad8214ff31ff313e87f87c9af999b24008256c7c..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseImportExportTest.java +++ /dev/null @@ -1,168 +0,0 @@ -package de.deadlocker8.budgetmaster.tests.database; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Locale; - -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import de.deadlocker8.budgetmaster.logic.category.Category; -import de.deadlocker8.budgetmaster.logic.database.Database; -import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; -import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmaster.logic.utils.FileHelper; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.Utils; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseExporter; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseImporter; -import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import tools.Localization; - -public class DatabaseImportExportTest -{ - private static Settings settings; - private static DatabaseHandler databaseHandler; - private static DatabaseTagHandler tagHandler; - - @BeforeClass - public static void init() - { - try - { - //init - settings = Utils.loadSettings(); - System.out.println(settings); - DatabaseHandler handler = Utils.getDatabaseHandler(settings); - handler.deleteDatabase(); - handler.closeConnection(); - Connection connection = Utils.getDatabaseConnection(settings); - DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); - creator.createTables(); - connection.close(); - databaseHandler = Utils.getDatabaseHandler(settings); - tagHandler = Utils.getDatabaseTagHandler(settings); - - Localization.init("de/deadlocker8/budgetmaster/"); - Localization.loadLanguage(Locale.ENGLISH); - } - catch(IOException | URISyntaxException | SQLException | ClassNotFoundException e) - { - fail(e.getMessage()); - } - } - - @Before - public void before() - { - databaseHandler.connect(); - tagHandler.connect(); - } - - @After - public void after() - { - databaseHandler.closeConnection(); - tagHandler.closeConnection(); - } - - @Test - public void testImport() - { - try - { - File file = Paths.get("src/test/resources/de/deadlocker8/budgetmaster/import.json").toFile(); - Database database = FileHelper.loadDatabaseJSON(file); - - DatabaseImporter importer = new DatabaseImporter(databaseHandler, tagHandler); - importer.importDatabase(database); - - //test category - Category expectedCategory = new Category(3, "123 Tü+?est Category", "#FF9500"); - ArrayList<Category> categories = databaseHandler.getCategories(); - - Category category = databaseHandler.getCategory(categories.get(categories.size()-1).getID()); - assertEquals(expectedCategory.getName(), category.getName()); - assertEquals(expectedCategory.getColor(), category.getColor()); - - //test normal payment - NormalPayment expectedPayment = new NormalPayment(1, 23, "2017-06-02", 3, "Test Normal", "Lorem Ipsum"); - NormalPayment payment = databaseHandler.getPayment(1); - assertEquals(expectedPayment.getAmount(), payment.getAmount()); - assertEquals(expectedPayment.getDate(), payment.getDate()); - assertEquals(expectedPayment.getCategoryID(), payment.getCategoryID()); - assertEquals(expectedPayment.getName(), payment.getName()); - assertEquals(expectedPayment.getDescription(), payment.getDescription()); - - //test repeating payment - RepeatingPayment expectedRepeatingPayment = new RepeatingPayment(1, -10012, "2017-06-01", 1, "Test Repeating", "Lorem Ipsum", 7, "2017-06-30", 0); - RepeatingPayment repeatingPayment = databaseHandler.getRepeatingPayment(1); - assertEquals(expectedRepeatingPayment.getAmount(), repeatingPayment.getAmount()); - assertEquals(expectedRepeatingPayment.getDate(), repeatingPayment.getDate()); - assertEquals(expectedRepeatingPayment.getCategoryID(), repeatingPayment.getCategoryID()); - assertEquals(expectedRepeatingPayment.getName(), repeatingPayment.getName()); - assertEquals(expectedRepeatingPayment.getDescription(), repeatingPayment.getDescription()); - assertEquals(expectedRepeatingPayment.getRepeatInterval(), repeatingPayment.getRepeatInterval()); - assertEquals(expectedRepeatingPayment.getRepeatEndDate(), repeatingPayment.getRepeatEndDate()); - assertEquals(expectedRepeatingPayment.getRepeatMonthDay(), repeatingPayment.getRepeatMonthDay()); - } - catch(Exception e) - { - e.printStackTrace(); - fail(e.getMessage()); - } - } - - @Test - public void testExport() - { - try - { - databaseHandler.deleteDatabase(); - databaseHandler.closeConnection(); - Connection connection = Utils.getDatabaseConnection(settings); - DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); - creator.createTables(); - connection.close(); - databaseHandler = Utils.getDatabaseHandler(settings);; - - File file = Paths.get("src/test/resources/de/deadlocker8/budgetmaster/import.json").toFile(); - Database database = FileHelper.loadDatabaseJSON(file); - - DatabaseImporter importer = new DatabaseImporter(databaseHandler, tagHandler); - importer.importDatabase(database); - - file = Paths.get("src/test/resources/de/deadlocker8/budgetmaster/export.json").toFile(); - DatabaseExporter exporter = new DatabaseExporter(settings); - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - String databaseJSON = gson.toJson(exporter.exportDatabase()).replaceAll("\n", ""); - FileHelper.saveDatabaseJSON(file, databaseJSON); - - String expectedJSON = new String(Files.readAllBytes(Paths.get("src/test/resources/de/deadlocker8/budgetmaster/import.json"))); - String exportedJSON = new String(Files.readAllBytes(Paths.get("src/test/resources/de/deadlocker8/budgetmaster/export.json"))); - - assertEquals(expectedJSON, exportedJSON); - } - catch(Exception e) - { - e.printStackTrace(); - fail(e.getMessage()); - } - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseTagHandlerTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseTagHandlerTest.java deleted file mode 100644 index 5a6520d6adca0f95bee5b059a64608b1c3341a27..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseTagHandlerTest.java +++ /dev/null @@ -1,144 +0,0 @@ -package de.deadlocker8.budgetmaster.tests.database; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.net.URISyntaxException; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Locale; - -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.Utils; -import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; -import tools.Localization; - -public class DatabaseTagHandlerTest -{ - private static DatabaseTagHandler tagHandler; - - @BeforeClass - public static void init() - { - try - { - //init - Settings settings = Utils.loadSettings(); - System.out.println(settings); - DatabaseHandler handler = Utils.getDatabaseHandler(settings); - handler.deleteDatabase(); - handler.closeConnection(); - Connection connection = Utils.getDatabaseConnection(settings); - DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); - creator.createTables(); - connection.close(); - tagHandler = Utils.getDatabaseTagHandler(settings); - - Localization.init("de/deadlocker8/budgetmaster/"); - Localization.loadLanguage(Locale.ENGLISH); - } - catch(IOException | URISyntaxException | SQLException | ClassNotFoundException e) - { - fail(e.getMessage()); - } - } - - @Before - public void before() - { - tagHandler.connect(); - } - - @After - public void after() - { - tagHandler.closeConnection(); - } - - @Test - public void testTag() - { - //add - Tag expected = new Tag(1, "sd836f4ds86f4sd86"); - tagHandler.addTag(expected.getName()); - ArrayList<Tag> tags = tagHandler.getAllTags(); - assertEquals(1, tags.size()); - - //get - Tag tag = tagHandler.getTagByID(1); - assertEquals(expected.getName(), tag.getName()); - - tag = tagHandler.getTagByName(expected.getName()); - assertEquals(1, tag.getID()); - } - - @Test - public void testDeleteCategory() - { - //add - Tag expected = new Tag(1, "115"); - tagHandler.addTag(expected.getName()); - - int id = tagHandler.getLastInsertID(); - - tagHandler.deleteTag(id); - Tag tag = tagHandler.getTagByID(id); - - assertNull(tag); - } - - @Test - public void testMatchForNormalPayment() - { - //add - Tag expected = new Tag(1, "wqeolugjf"); - tagHandler.addTag(expected.getName()); - int id = tagHandler.getLastInsertID(); - - tagHandler.addTagMatchForPayment(id, 1); - ArrayList<Integer> tags = tagHandler.getAllTagsForPayment(1); - assertEquals(1, tags.size()); - - assertTrue(tagHandler.isMatchExistingForPaymentID(id, 1)); - assertFalse(tagHandler.isMatchExistingForPaymentID(id, -3)); - - assertTrue(tagHandler.isTagUsedInMatches(id)); - - tagHandler.deleteTagMatchForPayment(id, 1); - assertFalse(tagHandler.isMatchExistingForPaymentID(id, 1)); - } - - @Test - public void testMatchRepeatingPayment() - { - //add - Tag expected = new Tag(1, "as5d4s5a4d"); - tagHandler.addTag(expected.getName()); - int id = tagHandler.getLastInsertID(); - - tagHandler.addTagMatchForRepeatingPayment(id, 1); - ArrayList<Integer> tags = tagHandler.getAllTagsForRepeatingPayment(1); - assertEquals(1, tags.size()); - - assertTrue(tagHandler.isMatchExistingForRepeatingPaymentID(id, 1)); - assertFalse(tagHandler.isMatchExistingForRepeatingPaymentID(id, -3)); - - assertTrue(tagHandler.isTagUsedInMatches(id)); - - tagHandler.deleteTagMatchForRepeatingPayment(id, 1); - assertFalse(tagHandler.isMatchExistingForRepeatingPaymentID(id, 1)); - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/settings/SettingsTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/settings/SettingsTest.java deleted file mode 100644 index 7a9329b642561f3b5ac477d8c3b5dc73f83a538c..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/settings/SettingsTest.java +++ /dev/null @@ -1,41 +0,0 @@ -package de.deadlocker8.budgetmaster.tests.settings; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.net.URISyntaxException; - -import org.junit.Test; - -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.Utils; - -public class SettingsTest -{ - @Test - public void testRead() - { - try - { - Settings settings = Utils.loadSettings(); - - Settings expectedSettings = new Settings(); - expectedSettings.setDatabaseType("mysql"); - expectedSettings.setDatabaseName("budgetmaster"); - expectedSettings.setDatabaseUrl("localhost:3306/"); - expectedSettings.setDatabaseUsername("root"); - expectedSettings.setDatabasePassword(""); - expectedSettings.setServerPort(9000); - expectedSettings.setServerSecret("geheim"); - expectedSettings.setKeystorePath("default"); - expectedSettings.setKeystorePassword("BudgetMaster"); - - assertEquals(expectedSettings, settings); - } - catch(IOException | URISyntaxException e) - { - fail(e.getMessage()); - } - } -} \ No newline at end of file diff --git a/BudgetMasterServer/src/test/resources/de/deadlocker8/budgetmaster/_en.properties b/BudgetMasterServer/src/test/resources/de/deadlocker8/budgetmaster/_en.properties deleted file mode 100644 index 9a6167b39161f92cc7325cd55bdf1c46419296a3..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/test/resources/de/deadlocker8/budgetmaster/_en.properties +++ /dev/null @@ -1,8 +0,0 @@ -app.name=BudgetMasterServer -version.code=10 -version.name=1.6.0_alpha -version.date=31.08.17 -author=Robert Goldmann - -category.none=No Category -category.rest=Rest \ No newline at end of file diff --git a/BudgetMasterServer/src/test/resources/de/deadlocker8/budgetmaster/export.json b/BudgetMasterServer/src/test/resources/de/deadlocker8/budgetmaster/export.json deleted file mode 100644 index 2ec45ae722fd88352583b6f633d6ef837f799103..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/test/resources/de/deadlocker8/budgetmaster/export.json +++ /dev/null @@ -1 +0,0 @@ -{ "TYPE": "BUDGETMASTER_DATABASE", "VERSION": 2, "categories": [ { "ID": 1, "name": "NONE", "color": "#FFFFFF" }, { "ID": 2, "name": "Übertrag", "color": "#FFFF00" }, { "ID": 3, "name": "123 Tü+?est Category", "color": "#FF9500" } ], "normalPayments": [ { "ID": 1, "amount": 23, "date": "2017-06-02", "categoryID": 3, "name": "Test Normal", "description": "Lorem Ipsum" } ], "repeatingPayments": [ { "repeatInterval": 7, "repeatEndDate": "2017-06-30", "repeatMonthDay": 0, "ID": 1, "amount": -10012, "date": "2017-06-01", "categoryID": 1, "name": "Test Repeating", "description": "Lorem Ipsum" } ], "tags": [ { "ID": 1, "name": "Lorem Ipsum" }, { "ID": 2, "name": "123" } ], "tagMatches": [ { "tagID": 1, "paymentID": -1, "repeatingPaymentID": 1 }, { "tagID": 2, "paymentID": 1, "repeatingPaymentID": -1 } ]} \ No newline at end of file diff --git a/BudgetMasterServer/src/test/resources/de/deadlocker8/budgetmaster/import.json b/BudgetMasterServer/src/test/resources/de/deadlocker8/budgetmaster/import.json deleted file mode 100644 index 2ec45ae722fd88352583b6f633d6ef837f799103..0000000000000000000000000000000000000000 --- a/BudgetMasterServer/src/test/resources/de/deadlocker8/budgetmaster/import.json +++ /dev/null @@ -1 +0,0 @@ -{ "TYPE": "BUDGETMASTER_DATABASE", "VERSION": 2, "categories": [ { "ID": 1, "name": "NONE", "color": "#FFFFFF" }, { "ID": 2, "name": "Übertrag", "color": "#FFFF00" }, { "ID": 3, "name": "123 Tü+?est Category", "color": "#FF9500" } ], "normalPayments": [ { "ID": 1, "amount": 23, "date": "2017-06-02", "categoryID": 3, "name": "Test Normal", "description": "Lorem Ipsum" } ], "repeatingPayments": [ { "repeatInterval": 7, "repeatEndDate": "2017-06-30", "repeatMonthDay": 0, "ID": 1, "amount": -10012, "date": "2017-06-01", "categoryID": 1, "name": "Test Repeating", "description": "Lorem Ipsum" } ], "tags": [ { "ID": 1, "name": "Lorem Ipsum" }, { "ID": 2, "name": "123" } ], "tagMatches": [ { "tagID": 1, "paymentID": -1, "repeatingPaymentID": 1 }, { "tagID": 2, "paymentID": 1, "repeatingPaymentID": -1 } ]} \ No newline at end of file diff --git a/lib/Tools.jar b/lib/Tools.jar deleted file mode 100644 index 65c7881f2a2ae85bc3ded29e8fac64f62bb78fb1..0000000000000000000000000000000000000000 Binary files a/lib/Tools.jar and /dev/null differ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..3a758b0af76c5326342e6026af7e91f857cb0bb3 --- /dev/null +++ b/pom.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>de.deadlocker8</groupId> + <artifactId>BudgetMaster</artifactId> + <version>2.0.0</version> + <name>BudgetMaster</name> + + <parent> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-parent</artifactId> + <version>1.5.10.RELEASE</version> + <relativePath/> + </parent> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <java.version>1.8</java.version> + </properties> + + <dependencies> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file diff --git a/src/de/deadlocker8/budgetmaster/resources/changelog.json b/src/de/deadlocker8/budgetmaster/resources/changelog.json deleted file mode 100644 index 009874340f070bf359b7ecab471d2de9e75c723b..0000000000000000000000000000000000000000 --- a/src/de/deadlocker8/budgetmaster/resources/changelog.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "1":"Client\n-implemented remaining budget overview\n-implemented payment overview\n-implemented categories\n-implemented settings\n\nServer\n-implemented database creation\n-implemented database queries\n-implemented functionality to calculate rest\n-implemented HTTPS\n-implemented server password\n", - "2":"Added functionality to filter payments\n", - "3":"-added charts\n-added database imprt/export/delete functionality\n-implemented better connection error handling\n-bugfixes\n", - "4":"-added possibility to export payments as pdf reports\n-added possibility to export charts as images\n-added unit tests\n-bugfixes\n-security improvements\n -improved database access\n -added password on start\n", - "5":"-bugfixes\n-reports can now include a budget calculation\n", - "6":"Fixed critical bug that prevents repeating payments from being correctly updated for future months.\n", - "7":"-localized all strings into external file\n-added english localization\n-added language chooser to settings\n-remove javafx.Color from server --> server should no run on linux with normal jdk\n-bugfixes:\n -[FIXED] - report budget is calculated incorrectly\n -[FIXED] - refresh after database imprt/delete missing\n -[FIXED] - critical bug concerning repeating payments\n", - "8":"bugfixes:\n -broken month chart if january is selected\n -wrong footer in month report\n -wrong initial file name for month report\n -server start failure\n", - "9":"-remember report table column order and selection\n-added Updater for easier client update procedure\n-bugfixes\n", - "10":"-added tag system (tag payments, suggestion of already used payments, ...)\n-added search for payments (search by name, description, category, tags and amount)\n-added better month/year picker (click on date to open)\n-payment description is now shown in payment tab\n-added hover effect for buttons in main stage to make more clear that they are clickable\n-replaced font in reports\n-settings are now scrollable\n-categories are now sorted alphabetically\n-bugfixes:\n -various bugs concerning the prefilled values of input fields\n-database import\n-compatibility issues with old ReportPreferences\n-available version label was not updated on manual update search\n-non running server leads to alert that states that the server version is not compatible\n", - "11": "\n" -} \ No newline at end of file diff --git a/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties b/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties deleted file mode 100644 index 8f048a4c16783481359e7af4e4162ba9efd09023..0000000000000000000000000000000000000000 --- a/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties +++ /dev/null @@ -1,4 +0,0 @@ -app.name=BudgetMaster -version.code=13 -version.name=1.8.0 -version.date=17.12.17 \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..f1c8e7ec629cf657e17f49f53313bbd5cf5fecef --- /dev/null +++ b/src/main/java/Main.java @@ -0,0 +1,21 @@ +import org.springframework.boot.*; +import org.springframework.boot.autoconfigure.*; +import org.springframework.stereotype.*; +import org.springframework.web.bind.annotation.*; + +@Controller +@EnableAutoConfiguration +public class Main +{ + @RequestMapping("/") + @ResponseBody + String home() + { + return "Hello World!"; + } + + public static void main(String[] args) throws Exception + { + SpringApplication.run(Main.class, args); + } +} \ No newline at end of file diff --git a/webUI/Logo.png b/webUI/Logo.png deleted file mode 100644 index 1ff7d25dfd01ac049876fefa71618f9abf0af3b2..0000000000000000000000000000000000000000 Binary files a/webUI/Logo.png and /dev/null differ diff --git a/webUI/Logo_with_text.png b/webUI/Logo_with_text.png deleted file mode 100644 index 117cde86d948ee4916497efe552cbc91ef2b86e7..0000000000000000000000000000000000000000 Binary files a/webUI/Logo_with_text.png and /dev/null differ diff --git a/webUI/index.html b/webUI/index.html deleted file mode 100644 index 35d7a520b4d56b9cab3d447094fde4fdce48de51..0000000000000000000000000000000000000000 --- a/webUI/index.html +++ /dev/null @@ -1,98 +0,0 @@ -<html> - <head> - <title>BudgetMaster</title> - <meta charset="UTF-8"/> - <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> - <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.css"> - <link type="text/css" rel="stylesheet" href="main.css"/> - <link type="text/css" rel="stylesheet" href="style.css"/> - <meta name="viewport" content="width=device-width, initial-scale=1.0"/> - </head> - <body class="budgetmaster-blue-light"> - <ul id="slide-out" class="side-nav fixed"> - <li><a href="" class="waves-effect" id="nav-logo-container"><img id="nav-logo" src="Logo_with_text.png"></a></li> - <li><div class="divider"></div></li> - <li class="active"><a href="#!" class="waves-effect"><i class="material-icons">home</i>Startseite</a></li> - <li><a href="#!" class="waves-effect"><i class="material-icons">list</i>Buchungen</a></li> - <li> - <ul class="collapsible collapsible-accordion no-padding"> - <li> - <a class="collapsible-header nav-padding"><i class="material-icons">show_chart</i>Diagramme</a> - <div class="collapsible-body nav-padding"> - <ul> - <li><a href="#!" class="waves-effect">Eingaben/Ausgaben nach Kategorien</a></li> - <li><a href="#!" class="waves-effect">Eingaben/Ausgaben pro Monat</a></li> - <li><a href="#!" class="waves-effect">Eingaben/Ausgaben nach Tags</a></li> - <li><a href="#!" class="waves-effect">Verbrauch nach Kategorien</a></li> - <li><a href="#!" class="waves-effect">Histogramm</a></li> - </ul> - </div> - </li> - </ul> - </li> - <li><a href="#!" class="waves-effect"><i class="material-icons">description</i>Berichte</a></li> - <li><a href="#!" class="waves-effect"><i class="material-icons">label</i>Kategorien</a></li> - <li><a href="#!" class="waves-effect"><i class="material-icons">settings</i>Einstellungen</a></li> - <li><div class="divider"></div></li> - <li><a href="#!" class="waves-effect"><i class="material-icons">lock</i>Logout</a></li> - </ul> - <a href="#" data-activates="slide-out" class="button-collapse show-on-large"><i class="material-icons">menu</i></a> - - <main> - <div class="card main-card"> - <div class="container"> - <div class="section center-align"> - <a href="" class="waves-effect grey-text text-darken-4"><i class="material-icons icon-chevron">chevron_left</i></a> - <a href="" class="waves-effect grey-text text-darken-4 date">September 2018</a> - <a href="" class="waves-effect grey-text text-darken-4"><i class="material-icons icon-chevron">chevron_right</i></a> - </div> - </div> - <div class="hide-on-small-only"><br></div> - <div class="container"> - <div class="row"> - <div class="col s12 m4"> - <div class="icon-block"> - <h1 class="center text-green"><i class="material-icons icon-budget">file_download</i></h1> - <h5 class="center budget">2350,15 €</h5> - <h5 class="center grey-text text-darken-1 budget-headline">Einnahmen</h5> - </div> - </div> - <div class="col s12 m4"> - <div class="icon-block"> - <h1 class="center text-red"><i class="material-icons icon-budget">file_upload</i></h1> - <h5 class="center budget">-576,33 €</h5> - <h5 class="center grey-text text-darken-1 budget-headline">Ausgaben</h5> - </div> - </div> - <div class="col s12 m4"> - <div class="icon-block"> - <h1 class="center budgetmaster-blue-text"><i class="material-icons icon-budget">account_balance</i></h1> - <h5 class="center budget">1773,82 €</h5> - <h5 class="center grey-text text-darken-1 budget-headline">Rest</h5> - </div> - </div> - </div> - <div class="hide-on-small-only"><br><br></div> - <div class="row"> - <div class="col s12"> - <div class="budget-bar-container"> - <div class="budget-bar color-green" style="width: 100%"></div> - </div> - <div class="budget-bar-container"> - <div class="budget-bar color-red" style="width: 25%"></div> - </div> - <div class="budget-bar-container"> - <div class="budget-bar budgetmaster-blue" style="width: 75%"></div> - </div> - </div> - </div> - </div> - </div> - </main> - - <!-- Scripts--> - <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> - <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script> - <script src="main.js"></script> - </body> -</html> \ No newline at end of file diff --git a/webUI/login.css b/webUI/login.css deleted file mode 100644 index 3c25e5685a3bb4574e3e73d10dcba3b72e519392..0000000000000000000000000000000000000000 --- a/webUI/login.css +++ /dev/null @@ -1,33 +0,0 @@ -body { - display: flex; - min-height: 100vh; - flex-direction: column; -} - -main { - flex: 1 0 auto; -} - -#logo-container { - height: 12vmin; -} - -#logo { - max-height: 10vmin; -} - -/* label focus color */ -.input-field input[type=password]:focus + label { - color: #212121 !important; -} -/* label underline focus color */ -.input-field input[type=password]:focus { - border-bottom: 1px solid #212121 !important; - box-shadow: 0 1px 0 0 #CCCCCC !important; -} - -.full-height { - height: 100%; - padding: 0; - margin: 0; -} \ No newline at end of file diff --git a/webUI/login.html b/webUI/login.html deleted file mode 100644 index 3ba52fa1f09f946997754f306baa4dddab0edbbb..0000000000000000000000000000000000000000 --- a/webUI/login.html +++ /dev/null @@ -1,41 +0,0 @@ -<html> - <head> - <title>BudgetMaster - Login</title> - <meta charset="UTF-8"/> - <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> - <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.css"> - <link type="text/css" rel="stylesheet" href="main.css"/> - <link type="text/css" rel="stylesheet" href="login.css"/> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"/> - </head> - <body class="budgetmaster-blue-light"> - <main> - <div class="row valign-wrapper full-height"> - <div class="col l4 offset-l4 m6 offset-m3 s10 offset-s1"> - <div class="card"> - <div class="card-content"> - <span class="card-title"> - <div id="logo-container" class="center-align"><img id="logo" src="Logo_with_text.png"></div> - </span> - <div class="row"> - <div class="input-field col s12"> - <input id="password" type="password" class="validate"> - <label for="password">Passwort</label> - </div> - </div> - <div class="right-align"> - <a class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons right">send</i>Login</a> - </div> - </div> - </div> - </div> - </div> - </main> - - <!-- Scripts--> - <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> - <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script> - <script src="main.js"></script> - </body> -</html> \ No newline at end of file diff --git a/webUI/main.css b/webUI/main.css deleted file mode 100644 index 24650f85a79fe4e328398d1012dd8b2a12cb8de7..0000000000000000000000000000000000000000 --- a/webUI/main.css +++ /dev/null @@ -1,19 +0,0 @@ -.budgetmaster-blue { - background-color: #2E79B9; -} - -.budgetmaster-blue-text { - color: #2E79B9; -} - -.budgetmaster-blue-light { - background-color: rgba(46, 121, 185, 0.8); -} - -.btn:hover { - background-color: #70A3CF; -} - -.bold { - font-weight: bold; -} \ No newline at end of file diff --git a/webUI/main.js b/webUI/main.js deleted file mode 100644 index 831194ff07c2fe89012cef584439e5b74be99b52..0000000000000000000000000000000000000000 --- a/webUI/main.js +++ /dev/null @@ -1,5 +0,0 @@ -$( document ).ready(function() { - $(".button-collapse").sideNav({ - menuWidth: 350, // Default is 300 - }); -}); \ No newline at end of file diff --git a/webUI/style.css b/webUI/style.css deleted file mode 100644 index b0481a6d13afce94dfb0533aa53adb7b3e30d6e8..0000000000000000000000000000000000000000 --- a/webUI/style.css +++ /dev/null @@ -1,101 +0,0 @@ -body { - display: flex; - min-height: 100vh; - flex-direction: column; -} - -header, main, footer { - margin-left: 350px; -} - -@media only screen and (max-width: 992px) { - header, main, footer { - margin-left: 0; - } -} - -main { - flex: 1 0 auto; -} - -.main-card { - margin: auto; - width: 95%; - padding: 2rem; -} - -#nav-logo-container { - padding: 10px 0 10px 10px; - height: 100px !important; -} - -#nav-logo { - max-height: 80px; -} - -#logo { - max-height: 100px; -} - -.page-footer { - padding-top: 0; -} - -.nav-padding { - padding: 0 0 0 32px !important; -} - -.no-padding { - padding: 0; -} - -.no-margin-bottom { - margin-bottom: 0; -} - -.text-red { - color: #D82C29; -} - -.text-green { - color: #5cb85c; -} - -.color-red { - background-color: #D82C29; -} - -.color-green { - background-color: #5cb85c; -} - -.budget-bar-container { - margin: auto; - width: 85%; - height: 3%; -} - -.budget-bar { - height: 100%; -} - -.icon-budget { - font-size: 5.5vmin !important; -} - -.icon-chevron { - font-size: 6vmin !important; -} - -.date { - font-size: 4vmin; - text-transform: capitalize; -} - -.budget-headline { - font-size: 2.5vmin; -} - -.budget { - font-size: 3.5vmin; -} \ No newline at end of file