package de.codecentric.ebss.service; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.util.Assert; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import de.codecentric.ebss.model.Movie; public class InMemoryMovieService implements MovieService { private Log log = LogFactory.getLog(getClass()); private Map<UUID, Movie> movies = new ConcurrentHashMap<UUID, Movie>(); private String defaultMovies = "src/main/resources/movies.json"; public InMemoryMovieService(ObjectMapper objectMapper) { ObjectMapper mapper = new ObjectMapper(); List<Movie> movieList = new ArrayList<Movie>(); try { log.info("Read default movies from JSON file " + defaultMovies); movieList = mapper.readValue(new File(defaultMovies), new TypeReference<List<Movie>>() {}); for (Movie movie : movieList) { movies.put(movie.getId(), movie); } } catch (IOException e) { e.printStackTrace(); } } @Override public Movie getMovieById(UUID id) { Assert.notNull(id); return movies.get(id); } @Override public Collection<Movie> findMovies(String searchString) { return movies.values(); } }