package edu.asu.spring.quadriga.service.workspace.impl;
import java.util.List;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import edu.asu.spring.quadriga.dao.workspace.IWorkspaceDAO;
import edu.asu.spring.quadriga.dao.workspace.IWorkspaceDictionaryDAO;
import edu.asu.spring.quadriga.domain.dictionary.IDictionary;
import edu.asu.spring.quadriga.domain.workspace.IWorkSpace;
import edu.asu.spring.quadriga.domain.workspace.IWorkspaceDictionary;
import edu.asu.spring.quadriga.dto.WorkspaceDTO;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
import edu.asu.spring.quadriga.mapper.workspace.IWorkspaceDeepMapper;
import edu.asu.spring.quadriga.mapper.workspace.impl.WorkspaceDictionaryShallowMapper;
import edu.asu.spring.quadriga.service.workspace.IWorkspaceDictionaryManager;
@Service
public class WorkspaceDictionaryManager implements IWorkspaceDictionaryManager {
@Autowired
private IWorkspaceDictionaryDAO dbConnect;
@Autowired
private IWorkspaceDAO wsDao;
@Autowired
private WorkspaceDictionaryShallowMapper wsDictShallowMapper;
@Autowired
private IWorkspaceDeepMapper wsDeepMapper;
@Autowired
private DataSource dataSource;
/**
* Assigns the data source
*
* @param : dataSource
*/
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
/**
* Add dictionary to the workspace
*
* @param workspaceId
* @param dictionaryId
* @param userId
* @return
* @throws QuadrigaStorageException
*/
@Override
@Transactional
public void addWorkspaceDictionary(String workspaceId, String dictionaryId, String userId)
throws QuadrigaStorageException {
dbConnect.addWorkspaceDictionary(workspaceId, dictionaryId, userId);
}
/**
* List the dictionary in a project for a user - userId
*
* @param workspaceId
* @param userId
* @return
* @throws QuadrigaStorageException
*/
@Override
@Transactional
public List<IWorkspaceDictionary> listWorkspaceDictionary(IWorkSpace workspace, String userId)
throws QuadrigaStorageException {
List<IWorkspaceDictionary> wsDictionaryList = null;
WorkspaceDTO workspaceDTO = dbConnect.listWorkspaceDictionary(workspace.getWorkspaceId(), userId);
wsDictionaryList = wsDictShallowMapper.getWorkspaceDictionaryList(workspace, workspaceDTO);
return wsDictionaryList;
}
/**
* List the dictionary in a project for a user - userId
*
* @param workspaceId
* @param userId
* @return
* @throws QuadrigaStorageException
*/
@Override
@Transactional
public List<IWorkspaceDictionary> listWorkspaceDictionary(String workspaceId, String userId)
throws QuadrigaStorageException {
List<IWorkspaceDictionary> wsDictionaryList = null;
// FIXME: what's up with all of this?:
WorkspaceDTO wsDto = wsDao.getDTO(workspaceId);
IWorkSpace workspace = wsDeepMapper.mapWorkspaceDTO(wsDto);
WorkspaceDTO workspaceDTO = dbConnect.listWorkspaceDictionary(workspaceId, userId);
wsDictionaryList = wsDictShallowMapper.getWorkspaceDictionaryList(workspace, workspaceDTO);
return wsDictionaryList;
}
/**
* List the dictionaries which are not associated to a workspace for a user
* -UserId
*
* @throws QuadrigaStorageException
*
*/
@Override
@Transactional
public List<IDictionary> getNonAssociatedWorkspaceDictionaries(String workspaceId) throws QuadrigaStorageException {
return dbConnect.getNonAssociatedWorkspaceDictionaries(workspaceId);
}
/**
* Delete the dictionary in a project for a user - userId
*
* @param workspaceId
* @param userId
* @return
* @throws QuadrigaStorageException
*/
@Override
@Transactional
public void deleteWorkspaceDictionary(String workspaceId, String dictioanaryId)
throws QuadrigaStorageException {
dbConnect.deleteWorkspaceDictionary(workspaceId, dictioanaryId);
}
}