Java tutorial
/* * See COPYING for license information. */ package com.mosso.client.cloudfiles.sample; import java.io.IOException; import org.apache.commons.cli.Option; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.GnuParser; import org.apache.commons.cli.ParseException; import org.apache.commons.lang.StringUtils; // import org.apache.log4j.Logger; import org.apache.commons.httpclient.HttpException; import com.mosso.client.cloudfiles.*; import java.util.*; /* * TODO: Add List Metadata for all objects as a switch on the all * TODO: Add list Metadata for one object as a switch on a specific object of a container * TODO: Add list specific Objects of a container */ public class FilesList { // private static Logger logger = Logger.getLogger(List.class); public static void main(String args[]) { //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); if (line.hasOption("containersOnly")) { if (line.hasOption("H")) printContainers(true); else printContainers(false); } else if (line.hasOption("all")) { if (line.hasOption("H")) printContainersAll(true); else printContainersAll(false); } //if (line.hasOption("all")) else if (line.hasOption("container")) { String containerName = line.getOptionValue("container"); if (StringUtils.isNotBlank(containerName)) { if (line.hasOption("H")) printContainer(containerName, true); else printContainer(containerName, false); } } //if (line.hasOption("container")) else if (line.hasOption("H")) { System.out.println( "This option needs to be used in conjunction with another option that lists objects or container."); } } catch (ParseException err) { System.err.println("Please see the logs for more details. Error Message: " + err.getMessage()); err.printStackTrace(System.err); } //catch( ParseException err ) catch (FilesException err) { System.err.println("Please see the logs for more details. Error Message: " + err.getMessage()); } //catch (FilesAuthorizationException err) catch (IOException err) { System.err.println("Please see the logs for more details. Error Message: " + err.getMessage()); } //catch ( IOException err) } private static void printContainer(String containerName, boolean humanReadable) throws IOException, HttpException, FilesException { boolean notFound = true; FilesClient client = new FilesClient(); if (client.login()) { List<FilesContainer> containers = client.listContainers(); System.out.println(client.getAccount() + " containers: "); for (FilesContainer value : containers) { if (value.getName().equalsIgnoreCase(containerName)) { notFound = false; FilesContainerInfo info = value.getInfo(); System.out.println("\t" + value.getName() + " - " + info.getObjectCount() + " objects:"); List<FilesObject> objects = value.getObjects(); for (FilesObject obj : objects) { if (humanReadable) System.out.println( "\t\t" + StringUtils.rightPad(obj.getName(), 35) + obj.getSizeString()); else System.out.println( "\t\t" + StringUtils.rightPad(obj.getName(), 35) + obj.getSize() + " Bytes"); } if (humanReadable) { System.out.println("\tTotal Size: " + info.getTotalSize() / 1024 + "KB\n"); } else System.out.println("\tTotal Size: " + info.getTotalSize() + "Bytes\n"); } //if (value.getName().equalsIgnoreCase(containerName)) else notFound = true; } //end for if (notFound) System.out.println("Container: " + containerName + " was not found !"); } }//end private static void printContainersAndContent () throws IOException, HttpException, FilesAuthorizationException private static void printContainersAll(boolean humanReadable) throws IOException, HttpException, FilesException { FilesClient client = new FilesClient(); if (client.login()) { List<FilesContainer> containers = client.listContainers(); System.out.println(client.getAccount() + " containers: "); for (FilesContainer value : containers) { FilesContainerInfo info = value.getInfo(); System.out.println("\t" + value.getName() + " - " + info.getObjectCount() + " objects:"); List<FilesObject> objects = value.getObjects(); for (FilesObject obj : objects) { if (humanReadable) System.out.println("\t\t" + StringUtils.rightPad(obj.getName(), 35) + obj.getSizeString()); else System.out.println( "\t\t" + StringUtils.rightPad(obj.getName(), 35) + obj.getSize() + "Bytes"); } if (humanReadable) { System.out.println("\tTotal Size: " + info.getTotalSize() / 1024 + "KB\n"); } else System.out.println("\tTotal Size: " + info.getTotalSize() + "Bytes\n"); } } }//end private static void printContainersAndContent () throws IOException, HttpException, FilesAuthorizationException private static void printContainers(boolean humanReadable) throws IOException, HttpException, FilesException { FilesClient client = new FilesClient(); if (client.login()) { List<FilesContainer> containers = client.listContainers(); System.out.println(client.getAccount() + " containers: "); for (FilesContainer value : containers) { FilesContainerInfo info = value.getInfo(); System.out.println("\t" + value.getName() + " - " + info.getObjectCount() + " objects:"); if (humanReadable) { System.out.println("\tTotal Size: " + getSizeString(info.getTotalSize()) + "\n"); } else System.out.println("\tTotal Size: " + info.getTotalSize() + "Bytes\n"); } } }//end private static void printContainers () private static void printHelp(Options options) { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("FilesList", options); }//private static void printHelp () @SuppressWarnings("static-access") private static Options addCommandLineOptions() { Option help = new Option("help", "print this message"); Option containersOnly = OptionBuilder.hasArg(false) .withDescription("Show ONLY Containers in account. No Object information is provided.") .create("containersOnly"); Option containers = OptionBuilder.hasArg(false) .withDescription("Show Containers and their objects in this account").create("all"); Option container = OptionBuilder.withArgName("container").hasArg(true) .withDescription("Show Containers and their objects in this account").create("container"); Option kb = new Option("H", "humanReadable", false, "Show size of objects in human readable form. On its own this has no meaning and needs to be used in conjuction to a command that provides size of objects and containers"); Options options = new Options(); options.addOption(containersOnly); options.addOption(containers); options.addOption(container); options.addOption(kb); options.addOption(help); return options; } public static String getSizeString(long size) { long kb = 1024; long mb = 1024 * 1024; long gb = 1024 * 1024 * 1024; //KB if (size > gb) return (size / gb) + "GB"; else if (size > mb) return (size / mb) + "MB"; else if (size > kb) return (size / kb) + "KB"; else return size + "Bytes"; } }