ref 11724: SAI - Update to StorageHUB

https://support.d4science.org/issues/11724

Updated to StorageHub 

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@169988 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2018-07-30 13:36:06 +00:00
parent 75c2213e16
commit be76132e5b
7 changed files with 188 additions and 338 deletions

View File

@ -8,8 +8,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.util.ServiceCredentials;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
@ -85,7 +83,7 @@ public class MainGenerator {
// project.getProjectConfig().getLanguage(),
// binarySoftware.getPublicLink());
// } else {
logger.debug("Generate Script R");
producedScript = s.generateScript(input, output, binarySoftware.getName(),
project.getProjectConfig().getLanguage());
@ -99,10 +97,10 @@ public class MainGenerator {
//////
FilesStorage filesStorage = new FilesStorage();
WorkspaceItem mainItem;
ItemDescription mainItemDescription;
try {
mainItem = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(),
mainItemDescription = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(),
Files.newInputStream(producedScript, StandardOpenOption.READ),
"Main.R", R_DESCRIPTION + project.getProjectConfig().getLanguage(), R_MIMETYPE,
@ -113,18 +111,6 @@ public class MainGenerator {
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
ItemDescription mainItemDescription;
try {
mainItemDescription = new ItemDescription(mainItem.getId(), mainItem.getName(),
mainItem.getOwner().getPortalLogin(), mainItem.getPath(), mainItem.getType().name());
mainItemDescription.setPublicLink(mainItem.getPublicLink(false));
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
MainCode mainCode = new MainCode(mainItemDescription);
project.setMainCode(mainCode);

View File

@ -495,7 +495,9 @@ public class AlgorithmGenerator {
logger.debug("ProjectInfo: " + project);
String projectPath = project.getProjectFolder().getFolder().getPath();
String mainCodePath = project.getMainCode().getItemDescription().getPath();
String projectFolderName=project.getProjectFolder().getFolder().getName();
logger.debug("ProjectPath: " + projectPath);
logger.debug("Project Folder Name: "+projectFolderName);
logger.debug("MainCodePath: " + mainCodePath);
String relativePath = project.getProjectFolder().getFolder().getName()

View File

@ -15,9 +15,6 @@ import java.util.GregorianCalendar;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.blackbox.MainGenerator;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.util.ServiceCredentials;
@ -186,22 +183,10 @@ public class ProjectBuilder {
filesStorage.saveInputStreamInItem(serviceCredentials.getUserName(),
project.getProjectTarget().getProjectDeploy().getPackageProject().getId(), inputStream);
WorkspaceItem packageProject = filesStorage.retrieveItemInfoOnWorkspace(serviceCredentials.getUserName(),
ItemDescription packageProjectItemDescription = filesStorage.retrieveItemInfoOnWorkspace(
serviceCredentials.getUserName(),
project.getProjectTarget().getProjectDeploy().getPackageProject().getId());
ItemDescription packageProjectItemDescription;
try {
packageProjectItemDescription = new ItemDescription(packageProject.getId(), packageProject.getName(),
packageProject.getOwner().getPortalLogin(), packageProject.getPath(),
packageProject.getType().name());
packageProjectItemDescription.setPublicLink(packageProject.getPublicLink(false));
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
project.getProjectTarget().getProjectDeploy().setPackageProject(packageProjectItemDescription);
logger.debug("ProjectDeploy: " + project.getProjectTarget().getProjectDeploy());
@ -239,24 +224,11 @@ public class ProjectBuilder {
project.getProjectTarget().getProjectDeploy().getCodeJar().getId());
}
WorkspaceItem deployableCodeJarItem = filesStorage.copyItemOnFolder(serviceCredentials.getUserName(),
ItemDescription dCodeJar = filesStorage.copyItemOnFolder(serviceCredentials.getUserName(),
project.getProjectTarget().getProjectCompile().getCodeJar().getId(),
project.getProjectTarget().getProjectDeploy().getFolder().getId());
logger.debug("DeployableCodeJarItem:" + deployableCodeJarItem);
ItemDescription dCodeJar;
try {
dCodeJar = new ItemDescription(deployableCodeJarItem.getId(), deployableCodeJarItem.getName(),
deployableCodeJarItem.getOwner().getPortalLogin(), deployableCodeJarItem.getPath(),
deployableCodeJarItem.getType().name());
dCodeJar.setPublicLink(deployableCodeJarItem.getPublicLink(false));
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
logger.debug("DeployableCodeJarItem:" + dCodeJar);
project.getProjectTarget().getProjectDeploy().setCodeJar(dCodeJar);
logger.debug("ProjectDeploy: " + project.getProjectTarget().getProjectDeploy());
@ -348,22 +320,12 @@ public class ProjectBuilder {
filesStorage.deleteFolder(serviceCredentials.getUserName(), project.getProjectTarget().getFolder().getId(),
STATISTICAL_ALGORITHM_DEPLOY_FOLDER_NAME);
WorkspaceFolder deployFolder = filesStorage.createFolder(serviceCredentials.getUserName(),
ItemDescription deployFolder = filesStorage.createFolder(serviceCredentials.getUserName(),
project.getProjectTarget().getFolder().getId(), STATISTICAL_ALGORITHM_DEPLOY_FOLDER_NAME,
STATISTICAL_ALGORITHM_DEPLOY_FOLDER_DESCRIPTION);
logger.debug("PublicFolder:" + deployFolder);
ItemDescription pFolder;
try {
pFolder = new ItemDescription(deployFolder.getId(), deployFolder.getName(),
deployFolder.getOwner().getPortalLogin(), deployFolder.getPath(), deployFolder.getType().name());
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
ProjectDeploy projectDeploy = new ProjectDeploy(pFolder);
ProjectDeploy projectDeploy = new ProjectDeploy(deployFolder);
project.getProjectTarget().setProjectDeploy(projectDeploy);
}
@ -440,13 +402,12 @@ public class ProjectBuilder {
}
}
private void createShareInfo() throws StatAlgoImporterServiceException {
ProjectShareInfoBuilder projectShareInfoBuilder=new ProjectShareInfoBuilder(serviceCredentials, project);
ProjectShareInfoBuilder projectShareInfoBuilder = new ProjectShareInfoBuilder(serviceCredentials, project);
projectShareInfoBuilder.create();
}
private void createProjectPackage() throws StatAlgoImporterServiceException {
List<String> idsToExclude = new ArrayList<String>();
@ -467,32 +428,19 @@ public class ProjectBuilder {
try {
inputStream = Files.newInputStream(projectPackageFile.toPath(), StandardOpenOption.READ);
} catch (IOException e) {
logger.error("Error input stream generation for project package file: " + e.getLocalizedMessage());
e.printStackTrace();
logger.error("Error input stream generation for project package file: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
WorkspaceItem projectPackageItem;
ItemDescription packageUrl;
projectPackageItem = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(), inputStream,
packageUrl = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(), inputStream,
project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + PROJECT_PACKAGE_EXTENTION,
PROJECT_PACKAGE_DESCRIPTION, PROJECT_PACKAGE_MIMETYPE,
project.getProjectTarget().getProjectDeploy().getFolder().getId());
logger.debug("ProjectPackageItem:" + projectPackageItem);
logger.debug("ProjectPackageItem:" + packageUrl);
ItemDescription packageUrl;
try {
packageUrl = new ItemDescription(projectPackageItem.getId(), projectPackageItem.getName(),
projectPackageItem.getOwner().getPortalLogin(), projectPackageItem.getPath(),
projectPackageItem.getType().name());
packageUrl.setPublicLink(projectPackageItem.getPublicLink(false));
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
project.getProjectTarget().getProjectDeploy().setPackageProject(packageUrl);
}
@ -501,22 +449,12 @@ public class ProjectBuilder {
filesStorage.deleteFolder(serviceCredentials.getUserName(), project.getProjectFolder().getFolder().getId(),
STATISTICAL_ALGORITHM_TARGET_FOLDER_NAME);
WorkspaceFolder targetFolder = filesStorage.createFolder(serviceCredentials.getUserName(),
ItemDescription targetFolder = filesStorage.createFolder(serviceCredentials.getUserName(),
project.getProjectFolder().getFolder().getId(), STATISTICAL_ALGORITHM_TARGET_FOLDER_NAME,
STATISTICAL_ALGORITHM_TARGET_FOLDER_DESCRIPTION);
logger.debug("TargetFolder:" + targetFolder);
ItemDescription tFolder;
try {
tFolder = new ItemDescription(targetFolder.getId(), targetFolder.getName(),
targetFolder.getOwner().getPortalLogin(), targetFolder.getPath(), targetFolder.getType().name());
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
ProjectTarget projectTarget = new ProjectTarget(tFolder);
ProjectTarget projectTarget = new ProjectTarget(targetFolder);
project.setProjectTarget(projectTarget);
}
@ -526,67 +464,45 @@ public class ProjectBuilder {
filesStorage.deleteFolder(serviceCredentials.getUserName(), project.getProjectTarget().getFolder().getId(),
STATISTICAL_ALGORITHM_COMPILE_FOLDER_NAME);
WorkspaceFolder compileFolder = filesStorage.createFolder(serviceCredentials.getUserName(),
ItemDescription compileFolder = filesStorage.createFolder(serviceCredentials.getUserName(),
project.getProjectTarget().getFolder().getId(), STATISTICAL_ALGORITHM_COMPILE_FOLDER_NAME,
STATISTICAL_ALGORITHM_COMPILE_FOLDER_DESCRIPTION);
logger.debug("CompileFolder:" + compileFolder);
ItemDescription cFolder;
try {
cFolder = new ItemDescription(compileFolder.getId(), compileFolder.getName(),
compileFolder.getOwner().getPortalLogin(), compileFolder.getPath(), compileFolder.getType().name());
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
ProjectCompile projectCompile = new ProjectCompile(cFolder);
ProjectCompile projectCompile = new ProjectCompile(compileFolder);
project.getProjectTarget().setProjectCompile(projectCompile);
}
private void createBackupFolder() throws StatAlgoImporterServiceException {
FilesStorage filesStorage = new FilesStorage();
WorkspaceItem backupFolder = filesStorage.find(serviceCredentials.getUserName(),
ItemDescription backupFolder = filesStorage.find(serviceCredentials.getUserName(),
project.getProjectFolder().getFolder().getId(), STATISTICAL_ALGORITHM_BACKUP_FOLDER_NAME);
if (backupFolder == null) {
WorkspaceFolder newBackupFolder = filesStorage.createFolder(serviceCredentials.getUserName(),
ItemDescription newBackupFolder = filesStorage.createFolder(serviceCredentials.getUserName(),
project.getProjectFolder().getFolder().getId(), STATISTICAL_ALGORITHM_BACKUP_FOLDER_NAME,
STATISTICAL_ALGORITHM_BACKUP_FOLDER_DESCRIPTION);
logger.debug("BackupFolder:" + backupFolder);
try {
backupFolderId = newBackupFolder.getId();
} catch (InternalErrorException e) {
logger.error("Error retrieving Backup Folder Id: " + e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException("Error retrieving Backup Folder Id", e);
}
backupFolderId = newBackupFolder.getId();
} else {
try {
backupFolderId = backupFolder.getId();
} catch (InternalErrorException e) {
logger.error("Error retrieving Backup Folder Id: " + e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException("Error retrieving Backup Folder Id", e);
}
backupFolderId = backupFolder.getId();
}
}
private void createAlgorithm() throws StatAlgoImporterServiceException {
AlgorithmGenerator algorithmGenerator = new AlgorithmGenerator(project,serviceCredentials);
AlgorithmGenerator algorithmGenerator = new AlgorithmGenerator(project, serviceCredentials);
algorithmJava = algorithmGenerator.createAlgorithm();
FilesStorage filesStorage = new FilesStorage();
WorkspaceItem algorithmItem;
ItemDescription codeSource;
try {
algorithmItem = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(),
codeSource = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(),
Files.newInputStream(algorithmJava, StandardOpenOption.READ),
project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + ALGORITHM_EXTENTION,
ALGORITHM_DESCRIPTION, ALGORITHM_MIMETYPE,
@ -597,18 +513,6 @@ public class ProjectBuilder {
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
ItemDescription codeSource;
try {
codeSource = new ItemDescription(algorithmItem.getId(), algorithmItem.getName(),
algorithmItem.getOwner().getPortalLogin(), algorithmItem.getPath(), algorithmItem.getType().name());
codeSource.setPublicLink(algorithmItem.getPublicLink(false));
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
project.getProjectTarget().getProjectCompile().setCodeSource(codeSource);
logger.debug("ProjectCompile: " + project.getProjectTarget().getProjectCompile());
@ -619,31 +523,18 @@ public class ProjectBuilder {
infoTXT = integrationInfoGenerator.createInfo();
FilesStorage filesStorage = new FilesStorage();
WorkspaceItem infoItem;
ItemDescription integrationItemDescription;
try {
infoItem = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(),
integrationItemDescription = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(),
Files.newInputStream(infoTXT, StandardOpenOption.READ), INFO_NAME + INFO_EXTENTION,
INFO_DESCRIPTION, INFO_MIMETYPE,
project.getProjectTarget().getProjectCompile().getFolder().getId());
} catch (IOException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
logger.error(e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
ItemDescription integrationItemDescription;
try {
integrationItemDescription = new ItemDescription(infoItem.getId(), infoItem.getName(),
infoItem.getOwner().getPortalLogin(), infoItem.getPath(), infoItem.getType().name());
integrationItemDescription.setPublicLink(infoItem.getPublicLink(false));
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
project.getProjectTarget().getProjectCompile().setIntegrationInfo(integrationItemDescription);
logger.debug("ProjectCompile: " + project.getProjectTarget().getProjectCompile());
@ -680,8 +571,7 @@ public class ProjectBuilder {
try {
Files.copy(algorithmJava, algorithmTempFile);
} catch (IOException e) {
logger.error("Error in alogrithm java copy in package directory: " + e.getLocalizedMessage());
e.printStackTrace();
logger.error("Error in alogrithm java copy in package directory: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
@ -689,8 +579,7 @@ public class ProjectBuilder {
try {
Files.copy(infoTXT, infoTempFile);
} catch (IOException e) {
logger.error("Error in info copy in temp directory: " + e.getLocalizedMessage());
e.printStackTrace();
logger.error("Error in info copy in temp directory: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
@ -699,8 +588,7 @@ public class ProjectBuilder {
try {
Files.delete(algorithmTempFile);
} catch (IOException e) {
logger.error("Error in delete java file in package directory: " + e.getLocalizedMessage());
e.printStackTrace();
logger.error("Error in delete java file in package directory: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
@ -711,9 +599,8 @@ public class ProjectBuilder {
FileUtils.cleanDirectory(tempDirectory.toFile());
FileUtils.deleteDirectory(tempDirectory.toFile());
} catch (IOException e) {
logger.error("Error in delete temp directory: " + e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
logger.error("Error in delete temp directory: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException("Error deleting temp directory: " + e.getLocalizedMessage(), e);
}
return;
@ -725,32 +612,20 @@ public class ProjectBuilder {
project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + JAR_EXTENTION);
FilesStorage filesStorage = new FilesStorage();
WorkspaceItem codeJarItem;
ItemDescription codeJarItemDescription;
;
try {
codeJarItem = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(),
codeJarItemDescription = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(),
Files.newInputStream(codeJar, StandardOpenOption.READ),
project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + JAR_EXTENTION,
CODE_JAR_DESCRIPTION, CODE_JAR_MIMETYPE,
project.getProjectTarget().getProjectCompile().getFolder().getId());
} catch (IOException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
logger.error(e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
ItemDescription codeJarItemDescription;
try {
codeJarItemDescription = new ItemDescription(codeJarItem.getId(), codeJarItem.getName(),
codeJarItem.getOwner().getPortalLogin(), codeJarItem.getPath(), codeJarItem.getType().name());
codeJarItemDescription.setPublicLink(codeJarItem.getPublicLink(false));
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
project.getProjectTarget().getProjectCompile().setCodeJar(codeJarItemDescription);
logger.debug("ProjectCompile: " + project.getProjectTarget().getProjectCompile());
@ -791,8 +666,7 @@ public class ProjectBuilder {
}
} catch (IOException | InterruptedException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
logger.error(e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
@ -831,8 +705,7 @@ public class ProjectBuilder {
logger.debug("Create Algo Jar: Exit Value is " + exitValue);
} catch (IOException | InterruptedException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
logger.error(e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}

View File

@ -5,8 +5,6 @@ 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.workspace.ItemDescription;
@ -35,8 +33,8 @@ public class CodeSave {
filesStorage.saveStringInItem(serviceCredentials.getUserName(), file.getId(), code);
}
public ItemDescription saveNew(ServiceCredentials serviceCredentials, ItemDescription file, String code, String folderId) throws StatAlgoImporterServiceException {
public ItemDescription saveNew(ServiceCredentials serviceCredentials, ItemDescription file, String code,
String folderId) throws StatAlgoImporterServiceException {
Path tempFile = createTempFile(file, code);
ItemDescription codeItem = saveInWorkspace(tempFile, serviceCredentials, file, folderId);
return codeItem;
@ -52,7 +50,7 @@ public class CodeSave {
return tempFile;
} catch (IOException e) {
logger.error(e.getLocalizedMessage(),e);
logger.error(e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
}
@ -60,28 +58,17 @@ public class CodeSave {
private ItemDescription saveInWorkspace(Path tempFile, ServiceCredentials serviceCredentials, ItemDescription file,
String folderId) throws StatAlgoImporterServiceException {
FilesStorage filesStorage = new FilesStorage();
WorkspaceItem worksapceItem;
ItemDescription item;
try {
worksapceItem = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(),
item = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(),
Files.newInputStream(tempFile, StandardOpenOption.READ), file.getName(), ALGORITHM_DESCRIPTION,
ALGORITHM_MIMETYPE, folderId);
} catch (IOException e) {
logger.error(e.getLocalizedMessage(),e);
logger.error(e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
ItemDescription item;
try {
item = new ItemDescription(worksapceItem.getId(), worksapceItem.getName(),
worksapceItem.getOwner().getPortalLogin(), worksapceItem.getPath(), worksapceItem.getType().name());
item.setPublicLink(worksapceItem.getPublicLink(false));
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage(),e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
return item;
}

View File

@ -9,7 +9,6 @@ import java.nio.file.StandardOpenOption;
import java.util.Arrays;
import java.util.List;
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.info.InfoData;
@ -40,14 +39,13 @@ public class DeploySave {
private InfoData infoData;
private String infoText;
private ItemDescription codeJarAdminCopy;
public DeploySave(ServiceCredentials serviceCredentials, Project project, InfoData infoData) {
this.serviceCredentials = serviceCredentials;
this.project = project;
this.infoData = infoData;
this.infoText = null;
this.codeJarAdminCopy=null;
this.codeJarAdminCopy = null;
filesStorage = new FilesStorage();
}
@ -58,21 +56,11 @@ public class DeploySave {
InputStream codeJarInputStream = filesStorage.retrieveItemOnWorkspace(serviceCredentials.getUserName(),
codeJar.getId());
WorkspaceItem codeJarItem = filesStorage.createItemOnWorkspaceHowAdmin(ADMIN_USER, codeJarInputStream,
codeJar.getName(), CODE_JAR_DESCRIPTION, CODE_JAR_MIMETYPE, DESTINATION_FOLDER);
codeJarAdminCopy = filesStorage.createItemOnWorkspaceHowAdmin(ADMIN_USER, codeJarInputStream, codeJar.getName(),
CODE_JAR_DESCRIPTION, CODE_JAR_MIMETYPE, DESTINATION_FOLDER);
try {
codeJarAdminCopy = new ItemDescription(codeJarItem.getId(), codeJarItem.getName(),
codeJarItem.getOwner().getPortalLogin(), codeJarItem.getPath(), codeJarItem.getType().name());
codeJarAdminCopy.setPublicLink(codeJarItem.getPublicLink(false));
} catch (Throwable e) {
logger.error(e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
createInfoText();
try {
int codeJarNamelenght = codeJar.getName().length();
String codeJarName;
@ -88,8 +76,8 @@ public class DeploySave {
Files.write(reportInstallTempFile, lines, Charset.defaultCharset(), StandardOpenOption.WRITE);
logger.debug(reportInstallTempFile.toString());
InputStream reportInstallInputStream = Files.newInputStream(reportInstallTempFile);
filesStorage.createItemOnWorkspaceHowAdmin(ADMIN_USER, reportInstallInputStream,
filesStorage.createItemOnWorkspaceHowAdmin(ADMIN_USER, reportInstallInputStream,
codeJarName + "_install.txt", codeJarName + "_install.txt", TXT_MIMETYPE, DESTINATION_FOLDER);
} catch (IOException e) {
@ -126,7 +114,4 @@ public class DeploySave {
return infoData;
}
}

View File

@ -19,11 +19,15 @@ import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalFile;
import org.gcube.common.homelibrary.jcr.workspace.JCRWorkspaceSharedFolder;
import org.gcube.common.homelibrary.util.zip.ZipUtil;
import org.gcube.common.storagehub.client.dsl.FileContainer;
import org.gcube.common.storagehub.client.dsl.FolderContainer;
import org.gcube.common.storagehub.client.dsl.ItemContainer;
import org.gcube.common.storagehub.client.dsl.ListResolver;
import org.gcube.common.storagehub.client.dsl.OpenResolver;
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
import org.gcube.common.storagehub.model.items.Item;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -36,7 +40,8 @@ import org.slf4j.LoggerFactory;
public class FilesStorage {
private static final String STATISTICAL_ALGORITHM_PROJECT_MIMETYPE = "text/xml";
// private static final String STATISTICAL_ALGORITHM_PROJECT_MIMETYPE =
// "text/xml";
private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_DESCRIPTION = "Statistical Algorithm Project File";
private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_NAME = "stat_algo.project";
@ -75,11 +80,11 @@ public class FilesStorage {
* Item id
* @param folderId
* Folder id
* @return workspace item
* @return Item description
* @throws StatAlgoImporterServiceException
* exception
*/
public WorkspaceItem copyItemOnFolder(String user, String itemId, String folderId)
public ItemDescription copyItemOnFolder(String user, String itemId, String folderId)
throws StatAlgoImporterServiceException {
Workspace ws;
try {
@ -94,7 +99,11 @@ public class FilesStorage {
WorkspaceItem item = ws.copy(itemId, folderId);
return item;
ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(),
item.getOwner().getPortalLogin(), item.getPath(), item.getType().name());
itemDescription.setPublicLink(item.getPublicLink(false));
return itemDescription;
} catch (Throwable e) {
logger.error("Copy item on folder on workspace: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
@ -112,11 +121,11 @@ public class FilesStorage {
* Destination folder id
* @param newName
* New name
* @return workspace item
* @return Item description
* @throws StatAlgoImporterServiceException
* exception
*/
public WorkspaceItem copyItemOnFolderWithNewName(String user, String itemId, String folderId, String newName)
public ItemDescription copyItemOnFolderWithNewName(String user, String itemId, String folderId, String newName)
throws StatAlgoImporterServiceException {
Workspace ws;
try {
@ -132,7 +141,10 @@ public class FilesStorage {
WorkspaceItem item = ws.copy(itemId, newName, folderId);
return item;
ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(),
item.getOwner().getPortalLogin(), item.getPath(), item.getType().name());
return itemDescription;
} catch (Throwable e) {
logger.error("Copy item on folder with new name on workspace: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
@ -151,7 +163,7 @@ public class FilesStorage {
*/
public void deleteItemOnFolder(String user, String itemId) throws StatAlgoImporterServiceException {
try {
logger.debug("Delete Item: [User=" + user + ", ItemId=" + itemId+"]");
logger.debug("Delete Item: [User=" + user + ", ItemId=" + itemId + "]");
StorageHubClient shc = new StorageHubClient();
OpenResolver openResolver = shc.open(itemId);
@ -214,11 +226,11 @@ public class FilesStorage {
* folder name
* @param folderDescription
* folder description
* @return workspace folder
* @return Item description
* @throws StatAlgoImporterServiceException
* exception
*/
public WorkspaceFolder createFolder(String user, String parentId, String folderName, String folderDescription)
public ItemDescription createFolder(String user, String parentId, String folderName, String folderDescription)
throws StatAlgoImporterServiceException {
Workspace ws;
try {
@ -234,7 +246,11 @@ public class FilesStorage {
WorkspaceFolder projectTargetFolder = ws.createFolder(folderName, folderDescription, parentId);
return projectTargetFolder;
ItemDescription itemDescription = new ItemDescription(projectTargetFolder.getId(),
projectTargetFolder.getName(), projectTargetFolder.getOwner().getPortalLogin(),
projectTargetFolder.getPath(), projectTargetFolder.getType().name());
return itemDescription;
} catch (Throwable e) {
logger.error("Create folder on workspace: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
@ -251,24 +267,35 @@ public class FilesStorage {
* Parent id
* @param name
* Name
* @return workspace item
* @return Item description
* @throws StatAlgoImporterServiceException
* Exception
*/
public WorkspaceItem find(String user, String parentId, String name) throws StatAlgoImporterServiceException {
Workspace ws;
public ItemDescription find(String user, String parentId, String name) throws StatAlgoImporterServiceException {
try {
logger.info("Find: [user=" + user + ", parentId=" + parentId + ", name=" + name + "]");
StorageHubClient shc = new StorageHubClient();
OpenResolver openResolver = shc.open(parentId);
ws = HomeLibrary.getUserWorkspace(user);
FolderContainer folderContainer = openResolver.asFolder();
ListResolver listResolver = folderContainer.findByName(name);
List<? extends Item> items = listResolver.getItems();
if (items == null || items.isEmpty()) {
logger.debug("No item found");
return null;
} else {
Item item = items.get(0);
logger.debug("Item: " + item);
if (item != null) {
ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(), item.getOwner(),
item.getPath(), item.getClass().getSimpleName());
WorkspaceItem workSpaceItem = ws.getItem(parentId);
if (!workSpaceItem.isFolder()) {
throw new StatAlgoImporterServiceException("No valid project folder!");
return itemDescription;
} else {
return null;
}
}
return ws.find(name, parentId);
} catch (Throwable e) {
logger.error("Find: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
@ -277,41 +304,6 @@ public class FilesStorage {
}
/**
*
* @param user
* User
* @param parentName
* Parent name
* @param name
* Name
* @return WorkspaceItem
* @throws StatAlgoImporterServiceException
* Exception
*/
public WorkspaceItem findInParentName(String user, String parentName, String name)
throws StatAlgoImporterServiceException {
Workspace ws;
try {
logger.info("Find by parent name: [user=" + user + ", parentName=" + parentName + ", name=" + name + "]");
ws = HomeLibrary.getUserWorkspace(user);
WorkspaceItem parentItem = ws.getItem(parentName);
if (!parentItem.isFolder()) {
throw new StatAlgoImporterServiceException("No valid folder: " + parentName + "!");
}
return ws.find(name, parentItem.getId());
} catch (Throwable e) {
logger.error("Find by parent name: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
}
/**
*
* @param user
@ -325,28 +317,27 @@ public class FilesStorage {
*/
public void saveStatisticalAlgorithmProject(String user, InputStream inputStream, String folderId)
throws StatAlgoImporterServiceException {
Workspace ws;
try {
logger.info("Save project: [user=" + user + ", folderId=" + folderId + "]");
StorageHubClient shc = new StorageHubClient();
OpenResolver openResolver = shc.open(folderId);
ws = HomeLibrary.getUserWorkspace(user);
WorkspaceItem workSpaceItem = ws.getItem(folderId);
if (!workSpaceItem.isFolder()) {
throw new StatAlgoImporterServiceException("Destination is not a folder!");
}
WorkspaceItem projectItem = ws.find(STATISTICAL_ALGORITHM_PROJECT_FILE_NAME, folderId);
if (projectItem == null) {
ws.createExternalFile(STATISTICAL_ALGORITHM_PROJECT_FILE_NAME,
STATISTICAL_ALGORITHM_PROJECT_FILE_DESCRIPTION, STATISTICAL_ALGORITHM_PROJECT_MIMETYPE,
inputStream, folderId);
FolderContainer folderContainer = openResolver.asFolder();
ListResolver listResolver = folderContainer.findByName(STATISTICAL_ALGORITHM_PROJECT_FILE_NAME);
List<? extends Item> items = listResolver.getItems();
if (items == null || items.isEmpty()) {
logger.debug("No item found");
FileContainer fileContainer = folderContainer.uploadFile(inputStream,
STATISTICAL_ALGORITHM_PROJECT_FILE_NAME, STATISTICAL_ALGORITHM_PROJECT_FILE_DESCRIPTION);
logger.debug("Item uploaded: " + fileContainer.get().getId());
} else {
ws.updateItem(projectItem.getId(), inputStream);
}
Item item = items.get(0);
logger.debug("Item found: " + item);
FileContainer fileContainer = folderContainer.uploadFile(inputStream,
STATISTICAL_ALGORITHM_PROJECT_FILE_NAME, STATISTICAL_ALGORITHM_PROJECT_FILE_DESCRIPTION);
logger.debug("Item updated: " + fileContainer.get().getId());
return;
}
} catch (Throwable e) {
logger.error("Save project on workspace: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
@ -419,7 +410,7 @@ public class FilesStorage {
* @throws StatAlgoImporterServiceException
* Exceptioon
*/
public WorkspaceItem createItemOnWorkspace(String user, InputStream inputStream, String name, String description,
public ItemDescription createItemOnWorkspace(String user, InputStream inputStream, String name, String description,
String mimeType, String folderId) throws StatAlgoImporterServiceException {
Workspace ws;
try {
@ -436,7 +427,11 @@ public class FilesStorage {
ExternalFile workspaceItem = ws.createExternalFile(name, description, mimeType, inputStream, folderId);
return workspaceItem;
ItemDescription itemDescription = new ItemDescription(workspaceItem.getId(), workspaceItem.getName(),
workspaceItem.getOwner().getPortalLogin(), workspaceItem.getPath(), workspaceItem.getType().name());
itemDescription.setPublicLink(workspaceItem.getPublicLink(false));
return itemDescription;
} catch (Throwable e) {
logger.error("Create item on workspace: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
@ -458,11 +453,11 @@ public class FilesStorage {
* MimeType
* @param folderName
* Folder Path
* @return WorkspaceItem
* @return Item description
* @throws StatAlgoImporterServiceException
* Exception
*/
public WorkspaceItem createItemOnWorkspaceHowAdmin(String user, InputStream inputStream, String name,
public ItemDescription createItemOnWorkspaceHowAdmin(String user, InputStream inputStream, String name,
String description, String mimeType, String folderName) throws StatAlgoImporterServiceException {
Workspace ws;
try {
@ -478,14 +473,27 @@ public class FilesStorage {
}
WorkspaceItem codeJar = ws.find(name, folderItem.getId());
ItemDescription itemDescription;
if (codeJar == null) {
return ws.createExternalFile(name, description, mimeType, inputStream, folderItem.getId());
WorkspaceItem item = ws.createExternalFile(name, description, mimeType, inputStream,
folderItem.getId());
itemDescription = new ItemDescription(item.getId(), item.getName(), item.getOwner().getPortalLogin(),
item.getPath(), item.getType().name());
itemDescription.setPublicLink(item.getPublicLink(false));
} else {
ws.updateItem(codeJar.getId(), inputStream);
return codeJar;
itemDescription = new ItemDescription(codeJar.getId(), codeJar.getName(),
codeJar.getOwner().getPortalLogin(), codeJar.getPath(), codeJar.getType().name());
itemDescription.setPublicLink(codeJar.getPublicLink(false));
}
return itemDescription;
} catch (Throwable e) {
logger.error("Create item on workspace how admin: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
@ -573,11 +581,11 @@ public class FilesStorage {
* User
* @param itemId
* Item id
* @return Workspace Item
* @return Item description
* @throws StatAlgoImporterServiceException
* Exception
*/
public WorkspaceItem retrieveItemInfoOnWorkspace(String user, String itemId)
public ItemDescription retrieveItemInfoOnWorkspace(String user, String itemId)
throws StatAlgoImporterServiceException {
Workspace ws;
try {
@ -585,8 +593,13 @@ public class FilesStorage {
ws = HomeLibrary.getUserWorkspace(user);
WorkspaceItem workSpaceItem = ws.getItem(itemId);
return workSpaceItem;
WorkspaceItem item = ws.getItem(itemId);
ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(),
item.getOwner().getPortalLogin(), item.getPath(), item.getType().name());
itemDescription.setPublicLink(item.getPublicLink(false));
return itemDescription;
} catch (Throwable e) {
logger.error("Retrieve item info on workspace: " + e.getLocalizedMessage(), e);
@ -594,6 +607,37 @@ public class FilesStorage {
}
}
/**
*
* @param user
* User
* @param itemId
* Item id
* @return Item description
* @throws StatAlgoImporterServiceException
* Exception
*/
public ItemDescription retrieveFolderInfoOnWorkspace(String user, String itemId)
throws StatAlgoImporterServiceException {
Workspace ws;
try {
logger.info("Retrieve folder info on workspace: [user=" + user + ", itemId=" + itemId + "]");
ws = HomeLibrary.getUserWorkspace(user);
WorkspaceItem item = ws.getItem(itemId);
ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(),
item.getOwner().getPortalLogin(), item.getPath(), item.getType().name());
return itemDescription;
} catch (Throwable e) {
logger.error("Retrieve folder info on workspace: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
}
/**
*
* @param user

View File

@ -6,8 +6,6 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
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.MainCode;
@ -65,23 +63,10 @@ public class ProjectArchiver {
Project project = (Project) xmlDecoder.readObject();
xmlDecoder.close();
WorkspaceItem projectFolderItem = filesStorage
.retrieveItemInfoOnWorkspace(serviceCredentials.getUserName(),
newProjectFolder = filesStorage
.retrieveFolderInfoOnWorkspace(serviceCredentials.getUserName(),
newProjectFolder.getId());
try {
newProjectFolder.setId(projectFolderItem.getId());
newProjectFolder.setName(projectFolderItem.getName());
newProjectFolder.setOwner(projectFolderItem.getOwner()
.getPortalLogin());
newProjectFolder.setPath(projectFolderItem.getPath());
newProjectFolder.setType(projectFolderItem.getType().name());
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
if (project != null
&& project.getProjectFolder() != null
&& newProjectFolder.compareInfo(project.getProjectFolder()
@ -94,22 +79,10 @@ public class ProjectArchiver {
if (project != null && project.getMainCode() != null
&& project.getMainCode().getItemDescription() != null) {
WorkspaceItem mainCodeItem = filesStorage
ItemDescription newMainCodeItemDescription = filesStorage
.retrieveItemInfoOnWorkspace(serviceCredentials.getUserName(),
project.getMainCode().getItemDescription().getId());
ItemDescription newMainCodeItemDescription;
try {
newMainCodeItemDescription = 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());
}
if (newMainCodeItemDescription.compareInfo(project.getMainCode()
.getItemDescription())) {
} else {