package edu.asu.spring.quadriga.service.transformation.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.transform.ITransformFilesDAO;
import edu.asu.spring.quadriga.domain.impl.networks.Transformation;
import edu.asu.spring.quadriga.domain.network.tranform.ITransformation;
import edu.asu.spring.quadriga.domain.workspace.ITransformationFile;
import edu.asu.spring.quadriga.dto.TransformFilesDTO;
import edu.asu.spring.quadriga.exceptions.FileStorageException;
import edu.asu.spring.quadriga.service.transformation.ITransformationManager;
import edu.asu.spring.quadriga.service.transformation.ITransformationSaveService;
import edu.asu.spring.quadriga.service.transformation.mapper.ITransformationMapper;
/**
* This class is a service which takes the transformation files metadata and
* creates a DTO and saves this DTO in database using DAO
*
* @author JayaVenkat
*
*/
@Service
public class TransformationManager implements ITransformationManager {
@Autowired
private ITransformFilesDAO transformationDAO;
@Autowired
private ITransformationSaveService transformationFileService;
@Autowired
private ITransformationMapper transformationMapper;
@Transactional
@Override
public void saveTransformations(ITransformationFile transformationFile) throws FileStorageException {
TransformFilesDTO transformDTO = transformationMapper.getTransformFilesDTO(transformationFile);
String id = transformationDAO.generateUniqueID();
transformDTO.setId(id);
transformationDAO.saveNewDTO(transformDTO);
transformationFile.setId(id);
transformationFileService.saveFileToLocal(transformationFile);
}
@Transactional
@Override
public List<TransformFilesDTO> getTransformationsList() {
return transformationDAO.getAllTransformations();
}
/**
* Retrieve the transformation file object which contains the absolute file
* paths of patternFile and MappingFile .
*
* @param transformationId
* Transformation ID of the transformation.
* @return Returns the transformation file object
*/
@Transactional
@Override
public ITransformationFile getTransformationFile(String transformationId) {
TransformFilesDTO transformDTO = (TransformFilesDTO) transformationDAO.getDTO(transformationId);
String fileLocation = transformationFileService.getTransformFileLocation();
String absolutePatternFilePath = transformationFileService.getAbsoluteFilePath(fileLocation, transformationId,
transformDTO.getPatternFileName());
String absoluteMappingFilePath = transformationFileService.getAbsoluteFilePath(fileLocation, transformationId,
transformDTO.getMappingFileName());
ITransformationFile transformFile = transformationMapper.getTransformFile(transformDTO);
transformFile.setAbsolutePatternFilePath(absolutePatternFilePath);
transformFile.setAbsoluteMappingFilePath(absoluteMappingFilePath);
return transformFile;
}
@Transactional
@Override
public List<ITransformation> getTransformations(String[] transformationIdsList) {
List<ITransformation> transformations = new ArrayList<ITransformation>();
for (int i = 0; i < transformationIdsList.length; i++) {
ITransformationFile transformFile = getTransformationFile(transformationIdsList[i]);
ITransformation transform = new Transformation();
transform.setPatternFilePath(transformFile.getAbsolutePatternFilePath());
transform.setTransformationFilePath(transformFile.getAbsoluteMappingFilePath());
transformations.add(transform);
}
return transformations;
}
}