SimpleHorseService.java 3.21 KB
Newer Older
1 2 3
package at.ac.tuwien.sepm.assignment.individual.service.impl;

import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
4
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
5
import at.ac.tuwien.sepm.assignment.individual.persistence.FileDao;
6 7 8 9 10 11 12 13 14
import at.ac.tuwien.sepm.assignment.individual.persistence.HorseDao;
import at.ac.tuwien.sepm.assignment.individual.service.HorseService;
import at.ac.tuwien.sepm.assignment.individual.util.ValidationException;
import at.ac.tuwien.sepm.assignment.individual.util.Validator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
15
import org.springframework.web.multipart.MultipartFile;
16

17
import java.io.IOException;
18
import java.lang.invoke.MethodHandles;
19 20
import java.util.List;
import java.util.Map;
21 22 23 24

@Service
public class SimpleHorseService implements HorseService {
    private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
25 26
    private final HorseDao horseJdbcDao;
    private final FileDao horseFileDao;
27 28 29
    private final Validator validator;

    @Autowired
30 31 32
    public SimpleHorseService(HorseDao horseJdbcDao, FileDao horseFileDao, Validator validator) {
        this.horseJdbcDao = horseJdbcDao;
        this.horseFileDao = horseFileDao;
33 34 35 36 37
        this.validator = validator;
    }

    @Override
    public Horse findOneById(Long id) {
38
        LOGGER.debug("findOneById({})", id);
39
        return horseJdbcDao.findOneById(id);
40 41
    }

42 43
    @Override
    public List<Horse> getAll() throws NotFoundException {
44
        LOGGER.debug("getAll()");
45 46 47 48 49
        return horseJdbcDao.getAll();
    }

    @Override
    public List<Horse> getFiltered(Map<String, String> filters) throws NotFoundException, ValidationException {
50
        LOGGER.debug("getFiltered({})", filters.entrySet());
51 52 53 54
        this.validator.validateHorseFilter(filters);
        return horseJdbcDao.getFiltered(filters);
    }

55 56 57
    @Override
    public Horse addHorse(Horse horse) throws ValidationException, DataAccessException {
        this.validator.validateNewHorse(horse);
58
        LOGGER.debug("addHorse({})", horse.toString());
59 60 61
        return horseJdbcDao.addHorse(horse);
    }

62
    @Override
63
    public Horse updateHorse(Horse horse) throws ValidationException, DataAccessException, IOException {
64
        this.validator.validateUpdateHorse(horse);
65
        LOGGER.debug("updateHorse({})", horse.toString());
66 67 68
        return horseJdbcDao.updateHorse(horse);
    }

69 70
    @Override
    public void deleteHorse(Long id) throws NotFoundException, DataAccessException, IOException {
71
        LOGGER.debug("deleteHorse({})", id);
72 73 74
        horseJdbcDao.deleteHorse(id);
    }

75 76 77
    @Override
    public void saveImage(MultipartFile img) throws ValidationException, IOException {
        this.validator.validateHorseImage(img);
78
        LOGGER.debug("saveImage({})", img.getName());
79
        horseFileDao.save(img);
80
    }
81 82 83 84

    @Override
    public byte[] getImage(String path) throws IOException, ValidationException {
        this.validator.validateImageRequest(path);
85
        LOGGER.debug("getImage({})", path);
86 87
        return horseFileDao.get(path);
    }
88
}