Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,34 @@
<artifactId>mysql-connector-j</artifactId>
<version>8.1.0</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version> <!-- Mettez à jour la version si nécessaire -->
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.2</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.4</version>
</dependency>



<!-- ==== REST API ==== -->
Expand Down Expand Up @@ -84,6 +112,19 @@
<version>2.2.15</version>
</dependency>

<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2-jakarta</artifactId>
<version>2.2.15</version>
</dependency>

<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2-servlet-initializer-v2</artifactId>
<version>2.2.15</version>
</dependency>


</dependencies>
<build>
<defaultGoal>install</defaultGoal>
Expand Down
6 changes: 3 additions & 3 deletions run-hsqldb-server.bat
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
cd data

java -cp ..\dependency\hsqldb-2.5.1.jar org.hsqldb.Server
mkdir data
cd data
java -cp ..\target\dependency\hsqldb-2.7.2.jar org.hsqldb.Server
2 changes: 1 addition & 1 deletion run-hsqldb-server.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
mvn dependency:copy-dependencies
cd data
java -cp ../target/dependency/hsqldb-2.5.1.jar org.hsqldb.Server
java -cp ../target/dependency/hsqldb-2.7.2.jar org.hsqldb.Server
2 changes: 1 addition & 1 deletion show-hsqldb.bat
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
java jar dependency\hsqldb-2.5.1.jar
java -jar target\dependency\hsqldb-2.7.2.jar


5 changes: 2 additions & 3 deletions src/main/java/fr/istic/taa/jaxrs/RestServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,12 @@

