All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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