| @ -0,0 +1,33 @@ | |||||
| HELP.md | |||||
| target/ | |||||
| !.mvn/wrapper/maven-wrapper.jar | |||||
| !**/src/main/**/target/ | |||||
| !**/src/test/**/target/ | |||||
| ### 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/ | |||||
| !**/src/main/**/build/ | |||||
| !**/src/test/**/build/ | |||||
| ### VS Code ### | |||||
| .vscode/ | |||||
| @ -0,0 +1,2 @@ | |||||
| distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip | |||||
| wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar | |||||
| @ -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 "$@" | |||||
| @ -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% | |||||
| @ -0,0 +1,79 @@ | |||||
| <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | |||||
| <modelVersion>4.0.0</modelVersion> | |||||
| <parent> | |||||
| <groupId>org.springframework.boot</groupId> | |||||
| <artifactId>spring-boot-starter-parent</artifactId> | |||||
| <version>3.0.2</version> | |||||
| <relativePath/> <!-- lookup parent from repository --> | |||||
| </parent> | |||||
| <groupId>com.ims.rallyModels</groupId> | |||||
| <artifactId>com.ims.rallyModels</artifactId> | |||||
| <version>0.0.1-SNAPSHOT</version> | |||||
| <name>RallyModels</name> | |||||
| <description>Demo project for Spring Boot</description> | |||||
| <properties> | |||||
| <java.version>17</java.version> | |||||
| </properties> | |||||
| <dependencies> | |||||
| <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client --> | |||||
| <dependency> | |||||
| <groupId>org.mariadb.jdbc</groupId> | |||||
| <artifactId>mariadb-java-client</artifactId> | |||||
| <version>3.1.0</version> | |||||
| </dependency> | |||||
| <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> | |||||
| <dependency> | |||||
| <groupId>org.hibernate</groupId> | |||||
| <artifactId>hibernate-core</artifactId> | |||||
| <version>6.0.0.Final</version> | |||||
| </dependency> | |||||
| <dependency> | |||||
| <groupId>org.springframework.boot</groupId> | |||||
| <artifactId>spring-boot-starter-data-jpa</artifactId> | |||||
| </dependency> | |||||
| <dependency> | |||||
| <groupId>org.springframework.boot</groupId> | |||||
| <artifactId>spring-boot-starter-thymeleaf</artifactId> | |||||
| </dependency> | |||||
| <dependency> | |||||
| <groupId>org.springframework.boot</groupId> | |||||
| <artifactId>spring-boot-starter-validation</artifactId> | |||||
| </dependency> | |||||
| <dependency> | |||||
| <groupId>org.springframework.boot</groupId> | |||||
| <artifactId>spring-boot-starter-web</artifactId> | |||||
| </dependency> | |||||
| <dependency> | |||||
| <groupId>org.springframework.boot</groupId> | |||||
| <artifactId>spring-boot-devtools</artifactId> | |||||
| <scope>runtime</scope> | |||||
| <optional>true</optional> | |||||
| </dependency> | |||||
| <dependency> | |||||
| <groupId>com.mysql</groupId> | |||||
| <artifactId>mysql-connector-j</artifactId> | |||||
| <scope>runtime</scope> | |||||
| </dependency> | |||||
| <dependency> | |||||
| <groupId>org.springframework.boot</groupId> | |||||
| <artifactId>spring-boot-starter-test</artifactId> | |||||
| <scope>test</scope> | |||||
| </dependency> | |||||
| </dependencies> | |||||
| <build> | |||||
| <plugins> | |||||
| <plugin> | |||||
| <groupId>org.springframework.boot</groupId> | |||||
| <artifactId>spring-boot-maven-plugin</artifactId> | |||||
| </plugin> | |||||
| </plugins> | |||||
| </build> | |||||
| </project> | |||||
| @ -0,0 +1,3 @@ | |||||
| Manifest-Version: 1.0 | |||||
| Class-Path: | |||||
| @ -0,0 +1,34 @@ | |||||
| package com.ims.rallyModels; | |||||
| import com.ims.rallyModels.modelo.MaquetaEntity; | |||||
| import com.ims.rallyModels.repositorio.IMaquetasRepositorio; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.boot.CommandLineRunner; | |||||
| import org.springframework.boot.SpringApplication; | |||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | |||||
| @SpringBootApplication | |||||
| public class RallyModelsApplication implements CommandLineRunner { | |||||
| public static void main(String[] args) { | |||||
| SpringApplication.run(RallyModelsApplication.class, args); | |||||
| } | |||||
| @Autowired | |||||
| private IMaquetasRepositorio repositorio; | |||||
| @Override | |||||
| public void run(String... args) throws Exception { | |||||
| /* | |||||
| MaquetaEntity ds = new MaquetaEntity(10,"Hyundai I20 Dani Sordo",14.99,5,2); | |||||
| repositorio.save(ds); | |||||
| MaquetaEntity kr = new MaquetaEntity(9,"Toyota Yaris Kalle Rovanperä",14.99,6,1); | |||||
| repositorio.save(kr); | |||||
| MaquetaEntity sl = new MaquetaEntity(11,"Ford Puma Sebastien Loeb",17.99,6,3); | |||||
| repositorio.save(sl); | |||||
| */ | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,74 @@ | |||||
| package com.ims.rallyModels.controlador; | |||||
| import com.ims.rallyModels.modelo.MaquetaEntity; | |||||
| import com.ims.rallyModels.servicio.IMaquetasServicio; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Controller; | |||||
| import org.springframework.ui.Model; | |||||
| import org.springframework.web.bind.annotation.GetMapping; | |||||
| import org.springframework.web.bind.annotation.ModelAttribute; | |||||
| import org.springframework.web.bind.annotation.PathVariable; | |||||
| import org.springframework.web.bind.annotation.PostMapping; | |||||
| @Controller | |||||
| public class MaquetaControlador { | |||||
| /* | |||||
| HTTP GET /users – returns all the users in the system. | |||||
| HTTP GET /users/{id} – returns a user by specified id. | |||||
| HTTP POST /users – creates a new user in the system. | |||||
| @ para path | |||||
| $ para objetos | |||||
| */ | |||||
| @Autowired | |||||
| private IMaquetasServicio servicio; | |||||
| @GetMapping({"/maquetas",""})//url path | |||||
| public String listarMaquetas(Model model) { | |||||
| model.addAttribute("maquetas",servicio.listAll()); | |||||
| return "maqueta";//html path | |||||
| } | |||||
| @GetMapping({"/maquetas/nuevo"}) | |||||
| public String mostrarFormRegistroMaqueta(Model model) { | |||||
| //maqueta que le pasaremos al formulario | |||||
| MaquetaEntity maqueta = new MaquetaEntity(); | |||||
| model.addAttribute("maqueta",maqueta); | |||||
| return "crear_maqueta"; | |||||
| } | |||||
| @PostMapping("/maquetas") | |||||
| public String guardarMaqueta(@ModelAttribute("maqueta")MaquetaEntity maqueta) { | |||||
| //recibimos el objeto que creamos para el formulario | |||||
| //agregamos métodos útiles a la Interfaz de servicio | |||||
| servicio.guardarMaqueta(maqueta); | |||||
| return "redirect:/maquetas";//volvemos a la página inicial | |||||
| } | |||||
| @GetMapping("/maquetas/editar/{id}") | |||||
| public String mostrarFormularioEditar(@PathVariable Integer id, Model modelo) { | |||||
| modelo.addAttribute("maqueta",servicio.obtenerMaquetaPorId(id)); | |||||
| return "editar_maqueta"; | |||||
| } | |||||
| @PostMapping("/maquetas/{id}") | |||||
| public String actualizarMaqueta(@PathVariable Integer id, | |||||
| @ModelAttribute("maqueta") MaquetaEntity maqueta, | |||||
| Model modelo) { | |||||
| MaquetaEntity maquetaExistente = servicio.obtenerMaquetaPorId(id); | |||||
| maquetaExistente.setIdMaqueta(maqueta.getIdMaqueta()); | |||||
| maquetaExistente.setDescripcion(maqueta.getDescripcion()); | |||||
| servicio.actualizarMaqueta(maquetaExistente); | |||||
| return "redirect:/maquetas"; | |||||
| } | |||||
| @GetMapping("/maquetas/{id}") | |||||
| public String eliminarMaqueta(@PathVariable Integer id) { | |||||
| servicio.eliminarMaquetas(id); | |||||
| return "redirect:/maquetas"; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,20 @@ | |||||
| package com.ims.rallyModels.controlador; | |||||
| import com.ims.rallyModels.servicio.IMaquetasServicio; | |||||
| import com.ims.rallyModels.servicio.IUsuarioServicio; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.ui.Model; | |||||
| import org.springframework.web.bind.annotation.GetMapping; | |||||
| public class UsuarioControlador { | |||||
| @Autowired | |||||
| private IUsuarioServicio servicio; | |||||
| @GetMapping({"/usuarios",""}) | |||||
| public String listarMaquetas(Model model) { | |||||
| model.addAttribute("usuarios",servicio.listAll()); | |||||
| return "usuarios"; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,77 @@ | |||||
| package com.ims.rallyModels.modelo; | |||||
| import jakarta.persistence.*; | |||||
| @Entity | |||||
| @Table(name = "coche", schema = "proyecto", catalog = "") | |||||
| public class CocheEntity { | |||||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | |||||
| @Id | |||||
| @Column(name = "idCoche", nullable = false) | |||||
| private int idCoche; | |||||
| @Basic | |||||
| @Column(name = "marca", nullable = true, length = 45) | |||||
| private String marca; | |||||
| @Basic | |||||
| @Column(name = "modelo", nullable = true, length = 45) | |||||
| private String modelo; | |||||
| @Basic | |||||
| @Column(name = "piloto", nullable = true, length = 45) | |||||
| private String piloto; | |||||
| public int getIdCoche() { | |||||
| return idCoche; | |||||
| } | |||||
| public void setIdCoche(int idCoche) { | |||||
| this.idCoche = idCoche; | |||||
| } | |||||
| public String getMarca() { | |||||
| return marca; | |||||
| } | |||||
| public void setMarca(String marca) { | |||||
| this.marca = marca; | |||||
| } | |||||
| public String getModelo() { | |||||
| return modelo; | |||||
| } | |||||
| public void setModelo(String modelo) { | |||||
| this.modelo = modelo; | |||||
| } | |||||
| public String getPiloto() { | |||||
| return piloto; | |||||
| } | |||||
| public void setPiloto(String piloto) { | |||||
| this.piloto = piloto; | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object o) { | |||||
| if (this == o) return true; | |||||
| if (o == null || getClass() != o.getClass()) return false; | |||||
| CocheEntity that = (CocheEntity) o; | |||||
| if (idCoche != that.idCoche) return false; | |||||
| if (marca != null ? !marca.equals(that.marca) : that.marca != null) return false; | |||||
| if (modelo != null ? !modelo.equals(that.modelo) : that.modelo != null) return false; | |||||
| if (piloto != null ? !piloto.equals(that.piloto) : that.piloto != null) return false; | |||||
| return true; | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| int result = idCoche; | |||||
| result = 31 * result + (marca != null ? marca.hashCode() : 0); | |||||
| result = 31 * result + (modelo != null ? modelo.hashCode() : 0); | |||||
| result = 31 * result + (piloto != null ? piloto.hashCode() : 0); | |||||
| return result; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,91 @@ | |||||
| package com.ims.rallyModels.modelo; | |||||
| import jakarta.persistence.*; | |||||
| @Entity | |||||
| @Table(name = "competicion", schema = "proyecto", catalog = "") | |||||
| public class CompeticionEntity { | |||||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | |||||
| @Id | |||||
| @Column(name = "idCompeticion", nullable = false) | |||||
| private int idCompeticion; | |||||
| @Basic | |||||
| @Column(name = "nombre", nullable = true, length = 45) | |||||
| private String nombre; | |||||
| @Basic | |||||
| @Column(name = "lugar", nullable = true, length = 45) | |||||
| private String lugar; | |||||
| @Basic | |||||
| @Column(name = "mejor_resultado", nullable = true, length = 45) | |||||
| private String mejorResultado; | |||||
| @Basic | |||||
| @Column(name = "anio", nullable = true, length = 50) | |||||
| private String anio; | |||||
| public int getIdCompeticion() { | |||||
| return idCompeticion; | |||||
| } | |||||
| public void setIdCompeticion(int idCompeticion) { | |||||
| this.idCompeticion = idCompeticion; | |||||
| } | |||||
| public String getNombre() { | |||||
| return nombre; | |||||
| } | |||||
| public void setNombre(String nombre) { | |||||
| this.nombre = nombre; | |||||
| } | |||||
| public String getLugar() { | |||||
| return lugar; | |||||
| } | |||||
| public void setLugar(String lugar) { | |||||
| this.lugar = lugar; | |||||
| } | |||||
| public String getMejorResultado() { | |||||
| return mejorResultado; | |||||
| } | |||||
| public void setMejorResultado(String mejorResultado) { | |||||
| this.mejorResultado = mejorResultado; | |||||
| } | |||||
| public String getAnio() { | |||||
| return anio; | |||||
| } | |||||
| public void setAnio(String anio) { | |||||
| this.anio = anio; | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object o) { | |||||
| if (this == o) return true; | |||||
| if (o == null || getClass() != o.getClass()) return false; | |||||
| CompeticionEntity that = (CompeticionEntity) o; | |||||
| if (idCompeticion != that.idCompeticion) return false; | |||||
| if (nombre != null ? !nombre.equals(that.nombre) : that.nombre != null) return false; | |||||
| if (lugar != null ? !lugar.equals(that.lugar) : that.lugar != null) return false; | |||||
| if (mejorResultado != null ? !mejorResultado.equals(that.mejorResultado) : that.mejorResultado != null) | |||||
| return false; | |||||
| if (anio != null ? !anio.equals(that.anio) : that.anio != null) return false; | |||||
| return true; | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| int result = idCompeticion; | |||||
| result = 31 * result + (nombre != null ? nombre.hashCode() : 0); | |||||
| result = 31 * result + (lugar != null ? lugar.hashCode() : 0); | |||||
| result = 31 * result + (mejorResultado != null ? mejorResultado.hashCode() : 0); | |||||
| result = 31 * result + (anio != null ? anio.hashCode() : 0); | |||||
| return result; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,92 @@ | |||||
| package com.ims.rallyModels.modelo; | |||||
| import jakarta.persistence.*; | |||||
| import java.sql.Date; | |||||
| @Entity | |||||
| @Table(name = "compra", schema = "proyecto", catalog = "") | |||||
| public class CompraEntity { | |||||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | |||||
| @Id | |||||
| @Column(name = "idCompra", nullable = false) | |||||
| private int idCompra; | |||||
| @Basic | |||||
| @Column(name = "precio_total", nullable = true, length = 45) | |||||
| private String precioTotal; | |||||
| @Basic | |||||
| @Column(name = "fecha", nullable = true) | |||||
| private Date fecha; | |||||
| @Basic | |||||
| @Column(name = "fk_idUsuario", nullable = false) | |||||
| private int fkIdUsuario; | |||||
| @Basic | |||||
| @Column(name = "fk_idMetodos_Pago", nullable = false) | |||||
| private int fkIdMetodosPago; | |||||
| public int getIdCompra() { | |||||
| return idCompra; | |||||
| } | |||||
| public void setIdCompra(int idCompra) { | |||||
| this.idCompra = idCompra; | |||||
| } | |||||
| public String getPrecioTotal() { | |||||
| return precioTotal; | |||||
| } | |||||
| public void setPrecioTotal(String precioTotal) { | |||||
| this.precioTotal = precioTotal; | |||||
| } | |||||
| public Date getFecha() { | |||||
| return fecha; | |||||
| } | |||||
| public void setFecha(Date fecha) { | |||||
| this.fecha = fecha; | |||||
| } | |||||
| public int getFkIdUsuario() { | |||||
| return fkIdUsuario; | |||||
| } | |||||
| public void setFkIdUsuario(int fkIdUsuario) { | |||||
| this.fkIdUsuario = fkIdUsuario; | |||||
| } | |||||
| public int getFkIdMetodosPago() { | |||||
| return fkIdMetodosPago; | |||||
| } | |||||
| public void setFkIdMetodosPago(int fkIdMetodosPago) { | |||||
| this.fkIdMetodosPago = fkIdMetodosPago; | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object o) { | |||||
| if (this == o) return true; | |||||
| if (o == null || getClass() != o.getClass()) return false; | |||||
| CompraEntity that = (CompraEntity) o; | |||||
| if (idCompra != that.idCompra) return false; | |||||
| if (fkIdUsuario != that.fkIdUsuario) return false; | |||||
| if (fkIdMetodosPago != that.fkIdMetodosPago) return false; | |||||
| if (precioTotal != null ? !precioTotal.equals(that.precioTotal) : that.precioTotal != null) return false; | |||||
| if (fecha != null ? !fecha.equals(that.fecha) : that.fecha != null) return false; | |||||
| return true; | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| int result = idCompra; | |||||
| result = 31 * result + (precioTotal != null ? precioTotal.hashCode() : 0); | |||||
| result = 31 * result + (fecha != null ? fecha.hashCode() : 0); | |||||
| result = 31 * result + fkIdUsuario; | |||||
| result = 31 * result + fkIdMetodosPago; | |||||
| return result; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,67 @@ | |||||
| package com.ims.rallyModels.modelo; | |||||
| import jakarta.persistence.*; | |||||
| import java.sql.Date; | |||||
| @Entity | |||||
| @Table(name = "log_usuario", schema = "proyecto", catalog = "") | |||||
| public class LogUsuarioEntity { | |||||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | |||||
| @Id | |||||
| @Column(name = "idLog_Usuario", nullable = false) | |||||
| private int idLogUsuario; | |||||
| @Basic | |||||
| @Column(name = "Log_Usuariocol", nullable = true) | |||||
| private Date logUsuariocol; | |||||
| @Basic | |||||
| @Column(name = "fk_idUsuario", nullable = false) | |||||
| private int fkIdUsuario; | |||||
| public int getIdLogUsuario() { | |||||
| return idLogUsuario; | |||||
| } | |||||
| public void setIdLogUsuario(int idLogUsuario) { | |||||
| this.idLogUsuario = idLogUsuario; | |||||
| } | |||||
| public Date getLogUsuariocol() { | |||||
| return logUsuariocol; | |||||
| } | |||||
| public void setLogUsuariocol(Date logUsuariocol) { | |||||
| this.logUsuariocol = logUsuariocol; | |||||
| } | |||||
| public int getFkIdUsuario() { | |||||
| return fkIdUsuario; | |||||
| } | |||||
| public void setFkIdUsuario(int fkIdUsuario) { | |||||
| this.fkIdUsuario = fkIdUsuario; | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object o) { | |||||
| if (this == o) return true; | |||||
| if (o == null || getClass() != o.getClass()) return false; | |||||
| LogUsuarioEntity that = (LogUsuarioEntity) o; | |||||
| if (idLogUsuario != that.idLogUsuario) return false; | |||||
| if (fkIdUsuario != that.fkIdUsuario) return false; | |||||
| if (logUsuariocol != null ? !logUsuariocol.equals(that.logUsuariocol) : that.logUsuariocol != null) | |||||
| return false; | |||||
| return true; | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| int result = idLogUsuario; | |||||
| result = 31 * result + (logUsuariocol != null ? logUsuariocol.hashCode() : 0); | |||||
| result = 31 * result + fkIdUsuario; | |||||
| return result; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,94 @@ | |||||
| package com.ims.rallyModels.modelo; | |||||
| import jakarta.persistence.*; | |||||
| @Entity | |||||
| @Table(name = "maqueta", schema = "proyecto", catalog = "") | |||||
| public class MaquetaEntity { | |||||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | |||||
| @Id | |||||
| @Column(name = "idMaqueta", nullable = false) | |||||
| private int idMaqueta; | |||||
| @Basic | |||||
| @Column(name = "descripcion", nullable = true, length = 45) | |||||
| private String descripcion; | |||||
| @Basic | |||||
| @Column(name = "precio", nullable = true, precision = 0) | |||||
| private Double precio; | |||||
| @Basic | |||||
| @Column(name = "fk_idCompeticion", nullable = false) | |||||
| private int fkIdCompeticion; | |||||
| @Basic | |||||
| @Column(name = "fk_idCoche", nullable = false) | |||||
| private int fkIdCoche; | |||||
| public MaquetaEntity() { | |||||
| } | |||||
| public int getIdMaqueta() { | |||||
| return idMaqueta; | |||||
| } | |||||
| public void setIdMaqueta(int idMaqueta) { | |||||
| this.idMaqueta = idMaqueta; | |||||
| } | |||||
| public String getDescripcion() { | |||||
| return descripcion; | |||||
| } | |||||
| public void setDescripcion(String descripcion) { | |||||
| this.descripcion = descripcion; | |||||
| } | |||||
| public Double getPrecio() { | |||||
| return precio; | |||||
| } | |||||
| public void setPrecio(Double precio) { | |||||
| this.precio = precio; | |||||
| } | |||||
| public int getFkIdCompeticion() { | |||||
| return fkIdCompeticion; | |||||
| } | |||||
| public void setFkIdCompeticion(int fkIdCompeticion) { | |||||
| this.fkIdCompeticion = fkIdCompeticion; | |||||
| } | |||||
| public int getFkIdCoche() { | |||||
| return fkIdCoche; | |||||
| } | |||||
| public void setFkIdCoche(int fkIdCoche) { | |||||
| this.fkIdCoche = fkIdCoche; | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object o) { | |||||
| if (this == o) return true; | |||||
| if (o == null || getClass() != o.getClass()) return false; | |||||
| MaquetaEntity that = (MaquetaEntity) o; | |||||
| if (idMaqueta != that.idMaqueta) return false; | |||||
| if (fkIdCompeticion != that.fkIdCompeticion) return false; | |||||
| if (fkIdCoche != that.fkIdCoche) return false; | |||||
| if (descripcion != null ? !descripcion.equals(that.descripcion) : that.descripcion != null) return false; | |||||
| if (precio != null ? !precio.equals(that.precio) : that.precio != null) return false; | |||||
| return true; | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| int result = idMaqueta; | |||||
| result = 31 * result + (descripcion != null ? descripcion.hashCode() : 0); | |||||
| result = 31 * result + (precio != null ? precio.hashCode() : 0); | |||||
| result = 31 * result + fkIdCompeticion; | |||||
| result = 31 * result + fkIdCoche; | |||||
| return result; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,51 @@ | |||||
| package com.ims.rallyModels.modelo; | |||||
| import jakarta.persistence.*; | |||||
| @Entity | |||||
| @Table(name = "metodos_pago", schema = "proyecto", catalog = "") | |||||
| public class MetodosPagoEntity { | |||||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | |||||
| @Id | |||||
| @Column(name = "idMetodos_Pago", nullable = false) | |||||
| private int idMetodosPago; | |||||
| @Basic | |||||
| @Column(name = "metodo_pago", nullable = true, length = 45) | |||||
| private String metodoPago; | |||||
| public int getIdMetodosPago() { | |||||
| return idMetodosPago; | |||||
| } | |||||
| public void setIdMetodosPago(int idMetodosPago) { | |||||
| this.idMetodosPago = idMetodosPago; | |||||
| } | |||||
| public String getMetodoPago() { | |||||
| return metodoPago; | |||||
| } | |||||
| public void setMetodoPago(String metodoPago) { | |||||
| this.metodoPago = metodoPago; | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object o) { | |||||
| if (this == o) return true; | |||||
| if (o == null || getClass() != o.getClass()) return false; | |||||
| MetodosPagoEntity that = (MetodosPagoEntity) o; | |||||
| if (idMetodosPago != that.idMetodosPago) return false; | |||||
| if (metodoPago != null ? !metodoPago.equals(that.metodoPago) : that.metodoPago != null) return false; | |||||
| return true; | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| int result = idMetodosPago; | |||||
| result = 31 * result + (metodoPago != null ? metodoPago.hashCode() : 0); | |||||
| return result; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,77 @@ | |||||
| package com.ims.rallyModels.modelo; | |||||
| import jakarta.persistence.*; | |||||
| @Entity | |||||
| @Table(name = "producto", schema = "proyecto", catalog = "") | |||||
| public class ProductoEntity { | |||||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | |||||
| @Id | |||||
| @Column(name = "idProducto", nullable = false) | |||||
| private int idProducto; | |||||
| @Basic | |||||
| @Column(name = "stock", nullable = true) | |||||
| private Integer stock; | |||||
| @Basic | |||||
| @Column(name = "fk_idCompra", nullable = false) | |||||
| private int fkIdCompra; | |||||
| @Basic | |||||
| @Column(name = "fk_idMaqueta", nullable = false) | |||||
| private int fkIdMaqueta; | |||||
| public int getIdProducto() { | |||||
| return idProducto; | |||||
| } | |||||
| public void setIdProducto(int idProducto) { | |||||
| this.idProducto = idProducto; | |||||
| } | |||||
| public Integer getStock() { | |||||
| return stock; | |||||
| } | |||||
| public void setStock(Integer stock) { | |||||
| this.stock = stock; | |||||
| } | |||||
| public int getFkIdCompra() { | |||||
| return fkIdCompra; | |||||
| } | |||||
| public void setFkIdCompra(int fkIdCompra) { | |||||
| this.fkIdCompra = fkIdCompra; | |||||
| } | |||||
| public int getFkIdMaqueta() { | |||||
| return fkIdMaqueta; | |||||
| } | |||||
| public void setFkIdMaqueta(int fkIdMaqueta) { | |||||
| this.fkIdMaqueta = fkIdMaqueta; | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object o) { | |||||
| if (this == o) return true; | |||||
| if (o == null || getClass() != o.getClass()) return false; | |||||
| ProductoEntity that = (ProductoEntity) o; | |||||
| if (idProducto != that.idProducto) return false; | |||||
| if (fkIdCompra != that.fkIdCompra) return false; | |||||
| if (fkIdMaqueta != that.fkIdMaqueta) return false; | |||||
| if (stock != null ? !stock.equals(that.stock) : that.stock != null) return false; | |||||
| return true; | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| int result = idProducto; | |||||
| result = 31 * result + (stock != null ? stock.hashCode() : 0); | |||||
| result = 31 * result + fkIdCompra; | |||||
| result = 31 * result + fkIdMaqueta; | |||||
| return result; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,64 @@ | |||||
| package com.ims.rallyModels.modelo; | |||||
| import jakarta.persistence.*; | |||||
| @Entity | |||||
| @Table(name = "usuario", schema = "proyecto", catalog = "") | |||||
| public class UsuarioEntity { | |||||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | |||||
| @Id | |||||
| @Column(name = "idUsuario", nullable = false) | |||||
| private int idUsuario; | |||||
| @Basic | |||||
| @Column(name = "nombre", nullable = true, length = 45) | |||||
| private String nombre; | |||||
| @Basic | |||||
| @Column(name = "contrasena", nullable = true, length = 45) | |||||
| private String contrasena; | |||||
| public int getIdUsuario() { | |||||
| return idUsuario; | |||||
| } | |||||
| public void setIdUsuario(int idUsuario) { | |||||
| this.idUsuario = idUsuario; | |||||
| } | |||||
| public String getNombre() { | |||||
| return nombre; | |||||
| } | |||||
| public void setNombre(String nombre) { | |||||
| this.nombre = nombre; | |||||
| } | |||||
| public String getContrasena() { | |||||
| return contrasena; | |||||
| } | |||||
| public void setContrasena(String contrasena) { | |||||
| this.contrasena = contrasena; | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object o) { | |||||
| if (this == o) return true; | |||||
| if (o == null || getClass() != o.getClass()) return false; | |||||
| UsuarioEntity that = (UsuarioEntity) o; | |||||
| if (idUsuario != that.idUsuario) return false; | |||||
| if (nombre != null ? !nombre.equals(that.nombre) : that.nombre != null) return false; | |||||
| if (contrasena != null ? !contrasena.equals(that.contrasena) : that.contrasena != null) return false; | |||||
| return true; | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| int result = idUsuario; | |||||
| result = 31 * result + (nombre != null ? nombre.hashCode() : 0); | |||||
| result = 31 * result + (contrasena != null ? contrasena.hashCode() : 0); | |||||
| return result; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,8 @@ | |||||
| package com.ims.rallyModels.repositorio; | |||||
| import com.ims.rallyModels.modelo.MaquetaEntity; | |||||
| import org.springframework.data.jpa.repository.JpaRepository; | |||||
| import org.springframework.stereotype.Repository; | |||||
| @Repository | |||||
| public interface IMaquetasRepositorio extends JpaRepository<MaquetaEntity, Integer> { } | |||||
| @ -0,0 +1,10 @@ | |||||
| package com.ims.rallyModels.repositorio; | |||||
| import com.ims.rallyModels.modelo.MaquetaEntity; | |||||
| import com.ims.rallyModels.modelo.UsuarioEntity; | |||||
| import org.springframework.data.jpa.repository.JpaRepository; | |||||
| import org.springframework.stereotype.Repository; | |||||
| @Repository | |||||
| public interface IUsuarioRepositorio extends JpaRepository<UsuarioEntity, Integer> { | |||||
| } | |||||
| @ -0,0 +1,21 @@ | |||||
| package com.ims.rallyModels.servicio; | |||||
| import com.ims.rallyModels.modelo.MaquetaEntity; | |||||
| import com.ims.rallyModels.modelo.UsuarioEntity; | |||||
| import org.springframework.data.jpa.repository.JpaRepository; | |||||
| import java.util.List; | |||||
| public interface IMaquetasServicio { | |||||
| public List<MaquetaEntity> listAll(); | |||||
| public MaquetaEntity guardarMaqueta(MaquetaEntity maqueta); | |||||
| public MaquetaEntity obtenerMaquetaPorId(Integer id); | |||||
| public MaquetaEntity actualizarMaqueta(MaquetaEntity maqueta); | |||||
| public void eliminarMaquetas(Integer id); | |||||
| } | |||||
| @ -0,0 +1,11 @@ | |||||
| package com.ims.rallyModels.servicio; | |||||
| import com.ims.rallyModels.modelo.UsuarioEntity; | |||||
| import java.util.List; | |||||
| public interface IUsuarioServicio { | |||||
| public List<UsuarioEntity> listAll(); | |||||
| } | |||||
| @ -0,0 +1,42 @@ | |||||
| package com.ims.rallyModels.servicio; | |||||
| import com.ims.rallyModels.modelo.MaquetaEntity; | |||||
| import com.ims.rallyModels.repositorio.IMaquetasRepositorio; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | |||||
| import java.util.List; | |||||
| @Service | |||||
| public class MaquetasServicioImpl implements IMaquetasServicio { | |||||
| @Autowired | |||||
| private IMaquetasRepositorio repositorio; | |||||
| @Override | |||||
| public List<MaquetaEntity> listAll() { | |||||
| return repositorio.findAll(); | |||||
| } | |||||
| @Override | |||||
| public MaquetaEntity guardarMaqueta(MaquetaEntity maqueta) { | |||||
| return repositorio.save(maqueta); | |||||
| } | |||||
| @Override | |||||
| public MaquetaEntity obtenerMaquetaPorId(Integer id) { | |||||
| return repositorio.findById(id).get(); | |||||
| } | |||||
| @Override | |||||
| public MaquetaEntity actualizarMaqueta(MaquetaEntity maqueta) { | |||||
| //primero se busca y luego se edita y guarda | |||||
| return repositorio.save(maqueta); | |||||
| } | |||||
| @Override | |||||
| public void eliminarMaquetas(Integer id) { | |||||
| repositorio.deleteById(id); | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,20 @@ | |||||
| package com.ims.rallyModels.servicio; | |||||
| import com.ims.rallyModels.modelo.UsuarioEntity; | |||||
| import com.ims.rallyModels.repositorio.IMaquetasRepositorio; | |||||
| import com.ims.rallyModels.repositorio.IUsuarioRepositorio; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import java.util.List; | |||||
| public class UsuarioServicioImpl implements IUsuarioServicio{ | |||||
| @Autowired | |||||
| private IUsuarioRepositorio repositorio; | |||||
| @Override | |||||
| public List<UsuarioEntity> listAll() { | |||||
| return repositorio.findAll(); | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,12 @@ | |||||
| spring.datasource.url=jdbc:mariadb://localhost:3306/Proyecto | |||||
| spring.datasource.username=proyecto | |||||
| spring.datasource.password=1234 | |||||
| spring.datasource.driver-class-name=org.mariadb.jdbc.Driver | |||||
| # none, validate, update, create-drop may be created | |||||
| spring.jpa.hibernate.ddl-auto=none | |||||
| server.port=2614 | |||||
| #spring.jpa.hibernate.ddl-auto=none | |||||
| spring.jpa.show-sql=true | |||||
| spring.jpa.properties.hibernate.format_sql=true | |||||
| #spring.jpa.properties.hibernate.dialect = org.hibernate.dialect | |||||
| @ -0,0 +1,129 @@ | |||||
| @charset "UTF-8"; | |||||
| /* Remove the navbar's default rounded borders and increase the bottom margin */ | |||||
| .navbar { | |||||
| height: 50px; | |||||
| margin-bottom: 50px; | |||||
| border-radius: 0; | |||||
| } | |||||
| /* Remove the jumbotron's default bottom margin */ | |||||
| .banner { | |||||
| margin-bottom: 0; | |||||
| height: auto; | |||||
| width: 100%; | |||||
| /*background-image: url("templates/img/banner.jpg");*/ | |||||
| background: #fddb3a; | |||||
| } | |||||
| /* Add a gray background color and some padding to the footer */ | |||||
| footer { | |||||
| background-color: #f2f2f2; | |||||
| padding: 25px; | |||||
| } | |||||
| .navbar-brand { | |||||
| background-image: url("templates/img/Rally-Models.png"); | |||||
| } | |||||
| .logo-image{ | |||||
| width: 46px; | |||||
| height: 46px; | |||||
| overflow: hidden; | |||||
| margin-top: -6px; | |||||
| } | |||||
| @media (min-width: 1200px) { | |||||
| .container { | |||||
| width: 90%; | |||||
| max-width: 90%; | |||||
| } | |||||
| } | |||||
| .panel-heading { | |||||
| font-size: 18px; | |||||
| font-weight: bold; | |||||
| } | |||||
| .precio { | |||||
| font-size: 18px; | |||||
| font-weight: bold; | |||||
| padding-top: 5px; | |||||
| } | |||||
| .panel-producto { | |||||
| cursor: pointer; | |||||
| } | |||||
| /* Estilos para la factura */ | |||||
| .invoice-title h2, .invoice-title h3 { | |||||
| display: inline-block; | |||||
| } | |||||
| .invoice-body .table > tbody > tr > .no-line { | |||||
| border-top: none; | |||||
| } | |||||
| .invoice-body .table > thead > tr > .no-line { | |||||
| border-bottom: none; | |||||
| } | |||||
| .invoice-body .table > tbody > tr > .thick-line { | |||||
| border-top: 2px solid; | |||||
| } | |||||
| * { | |||||
| margin: 0; | |||||
| padding: 0; | |||||
| -webkit-box-sizing: border-box; | |||||
| box-sizing: border-box; | |||||
| } | |||||
| .text-center { | |||||
| font-family: "Microsport"; | |||||
| } | |||||
| body { | |||||
| background: #272727; | |||||
| font-family: "Microsport"; | |||||
| } | |||||
| .myNavbar { | |||||
| position: absolute; | |||||
| top: 50%; | |||||
| left: 50%; | |||||
| -webkit-transform: translate(-50%, -50%); | |||||
| transform: translate(-50%, -50%); | |||||
| } | |||||
| .myNavbar a { | |||||
| color: #f6f4e6; | |||||
| text-decoration: none; | |||||
| font-size: 1.2em; | |||||
| text-transform: uppercase; | |||||
| font-weight: 500; | |||||
| display: inline-block; | |||||
| width: 80px; | |||||
| -webkit-transition: all 0.2s ease-in-out; | |||||
| transition: all 0.2s ease-in-out; | |||||
| } | |||||
| .myNavbar a:hover { | |||||
| color: #fddb3a; | |||||
| } | |||||
| .form-control { | |||||
| border: #fddb3a; | |||||
| background: #e6e6e6; | |||||
| } | |||||
| input[type=text]:focus { | |||||
| border: #fddb3a | |||||
| } | |||||
| @ -0,0 +1,56 @@ | |||||
| <!DOCTYPE html> | |||||
| <html xmlns:th="https://www.thymeleaf.org"> | |||||
| <head> | |||||
| <meta charset="UTF-8"> | |||||
| <title>RallyModels</title> | |||||
| <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" | |||||
| integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> | |||||
| </head> | |||||
| <body> | |||||
| <nav class="navbar navbar-expand-md bg-dark navbar-dark"> | |||||
| <a class="navbar-brand" href="#">Control de Maquetas</a> | |||||
| <div class="collapse navbar-collapse" id="collapsibleNavbar"> | |||||
| <ul class="navbar-nav"> | |||||
| <li class="nav-item"><a class="nav-link" | |||||
| th:href="@{/maquetas}">Control de maquetas</a> </li> | |||||
| </ul> | |||||
| </div> | |||||
| </nav> | |||||
| <br/> | |||||
| <div class="container"> | |||||
| <div class="row"> | |||||
| <div class="col-lg-6 col-md-6 col-sm-6 container justify-content-center card"> | |||||
| <h1 class="text-center">Nueva Maqueta</h1> | |||||
| <div class="card-body"> | |||||
| <form th:action="@{/maquetas}" th:object="${maqueta}" method="post"> | |||||
| <!-- la maqueta de th:object es la que le pasamos al controlador OJO LAS "s" --> | |||||
| <div class="form-group"> | |||||
| <label>Descripcion: </label> | |||||
| <input type="text" name="descripcion" th:field="*{descripcion}" | |||||
| class="form-control" placeholder="Descripción de la maqueta: " required> | |||||
| </div> | |||||
| <br/> | |||||
| <div class="form-group"> | |||||
| <label>Precio: </label> | |||||
| <input type="number" name="precio" th:field="*{precio}" | |||||
| class="form-control" placeholder="Precio de la maqueta: " required> | |||||
| </div> | |||||
| <br/> | |||||
| <div class="box-footer"> | |||||
| <button class="btn btn-success">Guardar</button> | |||||
| </div> | |||||
| </form> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,56 @@ | |||||
| <!DOCTYPE html> | |||||
| <html xmlns:th="https://www.thymeleaf.org"> | |||||
| <head> | |||||
| <meta charset="UTF-8"> | |||||
| <title>RallyModels</title> | |||||
| <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" | |||||
| integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> | |||||
| </head> | |||||
| <body> | |||||
| <nav class="navbar navbar-expand-md bg-dark navbar-dark"> | |||||
| <a class="navbar-brand" href="#">Control de Maquetas</a> | |||||
| <div class="collapse navbar-collapse" id="collapsibleNavbar"> | |||||
| <ul class="navbar-nav"> | |||||
| <li class="nav-item"><a class="nav-link" | |||||
| th:href="@{/maquetas}">Control de maquetas</a> </li> | |||||
| </ul> | |||||
| </div> | |||||
| </nav> | |||||
| <br/> | |||||
| <div class="container"> | |||||
| <div class="row"> | |||||
| <div class="col-lg-6 col-md-6 col-sm-6 container justify-content-center card"> | |||||
| <h1 class="text-center">Edición de maquetas</h1> | |||||
| <div class="card-body"> | |||||
| <form th:action="@{/maquetas/{id}(id=${maqueta.idMaqueta})}" th:object="${maqueta}" method="post"> | |||||
| <!-- la maqueta de th:object es la que le pasamos al controlador OJO LAS "s" --> | |||||
| <div class="form-group"> | |||||
| <label>Descripcion: </label> | |||||
| <input type="text" name="descripcion" th:field="*{descripcion}" | |||||
| class="form-control" placeholder="Descripción de la maqueta: " required> | |||||
| </div> | |||||
| <br/> | |||||
| <div class="form-group"> | |||||
| <label>Precio: </label> | |||||
| <input type="number" name="precio" th:field="*{precio}" | |||||
| class="form-control" placeholder="Precio de la maqueta: " required> | |||||
| </div> | |||||
| <br/> | |||||
| <div class="box-footer"> | |||||
| <button class="btn btn-success">Guardar</button> | |||||
| </div> | |||||
| </form> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,13 @@ | |||||
| <!DOCTYPE html> | |||||
| <html> | |||||
| <head> | |||||
| <meta charset="UTF-8"> | |||||
| <title>RallyModels</title> | |||||
| </head> | |||||
| <body> | |||||
| <h1>Lista de maquetas</h1> | |||||
| <a href="maqueta.html">Añadir Maqueta</a> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,76 @@ | |||||
| <!DOCTYPE html> | |||||
| <html xmlns:th="https://www.thymeleaf.org"> | |||||
| <head> | |||||
| <meta charset="UTF-8"> | |||||
| <title>RallyModels</title> | |||||
| <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" | |||||
| integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> | |||||
| </head> | |||||
| <body> | |||||
| <nav class="navbar navbar-expand-md bg-dark navbar-dark"> | |||||
| <a class="navbar-brand" href="#">Control de Maquetas</a> | |||||
| <div class="collapse navbar-collapse" id="collapsibleNavbar"> | |||||
| <ul class="navbar-nav"> | |||||
| <li class="nav-item"><a class="nav-link" | |||||
| th:href="@{/maquetas}">Control de maquetas</a> </li> | |||||
| </ul> | |||||
| </div> | |||||
| </nav> | |||||
| <div class="container"> | |||||
| <div class="row"> | |||||
| <h1>Lista Maquetas</h1> | |||||
| </div> | |||||
| <table class="table table-striped table-bordered"> | |||||
| <thead class="table-dark"> | |||||
| <tr> | |||||
| <th>Descripcion</th> | |||||
| <th>Coche</th> | |||||
| <th>Competicion</th> | |||||
| <th>Precio</th> | |||||
| <th>Acciones</th> | |||||
| </tr> | |||||
| </thead> | |||||
| <tbody> | |||||
| <tr th:each="maqueta : ${maquetas}">. | |||||
| <td th:text="${maqueta.descripcion}">Descripcion</td> | |||||
| <td th:text="${maqueta.fkIdCoche}">Coche</td> | |||||
| <td th:text="${maqueta.fkIdCompeticion}">Competicion</td> | |||||
| <td th:text="${maqueta.precio}">Precio</td> | |||||
| <td> | |||||
| <a th:href="@{/maquetas/editar/{id}(id=${maqueta.idMaqueta})}" | |||||
| class="btn btn-info">Editar</a> | |||||
| <a th:href="@{/maquetas/{id}(id=${maqueta.idMaqueta})}" | |||||
| class="btn btn-danger">Eliminar</a> | |||||
| </td> | |||||
| </tr> | |||||
| </tbody> | |||||
| </table> | |||||
| </div> | |||||
| <div class="container"> | |||||
| <div class="card" style="width: 18rem;"> | |||||
| <img src="raw/images.jfif" class="card-img-top" alt="..."> | |||||
| <div class="card-body"> | |||||
| <h5 class="card-title">Card title</h5> | |||||
| <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p> | |||||
| <a href="#" class="btn btn-primary">Go somewhere</a> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,13 @@ | |||||
| package com.ims.rallyModels; | |||||
| import org.junit.jupiter.api.Test; | |||||
| import org.springframework.boot.test.context.SpringBootTest; | |||||
| @SpringBootTest | |||||
| class RallyModelsApplicationTests { | |||||
| @Test | |||||
| void contextLoads() { | |||||
| } | |||||
| } | |||||