/*******************************************************************************
* Copyright (c) 2014 antoniomariasanchez at gmail.com. All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0 which accompanies this distribution, and is
* available at http://www.gnu.org/licenses/gpl.html
*
* Contributors: antoniomaria - initial API and implementation
******************************************************************************/
package net.sf.gazpachoquest.facades.impl;
import net.sf.gazpachoquest.domain.core.Research;
import net.sf.gazpachoquest.domain.user.User;
import net.sf.gazpachoquest.dto.ResearchDTO;
import net.sf.gazpachoquest.dto.UserDTO;
import net.sf.gazpachoquest.dto.support.PageDTO;
import net.sf.gazpachoquest.facades.ResearchFacade;
import net.sf.gazpachoquest.services.ResearchService;
import net.sf.gazpachoquest.types.EntityStatus;
import org.dozer.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Component;
@Component
public class ResearchFacadeImpl implements ResearchFacade {
@Autowired
private Mapper mapper;
@Autowired
@Qualifier("researchServiceImpl")
private ResearchService researchService;
@Autowired
@Qualifier("researchPermissionsAwareServiceImpl")
private ResearchService researchPermissionsAwareServiceImpl;
@Override
public PageDTO<ResearchDTO> findPaginated(Integer pageNumber, Integer size) {
Page<Research> page = researchPermissionsAwareServiceImpl.findPaginated(pageNumber, size);
PageDTO<ResearchDTO> pageDTO = new PageDTO<>();
pageDTO.setNumber(page.getNumber() + 1);
pageDTO.setSize(page.getSize());
pageDTO.setTotalPages(page.getTotalPages());
pageDTO.setTotalElements(page.getTotalElements());
for (Research research : page.getContent()) {
ResearchDTO researchDTO = mapper.map(research, ResearchDTO.class);
pageDTO.addElement(researchDTO);
}
return pageDTO;
}
@Override
public void delete(final Integer id) {
researchService.delete(id);
}
@Override
public ResearchDTO findOne(final Integer id) {
Research entity = researchService.findOne(id);
return mapper.map(entity, ResearchDTO.class);
}
@Override
public ResearchDTO save(final ResearchDTO research) {
Research entity = mapper.map(research, Research.class);
entity = researchService.save(entity);
return mapper.map(entity, ResearchDTO.class);
}
@Override
public void addRespondent(final Integer researchId, UserDTO respondentDTO) {
User respondent = mapper.map(respondentDTO, User.class);
researchService.addRespondent(researchId, respondent);
}
@Override
public void changeStatus(final Integer researchId, EntityStatus newStatus) {
researchService.changeStatus(researchId, newStatus);
}
}