diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/DownloadServlet.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/DownloadServlet.java index c8799ab..2a1705e 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/DownloadServlet.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/DownloadServlet.java @@ -88,7 +88,7 @@ public class DownloadServlet extends HttpServlet { ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(req, scopeGroupId); FilesStorage filesStorage = new FilesStorage(); ItemDownload itemDownload = filesStorage.getItemDownload(serviceCredentials.getUserName(), itemId); - logger.debug("ItemDownload: "+itemDownload); + logger.debug("ItemDownload: " + itemDownload); if (itemDownload == null) { logger.error("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; if (itemDownload.getItemDescription() == null) { fileName = "filename"; + resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\""); + resp.setHeader("Content-Type", "application/force-download"); } else { if (itemDownload.getItemDescription().getName() == null || itemDownload.getItemDescription().getName().isEmpty()) { if (itemDownload.getItemDescription().getType() != null && itemDownload.getItemDescription() .getType().compareTo(FolderItem.class.getSimpleName()) == 0) { fileName = "folder.zip"; + resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\""); + resp.setHeader("Content-Type", "application/zip"); } else { fileName = "filename"; + resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\""); + resp.setHeader("Content-Type", "application/force-download"); } } else { if (itemDownload.getItemDescription().getType() != null && itemDownload.getItemDescription() .getType().compareTo(FolderItem.class.getSimpleName()) == 0) { fileName = itemDownload.getItemDescription().getName() + ".zip"; + resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\""); + resp.setHeader("Content-Type", "application/zip"); + } else { fileName = itemDownload.getItemDescription().getName(); + resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\""); + resp.setHeader("Content-Type", "application/force-download"); } } } - logger.debug("DownloadServlet filename: "+fileName); - resp.setHeader("Content-Disposition:", "attachment;filename=\"" + fileName + "\""); - resp.setHeader("Content-Type", "application/force-download"); + logger.debug("DownloadServlet filename: " + fileName); stream(itemDownload.getInputStream(), resp.getOutputStream()); } } diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/generator/ProjectBuilder.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/generator/ProjectBuilder.java index 2f4eb7e..21e2648 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/generator/ProjectBuilder.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/generator/ProjectBuilder.java @@ -81,12 +81,14 @@ public class ProjectBuilder { private Path infoTXT; public ProjectBuilder(Project project, ServiceCredentials serviceCredentials, SAIDescriptor saiDescriptor) { + logger.debug("ProjectBuilder"); this.project = project; this.serviceCredentials = serviceCredentials; this.saiDescriptor = saiDescriptor; } public Project buildTarget() throws StatAlgoImporterServiceException { + logger.debug("Project Builder: Build Target"); checkInfoForBuild(); createShareInfo(); createBackup(); @@ -117,12 +119,14 @@ public class ProjectBuilder { } public Project buildDeploy() throws StatAlgoImporterServiceException { + logger.debug("Project Builder: Deploy"); checkInfoForDeploy(); copyJarInDeploy(); return project; } public Project buildRepackage() throws StatAlgoImporterServiceException { + logger.debug("Project Builder: Repackage"); checkInfoForRepackage(); createBackupOfPackageProject(); createMainCodeIfRequest(); @@ -158,16 +162,18 @@ public class ProjectBuilder { private void repackageProjectPackage() throws StatAlgoImporterServiceException { List idsToExclude = new ArrayList(); - logger.debug("Exclude Backup Folder Id: "+backupFolderId); - idsToExclude.add(backupFolderId); - + if (backupFolderId != null && !backupFolderId.isEmpty()) { + logger.debug("Exclude Backup Folder Id: " + backupFolderId); + idsToExclude.add(backupFolderId); + } + FilesStorage filesStorage = new FilesStorage(); if (project.getProjectTarget() != null && project.getProjectTarget().getFolder() != null && project.getProjectTarget().getFolder().getId() != null && !project.getProjectTarget().getFolder().getId().isEmpty()) { - String targetFolderId=project.getProjectTarget().getFolder().getId(); - logger.debug("Exclude Target Folder Id: "+targetFolderId); + String targetFolderId = project.getProjectTarget().getFolder().getId(); + logger.debug("Exclude Target Folder Id: " + targetFolderId); idsToExclude.add(targetFolderId); } @@ -209,12 +215,12 @@ public class ProjectBuilder { } private void createBackupOfPackageProject() throws StatAlgoImporterServiceException { - logger.debug("Create Backup of PackageProject"); + if (project.getProjectTarget() != null && project.getProjectTarget().getProjectDeploy() != null && project.getProjectTarget().getProjectDeploy().getPackageProject() != null && project.getProjectTarget().getProjectDeploy().getPackageProject().getId() != null && !project.getProjectTarget().getProjectDeploy().getPackageProject().getId().isEmpty()) { - + logger.debug("Create Backup of PackageProject"); createBackupFolder(); FilesStorage filesStorage = new FilesStorage(); @@ -227,6 +233,8 @@ public class ProjectBuilder { filesStorage.copyItemOnFolderWithNewName(serviceCredentials.getUserName(), project.getProjectTarget().getProjectDeploy().getPackageProject().getId(), backupFolderId, packageProjectNewName); + } else { + logger.debug("First deploy, no backup needed"); } } @@ -428,19 +436,20 @@ public class ProjectBuilder { } private void createProjectPackage() throws StatAlgoImporterServiceException { - - + List idsToExclude = new ArrayList(); - logger.debug("Exclude Backup Folder Id: "+backupFolderId); - idsToExclude.add(backupFolderId); + if (backupFolderId != null && !backupFolderId.isEmpty()) { + logger.debug("Exclude Backup Folder Id: " + backupFolderId); + idsToExclude.add(backupFolderId); + } FilesStorage filesStorage = new FilesStorage(); if (project.getProjectTarget() != null && project.getProjectTarget().getFolder() != null && project.getProjectTarget().getFolder().getId() != null && !project.getProjectTarget().getFolder().getId().isEmpty()) { - String targetFolderId=project.getProjectTarget().getFolder().getId(); - logger.debug("Exclude Target Folder Id: "+targetFolderId); + String targetFolderId = project.getProjectTarget().getFolder().getId(); + logger.debug("Exclude Target Folder Id: " + targetFolderId); idsToExclude.add(targetFolderId); } @@ -459,7 +468,7 @@ public class ProjectBuilder { project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + PROJECT_PACKAGE_EXTENTION, PROJECT_PACKAGE_DESCRIPTION, PROJECT_PACKAGE_MIMETYPE, project.getProjectTarget().getProjectDeploy().getFolder().getId()); - String pLink=filesStorage.getPublicLink(serviceCredentials.getUserName(), packageUrl.getId()); + String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(), packageUrl.getId()); packageUrl.setPublicLink(pLink); logger.debug("ProjectPackageItem:" + packageUrl); project.getProjectTarget().getProjectDeploy().setPackageProject(packageUrl); @@ -515,10 +524,10 @@ public class ProjectBuilder { ItemDescription newBackupFolder = filesStorage.createFolder(serviceCredentials.getUserName(), project.getProjectFolder().getFolder().getId(), STATISTICAL_ALGORITHM_BACKUP_FOLDER_NAME, STATISTICAL_ALGORITHM_BACKUP_FOLDER_DESCRIPTION); - logger.debug("BackupFolder:" + backupFolder); + logger.debug("BackupFolder created:" + backupFolder); backupFolderId = newBackupFolder.getId(); - + } else { backupFolderId = backupFolder.getId(); @@ -539,7 +548,7 @@ public class ProjectBuilder { project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + ALGORITHM_EXTENTION, ALGORITHM_DESCRIPTION, ALGORITHM_MIMETYPE, project.getProjectTarget().getProjectCompile().getFolder().getId()); - String pLink=filesStorage.getPublicLink(serviceCredentials.getUserName(), codeSource.getId()); + String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(), codeSource.getId()); codeSource.setPublicLink(pLink); } catch (IOException e) { logger.error(e.getLocalizedMessage()); @@ -564,7 +573,8 @@ public class ProjectBuilder { Files.newInputStream(infoTXT, StandardOpenOption.READ), INFO_NAME + INFO_EXTENTION, INFO_DESCRIPTION, INFO_MIMETYPE, project.getProjectTarget().getProjectCompile().getFolder().getId()); - String pLink=filesStorage.getPublicLink(serviceCredentials.getUserName(), integrationItemDescription.getId()); + String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(), + integrationItemDescription.getId()); integrationItemDescription.setPublicLink(pLink); } catch (IOException e) { logger.error(e.getLocalizedMessage(), e); @@ -656,7 +666,7 @@ public class ProjectBuilder { project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + JAR_EXTENTION, CODE_JAR_DESCRIPTION, CODE_JAR_MIMETYPE, project.getProjectTarget().getProjectCompile().getFolder().getId()); - String pLink=filesStorage.getPublicLink(serviceCredentials.getUserName(), codeJarItemDescription.getId()); + String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(), codeJarItemDescription.getId()); codeJarItemDescription.setPublicLink(pLink); } catch (IOException e) { logger.error(e.getLocalizedMessage(), e);