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.conceptcollection.IConceptCollection;
import edu.asu.spring.quadriga.domain.factory.workbench.IProjectConceptCollectionFactory;
import edu.asu.spring.quadriga.domain.proxy.ConceptCollectionProxy;
import edu.asu.spring.quadriga.domain.workbench.IProject;
import edu.asu.spring.quadriga.domain.workbench.IProjectConceptCollection;
import edu.asu.spring.quadriga.dto.ConceptCollectionDTO;
import edu.asu.spring.quadriga.dto.ProjectConceptCollectionDTO;
import edu.asu.spring.quadriga.dto.ProjectDTO;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
import edu.asu.spring.quadriga.mapper.workbench.IProjectConceptCollectionShallowMapper;
import edu.asu.spring.quadriga.mapper.workbench.IProjectShallowMapper;
import edu.asu.spring.quadriga.service.conceptcollection.IConceptCollectionManager;
@Service
public class ProjectConceptCollectionShallowMapper implements
IProjectConceptCollectionShallowMapper {
@Autowired
private IRetrieveProjectDAO dbConnect;
@Autowired
private IConceptCollectionManager ccManager;
@Autowired
private IProjectConceptCollectionFactory projectCCFactory;
@Autowired
private IProjectShallowMapper projectShallowMapper;
@Override
public List<IProjectConceptCollection> getProjectConceptCollectionList(
IProject project, List<ProjectConceptCollectionDTO> projectCCDTOList)
throws QuadrigaStorageException {
List<IProjectConceptCollection> projectCCList = new ArrayList<IProjectConceptCollection>();
for(ProjectConceptCollectionDTO projectCCDTO : projectCCDTOList){
IConceptCollection ccProxy = new ConceptCollectionProxy(ccManager);
ccProxy.setConceptCollectionId(projectCCDTO.getConceptCollection().getConceptCollectionid());
ccProxy.setConceptCollectionName(projectCCDTO.getConceptCollection().getCollectionname());
ccProxy.setDescription(projectCCDTO.getConceptCollection().getDescription());
ccProxy.setCreatedBy(projectCCDTO.getConceptCollection().getCreatedby());
ccProxy.setCreatedDate(projectCCDTO.getConceptCollection().getCreateddate());
ccProxy.setUpdatedBy(projectCCDTO.getConceptCollection().getUpdatedby());
ccProxy.setUpdatedDate(projectCCDTO.getConceptCollection().getUpdateddate());
IProjectConceptCollection projectCC = projectCCFactory.createProjectConceptCollectionObject();
projectCC.setProject(project);
projectCC.setConceptCollection(ccProxy);
projectCC.setCreatedBy(projectCCDTO.getCreatedby());
projectCC.setCreatedDate(projectCCDTO.getCreateddate());
projectCC.setUpdatedBy(projectCCDTO.getUpdatedby());
projectCC.setUpdatedDate(projectCCDTO.getUpdateddate());
projectCCList.add(projectCC);
}
return projectCCList;
}
@Override
public List<IProjectConceptCollection> getProjectConceptCollectionList(ConceptCollectionDTO ccDTO, IConceptCollection conceptCollection) throws QuadrigaStorageException{
List<IProjectConceptCollection> projectDictionaryList = null;
List<ProjectConceptCollectionDTO> projectConceptCollectionDTOList = ccDTO.getProjConceptCollectionDTOList();
if(projectConceptCollectionDTOList != null){
for(ProjectConceptCollectionDTO projectCCDTO : projectConceptCollectionDTOList){
if(projectDictionaryList == null){
projectDictionaryList = new ArrayList<IProjectConceptCollection>();
}
ProjectDTO projectDTO = projectCCDTO.getProjectDTO();
IProject project = projectShallowMapper.getProjectDetails(projectDTO);
IProjectConceptCollection projectDictionary = projectCCFactory.createProjectConceptCollectionObject();
projectDictionary.setProject(project);
projectDictionary.setConceptCollection(conceptCollection);
projectDictionary.setCreatedBy(projectCCDTO.getCreatedby());
projectDictionary.setCreatedDate(projectCCDTO.getCreateddate());
projectDictionary.setUpdatedBy(projectCCDTO.getUpdatedby());
projectDictionary.setUpdatedDate(projectCCDTO.getUpdateddate());
projectDictionaryList.add(projectDictionary);
}
}
return projectDictionaryList;
}
}