package edu.asu.spring.quadriga.service.transformation.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import edu.asu.spring.quadriga.domain.workspace.ITransformationFile;
import edu.asu.spring.quadriga.exceptions.FileStorageException;
import edu.asu.spring.quadriga.service.transformation.ITransformationSaveService;
import edu.asu.spring.quadriga.utilities.IFileSaveUtility;
/**
* This service contains method to save contents of transformation files to
* local file storage
*
* @author yoganandakishore
*
*/
@Service
public class TransformationSaveService implements ITransformationSaveService {
@Qualifier("transformfileSaveUtil")
@Autowired
private IFileSaveUtility transformationFileManager;
@Override
public boolean saveFileToLocal(ITransformationFile transformationFile) throws FileStorageException {
String directoryName = transformationFile.getId();
String metaDataContent = getMetaDataContent(transformationFile);
boolean isMetaDataFileSaved = transformationFileManager.saveFiletoDir(directoryName, "metadata.properties",
metaDataContent);
boolean isPatternFileSaved = transformationFileManager.saveFiletoDir(directoryName,
transformationFile.getPatternFileName(), transformationFile.getPatternFileContent());
boolean isMappingFileSaved = transformationFileManager.saveFiletoDir(directoryName,
transformationFile.getMappingFileName(), transformationFile.getMappingFileContent());
return isMetaDataFileSaved && isPatternFileSaved && isMappingFileSaved;
}
/**
* properties of transformationFile namely nameOfUser, title, description,
* patternfilename, mappingfilename and their values each in a separate
* line.
*
* @param transformationFile
* @return String which contains nameofUser, title, description,
* patternfilename, mappingfilename each in a separate line
*
*/
private String getMetaDataContent(ITransformationFile transformationFile) {
StringBuilder content = new StringBuilder();
content.append("nameOfTheUser=");
content.append(transformationFile.getUserName());
content.append(System.lineSeparator());
content.append("title=");
content.append(transformationFile.getTitle());
content.append(System.lineSeparator());
content.append("description=");
content.append(transformationFile.getDescription());
content.append(System.lineSeparator());
content.append("patternFileName=");
content.append(transformationFile.getPatternFileName());
content.append(System.lineSeparator());
content.append("mappingFileName=");
content.append(transformationFile.getMappingFileName());
return content.toString();
}
/**
* appends the location with dirName and fileName and returns the resultant
* string as absoluteFilePath
*
* @param location
* @param dirName
* @param fileName
* @return
*/
public String getAbsoluteFilePath(String location, String dirName, String fileName) {
StringBuffer absoluteFilePath = new StringBuffer();
absoluteFilePath.append(location);
absoluteFilePath.append("/");
absoluteFilePath.append(dirName);
absoluteFilePath.append("/");
absoluteFilePath.append(fileName);
return absoluteFilePath.toString();
}
@Override
public String getTransformFileLocation() {
return transformationFileManager.getFileLocation();
}
}