ref 12977: SAI - Force the path of the project folder to be updated to a new format

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

Now, when the project is open the path is forced to be updated

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@174888 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2018-12-14 10:52:12 +00:00
parent 6f9cd6d4a0
commit 3595890e3e
1 changed files with 34 additions and 31 deletions

View File

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