@ -1,13 +0,0 @@ | |||
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); | |||
} | |||
} |
@ -1,33 +0,0 @@ | |||
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; | |||
} | |||
} |
@ -1,13 +0,0 @@ | |||
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); | |||
} |
@ -1,76 +0,0 @@ | |||
package com.cristobalbernal.loladvisor.dao; | |||
import com.cristobalbernal.loladvisor.config.AppConfig; | |||
import com.cristobalbernal.loladvisor.model.Lol; | |||
import org.springframework.stereotype.Repository; | |||
import javax.annotation.PostConstruct; | |||
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 appConfig; | |||
public void init() { | |||
lols = UtilLolFileReader.readFile(appConfig.getFile(), appConfig.getSeparator(), appConfig.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 i = getIndexOf(lol.getId()); | |||
if(i != -1) | |||
lols.set(i, 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; | |||
} | |||
} |
@ -1,38 +0,0 @@ | |||
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], | |||
Arrays.asList(values[2].split(listSeparator)), | |||
values[3],values[4]); | |||
}).collect(Collectors.toList()); | |||
// @formatter:on | |||
} catch (Exception e) { | |||
System.err.println("Error de lectura del fichero de datos"); | |||
System.exit(-1); | |||
} | |||
return result; | |||
} | |||
} |
@ -1,68 +0,0 @@ | |||
package com.cristobalbernal.loladvisor.model; | |||
import java.util.List; | |||
public class Lol { | |||
private long id; | |||
private String nombre; | |||
private List<String> rol; | |||
private String dificultad; | |||
private String genero; | |||
public Lol(long id, String nombre, List<String> rol, String dificultad, String genero) { | |||
this.id = id; | |||
this.nombre = nombre; | |||
this.rol = rol; | |||
this.dificultad = dificultad; | |||
this.genero = genero; | |||
} | |||
public long getId() { | |||
return id; | |||
} | |||
public String getNombre() { | |||
return nombre; | |||
} | |||
public String getDificultad() { | |||
return dificultad; | |||
} | |||
public void setId(long id) { | |||
this.id = id; | |||
} | |||
public void setNombre(String nombre) { | |||
this.nombre = nombre; | |||
} | |||
public List<String> getRol() { | |||
return rol; | |||
} | |||
public void setRol(List<String> rol) { | |||
this.rol = rol; | |||
} | |||
public void setDificultad(String dificultad) { | |||
this.dificultad = dificultad; | |||
} | |||
public String getGenero() { | |||
return genero; | |||
} | |||
public void setGenero(String genero) { | |||
this.genero = genero; | |||
} | |||
@Override | |||
public String toString() { | |||
return "Lol{" + | |||
"id=" + id + | |||
", nombre='" + nombre + '\'' + | |||
", rol=" + rol + | |||
", dificultad='" + dificultad + '\'' + | |||
", genero='" + genero + '\'' + | |||
'}'; | |||
} | |||
} |
@ -1,13 +0,0 @@ | |||
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 titleContains(String title); | |||
} |
@ -1,47 +0,0 @@ | |||
package com.cristobalbernal.loladvisor.service; | |||
import com.cristobalbernal.loladvisor.dao.LolDao; | |||
import com.cristobalbernal.loladvisor.model.Lol; | |||
import org.springframework.stereotype.Service; | |||
import java.util.Arrays; | |||
import java.util.Collection; | |||
import java.util.function.Predicate; | |||
import java.util.stream.Collectors; | |||
@Service | |||
public class LolQueryServices implements LolQueryService { | |||
private LolDao dao; | |||
private Predicate<Lol> predicate; | |||
@Override | |||
public Collection<Lol> exec() { | |||
return dao.findAll() | |||
.stream() | |||
.filter(predicate) | |||
.collect(Collectors.toList()); | |||
} | |||
@Override | |||
public LolQueryService anyGenre(String... genres) { | |||
Predicate<Lol> pAnyGenre = (vg -> Arrays.stream(genres).anyMatch(vg.getNombre()::contains)); | |||
predicate = (predicate == null) ? pAnyGenre : predicate.and(pAnyGenre); | |||
return this; | |||
} | |||
@Override | |||
public LolQueryService allGenres(String... genres) { | |||
Predicate<Lol> pAllGenre = (vg -> Arrays.stream(genres).allMatch(vg.getNombre()::contains)); | |||
predicate = (predicate == null) ? pAllGenre : predicate.and(pAllGenre); | |||
return this; | |||
} | |||
@Override | |||
public LolQueryService titleContains(String title) { | |||
Predicate<Lol> pTitleContains = (vg -> vg.getNombre().toLowerCase().contains(title.toLowerCase())); | |||
predicate = (predicate == null) ? pTitleContains : predicate.and(pTitleContains); | |||
return this; | |||
} | |||
} |
@ -1,17 +0,0 @@ | |||
package com.cristobalbernal.loladvisor.service; | |||
import com.cristobalbernal.loladvisor.dao.LolDao; | |||
import java.util.Collection; | |||
public class LolService { | |||
LolDao filmDao; | |||
LolQueryService queryService; | |||
public Collection<String> findAllGenres(){ | |||
return null; | |||
} | |||
} |