From 1ac018018b061d9757a4538d534ae5cefb53eefc Mon Sep 17 00:00:00 2001
From: Falucho <german.faller@pcunix71.fing.edu.uy>
Date: Mon, 24 Jun 2019 14:23:16 -0300
Subject: [PATCH] Se sigue trabajando en el modelo

---
 .../fing/tse/central/db/dao/GenericDao.java   |  2 +-
 .../db/dao/category/CategoryDAOBean.java      | 53 +++++++++++++++++++
 .../db/dao/category/CategoryDaoLocal.java     | 11 ++++
 .../tse/central/db/dao/fact/FactDAOBean.java  | 28 +++++++++-
 .../tse/central/db/dao/fact/FactDaoLocal.java | 11 ----
 .../tse/central/db/dao/role/RoleDAOBean.java  |  3 +-
 .../central/db/dao/score/ScoreDAOBean.java    |  3 +-
 .../central/db/dao/state/StateDAOBean.java    |  3 +-
 .../tse/central/db/dao/user/UserDAOBean.java  | 12 +++--
 .../edu/fing/tse/central/db/entity/Hecho.java |  2 +-
 .../central/db/entity/TransicionEstado.java   |  6 +--
 .../tse/central/business/BusinessBean.java    | 11 ++--
 .../tse/central/business/startup/Config.java  | 13 +++--
 13 files changed, 120 insertions(+), 38 deletions(-)
 create mode 100644 central-db/src/main/java/uy/edu/fing/tse/central/db/dao/category/CategoryDAOBean.java
 create mode 100644 central-db/src/main/java/uy/edu/fing/tse/central/db/dao/category/CategoryDaoLocal.java

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 ad8e199..8db42f3 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 0000000..cbe49ad
--- /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 0000000..78a1b4e
--- /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 7680fa0..7fd371e 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 6165408..6cfe740 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 b59a80e..df8e0b8 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 3f7a648..c7114ec 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 9da50e1..2597912 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 43569f1..8a1325e 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 6f78c68..c2acb88 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 ccd799f..cb972dd 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 d03b704..178b570 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 9867e16..f5a9896 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);
-- 
GitLab