From 30008c10d41a4b2e1be0408468c4a06a62162038 Mon Sep 17 00:00:00 2001 From: Falucho <german.faller@pcunix71.fing.edu.uy> Date: Mon, 24 Jun 2019 15:53:33 -0300 Subject: [PATCH] Mas Modelo y Operaciones JPA --- ...hechosBean.java => GestionHechosBean.java} | 9 ++-- .../src/main/webapp/jsf/gestionhechos.xhtml | 4 +- .../tse/central/db/dao/fact/FactDAOBean.java | 16 ------ .../dao/statehistory/StateHistoryDAOBean.java | 53 +++++++++++++++++++ .../statehistory/StateHistoryDaoLocal.java | 11 ++++ .../edu/fing/tse/central/db/entity/Hecho.java | 5 ++ .../central/db/entity/TransicionEstado.java | 5 +- .../uy/edu/fing/tse/dto/StateHistory.java | 2 +- .../fing/tse/central/business/Business.java | 8 +-- .../tse/central/business/BusinessBean.java | 46 +++++++++------- .../tse/central/business/startup/Config.java | 3 +- 11 files changed, 113 insertions(+), 49 deletions(-) rename backoffice/src/main/java/uy/edu/fing/tse/jsf/{GestionhechosBean.java => GestionHechosBean.java} (87%) create mode 100644 central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDAOBean.java create mode 100644 central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDaoLocal.java diff --git a/backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionhechosBean.java b/backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionHechosBean.java similarity index 87% rename from backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionhechosBean.java rename to backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionHechosBean.java index a1cdc8e..6e9ac53 100644 --- a/backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionhechosBean.java +++ b/backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionHechosBean.java @@ -13,7 +13,7 @@ import java.util.List; @RequestScoped @Named("gestionHechos") -public class GestionhechosBean implements Serializable { +public class GestionHechosBean implements Serializable { private static final long serialVersionUID = 9142442208455999158L; @@ -27,6 +27,7 @@ public class GestionhechosBean implements Serializable { } private List<State> estados; + private List<Fact> filteredFacts; private String filterTitulo = ""; @@ -34,12 +35,12 @@ public class GestionhechosBean implements Serializable { private String filterEstado = ""; - public List<Fact> getFilteredNFact() { + public List<Fact> getFilteredFacts() { return filteredFacts; } - public void setFilteredNoticias(List<Fact> filteredNoticias) { - this.filteredFacts = filteredNoticias; + public void setFilteredFacts(List<Fact> filteredFacts) { + this.filteredFacts = filteredFacts; } public List<State> getEstados() { diff --git a/backoffice/src/main/webapp/jsf/gestionhechos.xhtml b/backoffice/src/main/webapp/jsf/gestionhechos.xhtml index 552b319..2eff1a8 100644 --- a/backoffice/src/main/webapp/jsf/gestionhechos.xhtml +++ b/backoffice/src/main/webapp/jsf/gestionhechos.xhtml @@ -42,8 +42,8 @@ <h:outputText value= "#{userLoginView.user.mail}" /> </p:outputPanel> - <p:dataTable var="hecho" id="dataHecho" value="#{gestionHechos.filteredNFact}" widgetVar="NoticiasTable" - emptyMessage="Hecho no encontrada" filteredValue="#{gestionHechos.filteredNFact}"> + <p:dataTable var="hecho" id="dataHecho" value="#{gestionHechos.filteredFacts}" widgetVar="NoticiasTable" + emptyMessage="Hecho no encontrada" filteredValue="#{gestionHechos.filteredFacts}"> <f:facet name="header"> <p:outputPanel> <h:outputText value="Buscar en todos los campos:" /> 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 7335583..0f10a3b 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 @@ -28,24 +28,8 @@ public class FactDAOBean implements FactDaoLocal { @Override public Fact create(Fact elem) { final var hecho = MyMapper.INSTANCE.convert(elem); -// -// 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); } diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDAOBean.java new file mode 100644 index 0000000..7a70110 --- /dev/null +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDAOBean.java @@ -0,0 +1,53 @@ +package uy.edu.fing.tse.central.db.dao.statehistory; + +import uy.edu.fing.tse.central.db.entity.TransicionEstado; +import uy.edu.fing.tse.central.db.mapper.MyMapper; +import uy.edu.fing.tse.dto.StateHistory; + +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 StateHistoryDAOBean implements StateHistoryDaoLocal { + + @PersistenceContext(unitName = "central") + private EntityManager em; + + @PostConstruct + void init() { + //Despues del constructor hace esto + } + + @Override + public StateHistory create(StateHistory elem) { + final var r = MyMapper.INSTANCE.convert(elem); + em.persist(r); + em.flush(); + return MyMapper.INSTANCE.convert(r); + } + + @Override + public StateHistory find(String key) { + final var query = em.createNamedQuery("TransicionEstado.findByState", TransicionEstado.class); + query.setParameter("val", key); + final var r = query.getSingleResult(); + return MyMapper.INSTANCE.convert(r); + } + + @Override + public StateHistory find(Long id) { + final var e = em.find(TransicionEstado.class, id); + return MyMapper.INSTANCE.convert(e); + } + + @Override + public List<StateHistory> findAll() { + final var query = em.createNamedQuery("TransicionEstado.findAll", TransicionEstado.class); + final List<TransicionEstado> 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/statehistory/StateHistoryDaoLocal.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDaoLocal.java new file mode 100644 index 0000000..1dcc26e --- /dev/null +++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDaoLocal.java @@ -0,0 +1,11 @@ +package uy.edu.fing.tse.central.db.dao.statehistory; + +import uy.edu.fing.tse.central.db.dao.GenericDao; +import uy.edu.fing.tse.dto.StateHistory; + +import javax.ejb.Local; + +@Local +public interface StateHistoryDaoLocal extends GenericDao<StateHistory> { + +} 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 c2acb88..13ef31d 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 @@ -87,6 +87,11 @@ public final class Hecho { public void setHistory(List<TransicionEstado> history) { this.history = history; + if (history != null) { + for (TransicionEstado te : history) { + te.setFact(this); + } + } } public void addHistory(TransicionEstado history) { 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 cb972dd..766bd11 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 @@ -4,6 +4,10 @@ import javax.persistence.*; import java.util.Date; @Entity +@NamedQueries({ + @NamedQuery(name = "TransicionEstado.findAll", query = "select r from TransicionEstado r"), + @NamedQuery(name = "TransicionEstado.findByState", query = "select r from TransicionEstado r inner join r.state as s where s.value = :val") +}) public class TransicionEstado { @Id @@ -51,7 +55,6 @@ public class TransicionEstado { } public void setFact(Hecho fact) { - fact.addHistory(this); this.fact = fact; } diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/StateHistory.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/StateHistory.java index a168a32..b5d2080 100644 --- a/central-dto/src/main/java/uy/edu/fing/tse/dto/StateHistory.java +++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/StateHistory.java @@ -10,7 +10,7 @@ public final class StateHistory implements Serializable { private Long id; private State state; private User user; - private Date date; + private Date date = new Date(); public Long getId() { return id; diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java index 6e2060b..4963b8b 100644 --- a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java +++ b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java @@ -14,15 +14,15 @@ public interface Business extends Serializable { List<Fact> listarHechos(); - void altaHecho(Fact fact); + Fact altaHecho(Fact fact); - void altaRol(Role role); + Role altaRol(Role role); - void altaEstado(State state); + State altaEstado(State state); List<Role> listarRoles(); - void altaCalificacion(Score e); + Score altaCalificacion(Score e); List<State> listarEstados(); } 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 5eb2964..0213171 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 @@ -8,6 +8,7 @@ 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; import uy.edu.fing.tse.central.db.dao.state.StateDaoLocal; +import uy.edu.fing.tse.central.db.dao.statehistory.StateHistoryDaoLocal; import uy.edu.fing.tse.central.db.dao.user.UserDaoLocal; import uy.edu.fing.tse.dto.*; @@ -33,6 +34,8 @@ public class BusinessBean implements BusinessLocal, BusinessRemote { private ScoreDaoLocal calificaciones; @EJB private CategoryDaoLocal categorias; + @EJB + private StateHistoryDaoLocal transiciones; @Override @@ -46,14 +49,7 @@ public class BusinessBean implements BusinessLocal, BusinessRemote { } @Override - public List<Fact> listarHechos() { - return hechos.findAll(); - } - - @Override - public void altaHecho(Fact fact) { - final var history = fact.getHistory(); - fact.setHistory(null); + public Fact altaHecho(Fact fact) { final var state = estados.find(fact.getActualState().getValue()); fact.setActualState(state); @@ -68,30 +64,42 @@ public class BusinessBean implements BusinessLocal, BusinessRemote { fact.setScore(score); } - final var fact1 = hechos.create(fact); - LOG.info(""); - //hechos.find(fact.getTitle()); + + for (StateHistory sh : fact.getHistory()) { + final var u = usuarios.find(sh.getUser().getMail()); + sh.setUser(u); + + final var s = estados.find(sh.getState().getValue()); + sh.setState(s); + } + + return hechos.create(fact); } @Override - public void altaEstado(State state) { - estados.create(state); + public State altaEstado(State state) { + return estados.create(state); } @Override - public void altaRol(Role role) { - roles.create(role); + public Role altaRol(Role role) { + return roles.create(role); } @Override - public List<Role> listarRoles() { - return roles.findAll(); + public Score altaCalificacion(Score e) { + return calificaciones.create(e); } @Override - public void altaCalificacion(Score e) { - calificaciones.create(e); + public List<Fact> listarHechos() { + return hechos.findAll(); + } + + @Override + public List<Role> listarRoles() { + return roles.findAll(); } @Override 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 f5a9896..58e0c4b 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 @@ -170,9 +170,8 @@ public class Config { sh.setState(actualState); sh.setDate(new Date()); UserBO u = new UserBO(); - u.setPassword("admin"); + u.setMail("admin"); sh.setUser(u); - //sh.setFact(fact); fact.addHistory(sh); negocio.altaHecho(fact); } -- GitLab