From 1d1e37e344561525f28475784d2f56600c0264d5 Mon Sep 17 00:00:00 2001 From: Falucho <german.faller@pcunix71.fing.edu.uy> Date: Fri, 21 Jun 2019 01:34:35 -0300 Subject: [PATCH] Mapper Funcionando --- central-db/pom.xml | 15 +++-- .../edu/fing/tse/practico/db/DataAccess.java | 15 ----- .../fing/tse/practico/db/DataAccessBean.java | 63 +------------------ .../fing/tse/practico/db/entity/Usuario.java | 2 +- .../fing/tse/practico/db/mapper/MyMapper.java | 61 +++++++++++++++++- .../fing/tse/practico/db/startup/Config.java | 5 +- central-db/src/test/java/.keep | 0 .../tse/practico/db/mapper/MyMapperTest.java | 62 ++++++++++++++++++ .../main/java/uy/edu/fing/tse/dto/User.java | 2 +- 9 files changed, 136 insertions(+), 89 deletions(-) delete mode 100644 central-db/src/test/java/.keep create mode 100644 central-db/src/test/java/uy/edu/fing/tse/practico/db/mapper/MyMapperTest.java diff --git a/central-db/pom.xml b/central-db/pom.xml index 855585b..7d32b52 100644 --- a/central-db/pom.xml +++ b/central-db/pom.xml @@ -50,7 +50,6 @@ <artifactId>mapstruct</artifactId> </dependency> - <!-- Test scope dependencies --> <dependency> <groupId>junit</groupId> @@ -99,10 +98,18 @@ <build> <plugins> <plugin> - <artifactId>maven-surefire-plugin</artifactId> - <version>${version.surefire.plugin}</version> + <artifactId>maven-compiler-plugin</artifactId> + <version>${version.compiler.plugin}</version> + <!-- <source>1.8</source>--> + <!-- <target>1.8</target>--> <configuration> - <skip>true</skip> + <annotationProcessorPaths> + <path> + <groupId>org.mapstruct</groupId> + <artifactId>mapstruct-processor</artifactId> + <version>${org.mapstruct.version}</version> + </path> + </annotationProcessorPaths> </configuration> </plugin> </plugins> diff --git a/central-db/src/main/java/uy/edu/fing/tse/practico/db/DataAccess.java b/central-db/src/main/java/uy/edu/fing/tse/practico/db/DataAccess.java index e8e617a..b60074d 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/practico/db/DataAccess.java +++ b/central-db/src/main/java/uy/edu/fing/tse/practico/db/DataAccess.java @@ -1,21 +1,6 @@ package uy.edu.fing.tse.practico.db; -import uy.edu.fing.tse.dto.NoticiaDTO; -import uy.edu.fing.tse.dto.PublicacionDTO; - -import java.util.List; - public interface DataAccess { - NoticiaDTO alta(final NoticiaDTO noticia); - - PublicacionDTO alta(final PublicacionDTO publicacion); - - NoticiaDTO find(long idNoticia); - - List<NoticiaDTO> getNoticias(); - - List<PublicacionDTO> getPublicaciones(); - public NoticiaDTO addPublicacionToNoticia(final PublicacionDTO pub, final long idNoticia); } diff --git a/central-db/src/main/java/uy/edu/fing/tse/practico/db/DataAccessBean.java b/central-db/src/main/java/uy/edu/fing/tse/practico/db/DataAccessBean.java index e2e4e28..b03f08e 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/practico/db/DataAccessBean.java +++ b/central-db/src/main/java/uy/edu/fing/tse/practico/db/DataAccessBean.java @@ -1,11 +1,5 @@ package uy.edu.fing.tse.practico.db; -import uy.edu.fing.tse.dto.NoticiaDTO; -import uy.edu.fing.tse.dto.PublicacionDTO; -import uy.edu.fing.tse.practico.db.entity.Noticia; -import uy.edu.fing.tse.practico.db.entity.Publicacion; -import uy.edu.fing.tse.practico.db.mapper.MyMapper; - import javax.annotation.PostConstruct; import javax.ejb.Local; import javax.ejb.LocalBean; @@ -13,9 +7,6 @@ import javax.ejb.Remote; import javax.ejb.Singleton; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; -import javax.persistence.TypedQuery; -import java.util.List; -import java.util.stream.Collectors; @Singleton @Local({DataAccessLocal.class}) @@ -23,7 +14,7 @@ import java.util.stream.Collectors; @LocalBean public class DataAccessBean implements DataAccessLocal, DataAccessRemote { - @PersistenceContext(unitName = "practico") + @PersistenceContext(unitName = "central") private EntityManager em; @PostConstruct @@ -31,56 +22,4 @@ public class DataAccessBean implements DataAccessLocal, DataAccessRemote { //Despues del constructor hace esto } - @Override - public NoticiaDTO alta(NoticiaDTO noticia) { - final Noticia newN = em.merge(MyMapper.mapper(noticia)); - em.flush(); - return MyMapper.mapper(newN); - } - - @Override - public PublicacionDTO alta(PublicacionDTO publicacion) { - final Publicacion newP = em.merge(MyMapper.mapper(publicacion)); - em.flush(); - return MyMapper.mapper(newP); - } - - @Override - public NoticiaDTO find(long idNoticia) { - final TypedQuery<Noticia> query = em.createNamedQuery("Noticia.findById", Noticia.class); - query.setParameter("id", idNoticia); - final Noticia result = query.getSingleResult(); - return MyMapper.mapper(result); - } - - @Override - public List<NoticiaDTO> getNoticias() { - final TypedQuery<Noticia> query = em.createNamedQuery("Noticia.findAll", Noticia.class); - return query.getResultList().stream().map(MyMapper::mapper).collect(Collectors.toList()); - } - - @Override - public List<PublicacionDTO> getPublicaciones() { - final TypedQuery<Publicacion> query = em.createNamedQuery("Publicacion.findAll", Publicacion.class); - return query.getResultList().stream().map(MyMapper::mapper).collect(Collectors.toList()); - } - - @Override - public NoticiaDTO addPublicacionToNoticia(final PublicacionDTO pub, final long idNoticia) { - Noticia noticiaManaged = em.find(Noticia.class, idNoticia); - - if (noticiaManaged == null) { - throw new RuntimeException("No existe Noticia"); - } - - Publicacion publicacion = MyMapper.mapper(pub); - publicacion = em.merge(publicacion); - em.flush(); - - noticiaManaged.addPublicacion(publicacion); - noticiaManaged = em.merge(noticiaManaged); - em.flush(); - - return MyMapper.mapper(noticiaManaged); - } } diff --git a/central-db/src/main/java/uy/edu/fing/tse/practico/db/entity/Usuario.java b/central-db/src/main/java/uy/edu/fing/tse/practico/db/entity/Usuario.java index e9b90cf..c80987f 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/practico/db/entity/Usuario.java +++ b/central-db/src/main/java/uy/edu/fing/tse/practico/db/entity/Usuario.java @@ -4,7 +4,7 @@ import javax.persistence.*; @Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -public class Usuario { +public abstract class Usuario { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; diff --git a/central-db/src/main/java/uy/edu/fing/tse/practico/db/mapper/MyMapper.java b/central-db/src/main/java/uy/edu/fing/tse/practico/db/mapper/MyMapper.java index b0c1965..59e05fc 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/practico/db/mapper/MyMapper.java +++ b/central-db/src/main/java/uy/edu/fing/tse/practico/db/mapper/MyMapper.java @@ -2,13 +2,70 @@ package uy.edu.fing.tse.practico.db.mapper; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import uy.edu.fing.tse.practico.db.entity.Hecho; +import uy.edu.fing.tse.dto.*; +import uy.edu.fing.tse.practico.db.entity.*; + +import java.util.List; @Mapper public interface MyMapper { MyMapper INSTANCE = Mappers.getMapper(MyMapper.class); - Hecho convert() + default Usuario convert(User u) { + if (u == null) { + return null; + } else if (u instanceof UserBO) { + return convert((UserBO) u); + } else { + return convert((UserFO) u); + } + } + + default User convert(Usuario u) { + if (u == null) { + return null; + } else if (u instanceof UsuarioBO) { + return convert((UsuarioBO) u); + } else { + return convert((UsuarioFO) u); + } + } + + Hecho convert(Fact f); + + Fact convert(Hecho f); + + UsuarioBO convert(UserBO u); + + UsuarioFO convert(UserFO u); + + UserBO convert(UsuarioBO u); + + UserFO convert(UsuarioFO u); + + Estado convert(State state); + + Calificacion convert(Score score); + + Categoria convert(Category category); + + TransicionEstado convert(StateHistory stateHistory); + + List<TransicionEstado> convertList1(List<StateHistory> list); + + State convert(Estado estado); + + Score convert(Calificacion calificacion); + + Category convert(Categoria categoria); + + StateHistory convert(TransicionEstado transicionEstado); + + List<StateHistory> convertList2(List<TransicionEstado> list); + + Rol convert(Role role); + + Role convert(Rol rol); } diff --git a/central-db/src/main/java/uy/edu/fing/tse/practico/db/startup/Config.java b/central-db/src/main/java/uy/edu/fing/tse/practico/db/startup/Config.java index bb260a0..c14edb1 100644 --- a/central-db/src/main/java/uy/edu/fing/tse/practico/db/startup/Config.java +++ b/central-db/src/main/java/uy/edu/fing/tse/practico/db/startup/Config.java @@ -1,6 +1,5 @@ package uy.edu.fing.tse.practico.db.startup; -import uy.edu.fing.tse.dto.NoticiaDTO; import uy.edu.fing.tse.practico.db.DataAccessBean; import javax.annotation.PostConstruct; @@ -18,9 +17,7 @@ public class Config { @PostConstruct public void start() { - dataAccess.alta(new NoticiaDTO(null, "Primera Noticia", "Esta descripcion es de la noticia")); - dataAccess.alta(new NoticiaDTO(null, "Segunda Noticia", "Se esta escribiendo aun")); - dataAccess.alta(new NoticiaDTO(null, "Extra Extra Noticia", "El coyote se comio al correcaminos, al parecer cambio de proveedor de productos")); + } @PreDestroy diff --git a/central-db/src/test/java/.keep b/central-db/src/test/java/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/central-db/src/test/java/uy/edu/fing/tse/practico/db/mapper/MyMapperTest.java b/central-db/src/test/java/uy/edu/fing/tse/practico/db/mapper/MyMapperTest.java new file mode 100644 index 0000000..1f4e4ea --- /dev/null +++ b/central-db/src/test/java/uy/edu/fing/tse/practico/db/mapper/MyMapperTest.java @@ -0,0 +1,62 @@ +package uy.edu.fing.tse.practico.db.mapper; + +import org.junit.Assert; +import org.junit.Test; +import uy.edu.fing.tse.dto.*; + +public class MyMapperTest { + + @Test + public void convert() { + final var state1 = new State(); + state1.setValue("Nuevo"); + + final var state2 = new State(); + state2.setValue("Viejo"); + + final var category = new Category(); + category.setDescription("La categoria de las frutaas"); + category.setName("Frutero"); + + final var score = new Score(); + score.setValue("Totalmente Falsa"); + + final var role = new Role(); + role.setName("Checker"); + + final var userFO = new UserFO(); + userFO.setMail("faller222@gmail.com"); + + + final var userBO = new UserBO(); + userBO.setMail("admin@gmail.com"); + userBO.setRole(role); + + final var sh1 = new StateHistory(); + sh1.setState(state1); + sh1.setUser(userFO); + + final var sh2 = new StateHistory(); + sh2.setState(state2); + sh2.setUser(userBO); + + final var fact = new Fact(); + fact.setTitle("soy un titulo"); + fact.setDescription("y esta descrip"); + fact.setActualState(state2); + fact.setCategory(category); + fact.setScore(score); + fact.addHistory(sh1); + fact.addHistory(sh2); + + final var convert = MyMapper.INSTANCE.convert(fact); + Assert.assertNotNull(convert); + final var convert2 = MyMapper.INSTANCE.convert(convert); + Assert.assertNotNull(convert2); + + System.out.println("#######################################################\n" + + "#######################################################\n" + + "#######################################################\n"); + + } +} \ No newline at end of file diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/User.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/User.java index fd6c050..7d1445c 100644 --- a/central-dto/src/main/java/uy/edu/fing/tse/dto/User.java +++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/User.java @@ -1,6 +1,6 @@ package uy.edu.fing.tse.dto; -public class User { +public abstract class User { private Long id; private String mail; -- GitLab