123 lines
3.8 KiB
Java
123 lines
3.8 KiB
Java
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage;
|
|
|
|
import java.io.IOException;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.nio.file.StandardOpenOption;
|
|
|
|
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
|
|
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.util.ServiceCredentials;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
/**
|
|
*
|
|
* @author Giancarlo Panichi
|
|
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
|
*
|
|
*/
|
|
public class MainCodeSave {
|
|
private static final String ALGORITHM_DESCRIPTION = "Algorithm";
|
|
private static final String ALGORITHM_MIMETYPE = "text/plain";
|
|
|
|
public static final Logger logger = LoggerFactory
|
|
.getLogger(MainCodeSave.class);
|
|
|
|
public MainCodeSave() {
|
|
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param serviceCredentials
|
|
* @param file
|
|
* @param code
|
|
* @param project
|
|
* @throws StatAlgoImporterServiceException
|
|
*/
|
|
public void save(ServiceCredentials serviceCredentials, ItemDescription file,
|
|
String code, Project project) throws StatAlgoImporterServiceException{
|
|
FilesStorage filesStorage = new FilesStorage();
|
|
filesStorage.saveStringInItem(serviceCredentials.getUserName(), file.getId(), code);
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
* @param serviceCredentials
|
|
* @param file description of destination file
|
|
* @param code code to insert in the file
|
|
* @param project
|
|
* @return ItemDescription
|
|
* @throws StatAlgoImporterServiceException
|
|
*/
|
|
public ItemDescription saveNew(ServiceCredentials serviceCredentials, ItemDescription file,
|
|
String code, Project project)
|
|
throws StatAlgoImporterServiceException {
|
|
Path tempFile = createTempFile(file, code);
|
|
ItemDescription mainCode = saveInWorkspace(tempFile, serviceCredentials, file,
|
|
project);
|
|
return mainCode;
|
|
}
|
|
|
|
|
|
private Path createTempFile(ItemDescription file, String code)
|
|
throws StatAlgoImporterServiceException {
|
|
try {
|
|
Path tempFile = Files.createTempFile(file.getName(), "");
|
|
|
|
Files.write(tempFile, code.getBytes(), StandardOpenOption.WRITE);
|
|
logger.debug(tempFile.toString());
|
|
|
|
return tempFile;
|
|
|
|
} catch (IOException e) {
|
|
logger.error(e.getLocalizedMessage());
|
|
e.printStackTrace();
|
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(),
|
|
e);
|
|
}
|
|
}
|
|
|
|
private ItemDescription saveInWorkspace(Path tempFile,
|
|
ServiceCredentials serviceCredentials, ItemDescription file, Project project)
|
|
throws StatAlgoImporterServiceException {
|
|
FilesStorage filesStorage = new FilesStorage();
|
|
WorkspaceItem mainCodeItem;
|
|
|
|
try {
|
|
mainCodeItem = filesStorage.createItemOnWorkspace(
|
|
serviceCredentials.getUserName(),
|
|
Files.newInputStream(tempFile, StandardOpenOption.READ),
|
|
file.getName(), ALGORITHM_DESCRIPTION, ALGORITHM_MIMETYPE,
|
|
project.getProjectFolder().getFolder().getId());
|
|
} catch (IOException e) {
|
|
logger.error(e.getLocalizedMessage());
|
|
e.printStackTrace();
|
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(),
|
|
e);
|
|
}
|
|
|
|
ItemDescription mainCode;
|
|
try {
|
|
mainCode = new ItemDescription(mainCodeItem.getId(),
|
|
mainCodeItem.getName(), mainCodeItem.getOwner()
|
|
.getPortalLogin(), mainCodeItem.getPath(),
|
|
mainCodeItem.getType().name());
|
|
} catch (InternalErrorException e) {
|
|
logger.error(e.getLocalizedMessage());
|
|
e.printStackTrace();
|
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
|
|
|
}
|
|
|
|
return mainCode;
|
|
|
|
}
|
|
|
|
}
|