Compare commits

...

4 Commits

@ -26,6 +26,10 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
@ -38,6 +42,22 @@
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>

@ -1,11 +1,10 @@
package SAE.ApiREST.WebService.controller;
import SAE.ApiREST.WebService.exception.TeacherAdvice;
import SAE.ApiREST.WebService.exception.TeacherException;
import SAE.ApiREST.WebService.model.Teacher;
import SAE.ApiREST.WebService.service.ITeacherService;
import jakarta.persistence.Entity;
import SAE.ApiREST.WebService.service.TeacherService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.hateoas.CollectionModel;
import org.springframework.hateoas.EntityModel;
import org.springframework.http.HttpStatus;
@ -13,9 +12,6 @@ import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.print.attribute.standard.Media;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
@ -24,19 +20,21 @@ import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
@Controller
@RequestMapping("/ProfWebService")
public class TeacherController {
@Autowired
private ITeacherService iTeacherServ;
private TeacherService teacherServ;
public TeacherController(ITeacherService iserv) {
this.iTeacherServ = iserv;
}
/*public void setiTeacherServ(TeacherService iTeacherS) {
this.teacherServ = iTeacherS;
}*/
@GetMapping(value = "/all", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody CollectionModel<Teacher> getAllTeacher(){
return CollectionModel.of(
iTeacherServ.getAllTeacher(),
teacherServ.getAllTeacher(),
linkTo(methodOn(TeacherController.class).getAllTeacher()).withSelfRel());
}
@PostMapping(value = "addTeacher",produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
@ -49,7 +47,7 @@ public class TeacherController {
}
@GetMapping(value = "/getid/{id}")
public @ResponseBody EntityModel<Teacher> getTeachById(@PathVariable("id") Integer id){
Teacher tt = iTeacherServ.getTeacherById(id);
Teacher tt = teacherServ.getTeacherById(id);
if( tt == null ){
throw new TeacherException("No teacher found for this id !");
}
@ -59,7 +57,7 @@ public class TeacherController {
}
@GetMapping(value = "/getusername/{username}")
public @ResponseBody EntityModel<Teacher> getTeachByUsername(@PathVariable("username") String username) {
Teacher tt = iTeacherServ.getTeacherByUsername(username);
Teacher tt = teacherServ.getTeacherByUsername(username);
if (tt == null) {
throw new TeacherException("No teacher found for this username");
}
@ -69,7 +67,7 @@ public class TeacherController {
}
@GetMapping( value = "/getmail/{mail}" )
public @ResponseBody EntityModel<Teacher> getTeachByMail(@PathVariable("mail") String mail) {
Teacher tt = iTeacherServ.getTeacherByMail(mail);
Teacher tt = teacherServ.getTeacherByMail(mail);
if( tt == null ) {
throw new TeacherException("No teacher found for this mail");
}
@ -79,7 +77,7 @@ public class TeacherController {
}
@GetMapping( value = "/getdate/{date}" )
public @ResponseBody Teacher getTeachByDate(@PathVariable("date") String date) {
Teacher tt = iTeacherServ.getTeacherByMail(date);
Teacher tt = teacherServ.getTeacherByMail(date);
if( tt == null ) {
throw new TeacherException("No teacher found for this mail");
}
@ -90,14 +88,14 @@ public class TeacherController {
if( username == "" ){
throw new TeacherException("Username provided for modification is empty");
}
iTeacherServ.modifyUsername(tt,username);
teacherServ.modifyUsername(tt,username);
return EntityModel.of(tt,
linkTo(methodOn(TeacherController.class).modifyTeachUsername(username,tt)).withSelfRel(),
linkTo(methodOn(TeacherController.class).getAllTeacher()).withRel("all"));
}
@DeleteMapping( value = "delete")
public @ResponseBody EntityModel<List<Teacher>> deleteTeacher(Integer id){
return EntityModel.of(iTeacherServ.deleteTeacher(id),
return EntityModel.of(teacherServ.deleteTeacher(id),
linkTo(methodOn(TeacherController.class).deleteTeacher(id)).withSelfRel(),
linkTo(methodOn(TeacherController.class).getAllTeacher()).withRel("all"));
}

@ -3,16 +3,18 @@ package SAE.ApiREST.WebService.model;
import java.time.LocalDate;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.*;
import lombok.*;
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Article {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Integer id;
String title;
String URL;
@ -22,80 +24,5 @@ public class Article {
Integer type;
// ArrayList<Keyword> keywords = new ArrayList<>();
public Article() {}
public Article(String title, String URL, LocalDate dateAdded, LocalDate datePublished, Boolean visibility, Integer type) {
this.id = 1;
this.title = title;
this.URL = URL;
this.dateAdded = dateAdded;
this.datePublished = datePublished;
this.isVisible = visibility;
this.type = type;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public String getURL() {
return this.URL;
}
public void setURL(String URL) {
this.URL = URL;
}
public LocalDate getDateAdded() {
return this.dateAdded;
}
public void setDateAdded(LocalDate dateAdded) {
this.dateAdded = dateAdded;
}
public LocalDate getDatePublished() {
return this.datePublished;
}
public void setDatePublished(LocalDate datePublished) {
this.datePublished = datePublished;
}
public Boolean isVisible() {
return this.isVisible;
}
public void setVisibility(Boolean isVisible) {
this.isVisible = isVisible;
}
public Integer getType() {
return this.type;
}
public void setType(Integer type) {
this.type = type;
}
/*
public List<Keyword> getKeywords() {
return this.keywords;
}
public void setKeywords(List<Keyword> keywords) {
this.keywords = keywords;
}
*/
}

@ -1,70 +1,26 @@
package SAE.ApiREST.WebService.model;
import jakarta.persistence.*;
import lombok.*;
import org.hibernate.annotations.Cascade;
import java.util.ArrayList;
import java.util.List;
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Collect {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private final long isbn = 0;
@Column(name = "articles")
@JoinColumn(name = "articles") @OneToMany(cascade = CascadeType.DETACH)
private ArrayList<Article> articles;
@Column(name = "name")
private String name;
@Column(name = "teacher")
@JoinColumn(name = "teacher") @ManyToOne
private Teacher teacher;
public Collect(String name, Teacher teacher){
this.name = name;
this.teacher = teacher;
this.articles = new ArrayList<Article>();
}
public Collect() {
}
// region Article
public long getId(){
return isbn;
}
// endregion
// region Article
public List<Article> getAllArticles(){
return articles;
}
// region addArticle
public void addArticle(Article article){
if(!this.articles.contains(article)){
this.articles.add(article);
}
}
public void addArticles(List<Article> articles){
for(Article article : articles){
addArticle(article);
}
}
// endregion
// region removeArticle
public void removeArticle(Article article){
this.articles.remove(article);
}
public void removeArticles(List<Article> articles){
this.articles.removeAll(articles);
}
// endregion
// endregion
// region name
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
// endregion
}

@ -1,60 +1,23 @@
package SAE.ApiREST.WebService.model;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.*;
import lombok.*;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Teacher {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private LocalDate date;
private String mail;
private String username;
public Teacher() {
}
public Teacher(Integer id, String date, String mail, String username) {
this.id = id;
this.date = LocalDate.parse(date, DateTimeFormatter.ofPattern("dd-MM-yyyy"));
this.mail = mail;
this.username = username;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public LocalDate getDate() {
return date;
}
public void setDate(String date) {
this.date = LocalDate.parse(date, DateTimeFormatter.ofPattern("dd-MM-yyyy"));
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}

@ -0,0 +1,4 @@
package SAE.ApiREST.WebService.repository;
public interface IArticleRepository {
}

@ -0,0 +1,4 @@
package SAE.ApiREST.WebService.repository;
public interface ICollectRepository {
}

@ -0,0 +1,19 @@
package SAE.ApiREST.WebService.repository;
import SAE.ApiREST.WebService.model.Teacher;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.time.LocalDate;
import java.util.List;
@Repository
public interface ITeacherRepository extends JpaRepository< Teacher, Integer> {
Teacher findByusername(String username);
Teacher findBymail(String mail);
}

@ -7,18 +7,18 @@ import SAE.ApiREST.WebService.model.Article;
public interface IArticleService {
// region GET
public List<Article> getAllArticles();
List<Article> getAllArticles();
Article getArticlesById(Integer id);
public List<Article> getArticlesByTitle(String title);
public List<Article> getArticlesByType(Integer type);
public List<Article> getVisibleArticles();
public List<Article> getInvisibleArticles();
public List<Article> getArticlesAddedBefore(String dateAdded);
public List<Article> getArticlesAddedAfter(String dateAdded);
public List<Article> getArticlesAddedBetween(String beginning, String end);
public List<Article> getArticlesPublishedBefore(String datePublished);
public List<Article> getArticlesPublishedAfter(String datePublished);
public List<Article> getArticlesPublishedBetween(String beginning, String end);
List<Article> getArticlesByTitle(String title);
List<Article> getArticlesByType(Integer type);
List<Article> getVisibleArticles();
List<Article> getInvisibleArticles();
List<Article> getArticlesAddedBefore(String dateAdded);
List<Article> getArticlesAddedAfter(String dateAdded);
List<Article> getArticlesAddedBetween(String beginning, String end);
List<Article> getArticlesPublishedBefore(String datePublished);
List<Article> getArticlesPublishedAfter(String datePublished);
List<Article> getArticlesPublishedBetween(String beginning, String end);
// endregion
}

@ -5,17 +5,17 @@ import SAE.ApiREST.WebService.model.Article;
import java.util.List;
public interface ICollectionService{
public List<Collect> getAllCollections();
public Collect getCollectionById(long isbn);
public List<Collect> getAllCollectionsByName(String name);
public void deleteColletionById(long isbn);
public void deleteColletionByName(String name);
public void deleteAllColletionByName(String name);
public void addCollection(Collect collection);
public void addCollections(List<Collect> collection);
public void modifyCollectionName(Collect collection, String name);
public void modifyCollectionNameById(long isbn, String name);
public List<Article> getAllArticles(Collect collection);
public void addArticle(Collect collection, Article article);
public void deleteArticle(Collect collection, Article article);
List<Collect> getAllCollections();
Collect getCollectionById(long isbn);
List<Collect> getAllCollectionsByName(String name);
void deleteColletionById(long isbn);
void deleteColletionByName(String name);
void deleteAllColletionByName(String name);
void addCollection(Collect collection);
void addCollections(List<Collect> collection);
void modifyCollectionName(Collect collection, String name);
void modifyCollectionNameById(long isbn, String name);
List<Article> getAllArticles(Collect collection);
void addArticle(Collect collection, Article article);
void deleteArticle(Collect collection, Article article);
}

@ -1,18 +0,0 @@
package SAE.ApiREST.WebService.service;
import SAE.ApiREST.WebService.Response;
import SAE.ApiREST.WebService.model.Teacher;
import java.time.LocalDate;
import java.util.List;
public interface ITeacherService {
public List<Teacher> getAllTeacher();
public Teacher getTeacherById(Integer id);
public Teacher getTeacherByUsername(String username);
public Teacher getTeacherByMail(String mail);
public Teacher getTeacherByDate(String date);
public List<Teacher> addTeacher(Teacher t);
public List<Teacher> deleteTeacher(Integer id);
public Response modifyUsername(Teacher t, String newUsername);
}

@ -17,15 +17,15 @@ public class StubArticleService implements IArticleService {
public List<Article> getAllArticles() {
List<Article> articles = new ArrayList<>();
articles.add(new Article(
articles.add(new Article(null,
"toi",
"azezeaea",
LocalDate.now().minusMonths(1),
LocalDate.now().minusMonths(2),
true,
true,
1)
);
articles.add(new Article(
articles.add(new Article(null,
"moi",
"zaeaeaeazeza",
LocalDate.now().minusMonths(2),
@ -33,7 +33,7 @@ public class StubArticleService implements IArticleService {
false,
1)
);
articles.add(new Article(
articles.add(new Article(null,
"eux",
"erfdhdh",
LocalDate.now().minusMonths(3),
@ -41,7 +41,7 @@ public class StubArticleService implements IArticleService {
true,
1)
);
articles.add(new Article(
articles.add(new Article(null,
"tout ceux qui le veulent",
"azersdfgg",
LocalDate.now().minusMonths(4),
@ -55,7 +55,7 @@ public class StubArticleService implements IArticleService {
@Override
public Article getArticlesById(Integer id) {
return new Article(
return new Article(1,
"azeaeaze",
"azezeaea",
LocalDate.now().minusMonths(1),
@ -68,7 +68,7 @@ public class StubArticleService implements IArticleService {
public List<Article> getArticlesByTitle(String title) {
List<Article> articles = new ArrayList<>();
articles.add(new Article(
articles.add(new Article(1,
title,
"azezeaea",
LocalDate.now().minusMonths(1),
@ -84,7 +84,7 @@ public class StubArticleService implements IArticleService {
public List<Article> getArticlesByType(Integer type) {
List<Article> articles = new ArrayList<>();
articles.add(new Article(
articles.add(new Article(1,
"aeazeazeaz",
"azezeaea",
LocalDate.now().minusMonths(1),
@ -100,7 +100,7 @@ public class StubArticleService implements IArticleService {
public List<Article> getVisibleArticles() {
List<Article> articles = new ArrayList<>();
articles.add(new Article(
articles.add(new Article(1,
"toi",
"azezeaea",
LocalDate.now().minusMonths(1),
@ -116,7 +116,7 @@ public class StubArticleService implements IArticleService {
public List<Article> getInvisibleArticles() {
List<Article> articles = new ArrayList<>();
articles.add(new Article(
articles.add(new Article(1,
"toi",
"azezeaea",
LocalDate.now().minusMonths(1),
@ -132,7 +132,7 @@ public class StubArticleService implements IArticleService {
public List<Article> getArticlesAddedBefore(String dateAdded) {
List<Article> articles = new ArrayList<>();
articles.add(new Article(
articles.add(new Article(null,
"toi",
"azezeaea",
LocalDate.parse(dateAdded, DateTimeFormatter.ISO_DATE).minusMonths(1),
@ -148,7 +148,7 @@ public class StubArticleService implements IArticleService {
public List<Article> getArticlesAddedAfter(String dateAdded) {
List<Article> articles = new ArrayList<>();
articles.add(new Article(
articles.add(new Article(null,
"toi",
"azezeaea",
LocalDate.parse(dateAdded, DateTimeFormatter.ISO_DATE).plusMonths(1),
@ -164,7 +164,7 @@ public class StubArticleService implements IArticleService {
public List<Article> getArticlesAddedBetween(String beginning, String end) {
List<Article> articles = new ArrayList<>();
articles.add(new Article(
articles.add(new Article(null,
"toi",
"azezeaea",
LocalDate.parse(beginning, DateTimeFormatter.ISO_DATE),
@ -180,7 +180,7 @@ public class StubArticleService implements IArticleService {
public List<Article> getArticlesPublishedBefore(String datePublished) {
List<Article> articles = new ArrayList<>();
articles.add(new Article(
articles.add(new Article(null,
"toi",
"azezeaea",
LocalDate.now().minusMonths(1),
@ -196,7 +196,7 @@ public class StubArticleService implements IArticleService {
public List<Article> getArticlesPublishedAfter(String datePublished) {
List<Article> articles = new ArrayList<>();
articles.add(new Article(
articles.add(new Article(null,
"toi",
"azezeaea",
LocalDate.now().minusMonths(1),
@ -212,7 +212,7 @@ public class StubArticleService implements IArticleService {
public List<Article> getArticlesPublishedBetween(String beginning, String end) {
List<Article> articles = new ArrayList<>();
articles.add(new Article(
articles.add(new Article(null,
"toi",
"azezeaea",
LocalDate.now().minusMonths(1),

@ -1,4 +1,5 @@
package SAE.ApiREST.WebService.service;
import SAE.ApiREST.WebService.controller.ArticleControler;
import SAE.ApiREST.WebService.model.Collect;
import java.util.ArrayList;
@ -19,7 +20,7 @@ public class StubCollectionService implements ICollectionService {
// region GET
public Collect getCollectionById(long isbn){
for(Collect collection : this.collections){
if(collection.getId() == isbn) {
if(collection.getIsbn() == isbn) {
return collection;
}
}
@ -76,14 +77,16 @@ public class StubCollectionService implements ICollectionService {
// endregion
// region Article
public List<Article> getAllArticles(Collect collect){
return collect.getAllArticles();
public List<Article> getAllArticles(Collect collect)
{
return collect.getArticles();
}
public void addArticle(Collect collect, Article article){
collect.addArticle(article);
List<Article> lA = collect.getArticles();
lA.add(article);
collect.setArticles((ArrayList<Article>) lA);
}
public void deleteArticle(Collect collect, Article article){
collect.removeArticle(article);
collect.getArticles().remove(article);
}
// endregion
}

@ -0,0 +1,77 @@
package SAE.ApiREST.WebService.service;
import SAE.ApiREST.WebService.Response;
import SAE.ApiREST.WebService.model.Teacher;
import SAE.ApiREST.WebService.repository.ITeacherRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
@Service
public class TeacherService {
private final ITeacherRepository teachRep;
public TeacherService(ITeacherRepository teachRep) {
this.teachRep = teachRep;
}
public List<Teacher> getAllTeacher() {
return teachRep.findAll();
}
public Teacher getTeacherById(Integer id) {
return teachRep.getReferenceById(id);
}
public Teacher getTeacherByUsername(String username) {
return teachRep.findByusername(username);
}
public Teacher getTeacherByMail(String mail) {
return teachRep.findBymail(mail);
}
/*
public Teacher getTeacherByDate(String date) {
LocalDate d = LocalDate.parse(date, DateTimeFormatter.ofPattern("dd-MM-yyyy"));
return teachRep.findByDate(d);
}*/
public List<Teacher> addTeacher(Teacher t) {
List<Teacher> lT = getAllTeacher();
lT.add(t);
return lT;
}
public List<Teacher> deleteTeacher(Integer id) {
List<Teacher> lT = getAllTeacher();
lT.remove(getTeacherById(id));
return lT;
}
public Response modifyUsername(Teacher t, String newUsername) {
t.setUsername(newUsername);
return new Response(t.getId(), String.format("Username changed for {id}", t.getId()));
}
}

@ -1,74 +0,0 @@
package SAE.ApiREST.WebService.service;
import SAE.ApiREST.WebService.Response;
import SAE.ApiREST.WebService.exception.TeacherException;
import SAE.ApiREST.WebService.model.Teacher;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@Service
public class TeacherServiceStub implements ITeacherService {
//todo() recevoir collections, ajouter collections, supprimer collections
@Override
public List<Teacher> getAllTeacher() {
List<Teacher> allTeacher = new ArrayList<Teacher>();
allTeacher.add(new Teacher(1, "12-01-2023", "aline.alipres@gmail.com", "MsGarconManque"));
allTeacher.add(new Teacher(2, "20-08-2023", "Viviane.Delvecchio@gmail.com", "MmeMath"));
return allTeacher;
}
@Override
public Teacher getTeacherById(Integer id) {
return new Teacher(id, "10-01-2021", "exemple.gmail.com", "testest");
}
@Override
public Teacher getTeacherByUsername(String username) { return new Teacher(12, "30-08-2020", "dadadou@gmail.com", username); }
@Override
public Teacher getTeacherByMail(String mail) {
return new Teacher(20, "24-12-2021", mail, "tructruc");
}
//Todo() Before date, After date, between date
@Override
public Teacher getTeacherByDate(String date) {
return new Teacher(5, date, "doudouda@gmail.com", "username");
}
@Override
public List<Teacher> addTeacher(Teacher t) {
List<Teacher> lteach = new ArrayList<Teacher>();
lteach.add(t);
return lteach;
}
@Override
public List<Teacher> deleteTeacher(Integer id) {
List<Teacher> allTeacher = new ArrayList<Teacher>();
allTeacher.add(new Teacher(1,"12-01-2023", "aline.alipres@gmail.com", "MsGarconManque"));
allTeacher.add(new Teacher(2, "20-08-2023", "Viviane.Delvecchio@gmail.com", "MmeMath"));
if(allTeacher.remove(getTeacherById(id))){
return allTeacher;
} else {
throw new TeacherException(String.format("Teacher {id} isn't removed", id));
}
}
public Response modifyUsername(Teacher t, String newUsername){
t.setUsername(newUsername);
return new Response(t.getId(),String.format("This user %s has changed username", t.getMail()));
}
}

@ -1 +1,24 @@
/*
#Todo adapter a une de nos BD choisir le langage bd
spring.datasource.url=nomBD:mysql://localhost:8889/XXXXXX?createDatabaseIfNotExist=true
spring.datasource.username=test
spring.datasource.password=test
spring.jpa.open-in-view=false
# Hibernate properties
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true
#spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
# Logging SQL statements (optional, but useful for debugging)
spring.jpa.show-sql=true
*/
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

Loading…
Cancel
Save