Skip to content

Commit

Permalink
CodeReview ejbs
Browse files Browse the repository at this point in the history
  • Loading branch information
AnsgarLichter committed Mar 22, 2019
1 parent 3e690ad commit a2ecf39
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 88 deletions.
12 changes: 6 additions & 6 deletions src/main/java/justdoit/comment/ejb/CommentBean.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package justdoit.comment.ejb;

import java.util.List;
import javax.annotation.security.RolesAllowed;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import justdoit.comment.jpa.Comment;
import justdoit.common.ejb.EntityBean;
Expand All @@ -25,6 +21,10 @@ public CommentBean() {
}

public List<Comment> findByToDoId(long id) {
return this.em.createQuery("SELECT c FROM Comment c JOIN c.todo t where t.id= :id").setParameter("id", id).getResultList();
try {
return this.em.createQuery("SELECT c FROM Comment c JOIN c.todo t where t.id= :id").setParameter("id", id).getResultList();
} catch (NoResultException ex) {
return null;
}
}
}
15 changes: 7 additions & 8 deletions src/main/java/justdoit/common/ejb/EntityBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import justdoit.common.exception.EntityAlreadyExistsException;

Expand All @@ -23,21 +24,19 @@ public EntityBean(Class<Entity> entityClass) {
this.entityClass = entityClass;
}

//
// Vorhandene Datensätze finden
//
public Entity findById(EntityId id) {
return em.find(entityClass, id);
}

public List<Entity> findAll() {
String select = "SELECT s FROM $S s".replace("$S", this.entityClass.getName());
return em.createQuery(select).getResultList();
try {
String select = "SELECT s FROM $S s".replace("$S", this.entityClass.getName());
return em.createQuery(select).getResultList();
} catch (NoResultException ex) {
return null;
}
}

//
// Datensätze speichern, ändern, löschen
//
public Entity saveNew(Entity entity, EntityId id) throws EntityAlreadyExistsException {
if (this.findById(id) != null) {
throw new EntityAlreadyExistsException(this.entityClass.getName());
Expand Down
1 change: 0 additions & 1 deletion src/main/java/justdoit/error/servlet/Error403Servlet.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package justdoit.error.servlet;

import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
Expand Down
1 change: 0 additions & 1 deletion src/main/java/justdoit/error/servlet/Error404Servlet.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package justdoit.error.servlet;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
Expand Down
11 changes: 8 additions & 3 deletions src/main/java/justdoit/todo/ejb/CategoryBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import javax.annotation.security.RolesAllowed;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import justdoit.common.ejb.EntityBean;
import justdoit.todo.jpa.Category;
Expand All @@ -13,15 +14,19 @@
@Stateless
@RolesAllowed("justdoit-user")
public class CategoryBean extends EntityBean<Category, CategoryId> {

@PersistenceContext
EntityManager em;

public CategoryBean() {
super(Category.class);
}

public List<Category> findByUser(User user) {
return this.em.createQuery("SELECT c FROM Category c where c.username = :username").setParameter("username", user.getUsername()).getResultList();
try {
return this.em.createQuery("SELECT c FROM Category c where c.username = :username").setParameter("username", user.getUsername()).getResultList();
} catch (NoResultException ex) {
return null;
}
}
}
81 changes: 13 additions & 68 deletions src/main/java/justdoit/todo/ejb/ToDoBean.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,13 @@
package justdoit.todo.ejb;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.security.RolesAllowed;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.persistence.metamodel.EntityType;
import javax.persistence.metamodel.Metamodel;
import javax.persistence.metamodel.SingularAttribute;
import justdoit.common.ejb.EntityBean;
import justdoit.common.jpa.User;
import justdoit.todo.jpa.Category;
import justdoit.todo.jpa.ToDo;
import justdoit.todo.jpa.ToDoPriority;
import justdoit.todo.jpa.ToDoStatus;

@Stateless
public class ToDoBean extends EntityBean<ToDo, Long> {
Expand All @@ -33,63 +19,22 @@ public ToDoBean() {
super(ToDo.class);
}

public ToDo findById(Long id) {
return em.find(ToDo.class, id);
}

public List<ToDo> findByUsername(String username) {
return em.createQuery("SELECT t FROM ToDo t JOIN t.user u WHERE u.username = :username ORDER BY t.dueDate, t.dueTime")
.setParameter("username", username)
.getResultList();
try {
return em.createQuery("SELECT t FROM ToDo t JOIN t.user u WHERE u.username = :username ORDER BY t.dueDate, t.dueTime")
.setParameter("username", username)
.getResultList();
} catch (NoResultException ex) {
return null;
}
}

public List<ToDo> getDueTasks() {
Date tomorrow = new java.sql.Date(new java.sql.Date(System.currentTimeMillis()).getTime() + 24 * 60 * 60 * 1000);
return em.createQuery("SELECT t FROM ToDo t WHERE t.dueDate = :dueDate").setParameter("dueDate", tomorrow).getResultList();
}

//Query with dynamic criterias vgl. https://docs.oracle.com/javaee/7/tutorial/persistence-criteria003.htm
public List<ToDo> searchToDo(String likeDescription, Category category, ToDoStatus status, ToDoPriority priority, String username) {
CriteriaBuilder criteriaBuilder = this.em.getCriteriaBuilder();
CriteriaQuery<ToDo> criteriaQuery = criteriaBuilder.createQuery(ToDo.class);

Metamodel m = em.getMetamodel();
EntityType<ToDo> ToDo_ = m.entity(ToDo.class);
Root<ToDo> toDo = criteriaQuery.from(ToDo.class);
criteriaQuery.select(toDo);

Predicate predicate = criteriaBuilder.conjunction();

if (username != null && !username.trim().isEmpty()) {
Join<ToDo, User> u = toDo.join(ToDo_.getList("user", User.class));
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(u.get("username"), username));
criteriaQuery.where(predicate);
}

if (likeDescription != null && !likeDescription.trim().isEmpty()) {
predicate = criteriaBuilder.and(predicate, criteriaBuilder.like(toDo.get("description"), "%" + likeDescription + "%"));
criteriaQuery.where(predicate);
}

if (category != null && username != null && !username.trim().isEmpty()) {
Join<ToDo, Category> c = toDo.join(ToDo_.getList("categories", Category.class));
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(c.get("categoryName"), category.getCategoryName()));
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(c.get("username"), username));
criteriaQuery.where(predicate);
}

if (status != null) {
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(toDo.get("status"), status));
criteriaQuery.where(predicate);
try {
Date tomorrow = new java.sql.Date(new java.sql.Date(System.currentTimeMillis()).getTime() + 24 * 60 * 60 * 1000);
return em.createQuery("SELECT t FROM ToDo t WHERE t.dueDate = :dueDate").setParameter("dueDate", tomorrow).getResultList();
} catch (NoResultException ex) {
return null;
}

if (priority != null) {
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(toDo.get("priority"), priority));
criteriaQuery.where(predicate);
}

criteriaQuery.orderBy(criteriaBuilder.asc(toDo.get("dueDate")), criteriaBuilder.asc(toDo.get("dueTime")));

return this.em.createQuery(criteriaQuery).getResultList();
}
}
1 change: 0 additions & 1 deletion src/main/java/justdoit/todo/servlet/CategoriesServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
Expand Down

0 comments on commit a2ecf39

Please sign in to comment.