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">
|
<component name="Encoding">
|
||||||
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
|
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
|
||||||
<file url="file://$PROJECT_DIR$/MoviesClient" 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" 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" 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>
|
</component>
|
||||||
</project>
|
</project>
|
@ -13,14 +13,20 @@ import java.time.LocalDate;
|
|||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "t_actors")
|
@Table(name = "t_actors")
|
||||||
|
@NamedQueries({
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "Actors.getIdByProperties",
|
name = "Actors.getIdByProperties",
|
||||||
query = "SELECT a.id FROM Actors a WHERE " +
|
query = "SELECT a FROM Actors a WHERE " +
|
||||||
"a.firstname LIKE :firstname AND " +
|
"a.firstname LIKE :firstname AND " +
|
||||||
"a.lastname LIKE :lastname AND " +
|
"a.lastname LIKE :lastname AND " +
|
||||||
"a.sex = :sex AND " +
|
"a.sex = :sex"// AND " +
|
||||||
"a.birthdate = :birthdate"
|
//"a.birthdate = :birthdate"
|
||||||
|
),
|
||||||
|
@NamedQuery(
|
||||||
|
name = "Actors.selectAllActors",
|
||||||
|
query = "SELECT n FROM Actors n"
|
||||||
)
|
)
|
||||||
|
})
|
||||||
@XmlRootElement
|
@XmlRootElement
|
||||||
public class Actors {
|
public class Actors {
|
||||||
@Id
|
@Id
|
||||||
|
@ -15,14 +15,17 @@ import java.util.List;
|
|||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "t_movies")
|
@Table(name = "t_movies")
|
||||||
|
@NamedQueries({
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "Movies.selectAll",
|
name = "Movies.selectAll",
|
||||||
query = "SELECT n FROM Movies n"
|
query = "SELECT n FROM Movies n"
|
||||||
)
|
),
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "Movies.selectByTitle",
|
name = "Movies.selectByTitle",
|
||||||
query = "SELECT n FROM Movies n WHERE n.title LIKE :title"
|
query = "SELECT n FROM Movies n WHERE n.title LIKE :title"
|
||||||
)
|
)
|
||||||
|
})
|
||||||
|
|
||||||
@XmlRootElement
|
@XmlRootElement
|
||||||
public class Movies {
|
public class Movies {
|
||||||
@Id
|
@Id
|
||||||
|
@ -13,6 +13,19 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||||||
@Entity
|
@Entity
|
||||||
@Table(name = "t_studios")
|
@Table(name = "t_studios")
|
||||||
@XmlRootElement
|
@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 {
|
public class Studios {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@ -5,11 +5,11 @@ import javax.ejb.*;
|
|||||||
import javax.persistence.EntityManager;
|
import javax.persistence.EntityManager;
|
||||||
import javax.persistence.EntityNotFoundException;
|
import javax.persistence.EntityNotFoundException;
|
||||||
import javax.persistence.PersistenceContext;
|
import javax.persistence.PersistenceContext;
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
@Stateless
|
@Stateless
|
||||||
|
@TransactionManagement(value=TransactionManagementType.CONTAINER)
|
||||||
public class MoviesService {
|
public class MoviesService {
|
||||||
private static final Logger LOGGER = Logger.getLogger(MoviesService.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(MoviesService.class.getName());
|
||||||
|
|
||||||
@ -52,18 +52,77 @@ public class MoviesService {
|
|||||||
em.remove(movies); //managed news required
|
em.remove(movies); //managed news required
|
||||||
}
|
}
|
||||||
|
|
||||||
public void save(Movies movies) {
|
public List<Actors> findAllActors() {
|
||||||
// // TODO
|
LOGGER.info("findAllActors)");
|
||||||
// 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);
|
|
||||||
|
|
||||||
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>" +
|
"<body>" +
|
||||||
"<h1>Movies</h1>");
|
"<h1>Movies</h1>");
|
||||||
|
|
||||||
moviesService.findAll().forEach(news -> html.append("<h2>" + news.getTitle() + "</h2>" +
|
moviesService.findAll().forEach(movies -> html.append("<h2>" + movies.getTitle() + "</h2>" +
|
||||||
"<p>" + news.getTitle() + "</p>"));
|
"<p>" + movies.getActors() + "</p>"));
|
||||||
|
|
||||||
html.append("</body>" +
|
html.append("</body>" +
|
||||||
"</html>");
|
"</html>");
|
||||||
|
@ -28,8 +28,6 @@ public class MoviesWebServiceImpl implements MoviesWebService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void importMovies(List<Movies> movies) {
|
public void importMovies(List<Movies> movies) {
|
||||||
for (Movies movie : movies) {
|
moviesService.save(movies);
|
||||||
moviesService.save(movie);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user