Show whether a download has already started.
[xudocci.git] / src / main / java / net / pterodactylus / xdcc / ui / stdin / CommandReader.java
index 19d5a2b..836f406 100644 (file)
@@ -118,18 +118,24 @@ public class CommandReader extends AbstractExecutionThreadService {
                                writeLine("End of Search.");
                        } else if (words[0].equalsIgnoreCase("dcc")) {
                                int counter = 0;
-                               for (DccReceiver dccReceiver : core.dccReceivers()) {
-                                       write(String.format("[%d] %s (%s, ", counter++, dccReceiver.filename(), dccReceiver.size()));
+                               for (Download download : core.downloads()) {
+                                       DccReceiver dccReceiver = download.dccReceiver();
+                                       if (dccReceiver == null) {
+                                               /* download has not even started. */
+                                               writer.write(String.format("[%d] %s requested from %s (not started yet)\n", counter++, download.pack().name(), download.bot().name()));
+                                               continue;
+                                       }
+                                       writer.write(String.format("[%d] %s from %s (%s, ", counter++, dccReceiver.filename(), download.bot().name(), f(dccReceiver.size())));
                                        if (dccReceiver.isRunning()) {
-                                               write(String.format("%.1f%%, %s", dccReceiver.progress() * 100.0 / dccReceiver.size(), f(dccReceiver.currentRate())));
+                                               writer.write(String.format("%.1f%%, %s", dccReceiver.progress() * 100.0 / dccReceiver.size(), f(dccReceiver.currentRate())));
                                        } else {
                                                if (dccReceiver.progress() >= dccReceiver.size()) {
-                                                       write(String.format("complete, %s", f(dccReceiver.overallRate())));
+                                                       writer.write(String.format("complete, %s", f(dccReceiver.overallRate())));
                                                } else {
-                                                       write(String.format("aborted at %.1f%%, %s", dccReceiver.progress() * 100.0 / dccReceiver.size(), f(dccReceiver.currentRate())));
+                                                       writer.write(String.format("aborted at %.1f%%, %s", dccReceiver.progress() * 100.0 / dccReceiver.size(), f(dccReceiver.currentRate())));
                                                }
                                        }
-                                       write("/s)\n");
+                                       writer.write("/s)\n");
                                }
                                writeLine("End of DCCs.");
                        } else if (words[0].equalsIgnoreCase("get")) {
@@ -172,7 +178,7 @@ public class CommandReader extends AbstractExecutionThreadService {
        public void downloadStarted(DownloadStarted downloadStarted) {
                Download download = downloadStarted.download();
                try {
-                       writeLine(String.format("Download of %s (from %s, %s) has started.", download.filename(), download.bot().name(), download.bot().network().name()));
+                       writeLine(String.format("Download of %s (from %s, %s) has started.", download.pack().name(), download.bot().name(), download.bot().network().name()));
                } catch (IOException ioe1) {
                        /* ignore. */
                }
@@ -188,7 +194,7 @@ public class CommandReader extends AbstractExecutionThreadService {
        public void downloadFinished(DownloadFinished downloadFinished) {
                Download download = downloadFinished.download();
                try {
-                       writeLine(String.format("Download of %s (from %s, %s) has finished, at %s/s.", download.filename(), download.bot().name(), download.bot().network().name(), f(download.dccReceiver().overallRate())));
+                       writeLine(String.format("Download of %s (from %s, %s) has finished, at %s/s.", download.pack().name(), download.bot().name(), download.bot().network().name(), f(download.dccReceiver().overallRate())));
                } catch (IOException ioe1) {
                        /* ignore. */
                }
@@ -245,19 +251,6 @@ public class CommandReader extends AbstractExecutionThreadService {
        //
 
        /**
-        * Writes the given text to the {@link #writer}.
-        *
-        * @param text
-        *              The text to write
-        * @throws IOException
-        *              if an I/O error occurs
-        */
-       private void write(String text) throws IOException {
-               writer.write(text);
-               writer.flush();
-       }
-
-       /**
         * Writes the given line followed by an LF to the {@link #writer}.
         *
         * @param line