package edu.asu.spring.quadriga.mapper.workbench.impl;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import edu.asu.spring.quadriga.dao.workbench.IRetrieveProjectDAO;
import edu.asu.spring.quadriga.domain.dictionary.IDictionary;
import edu.asu.spring.quadriga.domain.factory.workbench.IProjectDictionaryFactory;
import edu.asu.spring.quadriga.domain.proxy.DictionaryProxy;
import edu.asu.spring.quadriga.domain.workbench.IProject;
import edu.asu.spring.quadriga.domain.workbench.IProjectDictionary;
import edu.asu.spring.quadriga.dto.DictionaryDTO;
import edu.asu.spring.quadriga.dto.ProjectDTO;
import edu.asu.spring.quadriga.dto.ProjectDictionaryDTO;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
import edu.asu.spring.quadriga.mapper.workbench.IProjectDictionaryShallowMapper;
import edu.asu.spring.quadriga.mapper.workbench.IProjectShallowMapper;
import edu.asu.spring.quadriga.service.dictionary.IDictionaryManager;
@Service
public class ProjectDictionaryShallowMapper implements
IProjectDictionaryShallowMapper {
@Autowired
private IRetrieveProjectDAO dbConnect;
@Autowired
private IProjectShallowMapper projectShallowMapper;
@Autowired
private IDictionaryManager dictionaryManager;
@Autowired
private IProjectDictionaryFactory projectDictionaryFactory;
@Override
public List<IProjectDictionary> getProjectDictionaryList(IProject project,
ProjectDTO projectDTO) throws QuadrigaStorageException {
List<IProjectDictionary> projectDictionaryList = null;
if(project != null && projectDTO != null){
projectDictionaryList = new ArrayList<IProjectDictionary>();
List<ProjectDictionaryDTO> projectDictionaryDTOList = projectDTO.getProjectDictionaryDTOList();
if(projectDictionaryDTOList != null){
for(ProjectDictionaryDTO projectDictionaryDTO : projectDictionaryDTOList){
IDictionary dictionaryProxy = new DictionaryProxy(dictionaryManager);
dictionaryProxy.setDictionaryId(projectDictionaryDTO.getDictionary().getDictionaryid());
dictionaryProxy.setDictionaryName(projectDictionaryDTO.getDictionary().getDictionaryname());
dictionaryProxy.setDescription(projectDictionaryDTO.getDictionary().getDescription());
dictionaryProxy.setCreatedBy(projectDictionaryDTO.getDictionary().getCreatedby());
dictionaryProxy.setCreatedDate(projectDictionaryDTO.getDictionary().getCreateddate());
dictionaryProxy.setUpdatedBy(projectDictionaryDTO.getDictionary().getUpdatedby());
dictionaryProxy.setUpdatedDate(projectDictionaryDTO.getDictionary().getUpdateddate());
IProjectDictionary projectDictioanry = projectDictionaryFactory.createProjectDictionaryObject();
projectDictioanry.setProject(project);
projectDictioanry.setDictionary(dictionaryProxy);
projectDictioanry.setCreatedBy(projectDictionaryDTO.getCreatedby());
projectDictioanry.setCreatedDate(projectDictionaryDTO.getCreateddate());
projectDictioanry.setUpdatedBy(projectDictionaryDTO.getUpdatedby());
projectDictioanry.setUpdatedDate(projectDictionaryDTO.getUpdateddate());
projectDictionaryList.add(projectDictioanry);
}
}
}
return projectDictionaryList;
}
@Override
public List<IProjectDictionary> getProjectDictionaryList(DictionaryDTO dictionaryDTO, IDictionary dictionary) throws QuadrigaStorageException{
List<IProjectDictionary> projectDictionaryList = null;
List<ProjectDictionaryDTO> projectDictionaryDTOList = dictionaryDTO.getProjectDictionaryDTOList();
if(projectDictionaryDTOList != null){
for(ProjectDictionaryDTO projectDictionaryDTO : projectDictionaryDTOList){
if(projectDictionaryList == null){
projectDictionaryList = new ArrayList<IProjectDictionary>();
}
ProjectDTO projectDTO = projectDictionaryDTO.getProject();
IProject project = projectShallowMapper.getProjectDetails(projectDTO);
IProjectDictionary projectDictionary = projectDictionaryFactory.createProjectDictionaryObject();
projectDictionary.setProject(project);
projectDictionary.setDictionary(dictionary);
projectDictionary.setCreatedBy(projectDictionaryDTO.getCreatedby());
projectDictionary.setCreatedDate(projectDictionaryDTO.getCreateddate());
projectDictionary.setUpdatedBy(projectDictionaryDTO.getUpdatedby());
projectDictionary.setUpdatedDate(projectDictionaryDTO.getUpdateddate());
projectDictionaryList.add(projectDictionary);
}
}
return projectDictionaryList;
}
}