From e3c09ef4ed152129c7d8e1c078935dd12c7b5d59 Mon Sep 17 00:00:00 2001 From: Thomas Rubini <74205383+ThomasRubini@users.noreply.github.com> Date: Thu, 2 Jun 2022 14:29:06 +0200 Subject: [PATCH] =?UTF-8?q?DAO=20JPA=20ajout=C3=A9=20+=20DAO=20JDBC=20supp?= =?UTF-8?q?rim=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/univ_amu/iut/dao/DAO.java | 2 +- .../java/fr/univ_amu/iut/dao/DAOAcademie.java | 2 + .../fr/univ_amu/iut/dao/DAODiscipline.java | 4 +- .../fr/univ_amu/iut/dao/DAOTypeActeur.java | 6 -- .../fr/univ_amu/iut/dao/DAOTypeRessource.java | 6 -- .../univ_amu/iut/dao/factory/DAOFactory.java | 2 - .../iut/dao/factory/DAOFactoryProducer.java | 2 - .../fr/univ_amu/iut/dao/factory/DAOType.java | 3 +- .../univ_amu/iut/dao/jdbc/DAOFactoryJDBC.java | 51 ------------ .../iut/dao/jdbc/DataAccessException.java | 52 ------------- .../iut/dao/jdbc/ResultSetIterator.java | 78 ------------------- .../iut/dao/jdbc/ResultSetStreamer.java | 18 ----- .../iut/dao/jdbc/rowmappers/RowMapper.java | 8 -- .../univ_amu/iut/dao/jpa/DAOAcademieJPA.java | 34 ++++++++ .../fr/univ_amu/iut/dao/jpa/DAOActeurJPA.java | 29 +++++++ .../univ_amu/iut/dao/jpa/DAOBaseClassJPA.java | 55 +++++++++++++ .../iut/dao/jpa/DAODisciplineJPA.java | 29 +++++++ .../univ_amu/iut/dao/jpa/DAOFactoryJPA.java | 36 +++++---- .../iut/dao/jpa/DAORegionAcademiqueJPA.java | 29 +++++++ .../univ_amu/iut/dao/jpa/DAORessourceJPA.java | 29 +++++++ .../iut/dao/jpa/DAOThematiqueJPA.java | 29 +++++++ .../fr/univ_amu/iut/dao/jpa/DAOUsageJPA.java | 29 +++++++ .../java/fr/univ_amu/iut/model/Academie.java | 5 +- .../java/fr/univ_amu/iut/model/Acteur.java | 8 +- .../fr/univ_amu/iut/model/Discipline.java | 24 +++++- .../univ_amu/iut/model/RegionAcademique.java | 20 ++++- .../java/fr/univ_amu/iut/model/Ressource.java | 16 +++- .../fr/univ_amu/iut/model/TypeActeur.java | 29 ------- .../java/fr/univ_amu/iut/model/Usage.java | 20 ++--- src/main/resources/META-INF/persistence.xml | 6 +- 30 files changed, 362 insertions(+), 299 deletions(-) delete mode 100644 src/main/java/fr/univ_amu/iut/dao/DAOTypeActeur.java delete mode 100644 src/main/java/fr/univ_amu/iut/dao/DAOTypeRessource.java delete mode 100644 src/main/java/fr/univ_amu/iut/dao/jdbc/DAOFactoryJDBC.java delete mode 100644 src/main/java/fr/univ_amu/iut/dao/jdbc/DataAccessException.java delete mode 100644 src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetIterator.java delete mode 100644 src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetStreamer.java delete mode 100644 src/main/java/fr/univ_amu/iut/dao/jdbc/rowmappers/RowMapper.java create mode 100644 src/main/java/fr/univ_amu/iut/dao/jpa/DAOAcademieJPA.java create mode 100644 src/main/java/fr/univ_amu/iut/dao/jpa/DAOActeurJPA.java create mode 100644 src/main/java/fr/univ_amu/iut/dao/jpa/DAOBaseClassJPA.java create mode 100644 src/main/java/fr/univ_amu/iut/dao/jpa/DAODisciplineJPA.java create mode 100644 src/main/java/fr/univ_amu/iut/dao/jpa/DAORegionAcademiqueJPA.java create mode 100644 src/main/java/fr/univ_amu/iut/dao/jpa/DAORessourceJPA.java create mode 100644 src/main/java/fr/univ_amu/iut/dao/jpa/DAOThematiqueJPA.java create mode 100644 src/main/java/fr/univ_amu/iut/dao/jpa/DAOUsageJPA.java delete mode 100644 src/main/java/fr/univ_amu/iut/model/TypeActeur.java diff --git a/src/main/java/fr/univ_amu/iut/dao/DAO.java b/src/main/java/fr/univ_amu/iut/dao/DAO.java index 39acfbc..0c6ed00 100644 --- a/src/main/java/fr/univ_amu/iut/dao/DAO.java +++ b/src/main/java/fr/univ_amu/iut/dao/DAO.java @@ -31,7 +31,7 @@ public interface DAO { * * @param obj Objet à insérer dans la base */ - T insert(T obj); + boolean insert(T obj); /** * Permet de mettre à jour les données d'un tuple dans la base à partir d'un diff --git a/src/main/java/fr/univ_amu/iut/dao/DAOAcademie.java b/src/main/java/fr/univ_amu/iut/dao/DAOAcademie.java index 286b796..ac910cb 100644 --- a/src/main/java/fr/univ_amu/iut/dao/DAOAcademie.java +++ b/src/main/java/fr/univ_amu/iut/dao/DAOAcademie.java @@ -3,4 +3,6 @@ package fr.univ_amu.iut.dao; import fr.univ_amu.iut.model.Academie; public interface DAOAcademie extends DAO{ + + Academie getByCode(String code); } diff --git a/src/main/java/fr/univ_amu/iut/dao/DAODiscipline.java b/src/main/java/fr/univ_amu/iut/dao/DAODiscipline.java index 0beefbf..a4bfc16 100644 --- a/src/main/java/fr/univ_amu/iut/dao/DAODiscipline.java +++ b/src/main/java/fr/univ_amu/iut/dao/DAODiscipline.java @@ -1,4 +1,6 @@ package fr.univ_amu.iut.dao; -public interface DAODiscipline extends DAO{ +import fr.univ_amu.iut.model.Discipline; + +public interface DAODiscipline extends DAO{ } diff --git a/src/main/java/fr/univ_amu/iut/dao/DAOTypeActeur.java b/src/main/java/fr/univ_amu/iut/dao/DAOTypeActeur.java deleted file mode 100644 index 36b4609..0000000 --- a/src/main/java/fr/univ_amu/iut/dao/DAOTypeActeur.java +++ /dev/null @@ -1,6 +0,0 @@ -package fr.univ_amu.iut.dao; - -import fr.univ_amu.iut.model.TypeActeur; - -public interface DAOTypeActeur extends DAO{ -} diff --git a/src/main/java/fr/univ_amu/iut/dao/DAOTypeRessource.java b/src/main/java/fr/univ_amu/iut/dao/DAOTypeRessource.java deleted file mode 100644 index e8acad1..0000000 --- a/src/main/java/fr/univ_amu/iut/dao/DAOTypeRessource.java +++ /dev/null @@ -1,6 +0,0 @@ -package fr.univ_amu.iut.dao; - -import fr.univ_amu.iut.model.TypeRessource; - -public interface DAOTypeRessource extends DAO { -} diff --git a/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactory.java b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactory.java index 0660a7d..7d4ff0f 100644 --- a/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactory.java +++ b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactory.java @@ -9,7 +9,5 @@ public interface DAOFactory { DAORegionAcademique createDAORegionAcademique(); DAORessource createDAORessource(); DAOThematique createDAOThematique(); - DAOTypeActeur createDAOTypeActeur(); - DAOTypeRessource createDAOTypeRessource(); DAOUsage createDAOUsage(); } diff --git a/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java index 14e4869..8b1899e 100644 --- a/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java +++ b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java @@ -1,13 +1,11 @@ package fr.univ_amu.iut.dao.factory; -import fr.univ_amu.iut.dao.jdbc.DAOFactoryJDBC; import fr.univ_amu.iut.dao.jpa.DAOFactoryJPA; public class DAOFactoryProducer { public static DAOFactory getFactory(DAOType type) { return switch (type){ case JPA -> new DAOFactoryJPA(); - case JDBC -> new DAOFactoryJDBC(); default -> throw new IllegalArgumentException(); }; } diff --git a/src/main/java/fr/univ_amu/iut/dao/factory/DAOType.java b/src/main/java/fr/univ_amu/iut/dao/factory/DAOType.java index c2fbe86..c3665e3 100644 --- a/src/main/java/fr/univ_amu/iut/dao/factory/DAOType.java +++ b/src/main/java/fr/univ_amu/iut/dao/factory/DAOType.java @@ -1,6 +1,5 @@ package fr.univ_amu.iut.dao.factory; public enum DAOType { - JPA, - JDBC + JPA } diff --git a/src/main/java/fr/univ_amu/iut/dao/jdbc/DAOFactoryJDBC.java b/src/main/java/fr/univ_amu/iut/dao/jdbc/DAOFactoryJDBC.java deleted file mode 100644 index 4ae8194..0000000 --- a/src/main/java/fr/univ_amu/iut/dao/jdbc/DAOFactoryJDBC.java +++ /dev/null @@ -1,51 +0,0 @@ -package fr.univ_amu.iut.dao.jdbc; - -import fr.univ_amu.iut.dao.*; -import fr.univ_amu.iut.dao.factory.DAOFactory; - -public class DAOFactoryJDBC implements DAOFactory { - @Override - public DAOAcademie createDAOAcademie() { - return null; - } - - @Override - public DAOActeur createDAOActeur() { - return null; - } - - @Override - public DAODiscipline createDAODiscipline() { - return null; - } - - @Override - public DAORegionAcademique createDAORegionAcademique() { - return null; - } - - @Override - public DAORessource createDAORessource() { - return null; - } - - @Override - public DAOThematique createDAOThematique() { - return null; - } - - @Override - public DAOTypeActeur createDAOTypeActeur() { - return null; - } - - @Override - public DAOTypeRessource createDAOTypeRessource() { - return null; - } - - @Override - public DAOUsage createDAOUsage() { - return null; - } -} diff --git a/src/main/java/fr/univ_amu/iut/dao/jdbc/DataAccessException.java b/src/main/java/fr/univ_amu/iut/dao/jdbc/DataAccessException.java deleted file mode 100644 index ca6dfce..0000000 --- a/src/main/java/fr/univ_amu/iut/dao/jdbc/DataAccessException.java +++ /dev/null @@ -1,52 +0,0 @@ -package fr.univ_amu.iut.dao.jdbc; - -import java.sql.SQLException; - -public class DataAccessException extends RuntimeException { - - public int errorCode; - public String state; - - public DataAccessException() { - } - - public DataAccessException(String message) { - super(message); - } - - public DataAccessException(String message, Throwable cause) { - super(message, cause); - getCodeAndState(cause); - } - - public DataAccessException(Throwable cause) { - super(cause); - } - - public DataAccessException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } - - private void getCodeAndState(Throwable cause) { - if (cause instanceof SQLException) { - errorCode = ((SQLException) cause).getErrorCode(); - state = ((SQLException) cause).getSQLState(); - } else { - errorCode = -1; - state = cause.getMessage(); - } - } - - public int getErrorCode() { - return errorCode; - } - - public String getState() { - return state; - } - - @Override - public String toString() { - return getClass().getName() + '[' + errorCode + ',' + state + "]: " + getLocalizedMessage(); - } -} \ No newline at end of file diff --git a/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetIterator.java b/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetIterator.java deleted file mode 100644 index c942695..0000000 --- a/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetIterator.java +++ /dev/null @@ -1,78 +0,0 @@ -package fr.univ_amu.iut.dao.jdbc; - -import fr.univ_amu.iut.dao.jdbc.rowmappers.RowMapper; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Iterator; - -public class ResultSetIterator implements Iterator { - - private ResultSet rs; - private PreparedStatement ps; - private Connection connection; - private RowMapper rowMapper; - private String sql; - - public ResultSetIterator(Connection connection, String sql, RowMapper rowMapper) { - assert connection != null; - assert sql != null; - this.connection = connection; - this.sql = sql; - this.rowMapper = rowMapper; - } - - public void init() { - try { - ps = connection.prepareStatement(sql); - rs = ps.executeQuery(); - - } catch (SQLException e) { - close(); - throw new DataAccessException(e); - } - } - - @Override - public boolean hasNext() { - if (ps == null) { - init(); - } - try { - boolean hasMore = rs.next(); - if (!hasMore) { - close(); - } - return hasMore; - } catch (SQLException e) { - close(); - throw new DataAccessException(e); - } - - } - - private void close() { - try { - rs.close(); - try { - ps.close(); - } catch (SQLException e) { - //nothing we can do here - } - } catch (SQLException e) { - //nothing we can do here - } - } - - @Override - public T next() { - try { - return rowMapper.mapRow(rs, 1); - } catch (SQLException e) { - close(); - throw new DataAccessException(e); - } - } -} \ No newline at end of file diff --git a/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetStreamer.java b/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetStreamer.java deleted file mode 100644 index 3de4f13..0000000 --- a/src/main/java/fr/univ_amu/iut/dao/jdbc/ResultSetStreamer.java +++ /dev/null @@ -1,18 +0,0 @@ -package fr.univ_amu.iut.dao.jdbc; - -import fr.univ_amu.iut.dao.jdbc.rowmappers.RowMapper; - -import java.sql.Connection; -import java.util.Spliterators; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; - -public class ResultSetStreamer { - public static Stream stream(final Connection connection, - final String sql, - final RowMapper rowMapper) { - return StreamSupport - .stream(Spliterators.spliteratorUnknownSize( - new ResultSetIterator<>(connection, sql, rowMapper), 0), false); - } -} diff --git a/src/main/java/fr/univ_amu/iut/dao/jdbc/rowmappers/RowMapper.java b/src/main/java/fr/univ_amu/iut/dao/jdbc/rowmappers/RowMapper.java deleted file mode 100644 index 830e09d..0000000 --- a/src/main/java/fr/univ_amu/iut/dao/jdbc/rowmappers/RowMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package fr.univ_amu.iut.dao.jdbc.rowmappers; - -import java.sql.ResultSet; -import java.sql.SQLException; - -public interface RowMapper { - T mapRow(ResultSet rs, int rowNum) throws SQLException; -} diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOAcademieJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOAcademieJPA.java new file mode 100644 index 0000000..7731f51 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOAcademieJPA.java @@ -0,0 +1,34 @@ +package fr.univ_amu.iut.dao.jpa; + +import fr.univ_amu.iut.dao.DAOAcademie; +import fr.univ_amu.iut.model.Academie; +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; + +import java.util.List; + +// NOT JPA. No idea how to achieve it else +public class DAOAcademieJPA extends DAOBaseClassJPA implements DAOAcademie { + + public DAOAcademieJPA(EntityManager entityManager) { + super(entityManager); + } + + @Override + public List findAll() { + TypedQuery query = entityManager.createNamedQuery("Academie.findAll", Academie.class); + return query.getResultList(); + } + + @Override + public Academie getById(int id) { + throw new UnsupportedOperationException("use getByCode()"); + } + + @Override + public Academie getByCode(String code) { + TypedQuery query = entityManager.createNamedQuery("Academie.findByCode", Academie.class); + query.setParameter("acaCode", code); + return query.getSingleResult(); + } +} diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOActeurJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOActeurJPA.java new file mode 100644 index 0000000..268fc08 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOActeurJPA.java @@ -0,0 +1,29 @@ +package fr.univ_amu.iut.dao.jpa; + +import fr.univ_amu.iut.dao.DAOActeur; +import fr.univ_amu.iut.model.Acteur; +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; + +import java.util.List; + +// NOT JPA. No idea how to achieve it else +public class DAOActeurJPA extends DAOBaseClassJPA implements DAOActeur { + + public DAOActeurJPA(EntityManager entityManager) { + super(entityManager); + } + + @Override + public List findAll() { + TypedQuery query = entityManager.createNamedQuery("Acteur.findAll", Acteur.class); + return query.getResultList(); + } + + @Override + public Acteur getById(int id) { + TypedQuery query = entityManager.createNamedQuery("Acteur.findById", Acteur.class); + query.setParameter("numEt", id); + return query.getSingleResult(); + } +} diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOBaseClassJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOBaseClassJPA.java new file mode 100644 index 0000000..72ef37b --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOBaseClassJPA.java @@ -0,0 +1,55 @@ +package fr.univ_amu.iut.dao.jpa; + +import fr.univ_amu.iut.dao.DAO; +import jakarta.persistence.EntityManager; + + +// Helper class to reduce code duplication +public abstract class DAOBaseClassJPA implements DAO { + + protected EntityManager entityManager; + + public DAOBaseClassJPA(EntityManager entityManager) { + this.entityManager = entityManager; + } + + public boolean insert(T etudiant) { + try{ + entityManager.getTransaction().begin(); + entityManager.persist(etudiant); + entityManager.getTransaction().commit(); + + return true; + }catch(Exception e){ + e.printStackTrace(); + return false; + } + } + + public boolean update(T obj) { + try { + entityManager.getTransaction().begin(); + entityManager.merge(obj); + entityManager.getTransaction().commit(); + + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + @Override + public boolean delete(T obj) { + try { + entityManager.getTransaction().begin(); + entityManager.remove(obj); + entityManager.getTransaction().commit(); + + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } +} diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAODisciplineJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAODisciplineJPA.java new file mode 100644 index 0000000..515bc62 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAODisciplineJPA.java @@ -0,0 +1,29 @@ +package fr.univ_amu.iut.dao.jpa; + +import fr.univ_amu.iut.dao.DAODiscipline; +import fr.univ_amu.iut.model.Discipline; +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; + +import java.util.List; + +// NOT JPA. No idea how to achieve it else +public class DAODisciplineJPA extends DAOBaseClassJPA implements DAODiscipline { + + public DAODisciplineJPA(EntityManager entityManager) { + super(entityManager); + } + + @Override + public List findAll() { + TypedQuery query = entityManager.createNamedQuery("Discipline.findAll", Discipline.class); + return query.getResultList(); + } + + @Override + public Discipline getById(int id) { + TypedQuery query = entityManager.createNamedQuery("Discipline.findById", Discipline.class); + query.setParameter("numEt", id); + return query.getSingleResult(); + } +} diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java index e64a07d..b4d0549 100644 --- a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java @@ -2,51 +2,55 @@ package fr.univ_amu.iut.dao.jpa; import fr.univ_amu.iut.dao.*; import fr.univ_amu.iut.dao.factory.DAOFactory; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; public class DAOFactoryJPA implements DAOFactory { + private EntityManager entityManager; + + public EntityManager getEntityManager() { + if(entityManager == null){ + EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("gestionUsagesPU"); + entityManager = entityManagerFactory.createEntityManager(); + } + return entityManager; + } + @Override public DAOAcademie createDAOAcademie() { - return null; + return new DAOAcademieJPA(getEntityManager()); } @Override public DAOActeur createDAOActeur() { - return null; + return new DAOActeurJPA(getEntityManager()); } @Override public DAODiscipline createDAODiscipline() { - return null; + return new DAODisciplineJPA(getEntityManager()); } @Override public DAORegionAcademique createDAORegionAcademique() { - return null; + return new DAORegionAcademiqueJPA(getEntityManager()); } @Override public DAORessource createDAORessource() { - return null; + return new DAORessourceJPA(getEntityManager()); } @Override public DAOThematique createDAOThematique() { - return null; + return new DAOThematiqueJPA(getEntityManager()); } - @Override - public DAOTypeActeur createDAOTypeActeur() { - return null; - } - - @Override - public DAOTypeRessource createDAOTypeRessource() { - return null; - } @Override public DAOUsage createDAOUsage() { - return null; + return new DAOUsageJPA(getEntityManager()); } } diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAORegionAcademiqueJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAORegionAcademiqueJPA.java new file mode 100644 index 0000000..56ae147 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAORegionAcademiqueJPA.java @@ -0,0 +1,29 @@ +package fr.univ_amu.iut.dao.jpa; + +import fr.univ_amu.iut.dao.DAORegionAcademique; +import fr.univ_amu.iut.model.RegionAcademique; +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; + +import java.util.List; + +// NOT JPA. No idea how to achieve it else +public class DAORegionAcademiqueJPA extends DAOBaseClassJPA implements DAORegionAcademique { + + public DAORegionAcademiqueJPA(EntityManager entityManager) { + super(entityManager); + } + + @Override + public List findAll() { + TypedQuery query = entityManager.createNamedQuery("RegionAcademique.findAll", RegionAcademique.class); + return query.getResultList(); + } + + @Override + public RegionAcademique getById(int id) { + TypedQuery query = entityManager.createNamedQuery("RegionAcademique.findById", RegionAcademique.class); + query.setParameter("numEt", id); + return query.getSingleResult(); + } +} diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAORessourceJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAORessourceJPA.java new file mode 100644 index 0000000..2de03dc --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAORessourceJPA.java @@ -0,0 +1,29 @@ +package fr.univ_amu.iut.dao.jpa; + +import fr.univ_amu.iut.dao.DAORessource; +import fr.univ_amu.iut.model.Ressource; +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; + +import java.util.List; + +// NOT JPA. No idea how to achieve it else +public class DAORessourceJPA extends DAOBaseClassJPA implements DAORessource { + + public DAORessourceJPA(EntityManager entityManager) { + super(entityManager); + } + + @Override + public List findAll() { + TypedQuery query = entityManager.createNamedQuery("Ressource.findAll", Ressource.class); + return query.getResultList(); + } + + @Override + public Ressource getById(int id) { + TypedQuery query = entityManager.createNamedQuery("Ressource.findById", Ressource.class); + query.setParameter("numEt", id); + return query.getSingleResult(); + } +} diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOThematiqueJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOThematiqueJPA.java new file mode 100644 index 0000000..b810ebc --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOThematiqueJPA.java @@ -0,0 +1,29 @@ +package fr.univ_amu.iut.dao.jpa; + +import fr.univ_amu.iut.dao.DAOThematique; +import fr.univ_amu.iut.model.Thematique; +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; + +import java.util.List; + +// NOT JPA. No idea how to achieve it else +public class DAOThematiqueJPA extends DAOBaseClassJPA implements DAOThematique { + + public DAOThematiqueJPA(EntityManager entityManager) { + super(entityManager); + } + + @Override + public List findAll() { + TypedQuery query = entityManager.createNamedQuery("Thematique.findAll", Thematique.class); + return query.getResultList(); + } + + @Override + public Thematique getById(int id) { + TypedQuery query = entityManager.createNamedQuery("Thematique.findById", Thematique.class); + query.setParameter("numEt", id); + return query.getSingleResult(); + } +} diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOUsageJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOUsageJPA.java new file mode 100644 index 0000000..f0827d4 --- /dev/null +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOUsageJPA.java @@ -0,0 +1,29 @@ +package fr.univ_amu.iut.dao.jpa; + +import fr.univ_amu.iut.dao.DAOUsage; +import fr.univ_amu.iut.model.Usage; +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; + +import java.util.List; + +// NOT JPA. No idea how to achieve it else +public class DAOUsageJPA extends DAOBaseClassJPA implements DAOUsage { + + public DAOUsageJPA(EntityManager entityManager) { + super(entityManager); + } + + @Override + public List findAll() { + TypedQuery query = entityManager.createNamedQuery("Usage.findAll", Usage.class); + return query.getResultList(); + } + + @Override + public Usage getById(int id) { + TypedQuery query = entityManager.createNamedQuery("Usage.findById", Usage.class); + query.setParameter("numEt", id); + return query.getSingleResult(); + } +} diff --git a/src/main/java/fr/univ_amu/iut/model/Academie.java b/src/main/java/fr/univ_amu/iut/model/Academie.java index 09c4e01..c971428 100644 --- a/src/main/java/fr/univ_amu/iut/model/Academie.java +++ b/src/main/java/fr/univ_amu/iut/model/Academie.java @@ -4,7 +4,10 @@ import jakarta.persistence.*; import java.util.Collection; import java.util.HashMap; - +@NamedQueries({ + @NamedQuery(name = "Academie.findAll", query = "SELECT p FROM Academie p"), + @NamedQuery(name = "Academie.findByCode", query = "SELECT p FROM Academie p WHERE p.code = :acaCode"), +}) @Entity public class Academie { private final static HashMap INSTANCES = new HashMap<>(); diff --git a/src/main/java/fr/univ_amu/iut/model/Acteur.java b/src/main/java/fr/univ_amu/iut/model/Acteur.java index 70a7e2f..dff5df5 100644 --- a/src/main/java/fr/univ_amu/iut/model/Acteur.java +++ b/src/main/java/fr/univ_amu/iut/model/Acteur.java @@ -18,12 +18,10 @@ public class Acteur { @Embedded Coordonees coordonees; - @ManyToOne(cascade = CascadeType.ALL) - TypeActeur typeActeur; + String typeActeur; public Acteur() { coordonees = new Coordonees(); - typeActeur = new TypeActeur(); } public int getId() { @@ -43,7 +41,7 @@ public class Acteur { } public String getTypeActeur() { - return typeActeur.nom; + return typeActeur; } public void setNom(String nom) { @@ -55,7 +53,7 @@ public class Acteur { } public void setTypeActeur(String typeActeur) { - this.typeActeur.setNom(typeActeur); + this.typeActeur = typeActeur; } public int getNumero() { diff --git a/src/main/java/fr/univ_amu/iut/model/Discipline.java b/src/main/java/fr/univ_amu/iut/model/Discipline.java index c3816d6..ed13da4 100644 --- a/src/main/java/fr/univ_amu/iut/model/Discipline.java +++ b/src/main/java/fr/univ_amu/iut/model/Discipline.java @@ -5,8 +5,14 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import jakarta.persistence.Transient; +import java.util.ArrayList; +import java.util.List; + @Entity public class Discipline { + + private static List INSTANCES = new ArrayList<>(); + @Transient public static Discipline Toutes = new Discipline("Toutes disciplines"); @Transient @@ -30,13 +36,29 @@ public class Discipline { String nom; public Discipline() { - + INSTANCES.add(this); } Discipline(String nom) { + this(); this.nom = nom; } + public static List toutes() { + return INSTANCES; + } + + public static Discipline getById(int id){ + for(Discipline discipline : Discipline.toutes()) { + if (discipline.id == id) return discipline; + } + return null; + } + + public int getId(){ + return id; + } + public String getNom() { return nom; } diff --git a/src/main/java/fr/univ_amu/iut/model/RegionAcademique.java b/src/main/java/fr/univ_amu/iut/model/RegionAcademique.java index 7b56674..09fb25f 100644 --- a/src/main/java/fr/univ_amu/iut/model/RegionAcademique.java +++ b/src/main/java/fr/univ_amu/iut/model/RegionAcademique.java @@ -2,8 +2,14 @@ package fr.univ_amu.iut.model; import jakarta.persistence.*; +import java.util.ArrayList; +import java.util.List; + @Entity public class RegionAcademique { + + private static List INSTANCES = new ArrayList<>(); + @Transient public static RegionAcademique AuvergneRhoneAlpes = new RegionAcademique("Région académique Auvergne-Rhône-Alpes"); @Transient @@ -46,11 +52,23 @@ public class RegionAcademique { int id; String nom; + public RegionAcademique() { + INSTANCES.add(this); + } public RegionAcademique(String nom) { + this(); this.nom = nom; } - public RegionAcademique() { + public static List toutes(){ + return INSTANCES; + } + + public static RegionAcademique getById(int id){ + for(RegionAcademique regionAcademique : INSTANCES){ + if(regionAcademique.id == id)return regionAcademique; + } + return null; } public int getId() { diff --git a/src/main/java/fr/univ_amu/iut/model/Ressource.java b/src/main/java/fr/univ_amu/iut/model/Ressource.java index 79891d7..daacb85 100644 --- a/src/main/java/fr/univ_amu/iut/model/Ressource.java +++ b/src/main/java/fr/univ_amu/iut/model/Ressource.java @@ -1,17 +1,21 @@ package fr.univ_amu.iut.model; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; -import jakarta.persistence.ManyToOne; +import jakarta.persistence.*; import java.net.URL; +@NamedQueries({ + @NamedQuery(name = "Ressource.findAll", query = "SELECT p FROM Ressource p"), + @NamedQuery(name = "Ressource.findById", query = "SELECT p FROM Ressource p WHERE p.id = :id"), +}) @Entity public class Ressource { @Id @GeneratedValue int id; + + String nomRessource; + @ManyToOne TypeRessource typeRessource; URL lienRessource; @@ -32,4 +36,8 @@ public class Ressource { public URL getLienRessource() { return lienRessource; } + + public String getNomRessource() { + return nomRessource; + } } diff --git a/src/main/java/fr/univ_amu/iut/model/TypeActeur.java b/src/main/java/fr/univ_amu/iut/model/TypeActeur.java deleted file mode 100644 index 48ec991..0000000 --- a/src/main/java/fr/univ_amu/iut/model/TypeActeur.java +++ /dev/null @@ -1,29 +0,0 @@ -package fr.univ_amu.iut.model; - -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; - -@Entity -public class TypeActeur { - @Id - @GeneratedValue - int id; - String nom; - - public TypeActeur(String nom) { - this.nom = nom; - } - - public TypeActeur() { - - } - - public String getNom() { - return nom; - } - - public void setNom(String nom) { - this.nom = nom; - } -} diff --git a/src/main/java/fr/univ_amu/iut/model/Usage.java b/src/main/java/fr/univ_amu/iut/model/Usage.java index 7356a95..5cc93e2 100644 --- a/src/main/java/fr/univ_amu/iut/model/Usage.java +++ b/src/main/java/fr/univ_amu/iut/model/Usage.java @@ -3,9 +3,12 @@ package fr.univ_amu.iut.model; import jakarta.persistence.*; import java.util.ArrayList; -import java.util.Collection; import java.util.List; +@NamedQueries({ + @NamedQuery(name = "Usage.findAll", query = "SELECT p FROM Usage p"), + @NamedQuery(name = "Usage.findById", query = "SELECT p FROM Usage p WHERE p.id = :id"), +}) @Entity public class Usage { @Id @@ -24,8 +27,8 @@ public class Usage { @Enumerated(EnumType.STRING) Niveau niveau; - @OneToMany(cascade = CascadeType.ALL) - List academies = new ArrayList<>(); + @OneToOne + Academie academie; @OneToMany(cascade = CascadeType.ALL) List ressources = new ArrayList<>(); @@ -78,15 +81,8 @@ public class Usage { this.niveau = niveau; } - public List getAcademies() { - return academies; - } - - public void addAcademies(Academie ... academies) { - this.academies.addAll(List.of(academies)); - } - public void addAcademies(Collection academies){ - this.academies.addAll(academies); + public Academie getAcademie() { + return academie; } public List getRessources() { diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index 22053c9..27fa393 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -7,9 +7,9 @@ - - - + + +