diff --git a/WebServices/balance/target/classes/br/ufrn/imd/balance/BalanceApplication.class b/WebServices/balance/target/classes/br/ufrn/imd/balance/BalanceApplication.class index 954080045c0ccad237634742e89490f67f07358f..bffd26e76cdc4d2045552b96e278834359ee8de3 100644 Binary files a/WebServices/balance/target/classes/br/ufrn/imd/balance/BalanceApplication.class and b/WebServices/balance/target/classes/br/ufrn/imd/balance/BalanceApplication.class differ diff --git a/WebServices/balance/target/classes/br/ufrn/imd/balance/controller/BalanceController.class b/WebServices/balance/target/classes/br/ufrn/imd/balance/controller/BalanceController.class index b48af94711e95246e8a2876a7785419cef6e5794..b15ff45f576939bf2cd27cfb7aed02a32bafd5aa 100644 Binary files a/WebServices/balance/target/classes/br/ufrn/imd/balance/controller/BalanceController.class and b/WebServices/balance/target/classes/br/ufrn/imd/balance/controller/BalanceController.class differ diff --git a/WebServices/balance/target/classes/br/ufrn/imd/balance/domain/Account.class b/WebServices/balance/target/classes/br/ufrn/imd/balance/domain/Account.class index 2240ebaf1196cb360434bc8a121fd3b4dcfe3d8e..e2f70865b12aa4ea035f3721a1c35aa9d9d9cc77 100644 Binary files a/WebServices/balance/target/classes/br/ufrn/imd/balance/domain/Account.class and b/WebServices/balance/target/classes/br/ufrn/imd/balance/domain/Account.class differ diff --git a/WebServices/balance/target/classes/br/ufrn/imd/balance/domain/Client.class b/WebServices/balance/target/classes/br/ufrn/imd/balance/domain/Client.class index cad3be1b378141f47fb5c2a9c5d93f199a5c96fa..e032c6c679dddb8a69e3ac2305623337db71fcd2 100644 Binary files a/WebServices/balance/target/classes/br/ufrn/imd/balance/domain/Client.class and b/WebServices/balance/target/classes/br/ufrn/imd/balance/domain/Client.class differ diff --git a/WebServices/balance/target/classes/br/ufrn/imd/balance/repository/ClientRepository.class b/WebServices/balance/target/classes/br/ufrn/imd/balance/repository/ClientRepository.class index 712598f71b37c3cbba4cc4f301c93fcfe4229165..f128f54efbc02db6a1a6ca5bdd451f668683b795 100644 Binary files a/WebServices/balance/target/classes/br/ufrn/imd/balance/repository/ClientRepository.class and b/WebServices/balance/target/classes/br/ufrn/imd/balance/repository/ClientRepository.class differ diff --git a/WebServices/balance/target/classes/br/ufrn/imd/balance/service/BalanceService.class b/WebServices/balance/target/classes/br/ufrn/imd/balance/service/BalanceService.class index 024f7cfd65e02a5b76b37a900ac69cee13c4af8a..10c822e3aec17ef8ac1fb016ab2bfa02b8003aae 100644 Binary files a/WebServices/balance/target/classes/br/ufrn/imd/balance/service/BalanceService.class and b/WebServices/balance/target/classes/br/ufrn/imd/balance/service/BalanceService.class differ diff --git a/WebServices/balance/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/WebServices/balance/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 0835eb49ffb9664025d8760ee65f4bfa049e38d1..71603feacfc5af437722f6f95968d415d90b72cd 100644 --- a/WebServices/balance/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/WebServices/balance/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,6 +1,6 @@ -/home/ff/code/dim/devdojo-microservices/balance/src/main/java/br/ufrn/imd/balance/service/BalanceService.java -/home/ff/code/dim/devdojo-microservices/balance/src/main/java/br/ufrn/imd/balance/domain/Account.java -/home/ff/code/dim/devdojo-microservices/balance/src/main/java/br/ufrn/imd/balance/repository/ClientRepository.java -/home/ff/code/dim/devdojo-microservices/balance/src/main/java/br/ufrn/imd/balance/controller/BalanceController.java -/home/ff/code/dim/devdojo-microservices/balance/src/main/java/br/ufrn/imd/balance/BalanceApplication.java -/home/ff/code/dim/devdojo-microservices/balance/src/main/java/br/ufrn/imd/balance/domain/Client.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/balance/src/main/java/br/ufrn/imd/balance/BalanceApplication.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/balance/src/main/java/br/ufrn/imd/balance/controller/BalanceController.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/balance/src/main/java/br/ufrn/imd/balance/domain/Client.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/balance/src/main/java/br/ufrn/imd/balance/service/BalanceService.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/balance/src/main/java/br/ufrn/imd/balance/repository/ClientRepository.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/balance/src/main/java/br/ufrn/imd/balance/domain/Account.java diff --git a/WebServices/balance/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/WebServices/balance/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst index 68bbe323a72bf7aba55c1677b45b32701058ee47..87bcf060125a69d1781ca28070517cb2a584fb19 100644 --- a/WebServices/balance/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ b/WebServices/balance/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -1 +1 @@ -/home/ff/code/dim/devdojo-microservices/balance/src/test/java/br/ufrn/imd/withdrawal/CourseApplicationTests.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/balance/src/test/java/br/ufrn/imd/withdrawal/CourseApplicationTests.java diff --git a/WebServices/client/.DS_Store b/WebServices/client/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 Binary files /dev/null and b/WebServices/client/.DS_Store differ diff --git a/WebServices/client/.gitignore b/WebServices/client/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ba5cb5cca8766c8b2403d25de25b1c880c5ef64a --- /dev/null +++ b/WebServices/client/.gitignore @@ -0,0 +1,26 @@ +HELP.md +/target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +/build/ diff --git a/WebServices/client/.mvn/wrapper/MavenWrapperDownloader.java b/WebServices/client/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000000000000000000000000000000000000..47336fde724164b1329ed3595f5b6bff09f7c179 --- /dev/null +++ b/WebServices/client/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,114 @@ +/* +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 + + http://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. +*/ + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URL; +import java.nio.channels.Channels; +import java.nio.channels.ReadableByteChannel; +import java.util.Properties; + +public class MavenWrapperDownloader { + + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = + "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: : " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/WebServices/client/.mvn/wrapper/maven-wrapper.jar b/WebServices/client/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..01e67997377a393fd672c7dcde9dccbedf0cb1e9 Binary files /dev/null and b/WebServices/client/.mvn/wrapper/maven-wrapper.jar differ diff --git a/WebServices/client/.mvn/wrapper/maven-wrapper.properties b/WebServices/client/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000000000000000000000000000000000000..cd0d451ccd6fc835996c9fe4eebf8a571154f515 --- /dev/null +++ b/WebServices/client/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip diff --git a/WebServices/client/Dockerfile b/WebServices/client/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..9885e7466359c0bd6426716ab718c12064632b70 --- /dev/null +++ b/WebServices/client/Dockerfile @@ -0,0 +1,3 @@ +FROM openjdk:11 +COPY target/withdrawal.jar withdrawal.jar +ENTRYPOINT ["java","-jar","withdrawal.jar"] \ No newline at end of file diff --git a/WebServices/client/mvnw b/WebServices/client/mvnw new file mode 100755 index 0000000000000000000000000000000000000000..5551fde8e7dba1e37a1821e8b26374893e2a9e2e --- /dev/null +++ b/WebServices/client/mvnw @@ -0,0 +1,286 @@ +#!/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 +# +# http://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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 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 /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)`" + # TODO classpath? +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="`which 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 + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" + 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 command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + wget "$jarUrl" -O "$wrapperJarPath" + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + curl -o "$wrapperJarPath" "$jarUrl" + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + 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 + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/WebServices/client/mvnw.cmd b/WebServices/client/mvnw.cmd new file mode 100644 index 0000000000000000000000000000000000000000..e5cfb0ae9eab80c314b7d79c164d4a00772824b8 --- /dev/null +++ b/WebServices/client/mvnw.cmd @@ -0,0 +1,161 @@ +@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 http://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 Maven2 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 key stroke 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 my 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 "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\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/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" +FOR /F "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% ( + echo Found %WRAPPER_JAR% +) else ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')" + echo Finished downloading %WRAPPER_JAR% +) +@REM End of extension + +%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 "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\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% + +exit /B %ERROR_CODE% diff --git a/WebServices/client/pom.xml b/WebServices/client/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..a2109e35c8f696f96d428af00d3803499099fe4b --- /dev/null +++ b/WebServices/client/pom.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>br.ufrn.imd</groupId> + <artifactId>dim0614</artifactId> + <version>1.0-SNAPSHOT</version> + <relativePath>../</relativePath> <!-- lookup parent from repository --> + </parent> + + <artifactId>client</artifactId> + <version>0.0.1-SNAPSHOT</version> + <name>client</name> + <description>Spring Boot Micro-services By DevDojo</description> + + <properties> + <java.version>11</java.version> + </properties> + + <build> + <finalName>client</finalName> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <executable>true</executable> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.8.0</version> + <configuration> + <source>11</source> + <target>11</target> + </configuration> + </plugin> + </plugins> + </build> + +</project> diff --git a/WebServices/client/src/main/java/br/ufrn/imd/client/ClientApplication.java b/WebServices/client/src/main/java/br/ufrn/imd/client/ClientApplication.java new file mode 100644 index 0000000000000000000000000000000000000000..d22474dcb1ca40453cbcf8023298b40529025ca2 --- /dev/null +++ b/WebServices/client/src/main/java/br/ufrn/imd/client/ClientApplication.java @@ -0,0 +1,27 @@ +package br.ufrn.imd.client; + +import br.ufrn.imd.client.utils.MachineState; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ClientApplication { + + public static void main(String[] args) { + SpringApplication.run(ClientApplication.class, args); + + MachineState mS = new MachineState(); + + for(;;) { + while(!mS.hasUser()) mS.login(); + + while(mS.quit() || mS.hasUser()) { + mS.render(); + mS.processEvents(); + mS.update(); + } + } + + } + +} diff --git a/WebServices/client/src/main/java/br/ufrn/imd/client/config/RestClientConfig.java b/WebServices/client/src/main/java/br/ufrn/imd/client/config/RestClientConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..7a86a8e7022519b24e5b809df30d446666a91cf2 --- /dev/null +++ b/WebServices/client/src/main/java/br/ufrn/imd/client/config/RestClientConfig.java @@ -0,0 +1,15 @@ +package br.ufrn.imd.client.config; + +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestClientConfig { + + @Bean + public RestTemplate restTemplate(RestTemplateBuilder builder) { + return builder.build(); + } +} diff --git a/WebServices/client/src/main/java/br/ufrn/imd/client/domain/Account.java b/WebServices/client/src/main/java/br/ufrn/imd/client/domain/Account.java new file mode 100644 index 0000000000000000000000000000000000000000..9eaee50273480deb933b407c43521d966108bc02 --- /dev/null +++ b/WebServices/client/src/main/java/br/ufrn/imd/client/domain/Account.java @@ -0,0 +1,41 @@ +package br.ufrn.imd.client.domain; + +import java.io.Serializable; + +public class Account implements Serializable { + private static final long serialVersionUID = 2L; + private Integer id; + private String number; + private Double balance; + + public Account() {} + public Account(Integer id, String number, Double balance) { + this.id = id; + this.number = number; + this.balance = balance; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public Double getBalance() { + return balance; + } + + public void setBalance(Double balance) { + this.balance = balance; + } +} diff --git a/WebServices/client/src/main/java/br/ufrn/imd/client/domain/Client.java b/WebServices/client/src/main/java/br/ufrn/imd/client/domain/Client.java new file mode 100644 index 0000000000000000000000000000000000000000..3aa1f75c4c7dc5b841d2eadc4bbf0a5bfa77bad2 --- /dev/null +++ b/WebServices/client/src/main/java/br/ufrn/imd/client/domain/Client.java @@ -0,0 +1,15 @@ +package br.ufrn.imd.client.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.io.Serializable; + +@Data +@AllArgsConstructor +public class Client implements Serializable { + private static final long serialVersionUID = 1L; + + private Integer id; + +} diff --git a/WebServices/client/src/main/java/br/ufrn/imd/client/utils/MachineState.java b/WebServices/client/src/main/java/br/ufrn/imd/client/utils/MachineState.java new file mode 100644 index 0000000000000000000000000000000000000000..a6c226db1a88c06df587ee66ddd81238c07fc1d9 --- /dev/null +++ b/WebServices/client/src/main/java/br/ufrn/imd/client/utils/MachineState.java @@ -0,0 +1,222 @@ +package br.ufrn.imd.client.utils; + +import br.ufrn.imd.client.domain.Account; +import br.ufrn.imd.client.domain.Client; +import br.ufrn.imd.client.utils.message.DepositMessage; +import br.ufrn.imd.client.utils.message.TransferMessage; +import br.ufrn.imd.client.utils.message.WithdrawalMessage; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import java.net.MalformedURLException; +import java.rmi.Naming; +import java.rmi.NotBoundException; +import java.rmi.RemoteException; +import java.util.Scanner; + +import static ufrn.imd.utils.NameSpace.*; + +@Data +public class MachineState { + + @Autowired + private RestTemplate restTemplate; + public static final String INITIAL= "INITIAL"; + public static final String READ = "READ"; + public static final String DEPOSIT = "DEPOSIT"; + public static final String BALANCE = "BALANCE"; + public static final String WITHDRAWAL = "WITHDRAWAL"; + public static final String TRANSFER = "TRANSFER"; + + public static final String START = "START"; + public static final String INVALID_INPUT = "INVALID_INPUT"; + public static final String QUIT = "QUIT"; + + private String state; + private Scanner sc; + private String inputValue; + + private Client client; + + public MachineState() { + state = INITIAL; + inputValue = new String(); + sc = new Scanner(System.in); + } + + public void login() { + System.out.println(">>> Please enter your bank account number"); +// String accountNumber = sc.nextLine(); +// +// ResponseEntity<Client> response = restTemplate.getForEntity(HOST_AUTHENTICATOR_SERVICE, Client.class); +// +// if(response.getStatusCodeValue() == 200) { + state = INITIAL; +// this.client = response.getBody(); + this.client = new Client(1); +// } else { +// System.out.println(">>> Bad credentials"); +// } + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + public Boolean hasUser() { + return client != null; + } + + public Boolean quit() { + return !state.equals(QUIT); + } + + public void update() { + if(state.equals(INITIAL)) { + state = START; + } else if(state.equals(START)) { + state = READ; + } else if(state.equals(READ)) { + state = inputValue; + } else if(state.equals(INVALID_INPUT)) { + state = START; + } else if(state.equals(DEPOSIT)) { + state = START; + } else if(state.equals(BALANCE)) { + state = START; + } else if(state.equals(WITHDRAWAL)) { + state = START; + } else if(state.equals(TRANSFER)) { + state = START; + } + } + + public void processEvents() { + if(state.equals(READ)) { + inputValue = sc.nextLine().trim().toUpperCase(); + if(!inputValue.isEmpty() && + !inputValue.equals(QUIT) && + !inputValue.equals(DEPOSIT) && + !inputValue.equals(BALANCE) && + !inputValue.equals(WITHDRAWAL) && + !inputValue.equals(TRANSFER)) { + inputValue = INVALID_INPUT; + } + } else if(state.equals(DEPOSIT)) { + String v = sc.nextLine(); + DepositMessage depositMessage = new DepositMessage(this.client, Double.parseDouble(v)); + ResponseEntity<Account> response = restTemplate.postForEntity(HOST_DEPOSIT_SERVICE, depositMessage, Account.class); + if(response.getStatusCodeValue() == 200) { + System.out.println( + String.format(">>> Your balance is: %.2f", response.getBody().getBalance()) + ); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + } else if(state.equals(BALANCE)) { + ResponseEntity<Account> response = restTemplate.getForEntity(HOST_BALANCE_SERVICE, Account.class); + if(response.getStatusCodeValue() == 200) { + System.out.println( + String.format(">>> Your balance is: %.2f", response.getBody().getBalance()) + ); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + } else if(state.equals(WITHDRAWAL)) { + String v = sc.nextLine(); + WithdrawalMessage withdrawalMessage = new WithdrawalMessage(this.client, Double.parseDouble(v)); + ResponseEntity<Account> response = restTemplate.postForEntity(HOST_WITHDRAWAL_SERVICE, withdrawalMessage, Account.class); + if(response.getStatusCodeValue()== 200) { + System.out.println( + String.format(">>> Your balance is: %.2f", response.getBody().getBalance()) + ); + } else if(response.getStatusCodeValue() == 500) { + System.out.println( + String.format(">>> %s", response.getBody()) + ); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } else if(state.equals(TRANSFER)) { + String accountNumber = sc.nextLine(); + System.out.println(">>> Please enter with the value that you want transfer"); + String v = sc.nextLine(); + + Account account = new Account(null, accountNumber, null); + TransferMessage transferMessage = new TransferMessage(this.client, account, Double.parseDouble(v)); + ResponseEntity<Account> response = restTemplate.postForEntity(HOST_TRANSFER_SERVICE, transferMessage, Account.class); + + if(response.getStatusCodeValue() == 200) { + System.out.println( + String.format(">>> Your balance is: %.2f", response.getBody().getBalance()) + ); + } else if(response.getStatusCodeValue() == 500) { + System.out.println( + String.format(">>> %s", response.getBody()) + ); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } else if(state.equals(QUIT)) { + this.client = null; + System.out.println(">>> You have logged out"); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + } + + public void render() { + try { + if(state.equals(INITIAL)) { + System.out.println(">>> Initializing..."); + Thread.sleep(1000); + } else if(state.equals(START)) { + System.out.println("These are the avaliable operations"); + System.out.println("---------------------------------"); + System.out.println(" - deposit \t\t - balance"); + System.out.println(" - withdrawal \t - transfer"); + System.out.println(" - quit"); + System.out.println("---------------------------------"); + Thread.sleep(1000); + } else if(state.equals(READ)) { + System.out.println(">>> Please enter with wich operation do you want"); + } else if(state.equals(INVALID_INPUT)) { + System.out.println(">>> Please enter with a VALID operation"); + Thread.sleep(3000); + } else if(state.equals(DEPOSIT)) { + System.out.println(">>> Starting deposit operation"); + System.out.println(">>> Please enter with the value that you want deposit"); + } else if(state.equals(WITHDRAWAL)) { + System.out.println(">>> Starting withdrawal operation"); + System.out.println(">>> Please enter the value you want to withdraw"); + } else if(state.equals(TRANSFER)) { + System.out.println(">>> Starting transfer operation"); + System.out.println(">>> Please enter with the recipient's account number"); + } + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + +} diff --git a/WebServices/client/src/main/java/br/ufrn/imd/client/utils/NameSpace.java b/WebServices/client/src/main/java/br/ufrn/imd/client/utils/NameSpace.java new file mode 100644 index 0000000000000000000000000000000000000000..c6b21564c0d2aadf51ccbba80225e526a94c794e --- /dev/null +++ b/WebServices/client/src/main/java/br/ufrn/imd/client/utils/NameSpace.java @@ -0,0 +1,14 @@ +package ufrn.imd.utils; + +public class NameSpace { + public final static Integer PORT_AUTHENTICATOR_SERVICE = 1905; + public final static Integer PORT_WITHDRAWAL_SERVICE = 1906; + public static final Integer PORT_DEPOSIT_SERVICE = 1907; + public static final Integer PORT_BALANCE_SERVICE = 1908; + public static final Integer PORT_TRANSFER_SERVICE = 1909; + public final static String HOST_AUTHENTICATOR_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_AUTHENTICATOR_SERVICE, "authenticator"); + public final static String HOST_WITHDRAWAL_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_WITHDRAWAL_SERVICE, "withdrawal"); + public static final String HOST_DEPOSIT_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_DEPOSIT_SERVICE, "deposit"); + public static final String HOST_BALANCE_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_BALANCE_SERVICE, "balance"); + public final static String HOST_TRANSFER_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_TRANSFER_SERVICE, "transfer"); +} diff --git a/WebServices/client/src/main/java/br/ufrn/imd/client/utils/message/DepositMessage.java b/WebServices/client/src/main/java/br/ufrn/imd/client/utils/message/DepositMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..04ad42926cf1d37bcb16e03578bcc3e278a2de39 --- /dev/null +++ b/WebServices/client/src/main/java/br/ufrn/imd/client/utils/message/DepositMessage.java @@ -0,0 +1,17 @@ +package br.ufrn.imd.client.utils.message; + +import br.ufrn.imd.client.domain.Client; +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.io.Serializable; + +@Data +@AllArgsConstructor +public class DepositMessage implements Serializable { + + private static final long serialVersionUID = 2L; + + private Client client; + private Double value; +} diff --git a/WebServices/client/src/main/java/br/ufrn/imd/client/utils/message/TransferMessage.java b/WebServices/client/src/main/java/br/ufrn/imd/client/utils/message/TransferMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..fc7c285ce6bf03fa1a2a736d3dcbf06ab0d845b5 --- /dev/null +++ b/WebServices/client/src/main/java/br/ufrn/imd/client/utils/message/TransferMessage.java @@ -0,0 +1,19 @@ +package br.ufrn.imd.client.utils.message; + +import br.ufrn.imd.client.domain.Account; +import br.ufrn.imd.client.domain.Client; +import lombok.AllArgsConstructor; +import lombok.Data; + + +import java.io.Serializable; + +@Data +@AllArgsConstructor +public class TransferMessage implements Serializable { + private static final long serialVersionUID = 2L; + + private Client from; + private Account to; + private Double value; +} diff --git a/WebServices/client/src/main/java/br/ufrn/imd/client/utils/message/WithdrawalMessage.java b/WebServices/client/src/main/java/br/ufrn/imd/client/utils/message/WithdrawalMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..2db871d19f924fa488ba4262d112fc28286c5ad5 --- /dev/null +++ b/WebServices/client/src/main/java/br/ufrn/imd/client/utils/message/WithdrawalMessage.java @@ -0,0 +1,16 @@ +package br.ufrn.imd.client.utils.message; + +import br.ufrn.imd.client.domain.Client; +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.io.Serializable; + +@Data +@AllArgsConstructor +public class WithdrawalMessage implements Serializable { + private static final long serialVersionUID = 2L; + + private Client client; + private Double value; +} diff --git a/WebServices/client/src/main/resources/application.yml b/WebServices/client/src/main/resources/application.yml new file mode 100644 index 0000000000000000000000000000000000000000..67cdb45d6c9da505cb5ac23ad2f6149abf3bed99 --- /dev/null +++ b/WebServices/client/src/main/resources/application.yml @@ -0,0 +1,5 @@ +server: + port: 8087 +spring: + application: + name: client \ No newline at end of file diff --git a/WebServices/client/src/test/java/br/ufrn/imd/withdrawal/CourseApplicationTests.java b/WebServices/client/src/test/java/br/ufrn/imd/withdrawal/CourseApplicationTests.java new file mode 100644 index 0000000000000000000000000000000000000000..b84743fe08d4bfdafd2ba2588a9a532fa80fa854 --- /dev/null +++ b/WebServices/client/src/test/java/br/ufrn/imd/withdrawal/CourseApplicationTests.java @@ -0,0 +1,16 @@ +package br.ufrn.imd.withdrawal; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class CourseApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/WebServices/deposit/Dockerfile b/WebServices/deposit/Dockerfile index 9885e7466359c0bd6426716ab718c12064632b70..875766f12fff59ac2bd2a5df733572d5465ad96b 100644 --- a/WebServices/deposit/Dockerfile +++ b/WebServices/deposit/Dockerfile @@ -1,3 +1,3 @@ FROM openjdk:11 -COPY target/withdrawal.jar withdrawal.jar -ENTRYPOINT ["java","-jar","withdrawal.jar"] \ No newline at end of file +COPY target/deposit.jar deposit.jar +ENTRYPOINT ["java","-jar","deposit.jar"] \ No newline at end of file diff --git a/WebServices/deposit/pom.xml b/WebServices/deposit/pom.xml index 55a797289c948be048f8de552cd718a9673b4d66..5611f6e79c7079bad0854c12cb33d2e23145deb9 100644 --- a/WebServices/deposit/pom.xml +++ b/WebServices/deposit/pom.xml @@ -9,9 +9,9 @@ <relativePath>../</relativePath> <!-- lookup parent from repository --> </parent> - <artifactId>withdrawal</artifactId> + <artifactId>deposit</artifactId> <version>0.0.1-SNAPSHOT</version> - <name>withdrawal</name> + <name>deposit</name> <description>Spring Boot Micro-services By DevDojo</description> <properties> @@ -19,7 +19,7 @@ </properties> <build> - <finalName>withdrawal</finalName> + <finalName>deposit</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> diff --git a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/WithdrawalApplication.java b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/DepositApplication.java similarity index 60% rename from WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/WithdrawalApplication.java rename to WebServices/deposit/src/main/java/br/ufrn/imd/deposit/DepositApplication.java index ba5b3a9dc1033cf3f149ecf42290fd216a4b8c80..23b7f5856812223d129e2f973f61a18cea69a364 100644 --- a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/WithdrawalApplication.java +++ b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/DepositApplication.java @@ -1,13 +1,13 @@ -package br.ufrn.imd.withdrawal; +package br.ufrn.imd.deposit; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class WithdrawalApplication { +public class DepositApplication { public static void main(String[] args) { - SpringApplication.run(WithdrawalApplication.class, args); + SpringApplication.run(DepositApplication.class, args); } } diff --git a/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/controller/DepositController.java b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/controller/DepositController.java new file mode 100644 index 0000000000000000000000000000000000000000..1511647355bb22443405b6a6a8e32dcf1b04bc01 --- /dev/null +++ b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/controller/DepositController.java @@ -0,0 +1,22 @@ +package br.ufrn.imd.deposit.controller; + +import br.ufrn.imd.deposit.domain.Client; +import br.ufrn.imd.deposit.service.DepositService; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +@AllArgsConstructor +@RestController +@RequestMapping("/banking/client/{id}") +public class DepositController { + @Autowired + private final DepositService service; + + @PatchMapping + @ResponseStatus(HttpStatus.OK) + public Client deposit(@PathVariable Integer id, @RequestParam(name = "value") Double value) { + return service.deposit(value, new Client(id)); + } +} diff --git a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/domain/Account.java b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/domain/Account.java similarity index 91% rename from WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/domain/Account.java rename to WebServices/deposit/src/main/java/br/ufrn/imd/deposit/domain/Account.java index e96c20756ddcc3639386f25b9525209deb1a97ce..becc0a60497626056feba58a6406bed644d83a25 100644 --- a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/domain/Account.java +++ b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/domain/Account.java @@ -1,4 +1,4 @@ -package br.ufrn.imd.withdrawal.domain; +package br.ufrn.imd.deposit.domain; import lombok.*; diff --git a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/domain/Client.java b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/domain/Client.java similarity index 92% rename from WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/domain/Client.java rename to WebServices/deposit/src/main/java/br/ufrn/imd/deposit/domain/Client.java index af2368f3a4d749cc8efab46ce91595865ebc180a..52f7c6369dd784427b982b8bd92837c709336ea6 100644 --- a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/domain/Client.java +++ b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/domain/Client.java @@ -1,4 +1,4 @@ -package br.ufrn.imd.withdrawal.domain; +package br.ufrn.imd.deposit.domain; import lombok.*; diff --git a/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/repository/ClientRepository.java b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/repository/ClientRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..bd5c797d6e36e8f1e63880e7c471d9d1ac9bb467 --- /dev/null +++ b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/repository/ClientRepository.java @@ -0,0 +1,9 @@ +package br.ufrn.imd.deposit.repository; + +import br.ufrn.imd.deposit.domain.Client; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ClientRepository extends JpaRepository<Client, Integer> { +} diff --git a/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/service/DepositService.java b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/service/DepositService.java new file mode 100644 index 0000000000000000000000000000000000000000..bae0c460a045d979f0ddbe9557affb2f7a34bbcb --- /dev/null +++ b/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/service/DepositService.java @@ -0,0 +1,31 @@ +package br.ufrn.imd.deposit.service; + +import br.ufrn.imd.deposit.domain.Account; +import br.ufrn.imd.deposit.domain.Client; +import br.ufrn.imd.deposit.repository.ClientRepository; +import lombok.AllArgsConstructor; +import lombok.extern.java.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Log +@AllArgsConstructor +@Service +public class DepositService { + @Autowired + private final ClientRepository clientRepository; + + public Client deposit(Double value, Client client) { + client = clientRepository.findById(client.getId()) + .orElseThrow(() -> new RuntimeException("Invalid user!")); + + Account account = client.getAccount(); + account.setBalance(account.getBalance() + value); + client = clientRepository.save(client); + + log.info("Deposit concluded!"); + log.info(String.format("Total: %.2f", client.getAccount().getBalance())); + + return client; + } +} diff --git a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/controller/WithdrawalController.java b/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/controller/WithdrawalController.java deleted file mode 100644 index f65f9915179df034c527191c4c92b4bfdadaa298..0000000000000000000000000000000000000000 --- a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/controller/WithdrawalController.java +++ /dev/null @@ -1,22 +0,0 @@ -package br.ufrn.imd.withdrawal.controller; - -import br.ufrn.imd.withdrawal.domain.Client; -import br.ufrn.imd.withdrawal.service.WithdrawalService; -import lombok.AllArgsConstructor; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.*; - -@RequiredArgsConstructor -@RestController -@RequestMapping("/banking/client/{id}") -public class WithdrawalController { - - private final WithdrawalService service; - - @GetMapping - public Client withdrawal(@PathVariable Integer id, @RequestParam(name = "value") Double value) { - return service.withdraw(value, new Client(id)); - } -} diff --git a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/service/WithdrawalService.java b/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/service/WithdrawalService.java deleted file mode 100644 index b3e0f26742668c933e0cf1ac985ecc3c37253940..0000000000000000000000000000000000000000 --- a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/service/WithdrawalService.java +++ /dev/null @@ -1,31 +0,0 @@ -package br.ufrn.imd.withdrawal.service; - -import br.ufrn.imd.withdrawal.domain.Account; -import br.ufrn.imd.withdrawal.domain.Client; -import br.ufrn.imd.withdrawal.repository.ClientRepository; -import lombok.AllArgsConstructor; -import lombok.extern.java.Log; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Log -@AllArgsConstructor -@Service -public class WithdrawalService { - @Autowired - private final ClientRepository clientRepository; - - public Client withdraw(Double value, Client client) { - client = clientRepository.findById(client.getId()) - .orElseThrow(() -> new RuntimeException("Invalid user!")); - - Account account = client.getAccount(); - if(value > account.getBalance()) throw new RuntimeException("Insufficient balance"); - - account.setBalance(account.getBalance() - value); - client = clientRepository.save(client); - log.info("Withdrawal concluded!"); - log.info(String.format("Account balance: R$ %.2f", client.getAccount().getBalance())); - return client; - } -} diff --git a/WebServices/deposit/src/main/resources/application.yml b/WebServices/deposit/src/main/resources/application.yml index 02b446970433b39bdb382ea88dc059deb3bcd43f..394daddeddeca6d848e1abc2e1fe8166fb23fdf9 100644 --- a/WebServices/deposit/src/main/resources/application.yml +++ b/WebServices/deposit/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 8083 + port: 8085 eureka: instance: prefer-ip-address: true @@ -11,7 +11,7 @@ eureka: spring: application: - name: withdrawal + name: deposit datasource: url: jdbc:postgresql://postgresServ:5432/postgres username: postgres diff --git a/WebServices/deposit/target/classes/application.yml b/WebServices/deposit/target/classes/application.yml index 02b446970433b39bdb382ea88dc059deb3bcd43f..394daddeddeca6d848e1abc2e1fe8166fb23fdf9 100644 --- a/WebServices/deposit/target/classes/application.yml +++ b/WebServices/deposit/target/classes/application.yml @@ -1,5 +1,5 @@ server: - port: 8083 + port: 8085 eureka: instance: prefer-ip-address: true @@ -11,7 +11,7 @@ eureka: spring: application: - name: withdrawal + name: deposit datasource: url: jdbc:postgresql://postgresServ:5432/postgres username: postgres diff --git a/WebServices/deposit/target/maven-archiver/pom.properties b/WebServices/deposit/target/maven-archiver/pom.properties index 6b1d262b91d00e937d7615c1678176063a59f878..0bb7375a00321fe76231deb38ef09fff953c721f 100644 --- a/WebServices/deposit/target/maven-archiver/pom.properties +++ b/WebServices/deposit/target/maven-archiver/pom.properties @@ -1,4 +1,4 @@ #Created by Apache Maven 3.6.3 groupId=br.ufrn.imd -artifactId=withdrawal +artifactId=deposit version=0.0.1-SNAPSHOT diff --git a/WebServices/deposit/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/WebServices/deposit/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 3d142b7ac0201d3fc412947f5e5860d4c02ab8a0..d4f4dfd13da7c6030cc2c98a044e666f20d1d1b2 100644 --- a/WebServices/deposit/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/WebServices/deposit/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,6 +1,6 @@ -br/ufrn/imd/withdrawal/domain/Account.class -br/ufrn/imd/withdrawal/domain/Client.class -br/ufrn/imd/withdrawal/controller/WithdrawalController.class -br/ufrn/imd/withdrawal/service/WithdrawalService.class -br/ufrn/imd/withdrawal/repository/ClientRepository.class -br/ufrn/imd/withdrawal/WithdrawalApplication.class +br/ufrn/imd/deposit/controller/DepositController.class +br/ufrn/imd/deposit/domain/Account.class +br/ufrn/imd/deposit/DepositApplication.class +br/ufrn/imd/deposit/service/DepositService.class +br/ufrn/imd/deposit/repository/ClientRepository.class +br/ufrn/imd/deposit/domain/Client.class diff --git a/WebServices/deposit/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/WebServices/deposit/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index f1ec5109408cf15b9e5eefba94a1ce80a5369515..839b90fa4f967877e90f21f3dd28866a23b8a39d 100644 --- a/WebServices/deposit/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/WebServices/deposit/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,6 +1,6 @@ -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/service/WithdrawalService.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/domain/Client.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/domain/Account.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/repository/ClientRepository.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/WithdrawalApplication.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/controller/WithdrawalController.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/domain/Client.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/DepositApplication.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/repository/ClientRepository.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/service/DepositService.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/domain/Account.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/deposit/src/main/java/br/ufrn/imd/deposit/controller/DepositController.java diff --git a/WebServices/deposit/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/WebServices/deposit/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst index 756fc386269446fe15a83950841e02bec8148512..34faa201a9bcf064e4b4dc9c30f9df34e4b7ca9f 100644 --- a/WebServices/deposit/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ b/WebServices/deposit/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -1 +1 @@ -/home/ff/code/dim/devdojo-microservices/withdrawal/src/test/java/br/ufrn/imd/withdrawal/CourseApplicationTests.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/deposit/src/test/java/br/ufrn/imd/withdrawal/CourseApplicationTests.java diff --git a/WebServices/docker-compose.yml b/WebServices/docker-compose.yml index 66129b8ebf5dc341c19f1e924165a17c9ff3cac8..c262ff3cdfc53fe70636c1bccfed03d309990e06 100644 --- a/WebServices/docker-compose.yml +++ b/WebServices/docker-compose.yml @@ -66,6 +66,35 @@ services: - postgres - gateway + deposit: + container_name: deposit-server + build: + context: deposit + dockerfile: ./Dockerfile + ports: + - 8085:8085 + networks: + - sigsmartcampus2-network + depends_on: + - postgres + - gateway + + + transfer: + container_name: tranfer-server + build: + context: transfer + dockerfile: ./Dockerfile + ports: + - 8086:8086 + networks: + - sigsmartcampus2-network + depends_on: + - postgres + - gateway + + + networks: sigsmartcampus2-network: driver: bridge diff --git a/WebServices/pom.xml b/WebServices/pom.xml index d96ad08eabf6606ec3c615df4833a98952a79532..bc46f03576eceff96138bfb8a466beea6ba6938d 100644 --- a/WebServices/pom.xml +++ b/WebServices/pom.xml @@ -19,6 +19,9 @@ <module>gateway</module> <module>discovery</module> <module>balance</module> + <module>transfer</module> + <module>deposit</module> + <module>client</module> </modules> <properties> <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version> diff --git a/WebServices/transfer/Dockerfile b/WebServices/transfer/Dockerfile index 9885e7466359c0bd6426716ab718c12064632b70..5b37841d0429140f21bdf43c8677ce2e8241c148 100644 --- a/WebServices/transfer/Dockerfile +++ b/WebServices/transfer/Dockerfile @@ -1,3 +1,3 @@ FROM openjdk:11 -COPY target/withdrawal.jar withdrawal.jar -ENTRYPOINT ["java","-jar","withdrawal.jar"] \ No newline at end of file +COPY target/transfer.jar transfer.jar +ENTRYPOINT ["java","-jar","transfer.jar"] \ No newline at end of file diff --git a/WebServices/transfer/pom.xml b/WebServices/transfer/pom.xml index 55a797289c948be048f8de552cd718a9673b4d66..29acda33783229d2fe24d2e0fb625b4cd60d6a94 100644 --- a/WebServices/transfer/pom.xml +++ b/WebServices/transfer/pom.xml @@ -9,9 +9,9 @@ <relativePath>../</relativePath> <!-- lookup parent from repository --> </parent> - <artifactId>withdrawal</artifactId> + <artifactId>transfer</artifactId> <version>0.0.1-SNAPSHOT</version> - <name>withdrawal</name> + <name>transfer</name> <description>Spring Boot Micro-services By DevDojo</description> <properties> @@ -19,7 +19,7 @@ </properties> <build> - <finalName>withdrawal</finalName> + <finalName>transfer</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> diff --git a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/WithdrawalApplication.java b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/TransferApplication.java similarity index 60% rename from WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/WithdrawalApplication.java rename to WebServices/transfer/src/main/java/br/ufrn/imd/transfer/TransferApplication.java index ba5b3a9dc1033cf3f149ecf42290fd216a4b8c80..912127f66c81a0859e79d336706d4127e8c63615 100644 --- a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/WithdrawalApplication.java +++ b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/TransferApplication.java @@ -1,13 +1,13 @@ -package br.ufrn.imd.withdrawal; +package br.ufrn.imd.transfer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class WithdrawalApplication { +public class TransferApplication { public static void main(String[] args) { - SpringApplication.run(WithdrawalApplication.class, args); + SpringApplication.run(TransferApplication.class, args); } } diff --git a/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/controller/TransferController.java b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/controller/TransferController.java new file mode 100644 index 0000000000000000000000000000000000000000..2d8606eb940c23ee8daaa3d64a5e7f838784806f --- /dev/null +++ b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/controller/TransferController.java @@ -0,0 +1,24 @@ +package br.ufrn.imd.transfer.controller; + +import br.ufrn.imd.transfer.domain.Account; +import br.ufrn.imd.transfer.domain.Client; +import br.ufrn.imd.transfer.service.TransferService; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +@AllArgsConstructor +@RestController +@RequestMapping("/banking/client/{id}") +public class TransferController { + @Autowired + private final TransferService service; + + @PatchMapping + @ResponseStatus(HttpStatus.OK) + public Client transfer(@PathVariable Integer id, @RequestParam(name = "value") Double value, + @RequestParam(name = "toAccount") String toAccountNumber) { + return service.transfer(value, new Client(id), new Account(null, toAccountNumber, null)); + } +} diff --git a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/domain/Account.java b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/domain/Account.java similarity index 91% rename from WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/domain/Account.java rename to WebServices/transfer/src/main/java/br/ufrn/imd/transfer/domain/Account.java index e96c20756ddcc3639386f25b9525209deb1a97ce..aa147cb817f9cd5de9d8f57917ceb2956ea05563 100644 --- a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/domain/Account.java +++ b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/domain/Account.java @@ -1,4 +1,4 @@ -package br.ufrn.imd.withdrawal.domain; +package br.ufrn.imd.transfer.domain; import lombok.*; diff --git a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/domain/Client.java b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/domain/Client.java similarity index 92% rename from WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/domain/Client.java rename to WebServices/transfer/src/main/java/br/ufrn/imd/transfer/domain/Client.java index af2368f3a4d749cc8efab46ce91595865ebc180a..79a7f251ad79fe5c74f3de5c6a657a7dada9584f 100644 --- a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/domain/Client.java +++ b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/domain/Client.java @@ -1,4 +1,4 @@ -package br.ufrn.imd.withdrawal.domain; +package br.ufrn.imd.transfer.domain; import lombok.*; diff --git a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/repository/ClientRepository.java b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/repository/ClientRepository.java similarity index 82% rename from WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/repository/ClientRepository.java rename to WebServices/transfer/src/main/java/br/ufrn/imd/transfer/repository/ClientRepository.java index f2ab6a92c937cacd72c6db0169082da9970beb2e..917cc223f1a496a0683df9c4e17f8387832a0936 100644 --- a/WebServices/deposit/src/main/java/br/ufrn/imd/withdrawal/repository/ClientRepository.java +++ b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/repository/ClientRepository.java @@ -1,6 +1,6 @@ -package br.ufrn.imd.withdrawal.repository; +package br.ufrn.imd.transfer.repository; -import br.ufrn.imd.withdrawal.domain.Client; +import br.ufrn.imd.transfer.domain.Client; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; diff --git a/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/service/TransferService.java b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/service/TransferService.java new file mode 100644 index 0000000000000000000000000000000000000000..77f1ddb914cc3a55614f7ecb7a3dfb88802372e1 --- /dev/null +++ b/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/service/TransferService.java @@ -0,0 +1,45 @@ +package br.ufrn.imd.transfer.service; + +import br.ufrn.imd.transfer.domain.Account; +import br.ufrn.imd.transfer.domain.Client; +import br.ufrn.imd.transfer.repository.ClientRepository; +import lombok.AllArgsConstructor; +import lombok.extern.java.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Log +@AllArgsConstructor +@Service +public class TransferService { + @Autowired + private final ClientRepository clientRepository; + + public Client transfer(Double value, Client fromClient, Account toAccount) { + fromClient = clientRepository.findById(fromClient.getId()) + .orElseThrow(() -> new RuntimeException("Invalid user!")); + + Account finalToAccount = toAccount; + Client toClient = clientRepository.findByAccountNumber(toAccount.getNumber()) + .orElseThrow(() -> new RuntimeException( + String.format("Customer not found with account number %s", finalToAccount.getNumber()))); + + if(fromClient.getId().equals(toClient.getId())) + throw new RuntimeException("Invalid account"); + + Account fromAccount = fromClient.getAccount(); + if(value > fromAccount.getBalance()) throw new RuntimeException("Insufficient balance"); + + fromAccount.setBalance(fromAccount.getBalance() - value); + toAccount = toClient.getAccount(); + toAccount.setBalance(toAccount.getBalance() + value); + + clientRepository.save(toClient); + fromClient = clientRepository.save(fromClient); + log.info("Transfer concluded!"); + log.info(String.format("Account balance: R$ %.2f", fromClient.getAccount().getBalance())); + + return fromClient; + } + +} diff --git a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/controller/WithdrawalController.java b/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/controller/WithdrawalController.java deleted file mode 100644 index f65f9915179df034c527191c4c92b4bfdadaa298..0000000000000000000000000000000000000000 --- a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/controller/WithdrawalController.java +++ /dev/null @@ -1,22 +0,0 @@ -package br.ufrn.imd.withdrawal.controller; - -import br.ufrn.imd.withdrawal.domain.Client; -import br.ufrn.imd.withdrawal.service.WithdrawalService; -import lombok.AllArgsConstructor; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.*; - -@RequiredArgsConstructor -@RestController -@RequestMapping("/banking/client/{id}") -public class WithdrawalController { - - private final WithdrawalService service; - - @GetMapping - public Client withdrawal(@PathVariable Integer id, @RequestParam(name = "value") Double value) { - return service.withdraw(value, new Client(id)); - } -} diff --git a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/repository/ClientRepository.java b/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/repository/ClientRepository.java deleted file mode 100644 index f2ab6a92c937cacd72c6db0169082da9970beb2e..0000000000000000000000000000000000000000 --- a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/repository/ClientRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package br.ufrn.imd.withdrawal.repository; - -import br.ufrn.imd.withdrawal.domain.Client; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -@Repository -public interface ClientRepository extends JpaRepository<Client, Integer> { - - @Query(value = "SELECT c from Client c where c.account.number = ?1") - Optional<Client> findByAccountNumber(String number); - -} diff --git a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/service/WithdrawalService.java b/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/service/WithdrawalService.java deleted file mode 100644 index b3e0f26742668c933e0cf1ac985ecc3c37253940..0000000000000000000000000000000000000000 --- a/WebServices/transfer/src/main/java/br/ufrn/imd/withdrawal/service/WithdrawalService.java +++ /dev/null @@ -1,31 +0,0 @@ -package br.ufrn.imd.withdrawal.service; - -import br.ufrn.imd.withdrawal.domain.Account; -import br.ufrn.imd.withdrawal.domain.Client; -import br.ufrn.imd.withdrawal.repository.ClientRepository; -import lombok.AllArgsConstructor; -import lombok.extern.java.Log; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Log -@AllArgsConstructor -@Service -public class WithdrawalService { - @Autowired - private final ClientRepository clientRepository; - - public Client withdraw(Double value, Client client) { - client = clientRepository.findById(client.getId()) - .orElseThrow(() -> new RuntimeException("Invalid user!")); - - Account account = client.getAccount(); - if(value > account.getBalance()) throw new RuntimeException("Insufficient balance"); - - account.setBalance(account.getBalance() - value); - client = clientRepository.save(client); - log.info("Withdrawal concluded!"); - log.info(String.format("Account balance: R$ %.2f", client.getAccount().getBalance())); - return client; - } -} diff --git a/WebServices/transfer/src/main/resources/application.yml b/WebServices/transfer/src/main/resources/application.yml index 02b446970433b39bdb382ea88dc059deb3bcd43f..3d54e547f23c5029521895984da21ef80e8d45e9 100644 --- a/WebServices/transfer/src/main/resources/application.yml +++ b/WebServices/transfer/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 8083 + port: 8086 eureka: instance: prefer-ip-address: true @@ -11,7 +11,7 @@ eureka: spring: application: - name: withdrawal + name: transfer datasource: url: jdbc:postgresql://postgresServ:5432/postgres username: postgres diff --git a/WebServices/transfer/target/classes/application.yml b/WebServices/transfer/target/classes/application.yml index 02b446970433b39bdb382ea88dc059deb3bcd43f..3d54e547f23c5029521895984da21ef80e8d45e9 100644 --- a/WebServices/transfer/target/classes/application.yml +++ b/WebServices/transfer/target/classes/application.yml @@ -1,5 +1,5 @@ server: - port: 8083 + port: 8086 eureka: instance: prefer-ip-address: true @@ -11,7 +11,7 @@ eureka: spring: application: - name: withdrawal + name: transfer datasource: url: jdbc:postgresql://postgresServ:5432/postgres username: postgres diff --git a/WebServices/transfer/target/maven-archiver/pom.properties b/WebServices/transfer/target/maven-archiver/pom.properties index 6b1d262b91d00e937d7615c1678176063a59f878..42f84053c1dc69e4939ac3990595b951f3d860ba 100644 --- a/WebServices/transfer/target/maven-archiver/pom.properties +++ b/WebServices/transfer/target/maven-archiver/pom.properties @@ -1,4 +1,4 @@ #Created by Apache Maven 3.6.3 groupId=br.ufrn.imd -artifactId=withdrawal +artifactId=transfer version=0.0.1-SNAPSHOT diff --git a/WebServices/transfer/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/WebServices/transfer/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 3d142b7ac0201d3fc412947f5e5860d4c02ab8a0..b4c8e86b5178a39ef7cecd4ad710df4ee60f2d70 100644 --- a/WebServices/transfer/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/WebServices/transfer/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,6 +1,6 @@ -br/ufrn/imd/withdrawal/domain/Account.class -br/ufrn/imd/withdrawal/domain/Client.class -br/ufrn/imd/withdrawal/controller/WithdrawalController.class -br/ufrn/imd/withdrawal/service/WithdrawalService.class -br/ufrn/imd/withdrawal/repository/ClientRepository.class -br/ufrn/imd/withdrawal/WithdrawalApplication.class +br/ufrn/imd/transfer/repository/ClientRepository.class +br/ufrn/imd/transfer/controller/TransferController.class +br/ufrn/imd/transfer/domain/Client.class +br/ufrn/imd/transfer/domain/Account.class +br/ufrn/imd/transfer/TransferApplication.class +br/ufrn/imd/transfer/service/TransferService.class diff --git a/WebServices/transfer/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/WebServices/transfer/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index f1ec5109408cf15b9e5eefba94a1ce80a5369515..0fe3447416bab0e28fa2ae5965a4809d85c94f58 100644 --- a/WebServices/transfer/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/WebServices/transfer/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,6 +1,6 @@ -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/service/WithdrawalService.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/domain/Client.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/domain/Account.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/repository/ClientRepository.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/WithdrawalApplication.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/controller/WithdrawalController.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/domain/Client.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/controller/TransferController.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/domain/Account.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/service/TransferService.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/repository/ClientRepository.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/transfer/src/main/java/br/ufrn/imd/transfer/TransferApplication.java diff --git a/WebServices/transfer/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/WebServices/transfer/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst index 756fc386269446fe15a83950841e02bec8148512..75e2baf99c1ed5d03ae52cf25f02216141298557 100644 --- a/WebServices/transfer/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ b/WebServices/transfer/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -1 +1 @@ -/home/ff/code/dim/devdojo-microservices/withdrawal/src/test/java/br/ufrn/imd/withdrawal/CourseApplicationTests.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/transfer/src/test/java/br/ufrn/imd/withdrawal/CourseApplicationTests.java diff --git a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/WithdrawalApplication.class b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/WithdrawalApplication.class index 57df24479a401277212450f2b0c1421ad7f0f678..603452df1fdb1d9b21704013c709dd2e2fd6c7a8 100644 Binary files a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/WithdrawalApplication.class and b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/WithdrawalApplication.class differ diff --git a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/controller/WithdrawalController.class b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/controller/WithdrawalController.class index ea0b867d1bfb8e2a439a9605f0ad0b8962c6b618..7490642f25322c94102afc0587ae0754a3d8d1e1 100644 Binary files a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/controller/WithdrawalController.class and b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/controller/WithdrawalController.class differ diff --git a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/domain/Account.class b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/domain/Account.class index efc81792b6d3adf086960859ca0c809421a9d70b..49719789db7ffb21c4173020f3b813348fcd0c9d 100644 Binary files a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/domain/Account.class and b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/domain/Account.class differ diff --git a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/domain/Client.class b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/domain/Client.class index 2625605e6d1bba272ba887022881afbb37aeabce..5e2dd34d47c70f5b75f879d4e3181027bc3e5cb5 100644 Binary files a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/domain/Client.class and b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/domain/Client.class differ diff --git a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/repository/ClientRepository.class b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/repository/ClientRepository.class index cac00542eafbda4dc9b6de42f0e978b7fa504608..47bbb2a46dba1eb8a389a3a169a1073dc11bd96e 100644 Binary files a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/repository/ClientRepository.class and b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/repository/ClientRepository.class differ diff --git a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/service/WithdrawalService.class b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/service/WithdrawalService.class index 0a390799acfbdb13134073353582f653bbca73c5..8133ad60aa5061c891cf6074a70d8122854e15f9 100644 Binary files a/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/service/WithdrawalService.class and b/WebServices/withdrawal/target/classes/br/ufrn/imd/withdrawal/service/WithdrawalService.class differ diff --git a/WebServices/withdrawal/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/WebServices/withdrawal/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index f1ec5109408cf15b9e5eefba94a1ce80a5369515..048a3abf5fd905e9833597d2e2909f28a8e51462 100644 --- a/WebServices/withdrawal/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/WebServices/withdrawal/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,6 +1,6 @@ -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/service/WithdrawalService.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/domain/Client.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/domain/Account.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/repository/ClientRepository.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/WithdrawalApplication.java -/home/ff/code/dim/devdojo-microservices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/controller/WithdrawalController.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/domain/Client.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/controller/WithdrawalController.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/repository/ClientRepository.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/domain/Account.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/service/WithdrawalService.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/withdrawal/src/main/java/br/ufrn/imd/withdrawal/WithdrawalApplication.java diff --git a/WebServices/withdrawal/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/WebServices/withdrawal/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst index 756fc386269446fe15a83950841e02bec8148512..51bcfa04f4f55e7baa21a3e417df2931654a5a5a 100644 --- a/WebServices/withdrawal/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ b/WebServices/withdrawal/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -1 +1 @@ -/home/ff/code/dim/devdojo-microservices/withdrawal/src/test/java/br/ufrn/imd/withdrawal/CourseApplicationTests.java +/home/ff/code/IMD-AULAS/dim0614/WebServices/withdrawal/src/test/java/br/ufrn/imd/withdrawal/CourseApplicationTests.java