package org.gudy.azureus2.ui.console.commands;
import java.io.PrintStream;
import java.util.*;
import org.gudy.azureus2.core3.util.ByteFormatter;
import org.gudy.azureus2.core3.util.DisplayFormatters;
import org.gudy.azureus2.plugins.PluginInterface;
import org.gudy.azureus2.plugins.download.Download;
import org.gudy.azureus2.plugins.download.DownloadStub;
import org.gudy.azureus2.plugins.download.DownloadStub.DownloadStubFile;
import org.gudy.azureus2.ui.console.ConsoleInput;
public class Archive extends IConsoleCommand {
public Archive()
{
super("archive", "ar");
}
public String getCommandDescriptions()
{
return("archive\t\tar\tLists, and allows the restoration of, archived downloads.");
}
public void printHelpExtra(PrintStream out, List args) {
out.println("> -----");
out.println("Subcommands:");
out.println("list\t\tl\t\tList archived downloads");
out.println("show <num>\ts\t\tShow archived download");
out.println("restore <num>\tres\t\tRestore archived download");
out.println("delete <num>\tdel\t\tDelete archived download");
out.println("> -----");
}
public void
execute(
String commandName, ConsoleInput ci, List<String> args) {
if ( args.size() > 0 ){
PluginInterface pi = ci.getCore().getPluginManager().getDefaultPluginInterface();
DownloadStub[] stubs = pi.getDownloadManager().getDownloadStubs();
String sub = args.get(0);
int index = -1;
if ( args.size() > 1 ){
String index_str = args.get(1);
try{
index = Integer.parseInt( index_str );
index--;
if ( index < 0 || index >= stubs.length ){
index = -1;
}
}catch( Throwable e ){
}
if ( index == -1 ){
ci.out.println( "Invalid archive index: " + index_str );
}
}
if ( sub.equals( "list" ) || sub.equals( "l" )){
int pos = 1;
ci.out.println( "> -----" );
for ( DownloadStub stub: stubs ){
System.out.println( " " + (pos++) + "\t" + stub.getName() + " (" + DisplayFormatters.formatByteCountToKiBEtc( stub.getTorrentSize()) + ")");
}
ci.out.println( "> -----" );
}else if ( index != -1 && ( sub.equals( "show" ) || sub.equals( "s" ))){
try{
DownloadStub stub = stubs[index];
ci.out.println( "> -----" );
ci.out.println( " " + stub.getName() + " - hash=" + ByteFormatter.encodeString( stub.getTorrentHash()));
DownloadStubFile[] files = stub.getStubFiles();
ci.out.println( " Files: " + files.length );
for ( DownloadStubFile file: files ){
long length = file.getLength();
ci.out.println( " " + file.getFile() + " - " + (length < 0?("Not downloaded"):DisplayFormatters.formatByteCountToKiBEtc( length )));
}
ci.out.println( "> -----" );
}catch( Throwable e ){
ci.out.print( e );
}
}else if ( index != -1 && ( sub.equals( "restore" ) || sub.equals( "res" ))){
try{
Download d = stubs[index].destubbify();
ci.out.println( "> Restore of " + d.getName() + " succeeded." );
}catch( Throwable e ){
ci.out.print( e );
}
}else if ( index != -1 && ( sub.equals( "delete" ) || sub.equals( "del" ))){
try{
DownloadStub stub = stubs[index];
String name = stub.getName();
stub.remove();
ci.out.println( "> Delete of " + name + " succeeded." );
}catch( Throwable e ){
ci.out.print( e );
}
}else{
ci.out.println( "Unsupported sub-command: " + sub );
return;
}
}else{
printHelp( ci.out, args );
}
}
}