diff --git a/backoffice/src/main/webapp/jsf/gestionhechos.xhtml b/backoffice/src/main/webapp/jsf/gestionhechos.xhtml index e5cf8eeb0665603bde14193688b22ce358ec3b32..552b319f858b14f32e5286a51207fbd4c388e295 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 7fd371ec8820a857c2d4b1ac3d1485cee03482ff..733558353c224306c85eb3cb36a0230821700971 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 0000000000000000000000000000000000000000..4460a98eb25601943e23431f527256ae95979997 --- /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 0000000000000000000000000000000000000000..eb214292aef5af5d50ed9f2a0c26aae3d26743d2 --- /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 8a1325ee343f722d4b8b5070792eccadcd6d5b0b..30c0215dadedaf5153983128fb8f68732852d9a5 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 0a53e026a2100abf3f92b32ca2687db25be18a88..186d0dd7552bef5bd8787c00856313820ad8b805 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 b164d083c9a5ff6206cd4a74959c050bf2b11c37..4a0ac9b202c0c5d41748964b6fce5ad7d94aeceb 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 a38e2e09864ae86b8277476103362241bd21288c..095fe9428c7e495439c06173aa9f156a6020e0eb 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 178b5709b5ad93859f9fde64b0ba26eff16d3eea..5eb29641b917e0b96ab78c7acd01ce9200c700b2 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 febfcb09ec837f31de46657b195bab97f1bb5df9..9130c9b904ebcb7385fed036e1b16b919135e377 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);