/* * See COPYING for license information. */ package com.rackspacecloud.client.cloudfiles.sample; import org.apache.log4j.Logger; import org.apache.commons.lang.StringUtils; import org.apache.commons.cli.*; import org.apache.http.HttpException; import java.io.*; import java.security.NoSuchAlgorithmException; import java.util.*; import com.rackspacecloud.client.cloudfiles.*; public class FilesRemove { private static final Logger logger = Logger.getLogger(FilesRemove.class); public static void main (String args[]) throws NoSuchAlgorithmException, FilesException { //Build the command line options Options options = addCommandLineOptions (); if (args.length <= 0) printHelp (options); CommandLineParser parser = new GnuParser(); try { // parse the command line arguments CommandLine line = parser.parse( options, args ); if (line.hasOption("help")) { printHelp (options); System.exit(0); } if (line.hasOption("container")) { String containerName = null; containerName = line.getOptionValue("container"); removeContainer (containerName, line.hasOption('r')); }//if (line.hasOption("container")) if (line.hasOption("object")) { String ObjectNameWithPath = null; ObjectNameWithPath = line.getOptionValue("object"); removeObject (ObjectNameWithPath); }//if (line.hasOption("container")) }//end try catch( ParseException err ) { logger.fatal("Parsing exception on the command line: "+ err); System.err.println( "Please see the logs for more details. Error Message: "+err.getMessage() ); err.printStackTrace(System.err); }//catch( ParseException err ) catch ( Exception err) { logger.fatal("Exception : "+ err); System.err.println( "Please see the logs for more details. Error Message: "+err.getMessage() ); }//catch ( IOException err) }//end main private static void removeObject (String objectNameWithPath) throws HttpException, IOException, FilesException { if (!StringUtils.isNotBlank(objectNameWithPath)) { System.err.println ("You must provide a valid value for the Object name and path !"); System.exit (0); }//if (!StringUtils.isNotBlank(ObjectNameWithPath)) int firstSlashLocation = objectNameWithPath.indexOf('/'); if (firstSlashLocation > -1) { String container = objectNameWithPath.substring(0, firstSlashLocation - 1); String object = objectNameWithPath.substring(firstSlashLocation + 1); FilesClient client = new FilesClient(); if ( client.login() ) { client.deleteObject(container, object); } else { System.err.println("Failed to log in to Cloud FS"); System.exit(-1); } } else { System.err.println("Please specify the object path in the form containerName/objectName"); System.exit(-1); } } private static void removeContainer (String containerName, boolean recurse) throws HttpException, IOException, FilesAuthorizationException, FilesException { if (!StringUtils.isNotBlank(containerName)) { System.out.println ("You must provide a valid value for the Container name !"); logger.fatal("You must provide a valid value for the Container name !"); System.exit (0); }//if (!StringUtils.isNotBlank(containerName)) //Check to see if a Container with this name already exists FilesClient client = new FilesClient(); if ( client.login() ) { if(recurse) { List<FilesObject> objects = client.listObjects(containerName); for (FilesObject obj : objects) { client.deleteObject(containerName, obj.getName()); } } try { if (client.deleteContainer(containerName)) { System.out.println(containerName+" deleted"); System.exit (0); } else{ System.out.println(containerName+" was not deleted"); System.exit (-1); } } catch (FilesNotFoundException fnfe) { System.out.println(containerName+" not found !"); System.exit (0); } catch (FilesContainerNotEmptyException fcnee) { System.out.println(containerName+" is not empty use -r !"); System.exit (0); } } else System.out.println ("Failed to login to !"); System.exit(0); } private static void printHelp (Options options) { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp( "Remove [-container] ContainerName [-rf]", options ); }//private static void printHelp () @SuppressWarnings("static-access") private static Options addCommandLineOptions () { Option help = new Option( "help", "print this message" ); Option recurse = new Option( "r", "Recursively go through the folders and files" ); Option container = OptionBuilder.withArgName("container") .hasArg (true) .withDescription ("Name of container to remove.") .create ("container"); Option object = OptionBuilder.withArgName("object") .hasArg (true) .withDescription ("Name and path of object to remove.") .create ("object"); Options options = new Options(); options.addOption(help); options.addOption(recurse); options.addOption(container); options.addOption(object); return options; } }