diff --git a/Admin/mvnw b/Admin/mvnw new file mode 100644 index 0000000..8a8fb22 --- /dev/null +++ b/Admin/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/Admin/mvnw.cmd b/Admin/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/Admin/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/Admin/pom.xml b/Admin/pom.xml new file mode 100644 index 0000000..3c4b417 --- /dev/null +++ b/Admin/pom.xml @@ -0,0 +1,87 @@ + + + 4.0.0 + + com.example + demo3 + 1.0-SNAPSHOT + demo3 + + + UTF-8 + 5.9.1 + 20 + 20 + + + + + org.openjfx + javafx-controls + 19 + + + org.openjfx + javafx-fxml + 19 + + + de.jensd + fontawesomefx-icons525 + 4.2.0-9.1.2 + + + org.json + json + 20230227 + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.10.1 + + 19 + 19 + + + + org.openjfx + javafx-maven-plugin + 0.0.8 + + + + default-cli + + com.example.demo3/com.example.demo3.Main + app + app + app + true + true + true + + + + + + + \ No newline at end of file diff --git a/Admin/src/main/java/com/example/demo3/AdminDatabaseFetcher.java b/Admin/src/main/java/com/example/demo3/AdminDatabaseFetcher.java new file mode 100644 index 0000000..8580877 --- /dev/null +++ b/Admin/src/main/java/com/example/demo3/AdminDatabaseFetcher.java @@ -0,0 +1,43 @@ +package com.example.demo3; + +import com.example.demo3.items.AdminJson; +import com.example.demo3.items.database.TableUser; +import com.example.demo3.json.JsonFields; +import org.json.JSONObject; + +import java.io.IOException; + +public class AdminDatabaseFetcher extends Thread{ + private final Integer idUser; + private static Boolean isRunning = true; + + private JSONObject command; + + public AdminDatabaseFetcher(Integer idUser){ + this.idUser = idUser; + setFetchCommand(); + } + + private void setFetchCommand(){ + AdminJson adminJson = new AdminJson(JsonFields.tableUsers, JsonFields.commandGetUserDatabase); + adminJson.addValues(new TableUser(idUser, null, null, null, null, null)); + command = new JSONObject(adminJson.getJSON().toString()); + } + + @Override + public void run(){ + while(isRunning){ + try { + String userDatabase = Main.getWritingCommandQueue().run(command.toString()); + Main.setDatabaseJson(userDatabase); + sleep(3000); + } catch (IOException | InterruptedException e) { + throw new RuntimeException(e); + } + } + } + + public static void closeFetcher(){ + isRunning = false; + } +} diff --git a/Admin/src/main/java/com/example/demo3/AdminDepositsController.java b/Admin/src/main/java/com/example/demo3/AdminDepositsController.java new file mode 100644 index 0000000..d708a30 --- /dev/null +++ b/Admin/src/main/java/com/example/demo3/AdminDepositsController.java @@ -0,0 +1,767 @@ +package com.example.demo3; + +import com.example.demo3.items.AdminJson; +import com.example.demo3.items.BaseItem; +import com.example.demo3.items.database.TableDeposit; +import com.example.demo3.items.database.TableProdInDepo; +import com.example.demo3.json.JsonFields; +import com.example.demo3.models.DepositModel; +import com.example.demo3.models.ProdInDepoModel; +import javafx.application.Platform; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.collections.transformation.FilteredList; +import javafx.concurrent.Task; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.control.*; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.VBox; +import javafx.util.Pair; +import org.json.JSONObject; + +import java.awt.*; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.ResourceBundle; +import java.util.function.Predicate; + +import static java.lang.Float.parseFloat; +import static java.lang.Integer.parseInt; +import static java.lang.Thread.sleep; + +public class AdminDepositsController implements Initializable{ + + @FXML + private Label nameLabel; + + @FXML + private Label quantityLabel; + + @FXML + private Label coordXLabel; + + @FXML + private Label coordYLabel; + + @FXML + private TableColumn idProductsCol; + + @FXML + private TextField coordX; + + @FXML + private TableColumn coordXDepoCol; + + @FXML + private TextField coordY; + + @FXML + private TableColumn coordYDepoCol; + + @FXML + private Button deleteBtn; + + @FXML + private TableView depositsTable; + + @FXML + private TableColumn idDepoCol; + + @FXML + private Button insertBtn; + + @FXML + private TextField name; + + @FXML + private TableColumn nameDepoCol; + + @FXML + private TableColumn nameProductsCol; + + @FXML + private TableView productsTable; + + @FXML + private TextField quantity; + + @FXML + private TableColumn quantityAvailableProductsCol; + + @FXML + private ProgressIndicator progressIndicator; + + @FXML + private VBox rightVBox; + + @FXML + private TextField searchBar; + + @FXML + private TableColumn selectedProductCol; + + @FXML + private TableColumn selectedDepoCol; + + @FXML + private TableColumn selectedQualityProductsCol; + + @FXML + private Button updateBtn; + + @FXML + private Button refreshBtn; + + private boolean foundDeposit = false; + private boolean foundProduct = false; + private boolean foundItem = false; + private String responseFromServer; + + private int idSelectedDepo; + + private int countSelected = 0; + + private List failureResponses = new ArrayList<>(); + + private void setInvisibleAll(){ + name.setVisible(false); + nameLabel.setVisible(false); + quantity.setVisible(false); + quantityLabel.setVisible(false); + coordY.setVisible(false); + coordYLabel.setVisible(false); + coordX.setVisible(false); + coordXLabel.setVisible(false); + } + + private void setVisibleDepo(){ + name.setVisible(true); + nameLabel.setVisible(true); + coordXLabel.setVisible(true); + coordYLabel.setVisible(true); + coordY.setVisible(true); + coordX.setVisible(true); + } + + private void setVisibleProduct(){ + name.setVisible(true); + nameLabel.setVisible(true); + quantityLabel.setVisible(true); + quantity.setVisible(true); + } + + private boolean searchFind(DepositModel deposit, String searchText){ + return (deposit.getName().toLowerCase().contains(searchText.toLowerCase())); + } + private Predicate createPredicate(String searchText){ + return deposit -> { + if (searchText == null || searchText.isEmpty()) return true; + return searchFind(deposit, searchText); + }; + } + private static ObservableList productModels = FXCollections.observableArrayList(); + private static ObservableList depositModels = FXCollections.observableArrayList(); + private void setDepositModel(){ + List listOfDeposits = Main.getDatabase().getListOfDeposits(); + listOfDeposits.forEach(deposit -> { + depositModels.add(new DepositModel( + deposit.getId_deposit(), deposit.getName(), deposit.getLat_coord(), deposit.getLong_coord() + )); + }); + } + + private void setProductModel(Integer idDepo){ + Main.getDatabase().getListProductsInDepo().stream() + .filter(e -> Objects.equals(e.getKey(), idDepo)) + .forEach(set -> { + Pair pairProductToQuantity = set.getValue(); + String name = Main.getDatabase().getMapIdToProduct().get(pairProductToQuantity.getKey()); + productModels.add(new ProdInDepoModel( + pairProductToQuantity.getKey(), name, pairProductToQuantity.getValue() + )); + }); + } + + private void fillDepositsTable(){ + depositModels.clear(); + setDepositModel(); + idDepoCol.setCellValueFactory(new PropertyValueFactory<>("id")); + nameDepoCol.setCellValueFactory(new PropertyValueFactory<>("name")); + coordXDepoCol.setCellValueFactory(new PropertyValueFactory<>("coordX")); + coordYDepoCol.setCellValueFactory(new PropertyValueFactory<>("coordY")); + selectedDepoCol.setCellValueFactory(new PropertyValueFactory<>("select")); + depositsTable.setItems(depositModels); + } + + private void fillProductsTable(Integer idDepo){ + productModels.clear(); + setProductModel(idDepo); + idProductsCol.setCellValueFactory(new PropertyValueFactory<>("id")); + nameProductsCol.setCellValueFactory(new PropertyValueFactory<>("name")); + quantityAvailableProductsCol.setCellValueFactory(new PropertyValueFactory<>("quantity")); + selectedProductCol.setCellValueFactory(new PropertyValueFactory<>("select")); + productsTable.setItems(productModels); + } + + private boolean isDepositSelected(){ + for(int i = 0; i < depositsTable.getItems().size(); i++){ + if(depositsTable.getItems().get(i).getSelect().isSelected()) { + return true; + } + } + return false; + } + + private boolean isProductSelected(){ + for(int i = 0; i < productsTable.getItems().size(); i++){ + if(productsTable.getItems().get(i).getSelect().isSelected()) { + return true; + } + } + return false; + } + + private void clearLabels(){ + name.clear(); + quantity.clear(); + coordY.clear(); + coordX.clear(); + } + Node lastSelectedTable = null; + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + progressIndicator.setVisible(false); + setInvisibleAll(); + fillDepositsTable(); + depositsTable.setOnMousePressed(new EventHandler() { + @Override + public void handle(MouseEvent mouseEvent) { + if (depositsTable.getSelectionModel().getSelectedItem() == null) { + setInvisibleAll(); + setVisibleDepo(); + } else { + clearLabels(); + setInvisibleAll(); + setVisibleDepo(); + productsTable.getItems().clear(); + Integer idDepo = depositsTable.getSelectionModel().getSelectedItem().getId(); + fillProductsTable(idDepo); + } + } + }); + + productsTable.setOnMousePressed(new EventHandler() { + @Override + public void handle(MouseEvent mouseEvent) { + if(productsTable.getSelectionModel().getSelectedItem() == null) { + clearLabels(); + setInvisibleAll(); + setVisibleProduct(); + } + } + }); + + deleteBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + Task task = new Task(){ + @Override + protected Void call() throws IOException, InterruptedException { + progressIndicator.setVisible(true); + int percent=0; + + if(isDepositSelected() && !isProductSelected()){ + //operatii pe deposit + updateProgress(percent,100.0); + for(int i = 0; i < depositsTable.getItems().size(); i++){ + if(depositsTable.getItems().get(i).getSelect().isSelected()){ + if(percent < 50) { + updateProgress(percent + 5, 100.0); + }else + updateProgress(percent,100.0); + Integer idDepo = depositsTable.getItems().get(i).getId(); + AdminJson deleteJson = new AdminJson(JsonFields.tableDeposits, JsonFields.commandDelete); + BaseItem tableDepo = new TableDeposit(idDepo, depositsTable.getItems().get(i).getName(),null,null); + deleteJson.addValues(tableDepo); + JSONObject response = new JSONObject(Main.getWritingCommandQueue().run(deleteJson.getJSON().toString())); + + if(response.getString(JsonFields.response).equals(JsonFields.responseSuccess)){ + if(percent < 80) { + updateProgress(percent + 10, 100.0); + }else + updateProgress(percent,100.0); + sleep(1000); + responseFromServer = response.getString(JsonFields.responseMessage); + failureResponses.add(response.getString(JsonFields.responseMessage)); + }else{ + System.out.println("failure"); + failureResponses.add(response.getString(JsonFields.responseMessage)); + } + } + } + + if(failureResponses.isEmpty()) { + updateProgress(90, 100.0); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + Platform.runLater(() -> { + progressIndicator.setVisible(false); + }); + Main.showPopUp(Alert.AlertType.CONFIRMATION, responseFromServer); + updateProgress(100, 100.0); + sleep(1000); + }else{ + StringBuilder sb = new StringBuilder(); + for(int i = 0; i < failureResponses.size(); i++){ + sb.append(failureResponses.get(i) + '\n'); + } + failureResponses.clear(); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + updateProgress(100,100.0); + Main.showPopUp(Alert.AlertType.CONFIRMATION,sb.toString()); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + + } + else if(isProductSelected()){ + //operatii pe produse + updateProgress(percent,100.0); + for(int i = 0; i < depositsTable.getItems().size(); i++){ + if(depositsTable.getSelectionModel().isSelected(i)) { + idSelectedDepo = depositsTable.getItems().get(i).getId(); + } + } + for(int i = 0; i < productsTable.getItems().size(); i++){ + if(productsTable.getItems().get(i).getSelect().isSelected()){ + if(percent < 50) { + updateProgress(percent + 5, 100.0); + }else + updateProgress(percent,100.0); + Integer idProduct = productsTable.getItems().get(i).getId(); + AdminJson deleteJson = new AdminJson(JsonFields.tableProdInDepo, JsonFields.commandDelete); + BaseItem tableProduct = new TableProdInDepo(null,idProduct, idSelectedDepo , productsTable.getItems().get(i).getName(),null); + deleteJson.addValues(tableProduct); + JSONObject response = new JSONObject(Main.getWritingCommandQueue().run(deleteJson.getJSON().toString())); + + if(response.getString(JsonFields.response).equals(JsonFields.responseSuccess)){ + if(percent < 80) { + updateProgress(percent + 10, 100.0); + }else + updateProgress(percent,100.0); + sleep(1000); + responseFromServer = response.getString(JsonFields.responseMessage); + failureResponses.add(response.getString(JsonFields.responseMessage)); + }else{ + System.out.println("failure"); + failureResponses.add(response.getString(JsonFields.responseMessage)); + } + } + } + + if(failureResponses.isEmpty()) { + updateProgress(90, 100.0); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + Platform.runLater(() -> { + progressIndicator.setVisible(false); + }); + Main.showPopUp(Alert.AlertType.CONFIRMATION, responseFromServer); + updateProgress(100, 100.0); + sleep(1000); + }else{ + StringBuilder sb = new StringBuilder(); + for(int i = 0; i < failureResponses.size(); i++){ + sb.append(failureResponses.get(i) + '\n'); + } + failureResponses.clear(); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + updateProgress(100,100.0); + Main.showPopUp(Alert.AlertType.CONFIRMATION,sb.toString()); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + } + else if(!isProductSelected() && !isDepositSelected()){ + Main.showPopUp(Alert.AlertType.ERROR,"No item selected."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + + return null; + } + }; + + Thread taskThread = new Thread(task); + taskThread.setDaemon(true); + taskThread.start(); + progressIndicator.progressProperty().bind(task.progressProperty()); + FilteredList filteredData = new FilteredList<>(FXCollections.observableList(depositModels)); + depositsTable.setItems(filteredData); + + searchBar.textProperty().addListener((observable, oldValue, newValue) -> + filteredData.setPredicate(createPredicate(newValue)) + ); + } + }); + + insertBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + Task task = new Task(){ + @Override + protected Void call() throws IOException, InterruptedException { + progressIndicator.setVisible(true); + int percent=0; + if(!name.isVisible()){ + Main.showPopUp(Alert.AlertType.ERROR,"No item selected."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + } + if(!quantity.isVisible()){ + //operatii pe deposit + if(name.getText().isEmpty() || coordX.getText().isEmpty() || coordY.getText().isEmpty()){ + Main.showPopUp(Alert.AlertType.ERROR, "Complete all the fields."); + } + + updateProgress(percent,100.0); + + Float coordXToSend = parseFloat(coordX.getText()); + Float coordYToSend = parseFloat(coordY.getText()); + AdminJson deleteJson = new AdminJson(JsonFields.tableDeposits, JsonFields.commandInsert); + BaseItem tableDepo = new TableDeposit(null, name.getText(), coordXToSend, coordYToSend); + deleteJson.addValues(tableDepo); + JSONObject response = new JSONObject(Main.getWritingCommandQueue().run(deleteJson.getJSON().toString())); + if(response.getString(JsonFields.response).equals(JsonFields.responseSuccess)){ + updateProgress(90, 100.0); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + Platform.runLater(() -> { + progressIndicator.setVisible(false); + }); + Main.showPopUp(Alert.AlertType.CONFIRMATION, response.getString(JsonFields.responseMessage)); + updateProgress(100, 100.0); + sleep(1000); + }else{ + System.out.println("failure"); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + updateProgress(100,100.0); + Main.showPopUp(Alert.AlertType.CONFIRMATION,response.getString(JsonFields.responseMessage)); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + } + else if(quantity.isVisible()){ + //operatii pe produse + if(name.getText().isEmpty() || quantity.getText().isEmpty()){ + Main.showPopUp(Alert.AlertType.ERROR, "Complete all the fields."); + } + + updateProgress(percent,100.0); + if(!isDepositSelected()){ + Main.showPopUp(Alert.AlertType.ERROR,"Select a deposit."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + for(int i = 0; i < depositsTable.getItems().size(); i++){ + if(depositsTable.getItems().get(i).getSelect().isSelected()) { + idSelectedDepo = depositsTable.getItems().get(i).getId(); + } + } + AdminJson deleteJson = new AdminJson(JsonFields.tableProdInDepo, JsonFields.commandInsert); + BaseItem tableProduct = new TableProdInDepo(null,null, idSelectedDepo , name.getText(),parseInt(quantity.getText())); + deleteJson.addValues(tableProduct); + JSONObject response = new JSONObject(Main.getWritingCommandQueue().run(deleteJson.getJSON().toString())); + + if(response.getString(JsonFields.response).equals(JsonFields.responseSuccess)){ + updateProgress(90, 100.0); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + Platform.runLater(() -> { + progressIndicator.setVisible(false); + }); + Main.showPopUp(Alert.AlertType.CONFIRMATION, response.getString(JsonFields.responseMessage)); + updateProgress(100, 100.0); + sleep(1000); + }else{ + System.out.println("failure"); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + updateProgress(100,100.0); + Main.showPopUp(Alert.AlertType.CONFIRMATION,response.getString(JsonFields.responseMessage)); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + } + return null; + } + }; + + Thread taskThread = new Thread(task); + taskThread.setDaemon(true); + taskThread.start(); + progressIndicator.progressProperty().bind(task.progressProperty()); + FilteredList filteredData = new FilteredList<>(FXCollections.observableList(depositModels)); + depositsTable.setItems(filteredData); + + searchBar.textProperty().addListener((observable, oldValue, newValue) -> + filteredData.setPredicate(createPredicate(newValue)) + ); + } + }); + + updateBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + Task task = new Task(){ + @Override + protected Void call() throws IOException, InterruptedException { + progressIndicator.setVisible(true); + int percent=0; + if(!name.isVisible()){ + Main.showPopUp(Alert.AlertType.ERROR,"No table selected."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + if(!quantity.isVisible()){ + //operatii pe deposit + if(name.getText().isEmpty() || coordX.getText().isEmpty() || coordY.getText().isEmpty()){ + Main.showPopUp(Alert.AlertType.ERROR, "Complete all the fields."); + return null; + } + if(!isDepositSelected()){ + Main.showPopUp(Alert.AlertType.ERROR,"Select a deposit."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + updateProgress(percent,100.0); + Integer count = 0; + for(int i = 0; i < depositsTable.getItems().size(); i++){ + if(depositsTable.getItems().get(i).getSelect().isSelected()) { + count++; + idSelectedDepo = depositsTable.getItems().get(i).getId(); + } + } + if(count > 1){ + Main.showPopUp(Alert.AlertType.ERROR,"Select only one deposit."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + Float coordXToSend = parseFloat(coordX.getText()); + Float coordYToSend = parseFloat(coordY.getText()); + AdminJson deleteJson = new AdminJson(JsonFields.tableDeposits, JsonFields.commandUpdate); + BaseItem tableDepo = new TableDeposit(idSelectedDepo, name.getText(), coordXToSend, coordYToSend); + deleteJson.addValues(tableDepo); + JSONObject response = new JSONObject(Main.getWritingCommandQueue().run(deleteJson.getJSON().toString())); + if(response.getString(JsonFields.response).equals(JsonFields.responseSuccess)){ + updateProgress(90, 100.0); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + Platform.runLater(() -> { + progressIndicator.setVisible(false); + }); + Main.showPopUp(Alert.AlertType.CONFIRMATION, response.getString(JsonFields.responseMessage)); + updateProgress(100, 100.0); + sleep(1000); + }else{ + System.out.println("failure"); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + updateProgress(100,100.0); + Main.showPopUp(Alert.AlertType.CONFIRMATION,response.getString(JsonFields.responseMessage)); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + } + else if(quantity.isVisible()){ + //operatii pe produse + if(quantity.getText().isEmpty()){ + Main.showPopUp(Alert.AlertType.ERROR, "Complete only the quantity field."); + } + + updateProgress(percent,100.0); + if(!isDepositSelected()){ + Main.showPopUp(Alert.AlertType.ERROR,"Select a deposit."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + if(!isProductSelected()){ + Main.showPopUp(Alert.AlertType.ERROR,"Select a product"); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + Integer count = 0; + for(int i = 0; i < depositsTable.getItems().size(); i++){ + if(depositsTable.getItems().get(i).getSelect().isSelected()) { + count ++; + idSelectedDepo = depositsTable.getItems().get(i).getId(); + if(depositsTable.getSelectionModel().getSelectedItem().getId() != idSelectedDepo){ + Main.showPopUp(Alert.AlertType.ERROR,"Select only the corresponding deposit"); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + } + } + if(count<=1){ + count = 0; + } + Integer idProduct = null; + String nameProd = null; + + for(int i = 0; i < productsTable.getItems().size(); i++){ + if(productsTable.getItems().get(i).getSelect().isSelected()) { + count++; + idProduct = productsTable.getItems().get(i).getId(); + nameProd = productsTable.getItems().get(i).getName(); + } + } + if(count > 1){ + Main.showPopUp(Alert.AlertType.ERROR,"Select only one product"); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + + AdminJson deleteJson = new AdminJson(JsonFields.tableProdInDepo, JsonFields.commandUpdate); + BaseItem tableProduct = new TableProdInDepo(null, idProduct , idSelectedDepo ,nameProd, parseInt(quantity.getText())); + deleteJson.addValues(tableProduct); + JSONObject response = new JSONObject(Main.getWritingCommandQueue().run(deleteJson.getJSON().toString())); + + if(response.getString(JsonFields.response).equals(JsonFields.responseSuccess)){ + updateProgress(90, 100.0); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + Platform.runLater(() -> { + progressIndicator.setVisible(false); + }); + Main.showPopUp(Alert.AlertType.CONFIRMATION, response.getString(JsonFields.responseMessage)); + updateProgress(100, 100.0); + sleep(1000); + }else{ + System.out.println("failure"); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillDepositsTable(); + productsTable.getItems().clear(); + updateProgress(100,100.0); + Main.showPopUp(Alert.AlertType.CONFIRMATION,response.getString(JsonFields.responseMessage)); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + } + return null; + } + }; + + Thread taskThread = new Thread(task); + taskThread.setDaemon(true); + taskThread.start(); + progressIndicator.progressProperty().bind(task.progressProperty()); + FilteredList filteredData = new FilteredList<>(FXCollections.observableList(depositModels)); + depositsTable.setItems(filteredData); + + searchBar.textProperty().addListener((observable, oldValue, newValue) -> + filteredData.setPredicate(createPredicate(newValue)) + ); + } + }); + + refreshBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + Task taskRefresh = new Task() { + @Override + protected Object call() throws Exception { + progressIndicator.setVisible(true); + updateProgress(20, 100.0); + Main.fetchDatabase(); + updateProgress(50, 100.0); + sleep(1000); + Main.deserializeDatabase(); + updateProgress(70, 100.0); + sleep(500); + fillDepositsTable(); + productsTable.getItems().clear(); + updateProgress(90, 100.0); + productsTable.refresh(); + sleep(1000); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + }; + Thread taskThreadRefresh = new Thread(taskRefresh); + taskThreadRefresh.setDaemon(true); + taskThreadRefresh.start(); + } + }); + } +} diff --git a/Admin/src/main/java/com/example/demo3/AdminLoginController.java b/Admin/src/main/java/com/example/demo3/AdminLoginController.java new file mode 100644 index 0000000..e440904 --- /dev/null +++ b/Admin/src/main/java/com/example/demo3/AdminLoginController.java @@ -0,0 +1,74 @@ +package com.example.demo3; + +import com.example.demo3.items.AdminJson; +import com.example.demo3.items.BaseItem; +import com.example.demo3.items.database.TableUser; +import com.example.demo3.json.JsonFields; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.PasswordField; +import javafx.scene.control.TextField; +import javafx.stage.Stage; + +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; + +public class AdminLoginController implements Initializable{ + @FXML + private TextField email; + + @FXML + private Label errorField; + + @FXML + private Button loginBtn; + + @FXML + private PasswordField password; + + private ServerConnection server; + + public void initialize(URL url, ResourceBundle rb){ + + loginBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + if(email.getText().isBlank() == true || password.getText().isBlank() == true){ + errorField.setText("Complete all the fields!"); + }else { + AdminJson registerJson = new AdminJson(JsonFields.tableUsers, JsonFields.commandLogin); + BaseItem tableUser = new TableUser(null,null, email.getText(), password.getText(), null, null); + registerJson.addValues(tableUser); + registerJson.getJSON(); + //Send to server + /*try { + server = new Server(); + server.sendMsg(registerJson.getJSON().toString()); + } catch (IOException e) { + throw new RuntimeException(e); + }*/ + Parent loginViewParent = null; + try { + loginViewParent = FXMLLoader.load(getClass().getResource("AdminPage.fxml")); + } catch (IOException e) { + throw new RuntimeException(e); + } + Scene loginViewScene = new Scene(loginViewParent); + + Stage window = (Stage)((Node)actionEvent.getSource()).getScene().getWindow(); + window.setScene(loginViewScene); + window.show(); + } + } + }); + } +} diff --git a/Admin/src/main/java/com/example/demo3/AdminOrdersController.java b/Admin/src/main/java/com/example/demo3/AdminOrdersController.java new file mode 100644 index 0000000..ae929db --- /dev/null +++ b/Admin/src/main/java/com/example/demo3/AdminOrdersController.java @@ -0,0 +1,288 @@ +package com.example.demo3; + +import com.example.demo3.items.AdminJson; +import com.example.demo3.items.BaseItem; +import com.example.demo3.items.database.TableUser; +import com.example.demo3.json.JsonFields; +import com.example.demo3.models.OrderModel; +import com.example.demo3.models.ProdInOrdersModel; +import com.example.demo3.models.UserModel; +import javafx.application.Platform; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.collections.transformation.FilteredList; +import javafx.concurrent.Task; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.*; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.MouseEvent; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.net.URL; +import java.util.*; +import java.util.function.Predicate; + +import static java.lang.Thread.sleep; + +public class AdminOrdersController implements Initializable { + @FXML + private Button deleteBtn; + + @FXML + private TableColumn idOrdersCol; + + @FXML + private TableColumn idProductCol; + + @FXML + private TableColumn idUserCol; + + @FXML + private TableColumn nameProductCol; + + @FXML + private TableColumn nameUserCol; + + @FXML + private TableView ordersTable; + + @FXML + private TableView productsTable; + + @FXML + private TableColumn quantityProductCol; + + @FXML + private TextField searchBar; + + @FXML + private TableView usersTable; + + @FXML + private TableColumn selectedUserCol; + + @FXML + private ProgressIndicator progressIndicator; + + @FXML + private Button refreshBtn; + + private boolean foundItem = false; + private List failureResponses = new ArrayList<>(); + private String responseFromServer; + private static ObservableList productModels = FXCollections.observableArrayList(); + private static ObservableList userModels = FXCollections.observableArrayList(); + private static ObservableList orderModels = FXCollections.observableArrayList(); + private boolean searchFind(UserModel user, String searchText){ + return (user.getName().toLowerCase().contains(searchText.toLowerCase())); + } + private Predicate createPredicate(String searchText){ + return user -> { + if (searchText == null || searchText.isEmpty()) return true; + return searchFind(user, searchText); + }; + } + private void setProductModels(Integer idOrder) { + productModels.clear(); + Map mapOrderToContent = Main.getDatabase().getMapOrderToContent(); + mapOrderToContent.entrySet().stream() + .filter(e -> e.getKey() == idOrder) + .forEach(order -> { + JSONArray orderJson = order.getValue(); + + for(int index = 0; index < orderJson.length(); index++){ + JSONObject item = orderJson.getJSONObject(index); + productModels.add(new ProdInOrdersModel( + item.getInt(JsonFields.id_product), item.getString(JsonFields.name), + item.getInt(JsonFields.quantity) + )); + } + }); + } + private void fillProductTable(){ + idProductCol.setCellValueFactory(new PropertyValueFactory<>("id")); + nameProductCol.setCellValueFactory(new PropertyValueFactory<>("name")); + quantityProductCol.setCellValueFactory(new PropertyValueFactory<>("quantity")); + productsTable.setItems(productModels); + } + private void setUsersModels(){ + userModels.clear(); + List listOfUsers = Main.getDatabase().getListOfUsers(); + listOfUsers.stream().filter(e -> !e.getName().equals("Admin")).forEach(user ->{ + userModels.add(new UserModel(user.getId_user(), user.getName())); + }); + } + private void fillUsersTable(){ + userModels.clear(); + setUsersModels(); + idUserCol.setCellValueFactory(new PropertyValueFactory<>("id")); + nameUserCol.setCellValueFactory(new PropertyValueFactory<>("name")); + selectedUserCol.setCellValueFactory(new PropertyValueFactory<>("select")); + usersTable.setItems(userModels); + } + private void setOrderModels(Integer idUser){ + orderModels.clear(); + Map mapUserToOrder = Main.getDatabase().getMapOrderToUser(); + mapUserToOrder.entrySet().stream() + .filter(e -> Objects.equals(e.getValue(), idUser)) + .forEach(order -> orderModels.add(new OrderModel(order.getKey())) + ); + } + private void fillOrdersTable(){ + idOrdersCol.setCellValueFactory(new PropertyValueFactory<>("id")); + ordersTable.setItems(orderModels); + } + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + progressIndicator.setVisible(false); + fillUsersTable(); + + usersTable.setOnMousePressed(new EventHandler() { + @Override + public void handle(MouseEvent mouseEvent) { + productsTable.getItems().clear(); + Integer idUser = usersTable.getSelectionModel().getSelectedItem().getId(); + setOrderModels(idUser); + fillOrdersTable(); + } + }); + + ordersTable.setOnMousePressed(new EventHandler() { + @Override + public void handle(MouseEvent mouseEvent) { + Integer idOrder = ordersTable.getSelectionModel().getSelectedItem().getId(); + setProductModels(idOrder); + fillProductTable(); + } + }); + //TODO delete si refresh button + + deleteBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + Task taskDelete = new Task(){ + @Override + protected Object call() throws Exception { + progressIndicator.setVisible(true); + int percent=0; + for(int i = 0; i < usersTable.getItems().size(); i++){ + if(usersTable.getItems().get(i).getSelect().isSelected()) { + if(percent < 50) { + updateProgress(percent + 5, 100.0); + }else + updateProgress(percent,100.0); + foundItem = true; + Integer idUser = usersTable.getItems().get(i).getId(); + AdminJson deleteJson = new AdminJson(JsonFields.tableUsers, JsonFields.commandDelete); + BaseItem tableUser = new TableUser(idUser, usersTable.getItems().get(i).getName(),null,null,null,null); + deleteJson.addValues(tableUser); + JSONObject response = new JSONObject(Main.getWritingCommandQueue().run(deleteJson.getJSON().toString())); + updateProgress(70,100.0); + + if(response.getString(JsonFields.response).equals(JsonFields.responseSuccess)){ + if(percent < 80) { + updateProgress(percent + 10, 100.0); + }else + updateProgress(percent,100.0); + sleep(1000); + responseFromServer = response.getString(JsonFields.responseMessage); + failureResponses.add(response.getString(JsonFields.responseMessage)); + }else{ + System.out.println("failure"); + failureResponses.add(response.getString(JsonFields.responseMessage)); + } + } + } + if(foundItem == false){ + Main.showPopUp(Alert.AlertType.ERROR,"No item selected."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + + if(failureResponses.isEmpty()) { + updateProgress(90, 100.0); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillUsersTable(); + ordersTable.getItems().clear(); + ordersTable.refresh(); + productsTable.getItems().clear(); + productsTable.refresh(); + Platform.runLater(() -> { + progressIndicator.setVisible(false); + }); + Main.showPopUp(Alert.AlertType.CONFIRMATION, responseFromServer); + updateProgress(100, 100.0); + sleep(1000); + }else{ + StringBuilder sb = new StringBuilder(); + for(int i = 0; i < failureResponses.size(); i++){ + sb.append(failureResponses.get(i) + '\n'); + } + failureResponses.clear(); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillUsersTable(); + updateProgress(100,100.0); + Main.showPopUp(Alert.AlertType.CONFIRMATION,sb.toString()); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + return null; + } + }; + Thread taskThread = new Thread(taskDelete); + taskThread.setDaemon(true); + taskThread.start(); + progressIndicator.progressProperty().bind(taskDelete.progressProperty()); + FilteredList filteredData = new FilteredList<>(FXCollections.observableList(userModels)); + usersTable.setItems(filteredData); + + searchBar.textProperty().addListener((observable, oldValue, newValue) -> + filteredData.setPredicate(createPredicate(newValue)) + ); + } + }); + + refreshBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + Task taskRefresh = new Task() { + @Override + protected Object call() throws Exception { + progressIndicator.setVisible(true); + updateProgress(20, 100.0); + Main.fetchDatabase(); + updateProgress(50, 100.0); + sleep(1000); + Main.deserializeDatabase(); + updateProgress(70, 100.0); + sleep(500); + fillUsersTable(); + ordersTable.getItems().clear(); + productsTable.getItems().clear(); + updateProgress(90, 100.0); + updateProgress(100, 100.0); + sleep(1000); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + }; + Thread taskThreadRefresh = new Thread(taskRefresh); + taskThreadRefresh.setDaemon(true); + taskThreadRefresh.start(); + } + }); + } +} diff --git a/Admin/src/main/java/com/example/demo3/AdminPageController.java b/Admin/src/main/java/com/example/demo3/AdminPageController.java new file mode 100644 index 0000000..b9ef97a --- /dev/null +++ b/Admin/src/main/java/com/example/demo3/AdminPageController.java @@ -0,0 +1,107 @@ +package com.example.demo3; + +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.layout.Pane; +import javafx.scene.layout.VBox; + +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; + +public class AdminPageController implements Initializable { + @FXML + private Button depositsBtn; + + @FXML + private Button ordersBtn; + + @FXML + private Button productsBtn; + + @FXML + private VBox rightVBox; + + @FXML + private Button routesBtn; + + @FXML + private Button logoutBtn; + + public void initialize(URL url, ResourceBundle resourceBundle) { + rightVBox.getChildren().clear(); + FxmlLoader object = new FxmlLoader(); + try { + Pane view = object.GetStage("AdminProducts.fxml"); + rightVBox.getChildren().setAll(view); + } catch (IOException e) { + throw new RuntimeException(e); + } + productsBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + FxmlLoader object = new FxmlLoader(); + try { + Pane view = object.GetStage("AdminProducts.fxml"); + rightVBox.getChildren().setAll(view); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }); + + depositsBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + FxmlLoader object = new FxmlLoader(); + try { + Pane view = object.GetStage("AdminDeposits.fxml"); + rightVBox.getChildren().setAll(view); + rightVBox.requestLayout(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }); + + ordersBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + FxmlLoader object = new FxmlLoader(); + try { + Pane view = object.GetStage("AdminOrders.fxml"); + rightVBox.getChildren().setAll(view); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }); + + routesBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + FxmlLoader object = new FxmlLoader(); + try { + Pane view = object.GetStage("AdminRoutes.fxml"); + rightVBox.getChildren().setAll(view); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }); + + logoutBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + try { + Main.loadView(StagesPaths.getView(StagesPaths.LoginPageKey)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }); + } +} diff --git a/Admin/src/main/java/com/example/demo3/AdminProductsController.java b/Admin/src/main/java/com/example/demo3/AdminProductsController.java new file mode 100644 index 0000000..ab86aaf --- /dev/null +++ b/Admin/src/main/java/com/example/demo3/AdminProductsController.java @@ -0,0 +1,398 @@ +package com.example.demo3; + +import com.example.demo3.items.AdminJson; +import com.example.demo3.items.BaseItem; +import com.example.demo3.items.database.TableProduct; +import com.example.demo3.json.JsonFields; +import com.example.demo3.models.ProductModel; +import javafx.application.Platform; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.collections.transformation.FilteredList; +import javafx.concurrent.Task; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.*; +import javafx.scene.control.cell.PropertyValueFactory; +import org.json.JSONObject; + +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.ResourceBundle; +import java.util.function.Predicate; + +import static java.lang.Thread.sleep; + +public class AdminProductsController implements Initializable { + + @FXML + private TableColumn idCol; + + @FXML + private TableColumn nameCol; + + @FXML + private Button insertBtn; + + @FXML + private Button updateBtn; + + @FXML + private Button deleteBtn; + + @FXML + private TextField name; + + @FXML + private TableView productsTable; + + @FXML + private TextField searchBar; + + @FXML + private TableColumn selectedCol; + + @FXML + private Button refreshBtn; + + @FXML + private ProgressIndicator progressIndicator; + + private boolean foundItem = false; + + private String responseFromServer; + + private int countSelected = 0; + + private List failureResponses = new ArrayList<>(); + private static ObservableList productModels = FXCollections.observableArrayList(); + + private boolean searchFind(ProductModel product, String searchText){ + return (product.getName().toLowerCase().contains(searchText.toLowerCase())); + } + + private Predicate createPredicate(String searchText){ + return product -> { + if (searchText == null || searchText.isEmpty()) return true; + return searchFind(product, searchText); + }; + } + private void setProductModels(){ + Map mapIdToProduct = Main.getDatabase().getMapIdToProduct(); + for(Map.Entry entry : mapIdToProduct.entrySet()){ + productModels.add(new ProductModel( + entry.getKey(), entry.getValue() + )); + } + } + + private void fillTable(){ + productModels.clear(); + setProductModels(); + idCol.setCellValueFactory(new PropertyValueFactory<>("id")); + nameCol.setCellValueFactory(new PropertyValueFactory<>("name")); + selectedCol.setCellValueFactory(new PropertyValueFactory<>("select")); + productsTable.setItems(productModels); + } + + + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + + progressIndicator.setVisible(false); + fillTable(); + + deleteBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + Task task = new Task(){ + @Override + protected Void call() throws IOException, InterruptedException { + progressIndicator.setVisible(true); + int percent=0; + updateProgress(percent,100.0); + for(int i = 0; i < productsTable.getItems().size(); i++){ + if(productsTable.getItems().get(i).getSelect().isSelected()){ + if(percent < 50) { + updateProgress(percent + 5, 100.0); + }else + updateProgress(percent,100.0); + foundItem = true; + Integer idProduct = productsTable.getItems().get(i).getId(); + AdminJson deleteJson = new AdminJson(JsonFields.tableProducts, JsonFields.commandDelete); + BaseItem tableProduct = new TableProduct(idProduct, productsTable.getItems().get(i).getName()); + deleteJson.addValues(tableProduct); + JSONObject response = new JSONObject(Main.getWritingCommandQueue().run(deleteJson.getJSON().toString())); + + if(response.getString(JsonFields.response).equals(JsonFields.responseSuccess)){ + if(percent < 80) { + updateProgress(percent + 10, 100.0); + }else + updateProgress(percent,100.0); + sleep(1000); + responseFromServer = response.getString(JsonFields.responseMessage); + failureResponses.add(response.getString(JsonFields.responseMessage)); + }else{ + System.out.println("failure"); + failureResponses.add(response.getString(JsonFields.responseMessage)); + } + } + } + if(foundItem == false){ + Main.showPopUp(Alert.AlertType.ERROR,"No item selected."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + + if(failureResponses.isEmpty()) { + updateProgress(90, 100.0); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillTable(); + Platform.runLater(() -> { + progressIndicator.setVisible(false); + }); + Main.showPopUp(Alert.AlertType.CONFIRMATION, responseFromServer); + updateProgress(100, 100.0); + sleep(1000); + }else{ + StringBuilder sb = new StringBuilder(); + for(int i = 0; i < failureResponses.size(); i++){ + sb.append(failureResponses.get(i) + '\n'); + } + failureResponses.clear(); + Main.fetchDatabase(); + Main.deserializeDatabase(); + fillTable(); + updateProgress(100,100.0); + Main.showPopUp(Alert.AlertType.CONFIRMATION,sb.toString()); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + return null; + } + }; + + Thread taskThread = new Thread(task); + taskThread.setDaemon(true); + taskThread.start(); + progressIndicator.progressProperty().bind(task.progressProperty()); + FilteredList filteredData = new FilteredList<>(FXCollections.observableList(productModels)); + productsTable.setItems(filteredData); + + searchBar.textProperty().addListener((observable, oldValue, newValue) -> + filteredData.setPredicate(createPredicate(newValue)) + ); + } + }); + + insertBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + Task task = new Task(){ + @Override + protected Void call() throws IOException, InterruptedException { + if(name.getText().isBlank()){ + Main.showPopUp(Alert.AlertType.ERROR, "Set the name for a product."); + return null; + } + progressIndicator.setVisible(true); + updateProgress(0,0.0); + AdminJson insertJson = new AdminJson(JsonFields.tableProducts, JsonFields.commandInsert); + BaseItem product = new TableProduct(null, name.getText()); + updateProgress(50,100.0); + insertJson.addValues(product); + JSONObject response = new JSONObject(Main.getWritingCommandQueue().run(insertJson.getJSON().toString())); + if(response.getString(JsonFields.response).equals(JsonFields.responseSuccess)){ + sleep(1000); + updateProgress(60,100.0); + Main.fetchDatabase(); + updateProgress(80,100.0); + Main.deserializeDatabase(); + updateProgress(90,100.0); + fillTable(); + updateProgress(100,100.0); + Main.showPopUp(Alert.AlertType.CONFIRMATION, response.getString(JsonFields.responseMessage)); + Platform.runLater(() -> { + progressIndicator.setVisible(false); + }); + return null; + }else{ + updateProgress(100,100.0); + Main.showPopUp(Alert.AlertType.ERROR, response.getString(JsonFields.responseMessage)); + Platform.runLater(() -> { + progressIndicator.setVisible(false); + }); + } + return null; + } + }; + + Thread taskThread = new Thread(task); + taskThread.setDaemon(true); + taskThread.start(); + progressIndicator.progressProperty().bind(task.progressProperty()); + FilteredList filteredData = new FilteredList<>(FXCollections.observableList(productModels)); + productsTable.setItems(filteredData); + + searchBar.textProperty().addListener((observable, oldValue, newValue) -> + filteredData.setPredicate(createPredicate(newValue)) + ); + } + }); + + updateBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + Task task = new Task(){ + @Override + protected Void call() throws IOException, InterruptedException { + countSelected = 0; + failureResponses.clear(); + progressIndicator.setVisible(true); + int percent=0; + updateProgress(percent,100.0); + for(int i = 0; i < productsTable.getItems().size(); i++){ + if(productsTable.getItems().get(i).getSelect().isSelected()) { + countSelected++; + } + } + if(countSelected > 1){ + Main.showPopUp(Alert.AlertType.ERROR,"You can't update multiple items at once."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + for(int i = 0; i < productsTable.getItems().size(); i++){ + if(productsTable.getItems().get(i).getSelect().isSelected()){ + if(percent < 50) { + updateProgress(percent + 5, 100.0); + }else + updateProgress(percent,100.0); + foundItem = true; + Integer idProduct = productsTable.getItems().get(i).getId(); + String newName = name.getText(); + if(newName.isEmpty()){ + Main.showPopUp(Alert.AlertType.ERROR,"Enter a name."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + AdminJson updateJson = new AdminJson(JsonFields.tableProducts, JsonFields.commandUpdate); + BaseItem product = new TableProduct(idProduct, newName); + updateJson.addValues(product); + JSONObject response = new JSONObject(Main.getWritingCommandQueue().run(updateJson.getJSON().toString())); + + if(response.getString(JsonFields.response).equals(JsonFields.responseSuccess)){ + updateProgress(60, 100.0); + Main.fetchDatabase(); + updateProgress(80, 100.0); + Main.deserializeDatabase(); + updateProgress(90, 100.0); + fillTable(); + Platform.runLater(() -> { + progressIndicator.setVisible(false); + }); + Main.showPopUp(Alert.AlertType.CONFIRMATION, responseFromServer); + updateProgress(100, 100.0); + sleep(1000); + return null; + }else{ + updateProgress(70, 100.0); + Main.fetchDatabase(); + updateProgress(80, 100.0); + Main.deserializeDatabase(); + updateProgress(90, 100.0); + fillTable(); + updateProgress(100,100.0); + Main.showPopUp(Alert.AlertType.ERROR,response.getString(JsonFields.responseMessage)); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + } + } + if(foundItem == false){ + Main.showPopUp(Alert.AlertType.ERROR,"No item selected."); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + + return null; + } + }; + + Thread taskThread = new Thread(task); + taskThread.setDaemon(true); + taskThread.start(); + progressIndicator.progressProperty().bind(task.progressProperty()); + FilteredList filteredData = new FilteredList<>(FXCollections.observableList(productModels)); + productsTable.setItems(filteredData); + + searchBar.textProperty().addListener((observable, oldValue, newValue) -> + filteredData.setPredicate(createPredicate(newValue)) + ); + } + }); + + refreshBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + Task taskRefresh = new Task() { + @Override + protected Object call() throws Exception { + progressIndicator.setVisible(true); + updateProgress(20, 100.0); + Main.fetchDatabase(); + updateProgress(50, 100.0); + sleep(1000); + Main.deserializeDatabase(); + updateProgress(70, 100.0); + sleep(500); + fillTable(); + updateProgress(90, 100.0); + productsTable.refresh(); + updateProgress(100, 100.0); + sleep(1000); + Platform.runLater(() ->{ + progressIndicator.setVisible(false); + }); + return null; + } + }; + Thread taskThreadRefresh = new Thread(taskRefresh); + taskThreadRefresh.setDaemon(true); + taskThreadRefresh.start(); + progressIndicator.progressProperty().bind(taskRefresh.progressProperty()); + FilteredList filteredData = new FilteredList<>(FXCollections.observableList(productModels)); + productsTable.setItems(filteredData); + + searchBar.textProperty().addListener((observable, oldValue, newValue) -> + filteredData.setPredicate(createPredicate(newValue)) + ); + } + }); + + FilteredList filteredData = new FilteredList<>(FXCollections.observableList(productModels)); + productsTable.setItems(filteredData); + + searchBar.textProperty().addListener((observable, oldValue, newValue) -> + filteredData.setPredicate(createPredicate(newValue)) + ); + } +} diff --git a/Admin/target/classes/META-INF/MANIFEST.MF b/Admin/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000..7726f58 --- /dev/null +++ b/Admin/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: com.example.demo3.Main + diff --git a/Admin/target/classes/com/example/demo3/AdminDatabaseFetcher.class b/Admin/target/classes/com/example/demo3/AdminDatabaseFetcher.class new file mode 100644 index 0000000..7b50a29 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDatabaseFetcher.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminDeposits.fxml b/Admin/target/classes/com/example/demo3/AdminDeposits.fxml new file mode 100644 index 0000000..7cf839c --- /dev/null +++ b/Admin/target/classes/com/example/demo3/AdminDeposits.fxml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Admin/target/classes/com/example/demo3/AdminDepositsController$1.class b/Admin/target/classes/com/example/demo3/AdminDepositsController$1.class new file mode 100644 index 0000000..c2db5f0 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDepositsController$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminDepositsController$2.class b/Admin/target/classes/com/example/demo3/AdminDepositsController$2.class new file mode 100644 index 0000000..e1160c3 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDepositsController$2.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminDepositsController$3$1.class b/Admin/target/classes/com/example/demo3/AdminDepositsController$3$1.class new file mode 100644 index 0000000..052d973 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDepositsController$3$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminDepositsController$3.class b/Admin/target/classes/com/example/demo3/AdminDepositsController$3.class new file mode 100644 index 0000000..c2db460 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDepositsController$3.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminDepositsController$4$1.class b/Admin/target/classes/com/example/demo3/AdminDepositsController$4$1.class new file mode 100644 index 0000000..a3fa80e Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDepositsController$4$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminDepositsController$4.class b/Admin/target/classes/com/example/demo3/AdminDepositsController$4.class new file mode 100644 index 0000000..8f254e7 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDepositsController$4.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminDepositsController$5$1.class b/Admin/target/classes/com/example/demo3/AdminDepositsController$5$1.class new file mode 100644 index 0000000..bc5a48c Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDepositsController$5$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminDepositsController$5.class b/Admin/target/classes/com/example/demo3/AdminDepositsController$5.class new file mode 100644 index 0000000..e31868c Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDepositsController$5.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminDepositsController$6$1.class b/Admin/target/classes/com/example/demo3/AdminDepositsController$6$1.class new file mode 100644 index 0000000..02bc419 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDepositsController$6$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminDepositsController$6.class b/Admin/target/classes/com/example/demo3/AdminDepositsController$6.class new file mode 100644 index 0000000..1478318 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDepositsController$6.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminDepositsController.class b/Admin/target/classes/com/example/demo3/AdminDepositsController.class new file mode 100644 index 0000000..5245057 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminDepositsController.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminLogin.fxml b/Admin/target/classes/com/example/demo3/AdminLogin.fxml new file mode 100644 index 0000000..63b3521 --- /dev/null +++ b/Admin/target/classes/com/example/demo3/AdminLogin.fxml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Admin/target/classes/com/example/demo3/AdminLoginController$1.class b/Admin/target/classes/com/example/demo3/AdminLoginController$1.class new file mode 100644 index 0000000..ac3d897 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminLoginController$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminLoginController.class b/Admin/target/classes/com/example/demo3/AdminLoginController.class new file mode 100644 index 0000000..2881a2a Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminLoginController.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminOrders.fxml b/Admin/target/classes/com/example/demo3/AdminOrders.fxml new file mode 100644 index 0000000..8915f2e --- /dev/null +++ b/Admin/target/classes/com/example/demo3/AdminOrders.fxml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Admin/target/classes/com/example/demo3/AdminPageController$1.class b/Admin/target/classes/com/example/demo3/AdminPageController$1.class new file mode 100644 index 0000000..2a00263 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminPageController$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminPageController$2.class b/Admin/target/classes/com/example/demo3/AdminPageController$2.class new file mode 100644 index 0000000..5a30ff6 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminPageController$2.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminPageController$3.class b/Admin/target/classes/com/example/demo3/AdminPageController$3.class new file mode 100644 index 0000000..08fd115 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminPageController$3.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminPageController$4.class b/Admin/target/classes/com/example/demo3/AdminPageController$4.class new file mode 100644 index 0000000..468a876 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminPageController$4.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminPageController$5.class b/Admin/target/classes/com/example/demo3/AdminPageController$5.class new file mode 100644 index 0000000..f0811c4 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminPageController$5.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminPageController.class b/Admin/target/classes/com/example/demo3/AdminPageController.class new file mode 100644 index 0000000..53eed5f Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminPageController.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminProducts.fxml b/Admin/target/classes/com/example/demo3/AdminProducts.fxml new file mode 100644 index 0000000..ec02d87 --- /dev/null +++ b/Admin/target/classes/com/example/demo3/AdminProducts.fxml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Admin/target/classes/com/example/demo3/AdminProductsController$1$1.class b/Admin/target/classes/com/example/demo3/AdminProductsController$1$1.class new file mode 100644 index 0000000..bddd3d8 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminProductsController$1$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminProductsController$1.class b/Admin/target/classes/com/example/demo3/AdminProductsController$1.class new file mode 100644 index 0000000..67cd729 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminProductsController$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminProductsController$2$1.class b/Admin/target/classes/com/example/demo3/AdminProductsController$2$1.class new file mode 100644 index 0000000..9d5db4b Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminProductsController$2$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminProductsController$2.class b/Admin/target/classes/com/example/demo3/AdminProductsController$2.class new file mode 100644 index 0000000..c129595 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminProductsController$2.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminProductsController$3$1.class b/Admin/target/classes/com/example/demo3/AdminProductsController$3$1.class new file mode 100644 index 0000000..e5363a3 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminProductsController$3$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminProductsController$3.class b/Admin/target/classes/com/example/demo3/AdminProductsController$3.class new file mode 100644 index 0000000..2e3b202 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminProductsController$3.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminProductsController$4$1.class b/Admin/target/classes/com/example/demo3/AdminProductsController$4$1.class new file mode 100644 index 0000000..72ac79b Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminProductsController$4$1.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminProductsController$4.class b/Admin/target/classes/com/example/demo3/AdminProductsController$4.class new file mode 100644 index 0000000..451b3ea Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminProductsController$4.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminProductsController.class b/Admin/target/classes/com/example/demo3/AdminProductsController.class new file mode 100644 index 0000000..c08400e Binary files /dev/null and b/Admin/target/classes/com/example/demo3/AdminProductsController.class differ diff --git a/Admin/target/classes/com/example/demo3/AdminRoutes.fxml b/Admin/target/classes/com/example/demo3/AdminRoutes.fxml new file mode 100644 index 0000000..dbf5bb1 --- /dev/null +++ b/Admin/target/classes/com/example/demo3/AdminRoutes.fxml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Admin/target/classes/com/example/demo3/LoginController$1$1.class b/Admin/target/classes/com/example/demo3/LoginController$1$1.class new file mode 100644 index 0000000..09eb9c3 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/LoginController$1$1.class differ diff --git a/Admin/target/classes/com/example/demo3/LoginController$1$2.class b/Admin/target/classes/com/example/demo3/LoginController$1$2.class new file mode 100644 index 0000000..814bb0e Binary files /dev/null and b/Admin/target/classes/com/example/demo3/LoginController$1$2.class differ diff --git a/Admin/target/classes/com/example/demo3/LoginController$1.class b/Admin/target/classes/com/example/demo3/LoginController$1.class new file mode 100644 index 0000000..5be03c1 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/LoginController$1.class differ diff --git a/Admin/target/classes/com/example/demo3/LoginController.class b/Admin/target/classes/com/example/demo3/LoginController.class new file mode 100644 index 0000000..afb6a88 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/LoginController.class differ diff --git a/Admin/target/classes/com/example/demo3/Main$1.class b/Admin/target/classes/com/example/demo3/Main$1.class new file mode 100644 index 0000000..acbce89 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/Main$1.class differ diff --git a/Admin/target/classes/com/example/demo3/Main$2.class b/Admin/target/classes/com/example/demo3/Main$2.class new file mode 100644 index 0000000..f2d7f1c Binary files /dev/null and b/Admin/target/classes/com/example/demo3/Main$2.class differ diff --git a/Admin/target/classes/com/example/demo3/Main.class b/Admin/target/classes/com/example/demo3/Main.class new file mode 100644 index 0000000..6dc0a96 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/Main.class differ diff --git a/Admin/target/classes/com/example/demo3/OpeningPage.css b/Admin/target/classes/com/example/demo3/OpeningPage.css new file mode 100644 index 0000000..91a3a6d --- /dev/null +++ b/Admin/target/classes/com/example/demo3/OpeningPage.css @@ -0,0 +1,7 @@ +.vbox{ + -fx-background-color: linear-gradient(from 25% 25% to 100% 100%, #0c98d0, #0050ff); +} + +.text{ + -fx-text-fill: #000000; +} \ No newline at end of file diff --git a/Admin/target/classes/com/example/demo3/ServerConnection.class b/Admin/target/classes/com/example/demo3/ServerConnection.class new file mode 100644 index 0000000..bfdec73 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/ServerConnection.class differ diff --git a/Admin/target/classes/com/example/demo3/StagesPaths.class b/Admin/target/classes/com/example/demo3/StagesPaths.class new file mode 100644 index 0000000..9093f2b Binary files /dev/null and b/Admin/target/classes/com/example/demo3/StagesPaths.class differ diff --git a/Admin/target/classes/com/example/demo3/UserOrders.fxml b/Admin/target/classes/com/example/demo3/UserOrders.fxml new file mode 100644 index 0000000..8da2927 --- /dev/null +++ b/Admin/target/classes/com/example/demo3/UserOrders.fxml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Admin/target/classes/com/example/demo3/UserOrdersController$1.class b/Admin/target/classes/com/example/demo3/UserOrdersController$1.class new file mode 100644 index 0000000..1c4c65b Binary files /dev/null and b/Admin/target/classes/com/example/demo3/UserOrdersController$1.class differ diff --git a/Admin/target/classes/com/example/demo3/UserOrdersController.class b/Admin/target/classes/com/example/demo3/UserOrdersController.class new file mode 100644 index 0000000..dfe7041 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/UserOrdersController.class differ diff --git a/Admin/target/classes/com/example/demo3/UserProducts.fxml b/Admin/target/classes/com/example/demo3/UserProducts.fxml new file mode 100644 index 0000000..fa2e9e1 --- /dev/null +++ b/Admin/target/classes/com/example/demo3/UserProducts.fxml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Admin/target/classes/com/example/demo3/WriteAndReadUtil.class b/Admin/target/classes/com/example/demo3/WriteAndReadUtil.class new file mode 100644 index 0000000..8438eb4 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/WriteAndReadUtil.class differ diff --git a/Admin/target/classes/com/example/demo3/database/AdminDatabaseDeserializer.class b/Admin/target/classes/com/example/demo3/database/AdminDatabaseDeserializer.class new file mode 100644 index 0000000..35844c8 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/database/AdminDatabaseDeserializer.class differ diff --git a/Admin/target/classes/com/example/demo3/database/AdminDatabaseFetcher.class b/Admin/target/classes/com/example/demo3/database/AdminDatabaseFetcher.class new file mode 100644 index 0000000..1c3fcbe Binary files /dev/null and b/Admin/target/classes/com/example/demo3/database/AdminDatabaseFetcher.class differ diff --git a/Admin/target/classes/com/example/demo3/interfaces/JSONMethods.class b/Admin/target/classes/com/example/demo3/interfaces/JSONMethods.class new file mode 100644 index 0000000..d1dac95 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/interfaces/JSONMethods.class differ diff --git a/Admin/target/classes/com/example/demo3/items/AdminJson.class b/Admin/target/classes/com/example/demo3/items/AdminJson.class new file mode 100644 index 0000000..d996e95 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/items/AdminJson.class differ diff --git a/Admin/target/classes/com/example/demo3/items/BaseItem.class b/Admin/target/classes/com/example/demo3/items/BaseItem.class new file mode 100644 index 0000000..2ff0feb Binary files /dev/null and b/Admin/target/classes/com/example/demo3/items/BaseItem.class differ diff --git a/Admin/target/classes/com/example/demo3/items/Order.class b/Admin/target/classes/com/example/demo3/items/Order.class new file mode 100644 index 0000000..43a8cac Binary files /dev/null and b/Admin/target/classes/com/example/demo3/items/Order.class differ diff --git a/Admin/target/classes/com/example/demo3/items/ProductForOrder.class b/Admin/target/classes/com/example/demo3/items/ProductForOrder.class new file mode 100644 index 0000000..cfd1fca Binary files /dev/null and b/Admin/target/classes/com/example/demo3/items/ProductForOrder.class differ diff --git a/Admin/target/classes/com/example/demo3/items/database/TableDeposit.class b/Admin/target/classes/com/example/demo3/items/database/TableDeposit.class new file mode 100644 index 0000000..f82c62f Binary files /dev/null and b/Admin/target/classes/com/example/demo3/items/database/TableDeposit.class differ diff --git a/Admin/target/classes/com/example/demo3/items/database/TableOrder.class b/Admin/target/classes/com/example/demo3/items/database/TableOrder.class new file mode 100644 index 0000000..dad54a4 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/items/database/TableOrder.class differ diff --git a/Admin/target/classes/com/example/demo3/items/database/TableProdInDepo.class b/Admin/target/classes/com/example/demo3/items/database/TableProdInDepo.class new file mode 100644 index 0000000..5fe311a Binary files /dev/null and b/Admin/target/classes/com/example/demo3/items/database/TableProdInDepo.class differ diff --git a/Admin/target/classes/com/example/demo3/items/database/TableProduct.class b/Admin/target/classes/com/example/demo3/items/database/TableProduct.class new file mode 100644 index 0000000..bac41f1 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/items/database/TableProduct.class differ diff --git a/Admin/target/classes/com/example/demo3/items/database/TableRoute.class b/Admin/target/classes/com/example/demo3/items/database/TableRoute.class new file mode 100644 index 0000000..23fb817 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/items/database/TableRoute.class differ diff --git a/Admin/target/classes/com/example/demo3/items/database/TableUser.class b/Admin/target/classes/com/example/demo3/items/database/TableUser.class new file mode 100644 index 0000000..5a97bef Binary files /dev/null and b/Admin/target/classes/com/example/demo3/items/database/TableUser.class differ diff --git a/Admin/target/classes/com/example/demo3/items/database/TableUserOrder.class b/Admin/target/classes/com/example/demo3/items/database/TableUserOrder.class new file mode 100644 index 0000000..806160c Binary files /dev/null and b/Admin/target/classes/com/example/demo3/items/database/TableUserOrder.class differ diff --git a/Admin/target/classes/com/example/demo3/json/JsonFields.class b/Admin/target/classes/com/example/demo3/json/JsonFields.class new file mode 100644 index 0000000..9bce362 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/json/JsonFields.class differ diff --git a/Admin/target/classes/com/example/demo3/models/DepositModel.class b/Admin/target/classes/com/example/demo3/models/DepositModel.class new file mode 100644 index 0000000..efc7fb3 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/models/DepositModel.class differ diff --git a/Admin/target/classes/com/example/demo3/models/OrderModel.class b/Admin/target/classes/com/example/demo3/models/OrderModel.class new file mode 100644 index 0000000..c16c361 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/models/OrderModel.class differ diff --git a/Admin/target/classes/com/example/demo3/models/ProdInDepoModel.class b/Admin/target/classes/com/example/demo3/models/ProdInDepoModel.class new file mode 100644 index 0000000..d326dc4 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/models/ProdInDepoModel.class differ diff --git a/Admin/target/classes/com/example/demo3/models/ProdInOrdersModel.class b/Admin/target/classes/com/example/demo3/models/ProdInOrdersModel.class new file mode 100644 index 0000000..6f63787 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/models/ProdInOrdersModel.class differ diff --git a/Admin/target/classes/com/example/demo3/models/ProductModel.class b/Admin/target/classes/com/example/demo3/models/ProductModel.class new file mode 100644 index 0000000..e40d657 Binary files /dev/null and b/Admin/target/classes/com/example/demo3/models/ProductModel.class differ diff --git a/Admin/target/classes/com/example/demo3/models/UserModel.class b/Admin/target/classes/com/example/demo3/models/UserModel.class new file mode 100644 index 0000000..6ef9d8f Binary files /dev/null and b/Admin/target/classes/com/example/demo3/models/UserModel.class differ diff --git a/Admin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/Admin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..bb5336f --- /dev/null +++ b/Admin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,27 @@ +com\example\demo3\interfaces\JSONMethods.class +com\example\demo3\AdminPageController$3.class +com\example\demo3\ServerConnection.class +com\example\demo3\LoginController.class +com\example\demo3\StagesPaths.class +com\example\demo3\items\database\TableUser.class +com\example\demo3\items\BaseItem.class +com\example\demo3\json\JsonFields.class +com\example\demo3\AdminRoutesController.class +com\example\demo3\AdminOrdersController.class +com\example\demo3\AdminLoginController$1.class +com\example\demo3\AdminPageController$2.class +com\example\demo3\AdminDepositsController.class +com\example\demo3\WriteAndReadUtil.class +com\example\demo3\FxmlLoader.class +com\example\demo3\items\ProductForOrder.class +com\example\demo3\LoginController$1.class +com\example\demo3\AdminPageController.class +com\example\demo3\AdminLoginController.class +com\example\demo3\items\Order.class +com\example\demo3\items\database\TableOrder.class +com\example\demo3\UserOrdersController.class +com\example\demo3\AdminProductsController.class +com\example\demo3\Main.class +com\example\demo3\items\AdminJson.class +com\example\demo3\AdminPageController$1.class +com\example\demo3\AdminPageController$4.class diff --git a/Admin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/Admin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..2d7693a --- /dev/null +++ b/Admin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,28 @@ +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\items\AdminJson.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\UserDatabaseFetcher.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\RegisterController.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\LoginController.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\Main.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\OpeningPageController.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\AdminLoginController.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\AdminOrdersController.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\AdminDepositsController.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\StagesPaths.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\database\UserDatabaseFetcher.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\FxmlLoader.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\WriteAndReadUtil.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\items\database\TableUser.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\json\JsonFields.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\AdminPageController.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\AdminProductsController.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\items\database\TableOrder.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\ServerConnection.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\database\UserDatabaseDeserializer.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\interfaces\JSONMethods.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\items\ProductForOrder.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\UserPageController.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\UserProductsController.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\items\BaseItem.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\AdminRoutesController.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\items\Order.java +C:\Users\laura\Desktop\Java\demo3\src\main\java\com\example\demo3\UserOrdersController.java