package de.gmorling.moapa.videorental.ws.xmlbeans; import java.util.ArrayList; import java.util.GregorianCalendar; import java.util.List; import xmlbeans.Movie; import xmlbeans.FindMoviesByDirectorRequest; import xmlbeans.FindMoviesByDirectorResponse; import xmlbeans.GetMovieByIdRequest; import xmlbeans.GetMovieByIdResponse; import de.gmorling.moapa.videorental.service.MovieRepository; import de.gmorling.moapa.videorental.service.MovieRepositoryMockImpl; public class VideoRentalPort implements VideoRentalPortType { private MovieRepository movieRepository = new MovieRepositoryMockImpl(); public GetMovieByIdResponse getMovieById(GetMovieByIdRequest request) { GetMovieByIdResponse response = GetMovieByIdResponse.Factory.newInstance(); de.gmorling.moapa.videorental.domain.Movie movie = movieRepository.getMovieById(request.getId()); if(movie != null) { response.setMovie(convert(movie)); } return response; } public FindMoviesByDirectorResponse findMoviesByDirector(FindMoviesByDirectorRequest request) { FindMoviesByDirectorResponse response = FindMoviesByDirectorResponse.Factory.newInstance(); List<de.gmorling.moapa.videorental.domain.Movie> movies = movieRepository.findMoviesByDirector(request.getDirector()); List<Movie> convertedMovies = new ArrayList<Movie>(movies.size()); for (de.gmorling.moapa.videorental.domain.Movie oneMovie : movies) { convertedMovies.add(convert(oneMovie)); } response.setMovieArray(convertedMovies.toArray(new Movie[movies.size()])); return response; } private Movie convert(de.gmorling.moapa.videorental.domain.Movie movie) { Movie theValue = Movie.Factory.newInstance(); theValue.setId(movie.getId()); theValue.setTitle(movie.getTitle()); theValue.setRunTime(movie.getRunTime()); if(movie.getDirector() != null) { theValue.setDirector(movie.getDirector()); } if(movie.getReleaseDate() != null) { GregorianCalendar releaseDate = new GregorianCalendar(); releaseDate.setTime(movie.getReleaseDate()); theValue.setReleaseDate(releaseDate); } return theValue; } }