From b0b00193d8ec1355b51a6c692982bde090a11bb4 Mon Sep 17 00:00:00 2001 From: Falucho <german.faller@pcunix71.fing.edu.uy> Date: Mon, 24 Jun 2019 15:19:46 -0300 Subject: [PATCH] Se sigue trabajando en el modelo --- .../src/main/webapp/jsf/gestionhechos.xhtml | 4 +- .../tse/central/db/dao/fact/FactDAOBean.java | 37 +++++-------- .../db/dao/mechanism/MechanismDAOBean.java | 53 +++++++++++++++++++ .../db/dao/mechanism/MechanismDaoLocal.java | 11 ++++ .../tse/central/db/dao/user/UserDAOBean.java | 22 -------- .../fing/tse/central/db/entity/Mecanismo.java | 4 ++ .../fing/tse/central/db/mapper/MyMapper.java | 28 ++++++++++ .../tse/central/db/mapper/MyMapperTest.java | 12 +++++ .../tse/central/business/BusinessBean.java | 21 +++++++- .../business/security/SecurityBean.java | 13 +++-- 10 files changed, 152 insertions(+), 53 deletions(-) create mode 100644 central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDAOBean.java create mode 100644 central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDaoLocal.java diff --git a/backoffice/src/main/webapp/jsf/gestionhechos.xhtml b/backoffice/src/main/webapp/jsf/gestionhechos.xhtml index e5cf8ee..552b319 100644 --- a/backoffice/src/main/webapp/jsf/gestionhechos.xhtml +++ b/backoffice/src/main/webapp/jsf/gestionhechos.xhtml @@ -55,7 +55,7 @@ <h:outputText value="#{hecho.title}" /> </p:column> <p:column filterBy="#{gestionHechos.filterDesc}" headerText="Descripción" filterMatchMode="contains"> - <h:outputText value="#{hecho.actualState.value}" /> + <h:outputText value="#{hecho.description}"/> </p:column> <p:column filterBy="#{gestionHechos.filterEstado}" headerText="Estados" filterMatchMode="exact"> <f:facet name="filter"> @@ -65,7 +65,7 @@ itemValue="#{e.value}"/> </p:selectOneMenu> </f:facet> - + <h:outputText value="#{hecho.actualState.value}"/> </p:column> </p:dataTable> </h:form> 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 7fd371e..7335583 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,8 +1,5 @@ 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; @@ -31,26 +28,20 @@ public class FactDAOBean implements FactDaoLocal { @Override 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); - } +// +// 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(); diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDAOBean.java new file mode 100644 index 0000000..4460a98 --- /dev/null +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDAOBean.java @@ -0,0 +1,53 @@ +package uy.edu.fing.tse.central.db.dao.mechanism; + +import uy.edu.fing.tse.central.db.entity.Mecanismo; +import uy.edu.fing.tse.central.db.mapper.MyMapper; +import uy.edu.fing.tse.dto.Mechanism; + +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 MechanismDAOBean implements MechanismDaoLocal { + + @PersistenceContext(unitName = "central") + private EntityManager em; + + @PostConstruct + void init() { + //Despues del constructor hace esto + } + + @Override + public Mechanism create(Mechanism elem) { + final var r = MyMapper.INSTANCE.convert(elem); + em.persist(r); + em.flush(); + return MyMapper.INSTANCE.convert(r); + } + + @Override + public Mechanism find(String key) { + final var query = em.createNamedQuery("Calificacion.findByName", Mecanismo.class); + query.setParameter("name", key); + final var r = query.getSingleResult(); + return MyMapper.INSTANCE.convert(r); + } + + @Override + public Mechanism find(Long id) { + final var r = em.find(Mecanismo.class, id); + return MyMapper.INSTANCE.convert(r); + } + + @Override + public List<Mechanism> findAll() { + final var query = em.createNamedQuery("Calificacion.findAll", Mecanismo.class); + final List<Mecanismo> 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/mechanism/MechanismDaoLocal.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDaoLocal.java new file mode 100644 index 0000000..eb21429 --- /dev/null +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDaoLocal.java @@ -0,0 +1,11 @@ +package uy.edu.fing.tse.central.db.dao.mechanism; + +import uy.edu.fing.tse.central.db.dao.GenericDao; +import uy.edu.fing.tse.dto.Mechanism; + +import javax.ejb.Local; + +@Local +public interface MechanismDaoLocal extends GenericDao<Mechanism> { + +} 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 8a1325e..30c0215 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 @@ -1,11 +1,8 @@ package uy.edu.fing.tse.central.db.dao.user; -import uy.edu.fing.tse.central.db.entity.Rol; import uy.edu.fing.tse.central.db.entity.Usuario; import uy.edu.fing.tse.central.db.mapper.MyMapper; import uy.edu.fing.tse.dto.User; -import uy.edu.fing.tse.dto.UserBO; -import uy.edu.fing.tse.dto.UserFO; import javax.annotation.PostConstruct; import javax.ejb.Stateless; @@ -25,33 +22,14 @@ public class UserDAOBean implements UserDaoLocal { //Despues del constructor hace esto } - @Override public User create(User user) { - if (user instanceof UserBO) return _register((UserBO) user); - else return _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 UserBO _register(UserBO user) { - final var newUser = MyMapper.INSTANCE.convert(user); - - final var query = em.createNamedQuery("Rol.findByName", Rol.class); - query.setParameter("name", user.getRole().getName()); - final var r = query.getSingleResult(); - newUser.setRole(r); - - em.persist(newUser); - em.flush(); - return MyMapper.INSTANCE.convert(newUser); - } - @Override public User find(String mail) { final var query = em.createNamedQuery("Usuario.findByMail", Usuario.class); diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Mecanismo.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Mecanismo.java index 0a53e02..186d0dd 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Mecanismo.java +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Mecanismo.java @@ -4,6 +4,10 @@ import javax.persistence.*; @Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@NamedQueries({ + @NamedQuery(name = "Mecanismo.findByName", query = "SELECT m FROM Mecanismo m WHERE m.name = :name"), + @NamedQuery(name = "Mecanismo.findAll", query = "SELECT m FROM Mecanismo m") +}) public class Mecanismo { @Id diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/mapper/MyMapper.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/mapper/MyMapper.java index b164d08..4a0ac9b 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/central/db/mapper/MyMapper.java +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/mapper/MyMapper.java @@ -32,6 +32,34 @@ public interface MyMapper { } } + default Mecanismo convert(Mechanism u) { + if (u == null) { + return null; + } else if (u instanceof Peripherical) { + return convert((Peripherical) u); + } else { + return convert((MechanismInternal) u); + } + } + + default Mechanism convert(Mecanismo u) { + if (u == null) { + return null; + } else if (u instanceof Periferico) { + return convert((Periferico) u); + } else { + return convert((MecanismoInterno) u); + } + } + + Peripherical convert(Periferico f); + + Periferico convert(Peripherical f); + + MechanismInternal convert(MecanismoInterno f); + + MecanismoInterno convert(MechanismInternal f); + Hecho convert(Fact f); Fact convert(Hecho f); diff --git a/central-db/src/test/java/uy/edu/fing/tse/central/db/mapper/MyMapperTest.java b/central-db/src/test/java/uy/edu/fing/tse/central/db/mapper/MyMapperTest.java index a38e2e0..095fe94 100644 --- a/central-db/src/test/java/uy/edu/fing/tse/central/db/mapper/MyMapperTest.java +++ b/central-db/src/test/java/uy/edu/fing/tse/central/db/mapper/MyMapperTest.java @@ -2,6 +2,7 @@ package uy.edu.fing.tse.central.db.mapper; import org.junit.Assert; import org.junit.Test; +import uy.edu.fing.tse.central.db.entity.Periferico; import uy.edu.fing.tse.dto.*; public class MyMapperTest { @@ -59,4 +60,15 @@ public class MyMapperTest { "#######################################################\n"); } + + @Test + public void convert2() { + final var periferico = new Periferico(); + periferico.setName("hola"); + + final var convert = MyMapper.INSTANCE.convert(periferico); + Assert.assertNotNull(convert); + final var convert2 = MyMapper.INSTANCE.convert(convert); + Assert.assertNotNull(convert2); + } } \ No newline at end of file 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 178b570..5eb2964 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 @@ -3,6 +3,7 @@ package uy.edu.fing.tse.central.business; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import uy.edu.fing.tse.central.db.dao.category.CategoryDaoLocal; import uy.edu.fing.tse.central.db.dao.fact.FactDaoLocal; import uy.edu.fing.tse.central.db.dao.role.RoleDaoLocal; import uy.edu.fing.tse.central.db.dao.score.ScoreDaoLocal; @@ -29,7 +30,9 @@ public class BusinessBean implements BusinessLocal, BusinessRemote { @EJB private RoleDaoLocal roles; @EJB - private ScoreDaoLocal calificacion; + private ScoreDaoLocal calificaciones; + @EJB + private CategoryDaoLocal categorias; @Override @@ -51,6 +54,20 @@ public class BusinessBean implements BusinessLocal, BusinessRemote { public void altaHecho(Fact fact) { final var history = fact.getHistory(); fact.setHistory(null); + + final var state = estados.find(fact.getActualState().getValue()); + fact.setActualState(state); + + if (fact.getCategory() != null) { + final var cat = categorias.find(fact.getCategory().getName()); + fact.setCategory(cat); + } + + if (fact.getScore() != null) { + final var score = calificaciones.find(fact.getScore().getValue()); + fact.setScore(score); + } + final var fact1 = hechos.create(fact); LOG.info(""); //hechos.find(fact.getTitle()); @@ -74,7 +91,7 @@ public class BusinessBean implements BusinessLocal, BusinessRemote { @Override public void altaCalificacion(Score e) { - calificacion.create(e); + calificaciones.create(e); } @Override diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/security/SecurityBean.java b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/security/SecurityBean.java index febfcb0..9130c9b 100644 --- a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/security/SecurityBean.java +++ b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/security/SecurityBean.java @@ -4,6 +4,7 @@ package uy.edu.fing.tse.central.business.security; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import uy.edu.fing.tse.central.business.common.Secure; +import uy.edu.fing.tse.central.db.dao.role.RoleDaoLocal; import uy.edu.fing.tse.central.db.dao.user.UserDaoLocal; import uy.edu.fing.tse.dto.User; import uy.edu.fing.tse.dto.UserBO; @@ -19,7 +20,9 @@ public class SecurityBean implements SecurityLocal, SecurityRemote { private static final Logger LOG = LoggerFactory.getLogger(Security.class); @EJB - private UserDaoLocal dao; + private UserDaoLocal users; + @EJB + private RoleDaoLocal roles; @PostConstruct void init() { @@ -32,14 +35,16 @@ public class SecurityBean implements SecurityLocal, SecurityRemote { p.setSalt(salt); final var newPassword = Secure.encriptPBKDF(p.getPassword(), salt); p.setPassword(newPassword); - dao.create(p); - return dao.find(p.getMail()); + + final var role = roles.find(p.getRole().getName()); + p.setRole(role); + return users.create(p); } @Override public String login(UserBO p) { //Valido la password - final var user = (UserBO) dao.find(p.getMail()); + final var user = (UserBO) users.find(p.getMail()); final var salt = user.getSalt(); final var thisPassword = Secure.encriptPBKDF(p.getPassword(), salt); -- GitLab