
prerna.reactor.workspace.DeleteUserAssetReactor Maven / Gradle / Ivy
The newest version!
package prerna.reactor.workspace;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import prerna.auth.AuthProvider;
import prerna.auth.User;
import prerna.cluster.util.ClusterUtil;
import prerna.reactor.AbstractReactor;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.PixelOperationType;
import prerna.sablecc2.om.ReactorKeysEnum;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import prerna.util.AssetUtility;
import prerna.util.Constants;
import prerna.util.Utility;
public class DeleteUserAssetReactor extends AbstractReactor {
private static final String DIR_SEPARATOR = java.nio.file.FileSystems.getDefault().getSeparator();
private static final Logger classLogger = LogManager.getLogger(DeleteUserAssetReactor.class);
public DeleteUserAssetReactor() {
this.keysToGet = new String[]{ReactorKeysEnum.RELATIVE_PATH.getKey()};
}
@Override
public NounMetadata execute() {
organizeKeys();
String relativeFilePath = this.keyValue.get(this.keysToGet[0]);
if(relativeFilePath == null || relativeFilePath.isEmpty() ) {
throw new IllegalArgumentException("Must input file path and file name to delete");
}
relativeFilePath = Utility.normalizePath(relativeFilePath);
String assetProjectId = null;
User user = this.insight.getUser();
if(user != null){
AuthProvider token = user.getPrimaryLogin();
if(token != null){
assetProjectId = user.getAssetProjectId(token);
Utility.getProject(assetProjectId);
}
}
if(assetProjectId == null){
throw new IllegalArgumentException("Unable to find user asset app");
}
String userFolder = AssetUtility.getAssetBasePath(this.insight, AssetUtility.USER_SPACE_KEY, true);
File relativeFile = new File(userFolder + DIR_SEPARATOR + relativeFilePath);
if(!relativeFile.exists()){
throw new IllegalArgumentException("File/Folder does not exist that this location");
}
//File can be a folder so need to take that into account
Boolean deleted=false;
if(relativeFile.isDirectory()){
try {
FileUtils.deleteDirectory(relativeFile);
deleted = true;
} catch (IOException e) {
classLogger.error(Constants.STACKTRACE, e);
}
catch (IllegalArgumentException e) {
classLogger.error(Constants.STACKTRACE, e);
}
} else{
deleted = relativeFile.delete();
}
//When i get appId
ClusterUtil.pushProject(assetProjectId);
return new NounMetadata(deleted, PixelDataType.BOOLEAN, PixelOperationType.USER_DIR);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy