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 95ee7db..2eb58fd 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 @@ -74,7 +74,6 @@ public class ProjectBuilder { public static final Logger logger = LoggerFactory.getLogger(ProjectBuilder.class); private Project project; - private String backupFolderId; private ServiceCredentials serviceCredentials; private SAIDescriptor saiDescriptor; private Path algorithmJava; @@ -85,17 +84,19 @@ public class ProjectBuilder { this.project = project; this.serviceCredentials = serviceCredentials; this.saiDescriptor = saiDescriptor; + this.algorithmJava = null; + this.infoTXT = null; } public Project buildTarget() throws StatAlgoImporterServiceException { logger.debug("Project Builder: Build Target"); checkInfoForBuild(); createShareInfo(); - createBackup(); + String backupFolderId = createBackupOfPackageProject(); createMainCodeIfRequest(); createTargetFolder(); createDeployFolder(); - createProjectPackage(); + createProjectPackage(backupFolderId); createCompileFolder(); createAlgorithm(); createIntegrationInfo(); @@ -128,16 +129,12 @@ public class ProjectBuilder { public Project buildRepackage() throws StatAlgoImporterServiceException { logger.debug("Project Builder: Repackage"); checkInfoForRepackage(); - createBackupOfPackageProject(); + String backupFolderId = createBackupOfPackageProject(); createMainCodeIfRequest(); - repackageProjectPackage(); + repackageProjectPackage(backupFolderId); return project; } - private void createBackup() throws StatAlgoImporterServiceException { - createBackupOfPackageProject(); - } - private void createMainCodeIfRequest() throws StatAlgoImporterServiceException { if (project.getProjectConfig() != null && project.getProjectConfig().getProjectSupport() != null && (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportBlackBox @@ -160,13 +157,13 @@ public class ProjectBuilder { } - private void repackageProjectPackage() throws StatAlgoImporterServiceException { + private void repackageProjectPackage(String backupFolderId) throws StatAlgoImporterServiceException { List idsToExclude = new ArrayList(); 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 @@ -214,28 +211,33 @@ public class ProjectBuilder { } - private void createBackupOfPackageProject() throws StatAlgoImporterServiceException { - + private String createBackupOfPackageProject() throws StatAlgoImporterServiceException { + + String backupFolderId = null; 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(); + backupFolderId = createBackupFolder(); + if (backupFolderId != null && !backupFolderId.isEmpty()) { + FilesStorage filesStorage = new FilesStorage(); - FilesStorage filesStorage = new FilesStorage(); + GregorianCalendar now = new GregorianCalendar(); - GregorianCalendar now = new GregorianCalendar(); + String packageProjectNewName = project.getInputData().getProjectInfo().getAlgorithmNameToClassName() + + "_backup_" + sdf.format(now.getTime()) + PROJECT_PACKAGE_EXTENTION; - String packageProjectNewName = project.getInputData().getProjectInfo().getAlgorithmNameToClassName() - + "_backup_" + sdf.format(now.getTime()) + PROJECT_PACKAGE_EXTENTION; - - filesStorage.copyItemOnFolderWithNewName(serviceCredentials.getUserName(), - project.getProjectTarget().getProjectDeploy().getPackageProject().getId(), backupFolderId, - packageProjectNewName); + filesStorage.copyItemOnFolderWithNewName(serviceCredentials.getUserName(), + project.getProjectTarget().getProjectDeploy().getPackageProject().getId(), backupFolderId, + packageProjectNewName); + } else { + logger.debug("BackupFolderId is null, backup not done"); + } } else { logger.debug("First deploy, no backup needed"); } + return backupFolderId; } @@ -435,7 +437,7 @@ public class ProjectBuilder { } - private void createProjectPackage() throws StatAlgoImporterServiceException { + private void createProjectPackage(String backupFolderId) throws StatAlgoImporterServiceException { List idsToExclude = new ArrayList(); if (backupFolderId != null && !backupFolderId.isEmpty()) { @@ -514,24 +516,25 @@ public class ProjectBuilder { project.getProjectTarget().setProjectCompile(projectCompile); } - private void createBackupFolder() throws StatAlgoImporterServiceException { + private String createBackupFolder() throws StatAlgoImporterServiceException { FilesStorage filesStorage = new FilesStorage(); ItemDescription backupFolder = filesStorage.find(serviceCredentials.getUserName(), project.getProjectFolder().getFolder().getId(), STATISTICAL_ALGORITHM_BACKUP_FOLDER_NAME); - if (backupFolder == null) { + String backupFolderId = null; + if (backupFolder != null && backupFolder.getId() != null && !backupFolder.getId().isEmpty()) { + backupFolderId = backupFolder.getId(); + } else { ItemDescription newBackupFolder = filesStorage.createFolder(serviceCredentials.getUserName(), project.getProjectFolder().getFolder().getId(), STATISTICAL_ALGORITHM_BACKUP_FOLDER_NAME, STATISTICAL_ALGORITHM_BACKUP_FOLDER_DESCRIPTION); logger.debug("BackupFolder created:" + backupFolder); - backupFolderId = newBackupFolder.getId(); - - } else { - backupFolderId = backupFolder.getId(); } + logger.debug("BackupFolderId: " + backupFolderId); + return backupFolderId; } @@ -552,7 +555,7 @@ public class ProjectBuilder { String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(), codeSource.getId()); codeSource.setPublicLink(pLink); } catch (IOException e) { - logger.error(e.getLocalizedMessage(),e); + logger.error(e.getLocalizedMessage(), e); throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e); } @@ -594,7 +597,7 @@ public class ProjectBuilder { try { tempDirectory = Files.createTempDirectory("StatAlgorithmsJar"); } catch (IOException e) { - logger.error("Error creating temporal directory: " + e.getLocalizedMessage(),e); + logger.error("Error creating temporal directory: " + e.getLocalizedMessage(), e); throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e); } logger.debug("TempDir: " + tempDirectory);