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; import fr.plil.sio.examen.repositories.AnimalRepository; import fr.plil.sio.examen.repositories.CommentRepository; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * TODO: complete all these methods */ @Service public class CommentServiceImpl implements CommentService { @Autowired private CommentRepository commentRepository; @Autowired private AnimalRepository animalRepository; @Override @Transactional public Comment add(Owner owner, Animal animal, String text) { if(animal== null) { 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"); } Comment comment = new Comment(); comment.setAnimal(animal); comment.setReporter(owner); comment.setMessage(text); commentRepository.save(comment); return comment; } @Override @Transactional public void delete(Comment comment) { if(comment==null){ throw new IllegalArgumentException("comment must be not null"); } if(commentRepository.findByMessage(comment.getMessage()).size()==0){ throw new IllegalArgumentException("Comment not in database"); } commentRepository.delete(comment); } @Override @Transactional(readOnly = true) public List findByAnimal(Animal animal) { if(animal == null){ throw new IllegalArgumentException("animal must be not null"); } return commentRepository.findByAnimal(animal); } @Override @Transactional(readOnly = true) public List findByReporter(Owner reporter) { if(reporter == null){ throw new IllegalArgumentException("reporter must be not null"); } return commentRepository.findByReporter(reporter); } @Override @Transactional(readOnly = true) public List findByOwner(Owner owner) { 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 listAnimals = animalRepository.findByOwner(owner); //Création d'une liste de commentaire vide pour les y ajouter List listComments = new ArrayList(); //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; } }