Merge branch 'master' of https://gitlab.hexaquo.at/sks/movies
This commit is contained in:
commit
b271581278
4
.idea/encodings.xml
generated
4
.idea/encodings.xml
generated
@ -3,7 +3,11 @@
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/MoviesClient" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/MoviesClient/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/MoviesCommon" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/MoviesCommon/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/MoviesWebApp" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/MoviesWebApp/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/MoviesWebApp/src/main/resources" charset="UTF-8" />
|
||||
</component>
|
||||
</project>
|
@ -13,14 +13,20 @@ import java.time.LocalDate;
|
||||
|
||||
@Entity
|
||||
@Table(name = "t_actors")
|
||||
@NamedQuery(
|
||||
@NamedQueries({
|
||||
@NamedQuery(
|
||||
name = "Actors.getIdByProperties",
|
||||
query = "SELECT a.id FROM Actors a WHERE " +
|
||||
query = "SELECT a FROM Actors a WHERE " +
|
||||
"a.firstname LIKE :firstname AND " +
|
||||
"a.lastname LIKE :lastname AND " +
|
||||
"a.sex = :sex AND " +
|
||||
"a.birthdate = :birthdate"
|
||||
)
|
||||
"a.sex = :sex"// AND " +
|
||||
//"a.birthdate = :birthdate"
|
||||
),
|
||||
@NamedQuery(
|
||||
name = "Actors.selectAllActors",
|
||||
query = "SELECT n FROM Actors n"
|
||||
)
|
||||
})
|
||||
@XmlRootElement
|
||||
public class Actors {
|
||||
@Id
|
||||
|
@ -15,14 +15,17 @@ import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name = "t_movies")
|
||||
@NamedQuery(
|
||||
@NamedQueries({
|
||||
@NamedQuery(
|
||||
name = "Movies.selectAll",
|
||||
query = "SELECT n FROM Movies n"
|
||||
)
|
||||
@NamedQuery(
|
||||
),
|
||||
@NamedQuery(
|
||||
name = "Movies.selectByTitle",
|
||||
query = "SELECT n FROM Movies n WHERE n.title LIKE :title"
|
||||
)
|
||||
)
|
||||
})
|
||||
|
||||
@XmlRootElement
|
||||
public class Movies {
|
||||
@Id
|
||||
|
@ -13,6 +13,19 @@ import javax.xml.bind.annotation.XmlRootElement;
|
||||
@Entity
|
||||
@Table(name = "t_studios")
|
||||
@XmlRootElement
|
||||
@NamedQueries({
|
||||
@NamedQuery(
|
||||
name = "Studios.getIdByProperties",
|
||||
query = "SELECT a FROM Studios a WHERE " +
|
||||
"a.countrycode LIKE :countrycode AND " +
|
||||
"a.name LIKE :name AND " +
|
||||
"a.postcode LIKE :postcode"
|
||||
),
|
||||
@NamedQuery(
|
||||
name = "Studios.selectAllStudios",
|
||||
query = "SELECT n FROM Studios n"
|
||||
)
|
||||
})
|
||||
public class Studios {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
|
@ -5,11 +5,11 @@ import javax.ejb.*;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.EntityNotFoundException;
|
||||
import javax.persistence.PersistenceContext;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@Stateless
|
||||
@TransactionManagement(value=TransactionManagementType.CONTAINER)
|
||||
public class MoviesService {
|
||||
private static final Logger LOGGER = Logger.getLogger(MoviesService.class.getName());
|
||||
|
||||
@ -52,18 +52,77 @@ public class MoviesService {
|
||||
em.remove(movies); //managed news required
|
||||
}
|
||||
|
||||
public void save(Movies movies) {
|
||||
// // TODO
|
||||
// for (Actors actor : movies.getActors()) {
|
||||
// ResultSet rs = em.createNamedQuery("Actors.getIdByParameters", Actors.class)
|
||||
// .setParameter() // TODO
|
||||
// .getResultList();
|
||||
//
|
||||
// // Check if we have a result, if yes -> take first, actor.id = resultID
|
||||
// // If no result: context.setRollbackOnly();
|
||||
// }
|
||||
LOGGER.info("save() >> movies" + movies);
|
||||
public List<Actors> findAllActors() {
|
||||
LOGGER.info("findAllActors)");
|
||||
|
||||
em.merge(movies);
|
||||
return em.createNamedQuery("Actors.selectAllActors", Actors.class)
|
||||
.getResultList();
|
||||
}
|
||||
|
||||
public List<Studios> findAllStudios() {
|
||||
LOGGER.info("findAllStudios)");
|
||||
|
||||
return em.createNamedQuery("Studios.selectAllStudios", Studios.class)
|
||||
.getResultList();
|
||||
}
|
||||
|
||||
// TODO maybe check if the movie already exists?
|
||||
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
|
||||
public void save(List<Movies> movies) {
|
||||
|
||||
for (Movies movie : movies) {
|
||||
|
||||
try {
|
||||
// Get studio for the movie from the database
|
||||
Studios movieStudio = movie.getStudio();
|
||||
LOGGER.info("Get a studio" + movieStudio);
|
||||
List<Studios> studioListResult = em.createNamedQuery("Studios.getIdByProperties", Studios.class)
|
||||
.setParameter("name", movieStudio.getName())
|
||||
.setParameter("countrycode", movieStudio.getCountrycode())
|
||||
.setParameter("postcode", movieStudio.getPostcode())
|
||||
.getResultList();
|
||||
|
||||
if (!studioListResult.isEmpty() && studioListResult.size() > 0) {
|
||||
Long actorId = studioListResult.get(0).getId();
|
||||
movieStudio.setId(actorId);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.info("Rollback! Movie studio: " + movieStudio);
|
||||
context.setRollbackOnly();
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO use also birthday
|
||||
// Get actor for the movie from the database
|
||||
for (Actors movieActor : movie.getActors()) {
|
||||
LOGGER.info("Get an actor " + movieActor);
|
||||
List<Actors> actorListResult = em.createNamedQuery("Actors.getIdByProperties", Actors.class)
|
||||
.setParameter("firstname", movieActor.getFirstname())
|
||||
.setParameter("lastname", movieActor.getLastname())
|
||||
.setParameter("sex", movieActor.getSex())
|
||||
//.setParameter("birthdate", movieActor.getBirthdate())
|
||||
.getResultList();
|
||||
|
||||
if (!actorListResult.isEmpty() && actorListResult.size() > 0) {
|
||||
Long actorId = actorListResult.get(0).getId();
|
||||
movieActor.setId(actorId);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.info("Rollback! Movie actor: " + movieActor);
|
||||
context.setRollbackOnly();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
LOGGER.info("save() >> movies" + movies);
|
||||
for (Movies movie : movies) {
|
||||
em.merge(movie);
|
||||
}
|
||||
}
|
||||
}
|
@ -25,8 +25,8 @@ public class MoviesServlet extends HttpServlet {
|
||||
"<body>" +
|
||||
"<h1>Movies</h1>");
|
||||
|
||||
moviesService.findAll().forEach(news -> html.append("<h2>" + news.getTitle() + "</h2>" +
|
||||
"<p>" + news.getTitle() + "</p>"));
|
||||
moviesService.findAll().forEach(movies -> html.append("<h2>" + movies.getTitle() + "</h2>" +
|
||||
"<p>" + movies.getActors() + "</p>"));
|
||||
|
||||
html.append("</body>" +
|
||||
"</html>");
|
||||
|
@ -28,8 +28,6 @@ public class MoviesWebServiceImpl implements MoviesWebService {
|
||||
|
||||
@Override
|
||||
public void importMovies(List<Movies> movies) {
|
||||
for (Movies movie : movies) {
|
||||
moviesService.save(movie);
|
||||
}
|
||||
moviesService.save(movies);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user