Blame view

src/main/java/fr/plil/sio/examen/services/CommentServiceImpl.java 3.79 KB
589e1ad3   jcartign   First version
1
2
3
4
5
  package fr.plil.sio.examen.services;

  

  import fr.plil.sio.examen.api.Animal;

  import fr.plil.sio.examen.api.Comment;

  import fr.plil.sio.examen.api.Owner;

5fd5c185   rvangrev   Correction des Mé...
6
7
8
  import fr.plil.sio.examen.repositories.AnimalRepository;

  import fr.plil.sio.examen.repositories.CommentRepository;

  import java.util.ArrayList;

589e1ad3   jcartign   First version
9
  import java.util.List;

5fd5c185   rvangrev   Correction des Mé...
10
  import org.springframework.beans.factory.annotation.Autowired;

589e1ad3   jcartign   First version
11
12
13
14
15
16
17
18
19
  import org.springframework.stereotype.Service;

  import org.springframework.transaction.annotation.Transactional;

  

  /**

   * TODO: complete all these methods

   */

  @Service

  public class CommentServiceImpl implements CommentService {

  

5fd5c185   rvangrev   Correction des Mé...
20
21
22
23
24
25
      @Autowired

      private CommentRepository commentRepository;

      

      @Autowired

      private AnimalRepository animalRepository;

      

589e1ad3   jcartign   First version
26
27
28
      @Override

      @Transactional

      public Comment add(Owner owner, Animal animal, String text) {

d23d96d2   rvangrev   Dernier commit
29
30
31
          

          //Tests sur les paramètres

          if(animal== null) {

5fd5c185   rvangrev   Correction des Mé...
32
33
34
35
36
37
38
39
              throw new IllegalArgumentException("name must be not null");

          }

          if(owner == null) {

              throw new IllegalArgumentException("owner must be not null");

          }

          if(text == null){

              throw new IllegalArgumentException("text must be not null");

          }

d23d96d2   rvangrev   Dernier commit
40
41
          

          //Création de l'object Comment

5fd5c185   rvangrev   Correction des Mé...
42
43
44
45
46
          Comment comment = new Comment();

          comment.setAnimal(animal);

          comment.setReporter(owner);

          comment.setMessage(text);

          

d23d96d2   rvangrev   Dernier commit
47
          //On le sauvegarde

5fd5c185   rvangrev   Correction des Mé...
48
          commentRepository.save(comment);

d23d96d2   rvangrev   Dernier commit
49
          //Et one le return

5fd5c185   rvangrev   Correction des Mé...
50
          return comment;

589e1ad3   jcartign   First version
51
52
53
54
55
      }

  

      @Override

      @Transactional

      public void delete(Comment comment) {

d23d96d2   rvangrev   Dernier commit
56
57
          

          //Tests sur les paramètres

5fd5c185   rvangrev   Correction des Mé...
58
59
60
          if(comment==null){

             throw new IllegalArgumentException("comment must be not null");

          }

d23d96d2   rvangrev   Dernier commit
61
          //Si pas de messages avec le meme texte alors le commentaire n'est pas en base

5fd5c185   rvangrev   Correction des Mé...
62
          if(commentRepository.findByMessage(comment.getMessage()).size()==0){

d23d96d2   rvangrev   Dernier commit
63
64
              //On lance donc une exception

              throw new IllegalArgumentException("Comment not in database");

5fd5c185   rvangrev   Correction des Mé...
65
66
          }

         

d23d96d2   rvangrev   Dernier commit
67
68
          //On le supprime si pas d'exception ci dessus

          commentRepository.delete(comment);

589e1ad3   jcartign   First version
69
70
71
72
73
      }

  

      @Override

      @Transactional(readOnly = true)

      public List<Comment> findByAnimal(Animal animal) {

5fd5c185   rvangrev   Correction des Mé...
74
75
76
          if(animal == null){

              throw new IllegalArgumentException("animal must be not null");

          }

d23d96d2   rvangrev   Dernier commit
77
          //Appel de la méthode findByAnimal de la classe CommentRepository

5fd5c185   rvangrev   Correction des Mé...
78
          return commentRepository.findByAnimal(animal);

589e1ad3   jcartign   First version
79
80
81
82
83
      }

  

      @Override

      @Transactional(readOnly = true)    

      public List<Comment> findByReporter(Owner reporter) {

5fd5c185   rvangrev   Correction des Mé...
84
85
86
          if(reporter == null){

              throw new IllegalArgumentException("reporter must be not null");

          }

d23d96d2   rvangrev   Dernier commit
87
          //Appel de la méthode findByReporter de la classe CommentRepository

5fd5c185   rvangrev   Correction des Mé...
88
          return commentRepository.findByReporter(reporter); 

589e1ad3   jcartign   First version
89
90
91
92
93
      }

  

      @Override

      @Transactional(readOnly = true)    

      public List<Comment> findByOwner(Owner owner) {

5fd5c185   rvangrev   Correction des Mé...
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
          if(owner == null){

              throw new IllegalArgumentException("owner must be not null");

          }

          //On récupère la liste de tous les animaux de l'owner

          List<Animal> listAnimals = animalRepository.findByOwner(owner);

          

          //Création d'une liste de commentaire vide pour les y ajouter

          List<Comment> listComments = new ArrayList<Comment>();

          

          //Parcours de la liste des animaux de l'owner

          for(Animal animal : listAnimals){

              //Ajout à la liste des commentaires sur l'animal en cours

              listComments.addAll(commentRepository.findByAnimal(animal));

          }

          

          //On retourne la liste de commentaires

          return listComments;

589e1ad3   jcartign   First version
111
112
113
      }

      

  }