| @ -0,0 +1,37 @@ | |||||
| HELP.md | |||||
| .gradle | |||||
| build/ | |||||
| !gradle/wrapper/gradle-wrapper.jar | |||||
| !**/src/main/**/build/ | |||||
| !**/src/test/**/build/ | |||||
| ### STS ### | |||||
| .apt_generated | |||||
| .classpath | |||||
| .factorypath | |||||
| .project | |||||
| .settings | |||||
| .springBeans | |||||
| .sts4-cache | |||||
| bin/ | |||||
| !**/src/main/**/bin/ | |||||
| !**/src/test/**/bin/ | |||||
| ### IntelliJ IDEA ### | |||||
| .idea | |||||
| *.iws | |||||
| *.iml | |||||
| *.ipr | |||||
| out/ | |||||
| !**/src/main/**/out/ | |||||
| !**/src/test/**/out/ | |||||
| ### NetBeans ### | |||||
| /nbproject/private/ | |||||
| /nbbuild/ | |||||
| /dist/ | |||||
| /nbdist/ | |||||
| /.nb-gradle/ | |||||
| ### VS Code ### | |||||
| .vscode/ | |||||
| @ -0,0 +1,23 @@ | |||||
| plugins { | |||||
| id 'java' | |||||
| id 'org.springframework.boot' version '2.7.5' | |||||
| id 'io.spring.dependency-management' version '1.0.15.RELEASE' | |||||
| } | |||||
| group = 'com.cristobalbernal' | |||||
| version = '0.0.1-SNAPSHOT' | |||||
| sourceCompatibility = '17' | |||||
| repositories { | |||||
| mavenCentral() | |||||
| } | |||||
| dependencies { | |||||
| implementation 'org.springframework.boot:spring-boot-starter' | |||||
| testImplementation 'org.springframework.boot:spring-boot-starter-test' | |||||
| implementation group: 'org.springframework', name: 'spring-context', version: '5.3.24' | |||||
| } | |||||
| tasks.named('test') { | |||||
| useJUnitPlatform() | |||||
| } | |||||
| @ -0,0 +1,5 @@ | |||||
| distributionBase=GRADLE_USER_HOME | |||||
| distributionPath=wrapper/dists | |||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip | |||||
| zipStoreBase=GRADLE_USER_HOME | |||||
| zipStorePath=wrapper/dists | |||||
| @ -0,0 +1,240 @@ | |||||
| #!/bin/sh | |||||
| # | |||||
| # Copyright © 2015-2021 the original authors. | |||||
| # | |||||
| # Licensed 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. | |||||
| # | |||||
| ############################################################################## | |||||
| # | |||||
| # Gradle start up script for POSIX generated by Gradle. | |||||
| # | |||||
| # Important for running: | |||||
| # | |||||
| # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is | |||||
| # noncompliant, but you have some other compliant shell such as ksh or | |||||
| # bash, then to run this script, type that shell name before the whole | |||||
| # command line, like: | |||||
| # | |||||
| # ksh Gradle | |||||
| # | |||||
| # Busybox and similar reduced shells will NOT work, because this script | |||||
| # requires all of these POSIX shell features: | |||||
| # * functions; | |||||
| # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», | |||||
| # «${var#prefix}», «${var%suffix}», and «$( cmd )»; | |||||
| # * compound commands having a testable exit status, especially «case»; | |||||
| # * various built-in commands including «command», «set», and «ulimit». | |||||
| # | |||||
| # Important for patching: | |||||
| # | |||||
| # (2) This script targets any POSIX shell, so it avoids extensions provided | |||||
| # by Bash, Ksh, etc; in particular arrays are avoided. | |||||
| # | |||||
| # The "traditional" practice of packing multiple parameters into a | |||||
| # space-separated string is a well documented source of bugs and security | |||||
| # problems, so this is (mostly) avoided, by progressively accumulating | |||||
| # options in "$@", and eventually passing that to Java. | |||||
| # | |||||
| # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, | |||||
| # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; | |||||
| # see the in-line comments for details. | |||||
| # | |||||
| # There are tweaks for specific operating systems such as AIX, CygWin, | |||||
| # Darwin, MinGW, and NonStop. | |||||
| # | |||||
| # (3) This script is generated from the Groovy template | |||||
| # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | |||||
| # within the Gradle project. | |||||
| # | |||||
| # You can find Gradle at https://github.com/gradle/gradle/. | |||||
| # | |||||
| ############################################################################## | |||||
| # Attempt to set APP_HOME | |||||
| # Resolve links: $0 may be a link | |||||
| app_path=$0 | |||||
| # Need this for daisy-chained symlinks. | |||||
| while | |||||
| APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path | |||||
| [ -h "$app_path" ] | |||||
| do | |||||
| ls=$( ls -ld "$app_path" ) | |||||
| link=${ls#*' -> '} | |||||
| case $link in #( | |||||
| /*) app_path=$link ;; #( | |||||
| *) app_path=$APP_HOME$link ;; | |||||
| esac | |||||
| done | |||||
| APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | |||||
| APP_NAME="Gradle" | |||||
| APP_BASE_NAME=${0##*/} | |||||
| # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |||||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | |||||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | |||||
| MAX_FD=maximum | |||||
| warn () { | |||||
| echo "$*" | |||||
| } >&2 | |||||
| die () { | |||||
| echo | |||||
| echo "$*" | |||||
| echo | |||||
| exit 1 | |||||
| } >&2 | |||||
| # OS specific support (must be 'true' or 'false'). | |||||
| cygwin=false | |||||
| msys=false | |||||
| darwin=false | |||||
| nonstop=false | |||||
| case "$( uname )" in #( | |||||
| CYGWIN* ) cygwin=true ;; #( | |||||
| Darwin* ) darwin=true ;; #( | |||||
| MSYS* | MINGW* ) msys=true ;; #( | |||||
| NONSTOP* ) nonstop=true ;; | |||||
| esac | |||||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | |||||
| # Determine the Java command to use to start the JVM. | |||||
| 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 | |||||
| if [ ! -x "$JAVACMD" ] ; then | |||||
| die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | |||||
| Please set the JAVA_HOME variable in your environment to match the | |||||
| location of your Java installation." | |||||
| fi | |||||
| else | |||||
| JAVACMD=java | |||||
| which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |||||
| Please set the JAVA_HOME variable in your environment to match the | |||||
| location of your Java installation." | |||||
| fi | |||||
| # Increase the maximum file descriptors if we can. | |||||
| if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | |||||
| case $MAX_FD in #( | |||||
| max*) | |||||
| MAX_FD=$( ulimit -H -n ) || | |||||
| warn "Could not query maximum file descriptor limit" | |||||
| esac | |||||
| case $MAX_FD in #( | |||||
| '' | soft) :;; #( | |||||
| *) | |||||
| ulimit -n "$MAX_FD" || | |||||
| warn "Could not set maximum file descriptor limit to $MAX_FD" | |||||
| esac | |||||
| fi | |||||
| # Collect all arguments for the java command, stacking in reverse order: | |||||
| # * args from the command line | |||||
| # * the main class name | |||||
| # * -classpath | |||||
| # * -D...appname settings | |||||
| # * --module-path (only if needed) | |||||
| # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. | |||||
| # For Cygwin or MSYS, switch paths to Windows format before running java | |||||
| if "$cygwin" || "$msys" ; then | |||||
| APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) | |||||
| CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) | |||||
| JAVACMD=$( cygpath --unix "$JAVACMD" ) | |||||
| # Now convert the arguments - kludge to limit ourselves to /bin/sh | |||||
| for arg do | |||||
| if | |||||
| case $arg in #( | |||||
| -*) false ;; # don't mess with options #( | |||||
| /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath | |||||
| [ -e "$t" ] ;; #( | |||||
| *) false ;; | |||||
| esac | |||||
| then | |||||
| arg=$( cygpath --path --ignore --mixed "$arg" ) | |||||
| fi | |||||
| # Roll the args list around exactly as many times as the number of | |||||
| # args, so each arg winds up back in the position where it started, but | |||||
| # possibly modified. | |||||
| # | |||||
| # NB: a `for` loop captures its iteration list before it begins, so | |||||
| # changing the positional parameters here affects neither the number of | |||||
| # iterations, nor the values presented in `arg`. | |||||
| shift # remove old arg | |||||
| set -- "$@" "$arg" # push replacement arg | |||||
| done | |||||
| fi | |||||
| # Collect all arguments for the java command; | |||||
| # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of | |||||
| # shell script including quotes and variable substitutions, so put them in | |||||
| # double quotes to make sure that they get re-expanded; and | |||||
| # * put everything else in single quotes, so that it's not re-expanded. | |||||
| set -- \ | |||||
| "-Dorg.gradle.appname=$APP_BASE_NAME" \ | |||||
| -classpath "$CLASSPATH" \ | |||||
| org.gradle.wrapper.GradleWrapperMain \ | |||||
| "$@" | |||||
| # Stop when "xargs" is not available. | |||||
| if ! command -v xargs >/dev/null 2>&1 | |||||
| then | |||||
| die "xargs is not available" | |||||
| fi | |||||
| # Use "xargs" to parse quoted args. | |||||
| # | |||||
| # With -n1 it outputs one arg per line, with the quotes and backslashes removed. | |||||
| # | |||||
| # In Bash we could simply go: | |||||
| # | |||||
| # readarray ARGS < <( xargs -n1 <<<"$var" ) && | |||||
| # set -- "${ARGS[@]}" "$@" | |||||
| # | |||||
| # but POSIX shell has neither arrays nor command substitution, so instead we | |||||
| # post-process each arg (as a line of input to sed) to backslash-escape any | |||||
| # character that might be a shell metacharacter, then use eval to reverse | |||||
| # that process (while maintaining the separation between arguments), and wrap | |||||
| # the whole thing up as a single "set" statement. | |||||
| # | |||||
| # This will of course break if any of these variables contains a newline or | |||||
| # an unmatched quote. | |||||
| # | |||||
| eval "set -- $( | |||||
| printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | | |||||
| xargs -n1 | | |||||
| sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | | |||||
| tr '\n' ' ' | |||||
| )" '"$@"' | |||||
| exec "$JAVACMD" "$@" | |||||
| @ -0,0 +1,91 @@ | |||||
| @rem | |||||
| @rem Copyright 2015 the original author or authors. | |||||
| @rem | |||||
| @rem Licensed under the Apache License, Version 2.0 (the "License"); | |||||
| @rem you may not use this file except in compliance with the License. | |||||
| @rem 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, software | |||||
| @rem distributed under the License is distributed on an "AS IS" BASIS, | |||||
| @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| @rem See the License for the specific language governing permissions and | |||||
| @rem limitations under the License. | |||||
| @rem | |||||
| @if "%DEBUG%"=="" @echo off | |||||
| @rem ########################################################################## | |||||
| @rem | |||||
| @rem Gradle startup script for Windows | |||||
| @rem | |||||
| @rem ########################################################################## | |||||
| @rem Set local scope for the variables with windows NT shell | |||||
| if "%OS%"=="Windows_NT" setlocal | |||||
| set DIRNAME=%~dp0 | |||||
| if "%DIRNAME%"=="" set DIRNAME=. | |||||
| set APP_BASE_NAME=%~n0 | |||||
| set APP_HOME=%DIRNAME% | |||||
| @rem Resolve any "." and ".." in APP_HOME to make it shorter. | |||||
| for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi | |||||
| @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |||||
| set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" | |||||
| @rem Find java.exe | |||||
| if defined JAVA_HOME goto findJavaFromJavaHome | |||||
| set JAVA_EXE=java.exe | |||||
| %JAVA_EXE% -version >NUL 2>&1 | |||||
| if %ERRORLEVEL% equ 0 goto execute | |||||
| echo. | |||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |||||
| echo. | |||||
| echo Please set the JAVA_HOME variable in your environment to match the | |||||
| echo location of your Java installation. | |||||
| goto fail | |||||
| :findJavaFromJavaHome | |||||
| set JAVA_HOME=%JAVA_HOME:"=% | |||||
| set JAVA_EXE=%JAVA_HOME%/bin/java.exe | |||||
| if exist "%JAVA_EXE%" goto execute | |||||
| echo. | |||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | |||||
| echo. | |||||
| echo Please set the JAVA_HOME variable in your environment to match the | |||||
| echo location of your Java installation. | |||||
| goto fail | |||||
| :execute | |||||
| @rem Setup the command line | |||||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | |||||
| @rem Execute Gradle | |||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* | |||||
| :end | |||||
| @rem End local scope for the variables with windows NT shell | |||||
| if %ERRORLEVEL% equ 0 goto mainEnd | |||||
| :fail | |||||
| rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | |||||
| rem the _cmd.exe /c_ return code! | |||||
| set EXIT_CODE=%ERRORLEVEL% | |||||
| if %EXIT_CODE% equ 0 set EXIT_CODE=1 | |||||
| if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% | |||||
| exit /b %EXIT_CODE% | |||||
| :mainEnd | |||||
| if "%OS%"=="Windows_NT" endlocal | |||||
| :omega | |||||
| @ -0,0 +1 @@ | |||||
| rootProject.name = 'LolAdvisor' | |||||
| @ -0,0 +1,13 @@ | |||||
| package com.cristobalbernal.loladvisor; | |||||
| import org.springframework.boot.SpringApplication; | |||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | |||||
| @SpringBootApplication | |||||
| public class LolAdvisorApplication { | |||||
| public static void main(String[] args) { | |||||
| SpringApplication.run(LolAdvisorApplication.class, args); | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,33 @@ | |||||
| package com.cristobalbernal.loladvisor.config; | |||||
| import org.springframework.beans.factory.annotation.Value; | |||||
| import org.springframework.context.annotation.ComponentScan; | |||||
| import org.springframework.context.annotation.Configuration; | |||||
| import org.springframework.context.annotation.PropertySource; | |||||
| @Configuration | |||||
| @ComponentScan(basePackages="com.cristobalbernal") | |||||
| @PropertySource("classpath:/application.properties") | |||||
| public class AppConfig { | |||||
| @Value("${file.path}") | |||||
| public String file; | |||||
| @Value("${file.csv.separator}") | |||||
| public String separator; | |||||
| @Value("${file.csv.list_separator}") | |||||
| public String listSeparator; | |||||
| public String getFile() { | |||||
| return file; | |||||
| } | |||||
| public String getSeparator() { | |||||
| return separator; | |||||
| } | |||||
| public String getListSeparator() { | |||||
| return listSeparator; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,13 @@ | |||||
| package com.cristobalbernal.loladvisor.dao; | |||||
| import com.cristobalbernal.loladvisor.model.Lol; | |||||
| import java.util.Collection; | |||||
| public interface LolDao { | |||||
| public Lol findById(long id); | |||||
| public Collection<Lol> findAll(); | |||||
| public void insert(Lol lol); | |||||
| public void edit(Lol lol); | |||||
| public void delete(long id); | |||||
| } | |||||
| @ -0,0 +1,75 @@ | |||||
| package com.cristobalbernal.loladvisor.dao; | |||||
| import com.cristobalbernal.loladvisor.config.AppConfig; | |||||
| import com.cristobalbernal.loladvisor.model.Lol; | |||||
| import org.springframework.stereotype.Repository; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Collection; | |||||
| import java.util.List; | |||||
| import java.util.Optional; | |||||
| @Repository | |||||
| public class LolDaoImplMemory implements LolDao{ | |||||
| public List<Lol> lols = new ArrayList<>(); | |||||
| private AppConfig config; | |||||
| public void init() { | |||||
| lols = UtilLolFileReader.readFile(config.getFile(),config.getSeparator(),config.getListSeparator()); | |||||
| } | |||||
| @Override | |||||
| public Lol findById(long id) { | |||||
| Optional<Lol> result = lols | |||||
| .stream() | |||||
| .filter(f -> f.getId() == id) | |||||
| .findFirst(); | |||||
| // @formatter:on | |||||
| return result.orElse(null); | |||||
| } | |||||
| @Override | |||||
| public Collection<Lol> findAll() { | |||||
| return lols; | |||||
| } | |||||
| @Override | |||||
| public void insert(Lol lol) { | |||||
| lols.add(lol); | |||||
| } | |||||
| @Override | |||||
| public void edit(Lol lol) { | |||||
| int index = getIndexOf(lol.getId()); | |||||
| if(index != -1) | |||||
| lols.set(index, lol); | |||||
| } | |||||
| @Override | |||||
| public void delete(long id) { | |||||
| int index = getIndexOf(id); | |||||
| if(index != -1) | |||||
| lols.remove(index); | |||||
| } | |||||
| private int getIndexOf(long id) { | |||||
| boolean encontrado = false; | |||||
| int index = 0; | |||||
| while(!encontrado && index < lols.size()) { | |||||
| if(lols.get(index).getId() == id) | |||||
| encontrado = true; | |||||
| else | |||||
| index++; | |||||
| } | |||||
| return (encontrado) ? index : -1; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,37 @@ | |||||
| package com.cristobalbernal.loladvisor.dao; | |||||
| import com.cristobalbernal.loladvisor.model.Lol; | |||||
| import org.springframework.util.ResourceUtils; | |||||
| import java.nio.file.Files; | |||||
| import java.nio.file.Paths; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Arrays; | |||||
| import java.util.List; | |||||
| import java.util.stream.Collectors; | |||||
| public class UtilLolFileReader { | |||||
| public static List<Lol> readFile(final String path, final String separator, final String listSeparator) { | |||||
| List<Lol> result = new ArrayList<>(); | |||||
| try { | |||||
| // @formatter:off | |||||
| result = Files | |||||
| .lines(Paths.get(ResourceUtils.getFile(path).toURI())) | |||||
| .skip(1) | |||||
| .map(line -> { | |||||
| String[] values = line.split(separator); | |||||
| return new Lol(Long.parseLong(values[0]), values[1], values[2], | |||||
| values[3]); | |||||
| }).collect(Collectors.toList()); | |||||
| // @formatter:on | |||||
| } catch (Exception e) { | |||||
| System.err.println("Error de lectura del fichero de datos"); | |||||
| System.exit(-1); | |||||
| } | |||||
| return result; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,47 @@ | |||||
| package com.cristobalbernal.loladvisor.model; | |||||
| public class Lol { | |||||
| private long id; | |||||
| private String nombre; | |||||
| private String rol; | |||||
| private String dificultad; | |||||
| public Lol(long id, String nombre, String rol, String dificultad) { | |||||
| this.id = id; | |||||
| this.nombre = nombre; | |||||
| this.rol = rol; | |||||
| this.dificultad = dificultad; | |||||
| } | |||||
| public long getId() { | |||||
| return id; | |||||
| } | |||||
| public String getNombre() { | |||||
| return nombre; | |||||
| } | |||||
| public String getRol() { | |||||
| return rol; | |||||
| } | |||||
| public String getDificultad() { | |||||
| return dificultad; | |||||
| } | |||||
| public void setId(long id) { | |||||
| this.id = id; | |||||
| } | |||||
| public void setNombre(String nombre) { | |||||
| this.nombre = nombre; | |||||
| } | |||||
| public void setRol(String rol) { | |||||
| this.rol = rol; | |||||
| } | |||||
| public void setDificultad(String dificultad) { | |||||
| this.dificultad = dificultad; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,14 @@ | |||||
| package com.cristobalbernal.loladvisor.service; | |||||
| import com.cristobalbernal.loladvisor.model.Lol; | |||||
| import java.util.Collection; | |||||
| public interface LolQueryService { | |||||
| public Collection<Lol> exec(); | |||||
| public LolQueryService anyGenre(String... genres); | |||||
| public LolQueryService allGenres(String... genres); | |||||
| public LolQueryService year(String year); | |||||
| public LolQueryService betweenYears(String from, String to); | |||||
| public LolQueryService titleContains(String title); | |||||
| } | |||||
| @ -0,0 +1,3 @@ | |||||
| file.path=classpath:bbdd.csv | |||||
| file.csv.separator=; | |||||
| file.csv.list_separator=, | |||||
| @ -0,0 +1,16 @@ | |||||
| id;name;rol;dificultad | |||||
| 1;Ahri;Asesina;Media | |||||
| 2;Atrox;Luchador;Media | |||||
| 3;Brand;Mago;Media | |||||
| 4;Ezreal;Tirador;Media | |||||
| 5;Alistar;Apoyo;Media | |||||
| 6;Amumu;Tanques;Baja | |||||
| 7;Akali;Asesina;Media | |||||
| 8;Fiora;Asesina;Baja | |||||
| 9;Veigar;Mago;Media | |||||
| 10;Kaisa;Tirador;Media | |||||
| 11;Karma;Apoyo;Baja | |||||
| 12;Ksante;Tanques;Dificil | |||||
| 13;Diana;Asesina;Media | |||||
| 14;Ekko;Asesino;Dificil | |||||
| 15;Elise;Asesina;Dificil | |||||
| @ -0,0 +1,13 @@ | |||||
| package com.cristobalbernal.loladvisor; | |||||
| import org.junit.jupiter.api.Test; | |||||
| import org.springframework.boot.test.context.SpringBootTest; | |||||
| @SpringBootTest | |||||
| class LolAdvisorApplicationTests { | |||||
| @Test | |||||
| void contextLoads() { | |||||
| } | |||||
| } | |||||