private void transferCompleted( TransferEvent event ) { downloads.remove( event.getResource() ); StringBuilder buffer = new StringBuilder( 64 ); pad( buffer, lastLength ); buffer.append( '\r' ); out.print( buffer ); }
private String getStatus( long complete, long total ) { if ( total >= 1024 ) { return toKB( complete ) + "/" + toKB( total ) + " KB "; } else if ( total >= 0 ) { return complete + "/" + total + " B "; } else if ( complete >= 1024 ) { return toKB( complete ) + " KB "; } else { return complete + " B "; } }
@Override public void transferProgressed( TransferEvent event ) { TransferResource resource = event.getResource(); downloads.put( resource, Long.valueOf( event.getTransferredBytes() ) ); StringBuilder buffer = new StringBuilder( 64 ); for ( Map.Entry<TransferResource, Long> entry : downloads.entrySet() ) { long total = entry.getKey().getContentLength(); long complete = entry.getValue().longValue(); buffer.append( getStatus( complete, total ) ).append( " " ); } int pad = lastLength - buffer.length(); lastLength = buffer.length(); pad( buffer, pad ); buffer.append( '\r' ); out.print( buffer ); }
@Override public void transferSucceeded( TransferEvent event ) { transferCompleted( event ); TransferResource resource = event.getResource(); long contentLength = event.getTransferredBytes(); if ( contentLength >= 0 ) { String type = ( event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploaded" : "Downloaded" ); String len = contentLength >= 1024 ? toKB( contentLength ) + " KB" : contentLength + " B"; String throughput = ""; long duration = System.currentTimeMillis() - resource.getTransferStartTime(); if ( duration > 0 ) { long bytes = contentLength - resource.getResumeOffset(); DecimalFormat format = new DecimalFormat( "0.0", new DecimalFormatSymbols( Locale.ENGLISH ) ); double kbPerSec = ( bytes / 1024.0 ) / ( duration / 1000.0 ); throughput = " at " + format.format( kbPerSec ) + " KB/sec"; } out.println( type + ": " + resource.getRepositoryUrl() + resource.getResourceName() + " (" + len + throughput + ")" ); } }
@Override public void transferFailed( TransferEvent event ) { transferCompleted( event ); if ( !( event.getException() instanceof MetadataNotFoundException ) ) { event.getException().printStackTrace( out ); } }
session.setTransferListener(new ConsoleTransferListener()); session.setRepositoryListener(new ConsoleRepositoryListener());