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 a1cdc8ef963d770f49f315270b77bbb6f04081c5..6e9ac5320b874756df6dd225bcd0d8b0021fb3b7 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 552b319f858b14f32e5286a51207fbd4c388e295..2eff1a822edc4202497db4ac82f3f149606f233b 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 733558353c224306c85eb3cb36a0230821700971..0f10a3bfa1c79212a1d48d70858ac2ae083f17b2 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 0000000000000000000000000000000000000000..7a7011058463cb9a0e02078f55101822bc22ae1a --- /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 0000000000000000000000000000000000000000..1dcc26e41354b8d5b6227b5026b15c71787f2962 --- /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 c2acb8870ecc5b1db1727416f8e598c49d23557b..13ef31d6223dc9dd176bb12ecae7972dafbb926f 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 cb972ddffe343c5122b4fd8174b810ee28a7ca04..766bd11cd33580a4b5f9b0b8ccbc408bb7cc55f0 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 a168a3235f81032d1ac2e4ee6307fb6713b58086..b5d2080af93bdb537686bb439d728fd836f2fb55 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 6e2060bda3a30d987cbc1dbe5df7a25e94320fea..4963b8badcd8f3d9dc889c94b7a7a447110402ee 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 5eb29641b917e0b96ab78c7acd01ce9200c700b2..0213171adea94157993f2ab5e851bde5e769b94c 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 f5a98960e7acae8449147c050944117a4e8703a0..58e0c4bed5bfb6b337146c028ff027c08508d713 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); }