diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/GenericDao.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/GenericDao.java index ad8e199ef3b5fe2a3a5294b748a7953f6b6fd9f7..8db42f37389c22286aa1bcfc1419fff60b57bf60 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/GenericDao.java +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/GenericDao.java @@ -4,7 +4,7 @@ import java.util.List; public interface GenericDao<T> { - void create(T elem); + T create(T elem); T find(String key); diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/category/CategoryDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/category/CategoryDAOBean.java new file mode 100644 index 0000000000000000000000000000000000000000..cbe49ad0c649b9c87016a03c337d42a871a74870 --- /dev/null +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/category/CategoryDAOBean.java @@ -0,0 +1,53 @@ +package uy.edu.fing.tse.central.db.dao.category; + +import uy.edu.fing.tse.central.db.entity.Categoria; +import uy.edu.fing.tse.central.db.mapper.MyMapper; +import uy.edu.fing.tse.dto.Category; + +import javax.annotation.PostConstruct; +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import java.util.List; +import java.util.stream.Collectors; + +@Stateless +public class CategoryDAOBean implements CategoryDaoLocal { + + @PersistenceContext(unitName = "central") + private EntityManager em; + + @PostConstruct + void init() { + //Despues del constructor hace esto + } + + @Override + public Category create(Category elem) { + final var r = MyMapper.INSTANCE.convert(elem); + em.persist(r); + em.flush(); + return MyMapper.INSTANCE.convert(r); + } + + @Override + public Category find(String key) { + final var query = em.createNamedQuery("Categoria.findByName", Categoria.class); + query.setParameter("name", key); + final var r = query.getSingleResult(); + return MyMapper.INSTANCE.convert(r); + } + + @Override + public Category find(Long id) { + final var r = em.find(Categoria.class, id); + return MyMapper.INSTANCE.convert(r); + } + + @Override + public List<Category> findAll() { + final var query = em.createNamedQuery("Categoria.findAll", Categoria.class); + final List<Categoria> r = query.getResultList(); + return r.stream().map(MyMapper.INSTANCE::convert).collect(Collectors.toList()); + } +} diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/category/CategoryDaoLocal.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/category/CategoryDaoLocal.java new file mode 100644 index 0000000000000000000000000000000000000000..78a1b4eca4403fefc05e583422dd4dbbb244c2a2 --- /dev/null +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/category/CategoryDaoLocal.java @@ -0,0 +1,11 @@ +package uy.edu.fing.tse.central.db.dao.category; + +import uy.edu.fing.tse.central.db.dao.GenericDao; +import uy.edu.fing.tse.dto.Category; + +import javax.ejb.Local; + +@Local +public interface CategoryDaoLocal extends GenericDao<Category> { + +} diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDAOBean.java index 7680fa07120b5d4246eb76e5ad5ad59c568b3fbc..7fd371ec8820a857c2d4b1ac3d1485cee03482ff 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDAOBean.java +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDAOBean.java @@ -1,5 +1,8 @@ package uy.edu.fing.tse.central.db.dao.fact; +import uy.edu.fing.tse.central.db.entity.Calificacion; +import uy.edu.fing.tse.central.db.entity.Categoria; +import uy.edu.fing.tse.central.db.entity.Estado; import uy.edu.fing.tse.central.db.entity.Hecho; import uy.edu.fing.tse.central.db.mapper.MyMapper; import uy.edu.fing.tse.dto.Fact; @@ -26,10 +29,33 @@ public class FactDAOBean implements FactDaoLocal { } @Override - public void create(Fact elem) { + public Fact create(Fact elem) { final var hecho = MyMapper.INSTANCE.convert(elem); + { + final var query = em.createNamedQuery("Estado.findByValue", Estado.class); + query.setParameter("val", elem.getActualState().getValue()); + final var e = query.getSingleResult(); + hecho.setActualState(e); + } + + if (elem.getScore() != null) { + final var query = em.createNamedQuery("Calificacion.findByValue", Calificacion.class); + query.setParameter("val", elem.getScore().getValue()); + final var s = query.getSingleResult(); + hecho.setScore(s); + } + + if (elem.getCategory() != null) { + final var query = em.createNamedQuery("Categoria.findByName", Categoria.class); + query.setParameter("name", elem.getCategory().getName()); + final var c = query.getSingleResult(); + hecho.setCategory(c); + } + em.persist(hecho); em.flush(); + + return MyMapper.INSTANCE.convert(hecho); } @Override diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDaoLocal.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDaoLocal.java index 6165408466b1a40341dff6386645130ac19237eb..6cfe740a50fbd1ebfbe0f46585b7b3e14b3254f6 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDaoLocal.java +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDaoLocal.java @@ -9,17 +9,6 @@ import java.util.List; @Local public interface FactDaoLocal extends GenericDao<Fact> { - @Override - void create(Fact elem); - - @Override - Fact find(String key); - - @Override - Fact find(Long id); - - @Override - List<Fact> findAll(); List<Fact> search(String value, String state, Date after, Date before); diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/role/RoleDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/role/RoleDAOBean.java index b59a80e197bd02352e14cfdd4cf0ad6c5a0ed456..df8e0b882158170c05ce811c52ec19e32802b225 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/role/RoleDAOBean.java +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/role/RoleDAOBean.java @@ -23,10 +23,11 @@ public class RoleDAOBean implements RoleDaoLocal { } @Override - public void create(Role elem) { + public Role create(Role elem) { final var r = MyMapper.INSTANCE.convert(elem); em.persist(r); em.flush(); + return MyMapper.INSTANCE.convert(r); } @Override diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/score/ScoreDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/score/ScoreDAOBean.java index 3f7a648ec2e866f702256e4d04df6f2a08f78b86..c7114ecd1963cd9b2508b9253b5722b27f6ab7a9 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/score/ScoreDAOBean.java +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/score/ScoreDAOBean.java @@ -23,10 +23,11 @@ public class ScoreDAOBean implements ScoreDaoLocal { } @Override - public void create(Score elem) { + public Score create(Score elem) { final var r = MyMapper.INSTANCE.convert(elem); em.persist(r); em.flush(); + return MyMapper.INSTANCE.convert(r); } @Override diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/state/StateDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/state/StateDAOBean.java index 9da50e1a69f0b950a9d2fbb272f93fc3eefdb2cc..2597912fbdfc22b87f932b609f5d24979a2329eb 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/state/StateDAOBean.java +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/state/StateDAOBean.java @@ -23,10 +23,11 @@ public class StateDAOBean implements StateDaoLocal { } @Override - public void create(State elem) { + public State create(State elem) { final var r = MyMapper.INSTANCE.convert(elem); em.persist(r); em.flush(); + return MyMapper.INSTANCE.convert(r); } @Override diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/user/UserDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/user/UserDAOBean.java index 43569f15ccf61a06b2dbd0d42549c2ca76d601e0..8a1325ee343f722d4b8b5070792eccadcd6d5b0b 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/user/UserDAOBean.java +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/user/UserDAOBean.java @@ -27,18 +27,19 @@ public class UserDAOBean implements UserDaoLocal { @Override - public void create(User user) { - if (user instanceof UserBO) _register((UserBO) user); - else _register((UserFO) user); + public User create(User user) { + if (user instanceof UserBO) return _register((UserBO) user); + else return _register((UserFO) user); } - public void _register(UserFO user) { + private UserFO _register(UserFO user) { final var newUser = MyMapper.INSTANCE.convert(user); em.persist(newUser); em.flush(); + return MyMapper.INSTANCE.convert(newUser); } - private void _register(UserBO user) { + private UserBO _register(UserBO user) { final var newUser = MyMapper.INSTANCE.convert(user); final var query = em.createNamedQuery("Rol.findByName", Rol.class); @@ -48,6 +49,7 @@ public class UserDAOBean implements UserDaoLocal { em.persist(newUser); em.flush(); + return MyMapper.INSTANCE.convert(newUser); } @Override diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Hecho.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Hecho.java index 6f78c6819650d8532b0f3d882236f62df3153d41..c2acb8870ecc5b1db1727416f8e598c49d23557b 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Hecho.java +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Hecho.java @@ -30,7 +30,7 @@ public final class Hecho { @ManyToOne private Categoria category; - @OneToMany + @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) private List<TransicionEstado> history = new ArrayList<>(); public Long getId() { diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/TransicionEstado.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/TransicionEstado.java index ccd799fb479b432714573ba7043eb00454f540ec..cb972ddffe343c5122b4fd8174b810ee28a7ca04 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/TransicionEstado.java +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/TransicionEstado.java @@ -10,13 +10,13 @@ public class TransicionEstado { @GeneratedValue(strategy = GenerationType.AUTO) private Long id; - @ManyToOne(optional = false) + @ManyToOne(optional = false, fetch = FetchType.EAGER) private Estado state; - @ManyToOne(optional = false) + @ManyToOne(optional = false, fetch = FetchType.EAGER) private Usuario user; - @ManyToOne(optional = false) + @ManyToOne(optional = false, fetch = FetchType.EAGER) private Hecho fact; @Column(nullable = false) diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java index d03b7045253fa579afc8aa2b99803690d4b23f0e..178b5709b5ad93859f9fde64b0ba26eff16d3eea 100644 --- a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java +++ b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java @@ -10,7 +10,6 @@ import uy.edu.fing.tse.central.db.dao.state.StateDaoLocal; import uy.edu.fing.tse.central.db.dao.user.UserDaoLocal; import uy.edu.fing.tse.dto.*; -import javax.annotation.PostConstruct; import javax.ejb.EJB; import javax.ejb.Stateless; import java.util.List; @@ -32,10 +31,6 @@ public class BusinessBean implements BusinessLocal, BusinessRemote { @EJB private ScoreDaoLocal calificacion; - @PostConstruct - void init() { - //Despues Hace esto - } @Override public void altaPeriferico(Peripherical p) { @@ -54,7 +49,11 @@ public class BusinessBean implements BusinessLocal, BusinessRemote { @Override public void altaHecho(Fact fact) { - hechos.create(fact); + final var history = fact.getHistory(); + fact.setHistory(null); + final var fact1 = hechos.create(fact); + LOG.info(""); + //hechos.find(fact.getTitle()); } diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java index 9867e16e73bd6333f4e1c0846a948dd44aa20587..f5a98960e7acae8449147c050944117a4e8703a0 100644 --- a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java +++ b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java @@ -26,7 +26,7 @@ public class Config { initUsers(); initEstados(); initScore(); - //initFacts(); + initFacts(); } @PreDestroy @@ -150,14 +150,14 @@ public class Config { estados[0] = "Verificado"; estados[1] = "Verificado"; - estados[2] = "No Verificado"; - estados[3] = "No Verificado"; - estados[4] = "No Verificado"; + estados[2] = "Nuevo"; + estados[3] = "Nuevo"; + estados[4] = "Nuevo"; estados[5] = "Verificado"; estados[6] = "Verificado"; - estados[7] = "No Verificado"; + estados[7] = "Nuevo"; estados[8] = "Verificado"; - estados[9] = "No Verificado"; + estados[9] = "Nuevo"; for (int i = 0; i < 10; i++) { State actualState = new State(); @@ -171,7 +171,6 @@ public class Config { sh.setDate(new Date()); UserBO u = new UserBO(); u.setPassword("admin"); - u.setMail("admin"); sh.setUser(u); //sh.setFact(fact); fact.addHistory(sh);