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@172014 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2018-10-08 09:45:48 +00:00
parent 9c480e2c84
commit 2a8fef0299
2 changed files with 42 additions and 23 deletions

View File

@ -88,7 +88,7 @@ public class DownloadServlet extends HttpServlet {
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(req, scopeGroupId); ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(req, scopeGroupId);
FilesStorage filesStorage = new FilesStorage(); FilesStorage filesStorage = new FilesStorage();
ItemDownload itemDownload = filesStorage.getItemDownload(serviceCredentials.getUserName(), itemId); ItemDownload itemDownload = filesStorage.getItemDownload(serviceCredentials.getUserName(), itemId);
logger.debug("ItemDownload: "+itemDownload); logger.debug("ItemDownload: " + itemDownload);
if (itemDownload == null) { if (itemDownload == null) {
logger.error("This type of item does not support download operation"); logger.error("This type of item does not support download operation");
throw new ServletException("This type of item does not support download operation"); throw new ServletException("This type of item does not support download operation");
@ -101,27 +101,36 @@ public class DownloadServlet extends HttpServlet {
String fileName; String fileName;
if (itemDownload.getItemDescription() == null) { if (itemDownload.getItemDescription() == null) {
fileName = "filename"; fileName = "filename";
resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\"");
resp.setHeader("Content-Type", "application/force-download");
} else { } else {
if (itemDownload.getItemDescription().getName() == null if (itemDownload.getItemDescription().getName() == null
|| itemDownload.getItemDescription().getName().isEmpty()) { || itemDownload.getItemDescription().getName().isEmpty()) {
if (itemDownload.getItemDescription().getType() != null && itemDownload.getItemDescription() if (itemDownload.getItemDescription().getType() != null && itemDownload.getItemDescription()
.getType().compareTo(FolderItem.class.getSimpleName()) == 0) { .getType().compareTo(FolderItem.class.getSimpleName()) == 0) {
fileName = "folder.zip"; fileName = "folder.zip";
resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\"");
resp.setHeader("Content-Type", "application/zip");
} else { } else {
fileName = "filename"; fileName = "filename";
resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\"");
resp.setHeader("Content-Type", "application/force-download");
} }
} else { } else {
if (itemDownload.getItemDescription().getType() != null && itemDownload.getItemDescription() if (itemDownload.getItemDescription().getType() != null && itemDownload.getItemDescription()
.getType().compareTo(FolderItem.class.getSimpleName()) == 0) { .getType().compareTo(FolderItem.class.getSimpleName()) == 0) {
fileName = itemDownload.getItemDescription().getName() + ".zip"; fileName = itemDownload.getItemDescription().getName() + ".zip";
resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\"");
resp.setHeader("Content-Type", "application/zip");
} else { } else {
fileName = itemDownload.getItemDescription().getName(); fileName = itemDownload.getItemDescription().getName();
resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\"");
resp.setHeader("Content-Type", "application/force-download");
} }
} }
} }
logger.debug("DownloadServlet filename: "+fileName); logger.debug("DownloadServlet filename: " + fileName);
resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\"");
resp.setHeader("Content-Type", "application/force-download");
stream(itemDownload.getInputStream(), resp.getOutputStream()); stream(itemDownload.getInputStream(), resp.getOutputStream());
} }
} }

View File