/**
* RESTfull microservice, based on JAX-RS and JBoss Undertow
*
*/
public class RestServer {

private static final Logger logger = Logger.getLogger(RestServer.class.getName());

public static void main( String[] args ) {
public static void main(String[] args) {

UndertowJaxrsServer ut = new UndertowJaxrsServer();

Expand All @@ -23,7 +22,7 @@ public static void main( String[] args ) {

ut.start(
Undertow.builder()
.addHttpListener(8080, "localhost")
.addHttpListener(8090, "localhost")

);

Expand Down
39 changes: 21 additions & 18 deletions src/main/java/fr/istic/taa/jaxrs/TestApplication.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
/**
* JBoss, Home of Professional Open Source
* Copyright Red Hat, Inc., and individual contributors.
*
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Expand All @@ -16,29 +16,32 @@
*/
package fr.istic.taa.jaxrs;

import java.util.HashSet;
import java.util.Set;

import fr.istic.taa.jaxrs.rest.PetResource;
import fr.istic.taa.jaxrs.rest.*;
import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource;
import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application;

import java.util.HashSet;
import java.util.Set;

@ApplicationPath("/")
public class TestApplication extends Application {


@Override
public Set<Class<?>> getClasses() {

final Set<Class<?>> clazzes = new HashSet<Class<?>>();

clazzes.add(OpenApiResource.class);
clazzes.add(PetResource.class);
// clazzes.add(AcceptHeaderOpenApiResource.class);


return clazzes;
final Set<Class<?>> resources = new HashSet<>();
resources.add(OpenApiResource.class);
resources.add(SwaggerResource.class);
resources.add(UserResource.class);
resources.add(TicketResource.class);
resources.add(StatusResource.class);
resources.add(TagResource.class);
resources.add(FeatureResource.class);
resources.add(BugResource.class);
resources.add(RoleResource.class);
resources.add(CorsFilter.class);
return resources;
}

}
11 changes: 11 additions & 0 deletions src/main/java/fr/istic/taa/jaxrs/dao/BugDAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package fr.istic.taa.jaxrs.dao;

import fr.istic.taa.jaxrs.dao.generic.AbstractJpaDao;
import fr.istic.taa.jaxrs.domain.Bug;

public class BugDAO extends AbstractJpaDao<Long, Bug> {

public BugDAO() {
setClazz(Bug.class);
}
}
11 changes: 11 additions & 0 deletions src/main/java/fr/istic/taa/jaxrs/dao/FeatureDAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package fr.istic.taa.jaxrs.dao;

import fr.istic.taa.jaxrs.dao.generic.AbstractJpaDao;
import fr.istic.taa.jaxrs.domain.Feature;

public class FeatureDAO extends AbstractJpaDao<Long, Feature> {

public FeatureDAO() {
setClazz(Feature.class);
}
}
12 changes: 12 additions & 0 deletions src/main/java/fr/istic/taa/jaxrs/dao/RoleDAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package fr.istic.taa.jaxrs.dao;

import fr.istic.taa.jaxrs.dao.generic.AbstractJpaDao;
import fr.istic.taa.jaxrs.domain.Role;
import fr.istic.taa.jaxrs.domain.Status;

public class RoleDAO extends AbstractJpaDao<Long, Role> {
public RoleDAO() {
setClazz(Role.class);
}

}
11 changes: 11 additions & 0 deletions src/main/java/fr/istic/taa/jaxrs/dao/StatusDAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package fr.istic.taa.jaxrs.dao;

import fr.istic.taa.jaxrs.dao.generic.AbstractJpaDao;
import fr.istic.taa.jaxrs.domain.Status;

public class StatusDAO extends AbstractJpaDao<Long, Status> {

public StatusDAO() {
setClazz(Status.class);
}
}
11 changes: 11 additions & 0 deletions src/main/java/fr/istic/taa/jaxrs/dao/TagDAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package fr.istic.taa.jaxrs.dao;

import fr.istic.taa.jaxrs.dao.generic.AbstractJpaDao;
import fr.istic.taa.jaxrs.domain.Tag;

public class TagDAO extends AbstractJpaDao<Long, Tag> {

public TagDAO() {
setClazz(Tag.class);
}
}
11 changes: 11 additions & 0 deletions src/main/java/fr/istic/taa/jaxrs/dao/TicketDAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package fr.istic.taa.jaxrs.dao;

import fr.istic.taa.jaxrs.dao.generic.AbstractJpaDao;
import fr.istic.taa.jaxrs.domain.Ticket;

public class TicketDAO extends AbstractJpaDao<Long, Ticket> {

public TicketDAO() {
setClazz(Ticket.class);
}
}
11 changes: 11 additions & 0 deletions src/main/java/fr/istic/taa/jaxrs/dao/UserDAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package fr.istic.taa.jaxrs.dao;

import fr.istic.taa.jaxrs.dao.generic.AbstractJpaDao;
import fr.istic.taa.jaxrs.domain.User;

public class UserDAO extends AbstractJpaDao<Long, User> {

public UserDAO() {
setClazz(User.class);
}
}
136 changes: 84 additions & 52 deletions src/main/java/fr/istic/taa/jaxrs/dao/generic/AbstractJpaDao.java
Original file line number Diff line number Diff line change
@@ -1,60 +1,92 @@
package fr.istic.taa.jaxrs.dao.generic;

import java.io.Serializable;
import java.util.List;

import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityTransaction;
import jakarta.persistence.Query;

public abstract class AbstractJpaDao<K, T extends Serializable> implements IGenericDao<K, T> {

private Class<T> clazz;

protected EntityManager entityManager;

public AbstractJpaDao() {
this.entityManager = EntityManagerHelper.getEntityManager();
}

public void setClazz(Class<T> clazzToSet) {
this.clazz = clazzToSet;
}

public T findOne(K id) {
return entityManager.find(clazz, id);
}

public List<T> findAll() {
return entityManager.createQuery("select e from " + clazz.getName() + " as e",clazz).getResultList();
}

public void save(T entity) {
EntityTransaction t = this.entityManager.getTransaction();
t.begin();
entityManager.persist(entity);
t.commit();

}

public T update(final T entity) {
EntityTransaction t = this.entityManager.getTransaction();
t.begin();
T res = entityManager.merge(entity);
t.commit();
return res;

}

public void delete(T entity) {
EntityTransaction t = this.entityManager.getTransaction();
t.begin();
entityManager.remove(entity);
t.commit();
import java.io.Serializable;
import java.util.List;

}
public abstract class AbstractJpaDao<K, T extends Serializable> implements IGenericDao<K, T> {

public void deleteById(K entityId) {
T entity = findOne(entityId);
delete(entity);
}
private Class<T> clazz;

protected EntityManager entityManager;

public AbstractJpaDao() {
this.entityManager = EntityManagerHelper.getEntityManager();
}

public void setClazz(Class<T> clazzToSet) {
this.clazz = clazzToSet;
}

public T findOne(K id) {
return entityManager.find(clazz, id);
}

public List<T> findAll() {
return entityManager.createQuery("select e from " + clazz.getName() + " as e", clazz).getResultList();
}

public void deleteAll() {
EntityTransaction t = this.entityManager.getTransaction();
t.begin();
entityManager.createQuery("DELETE FROM " + clazz.getName()).executeUpdate();
t.commit();
}


public void save(T entity) {
EntityTransaction t = this.entityManager.getTransaction();
t.begin();
entityManager.persist(entity);
t.commit();

}

public T update(final T entity) {
EntityTransaction t = this.entityManager.getTransaction();
t.begin();
T res = entityManager.merge(entity);
t.commit();
return res;

}

public void delete(T entity) {
EntityTransaction t = this.entityManager.getTransaction();
t.begin();
entityManager.remove(entity);
t.commit();

}

public void deleteById(K entityId) {
T entity = findOne(entityId);
delete(entity);
}

public T findByEmailAndPassword(String email, String password) {
Query query = entityManager.createQuery("SELECT u FROM " + clazz.getName() + " u WHERE u.email = :email AND u.password = :password");
query.setParameter("email", email);
query.setParameter("password", password);
List<T> results = query.getResultList();
if (!results.isEmpty()) {
return results.get(0); // Supposant qu'il n'y a qu'un seul utilisateur avec cet email et ce mot de passe
} else {
return null; // Aucun utilisateur trouvé avec ces identifiants
}
}

public T findByRoleString(String role) {
Query query = entityManager.createQuery("SELECT u FROM " + clazz.getName() + " u WHERE u.roleString = :role");
query.setParameter("role", role);
List<T> results = query.getResultList();
if (!results.isEmpty()) {
return results.get(0); // Supposant qu'il n'y a qu'un seul utilisateur avec cet email et ce mot de passe
} else {
return null; // Aucun utilisateur trouvé avec ces identifiants
}
}
}
Loading