package edu.asu.spring.quadriga.service.workbench.impl;
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;
import edu.asu.spring.quadriga.dao.workbench.IPublicPageDAO;
import edu.asu.spring.quadriga.domain.workbench.IPublicPage;
import edu.asu.spring.quadriga.dto.PublicPageDTO;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
import edu.asu.spring.quadriga.mapper.PublicPageDTOMapper;
import edu.asu.spring.quadriga.service.workbench.IPublicPageManager;
@Service
public class PublicPageManager implements IPublicPageManager {
@Autowired
private IPublicPageDAO publicPageDao;
@Autowired
private PublicPageDTOMapper publicPageDTOMapper;
/**
* {@inheritDoc}
*/
@Override
@Transactional
public void saveOrUpdatePublicPage(IPublicPage publicPage) {
PublicPageDTO publicPageDTO = publicPageDTOMapper.getPublicPageDTO(publicPage);
if (publicPage.getPublicPageId() == null || publicPage.getPublicPageId().trim().isEmpty()) {
publicPageDTO.setPublicpageid(publicPageDao.generateUniqueID());
publicPageDao.saveNewDTO(publicPageDTO);
return;
}
publicPageDao.updateDTO(publicPageDTO);
}
@Override
@Transactional
public List<IPublicPage> retrievePublicPageContent(String projectId) throws QuadrigaStorageException {
List<PublicPageDTO> publicPageDTOs = publicPageDao.getPublicPageDTOsByProjectId(projectId);
List<IPublicPage> publicPageList = new ArrayList<IPublicPage>();
for (PublicPageDTO publicPage : publicPageDTOs) {
IPublicPage publicPageTemp = publicPageDTOMapper.getPublicPage(publicPage);
publicPageList.add(publicPageTemp);
}
return publicPageList;
}
}