@ -81,12 +81,14 @@ public class ProjectBuilder {
private Path infoTXT; private Path infoTXT;
public ProjectBuilder(Project project, ServiceCredentials serviceCredentials, SAIDescriptor saiDescriptor) { public ProjectBuilder(Project project, ServiceCredentials serviceCredentials, SAIDescriptor saiDescriptor) {
logger.debug("ProjectBuilder");
this.project = project; this.project = project;
this.serviceCredentials = serviceCredentials; this.serviceCredentials = serviceCredentials;
this.saiDescriptor = saiDescriptor; this.saiDescriptor = saiDescriptor;
} }
public Project buildTarget() throws StatAlgoImporterServiceException { public Project buildTarget() throws StatAlgoImporterServiceException {
logger.debug("Project Builder: Build Target");
checkInfoForBuild(); checkInfoForBuild();
createShareInfo(); createShareInfo();
createBackup(); createBackup();
@ -117,12 +119,14 @@ public class ProjectBuilder {
} }
public Project buildDeploy() throws StatAlgoImporterServiceException { public Project buildDeploy() throws StatAlgoImporterServiceException {
logger.debug("Project Builder: Deploy");
checkInfoForDeploy(); checkInfoForDeploy();
copyJarInDeploy(); copyJarInDeploy();
return project; return project;
} }
public Project buildRepackage() throws StatAlgoImporterServiceException { public Project buildRepackage() throws StatAlgoImporterServiceException {
logger.debug("Project Builder: Repackage");
checkInfoForRepackage(); checkInfoForRepackage();
createBackupOfPackageProject(); createBackupOfPackageProject();
createMainCodeIfRequest(); createMainCodeIfRequest();
@ -158,16 +162,18 @@ public class ProjectBuilder {
private void repackageProjectPackage() throws StatAlgoImporterServiceException { private void repackageProjectPackage() throws StatAlgoImporterServiceException {
List<String> idsToExclude = new ArrayList<String>(); List<String> idsToExclude = new ArrayList<String>();
logger.debug("Exclude Backup Folder Id: "+backupFolderId); if (backupFolderId != null && !backupFolderId.isEmpty()) {
idsToExclude.add(backupFolderId); logger.debug("Exclude Backup Folder Id: " + backupFolderId);
idsToExclude.add(backupFolderId);
}
FilesStorage filesStorage = new FilesStorage(); FilesStorage filesStorage = new FilesStorage();
if (project.getProjectTarget() != null && project.getProjectTarget().getFolder() != null if (project.getProjectTarget() != null && project.getProjectTarget().getFolder() != null
&& project.getProjectTarget().getFolder().getId() != null && project.getProjectTarget().getFolder().getId() != null
&& !project.getProjectTarget().getFolder().getId().isEmpty()) { && !project.getProjectTarget().getFolder().getId().isEmpty()) {
String targetFolderId=project.getProjectTarget().getFolder().getId(); String targetFolderId = project.getProjectTarget().getFolder().getId();
logger.debug("Exclude Target Folder Id: "+targetFolderId); logger.debug("Exclude Target Folder Id: " + targetFolderId);
idsToExclude.add(targetFolderId); idsToExclude.add(targetFolderId);
} }
@ -209,12 +215,12 @@ public class ProjectBuilder {
} }
private void createBackupOfPackageProject() throws StatAlgoImporterServiceException { private void createBackupOfPackageProject() throws StatAlgoImporterServiceException {
logger.debug("Create Backup of PackageProject");
if (project.getProjectTarget() != null && project.getProjectTarget().getProjectDeploy() != null if (project.getProjectTarget() != null && project.getProjectTarget().getProjectDeploy() != null
&& project.getProjectTarget().getProjectDeploy().getPackageProject() != null && project.getProjectTarget().getProjectDeploy().getPackageProject() != null
&& project.getProjectTarget().getProjectDeploy().getPackageProject().getId() != null && project.getProjectTarget().getProjectDeploy().getPackageProject().getId() != null
&& !project.getProjectTarget().getProjectDeploy().getPackageProject().getId().isEmpty()) { && !project.getProjectTarget().getProjectDeploy().getPackageProject().getId().isEmpty()) {
logger.debug("Create Backup of PackageProject");
createBackupFolder(); createBackupFolder();
FilesStorage filesStorage = new FilesStorage(); FilesStorage filesStorage = new FilesStorage();
@ -227,6 +233,8 @@ public class ProjectBuilder {
filesStorage.copyItemOnFolderWithNewName(serviceCredentials.getUserName(), filesStorage.copyItemOnFolderWithNewName(serviceCredentials.getUserName(),
project.getProjectTarget().getProjectDeploy().getPackageProject().getId(), backupFolderId, project.getProjectTarget().getProjectDeploy().getPackageProject().getId(), backupFolderId,
packageProjectNewName); packageProjectNewName);
} else {
logger.debug("First deploy, no backup needed");
} }
} }
@ -428,19 +436,20 @@ public class ProjectBuilder {
} }
private void createProjectPackage() throws StatAlgoImporterServiceException { private void createProjectPackage() throws StatAlgoImporterServiceException {
List<String> idsToExclude = new ArrayList<String>(); List<String> idsToExclude = new ArrayList<String>();
logger.debug("Exclude Backup Folder Id: "+backupFolderId); if (backupFolderId != null && !backupFolderId.isEmpty()) {
idsToExclude.add(backupFolderId); logger.debug("Exclude Backup Folder Id: " + backupFolderId);
idsToExclude.add(backupFolderId);
}
FilesStorage filesStorage = new FilesStorage(); FilesStorage filesStorage = new FilesStorage();
if (project.getProjectTarget() != null && project.getProjectTarget().getFolder() != null if (project.getProjectTarget() != null && project.getProjectTarget().getFolder() != null
&& project.getProjectTarget().getFolder().getId() != null && project.getProjectTarget().getFolder().getId() != null
&& !project.getProjectTarget().getFolder().getId().isEmpty()) { && !project.getProjectTarget().getFolder().getId().isEmpty()) {
String targetFolderId=project.getProjectTarget().getFolder().getId(); String targetFolderId = project.getProjectTarget().getFolder().getId();
logger.debug("Exclude Target Folder Id: "+targetFolderId); logger.debug("Exclude Target Folder Id: " + targetFolderId);
idsToExclude.add(targetFolderId); idsToExclude.add(targetFolderId);
} }
@ -459,7 +468,7 @@ public class ProjectBuilder {
project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + PROJECT_PACKAGE_EXTENTION, project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + PROJECT_PACKAGE_EXTENTION,
PROJECT_PACKAGE_DESCRIPTION, PROJECT_PACKAGE_MIMETYPE, PROJECT_PACKAGE_DESCRIPTION, PROJECT_PACKAGE_MIMETYPE,
project.getProjectTarget().getProjectDeploy().getFolder().getId()); project.getProjectTarget().getProjectDeploy().getFolder().getId());
String pLink=filesStorage.getPublicLink(serviceCredentials.getUserName(), packageUrl.getId()); String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(), packageUrl.getId());
packageUrl.setPublicLink(pLink); packageUrl.setPublicLink(pLink);
logger.debug("ProjectPackageItem:" + packageUrl); logger.debug("ProjectPackageItem:" + packageUrl);
project.getProjectTarget().getProjectDeploy().setPackageProject(packageUrl); project.getProjectTarget().getProjectDeploy().setPackageProject(packageUrl);
@ -515,10 +524,10 @@ public class ProjectBuilder {
ItemDescription newBackupFolder = filesStorage.createFolder(serviceCredentials.getUserName(), ItemDescription newBackupFolder = filesStorage.createFolder(serviceCredentials.getUserName(),
project.getProjectFolder().getFolder().getId(), STATISTICAL_ALGORITHM_BACKUP_FOLDER_NAME, project.getProjectFolder().getFolder().getId(), STATISTICAL_ALGORITHM_BACKUP_FOLDER_NAME,
STATISTICAL_ALGORITHM_BACKUP_FOLDER_DESCRIPTION); STATISTICAL_ALGORITHM_BACKUP_FOLDER_DESCRIPTION);
logger.debug("BackupFolder:" + backupFolder); logger.debug("BackupFolder created:" + backupFolder);
backupFolderId = newBackupFolder.getId(); backupFolderId = newBackupFolder.getId();
} else { } else {
backupFolderId = backupFolder.getId(); backupFolderId = backupFolder.getId();
@ -539,7 +548,7 @@ public class ProjectBuilder {
project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + ALGORITHM_EXTENTION, project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + ALGORITHM_EXTENTION,
ALGORITHM_DESCRIPTION, ALGORITHM_MIMETYPE, ALGORITHM_DESCRIPTION, ALGORITHM_MIMETYPE,
project.getProjectTarget().getProjectCompile().getFolder().getId()); project.getProjectTarget().getProjectCompile().getFolder().getId());
String pLink=filesStorage.getPublicLink(serviceCredentials.getUserName(), codeSource.getId()); String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(), codeSource.getId());
codeSource.setPublicLink(pLink); codeSource.setPublicLink(pLink);
} catch (IOException e) { } catch (IOException e) {
logger.error(e.getLocalizedMessage()); logger.error(e.getLocalizedMessage());
@ -564,7 +573,8 @@ public class ProjectBuilder {
Files.newInputStream(infoTXT, StandardOpenOption.READ), INFO_NAME + INFO_EXTENTION, Files.newInputStream(infoTXT, StandardOpenOption.READ), INFO_NAME + INFO_EXTENTION,
INFO_DESCRIPTION, INFO_MIMETYPE, INFO_DESCRIPTION, INFO_MIMETYPE,
project.getProjectTarget().getProjectCompile().getFolder().getId()); project.getProjectTarget().getProjectCompile().getFolder().getId());
String pLink=filesStorage.getPublicLink(serviceCredentials.getUserName(), integrationItemDescription.getId()); String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(),
integrationItemDescription.getId());
integrationItemDescription.setPublicLink(pLink); integrationItemDescription.setPublicLink(pLink);
} catch (IOException e) { } catch (IOException e) {
logger.error(e.getLocalizedMessage(), e); logger.error(e.getLocalizedMessage(), e);
@ -656,7 +666,7 @@ public class ProjectBuilder {
project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + JAR_EXTENTION, project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + JAR_EXTENTION,
CODE_JAR_DESCRIPTION, CODE_JAR_MIMETYPE, CODE_JAR_DESCRIPTION, CODE_JAR_MIMETYPE,
project.getProjectTarget().getProjectCompile().getFolder().getId()); project.getProjectTarget().getProjectCompile().getFolder().getId());
String pLink=filesStorage.getPublicLink(serviceCredentials.getUserName(), codeJarItemDescription.getId()); String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(), codeJarItemDescription.getId());
codeJarItemDescription.setPublicLink(pLink); codeJarItemDescription.setPublicLink(pLink);
} catch (IOException e) { } catch (IOException e) {
logger.error(e.getLocalizedMessage(), e); logger.error(e.getLocalizedMessage(), e);