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.CommentRepository; import java.util.LinkedList; 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; @Override @Transactional public Comment add(Owner owner, Animal animal, String text) { if(owner == null) throw new IllegalArgumentException("Owner cannot be null"); if(animal == null) throw new IllegalArgumentException("Animal Cannot be null"); if(text == null) throw new IllegalArgumentException("Text cannot be null"); Comment comment = new Comment(); comment.setReporter(owner); comment.setAnimal(animal); comment.setMessage(text); commentRepository.save(comment); return comment; } @Override @Transactional public void delete(Comment comment) { if(comment == null) throw new IllegalArgumentException("comment cannot be null"); if(comment.getId() == null) throw new IllegalArgumentException("Comment doesn't exists"); commentRepository.delete(comment); } @Override @Transactional(readOnly = true) public List findByAnimal(Animal animal) { if(animal == null) throw new IllegalArgumentException("Animal cannot be null"); if(animal.getId() == null) throw new IllegalArgumentException("Animal doesn't exists"); return commentRepository.findByAnimal(animal); } @Override @Transactional(readOnly = true) public List findByReporter(Owner reporter) { if(reporter == null) throw new IllegalArgumentException("reporter cannot be null"); if(reporter.getId() == null) throw new IllegalArgumentException("reporter doesn't exists"); return commentRepository.findByReporter(reporter); } @Override @Transactional(readOnly = true) public List findByOwner(Owner owner) { if(owner == null) throw new IllegalArgumentException("owner cannot be null"); if(owner.getId() == null) throw new IllegalArgumentException("owner doesn't exists"); List animalsOfOwner = owner.getAnimals(); List comments = new LinkedList<>(); for(Animal a : animalsOfOwner){ comments.addAll(a.getComments()); } return comments; } }