@Override
	public void run() {
		for (Map.Entry<String, String> entry : urlMap.entrySet()) {
			if (!stopDownloading) {
				boolean isSuccessfullyDownloaded = false;
				String superLink = createSuperLink ? createSuperLink(entry.getValue()) : "";
				if (!superLink.isEmpty())
					isSuccessfullyDownloaded = downloadFiles(entry.getKey(), superLink);
				if (!isSuccessfullyDownloaded)
					isSuccessfullyDownloaded = downloadFiles(entry.getKey(), entry.getValue());
				DownloadingCompletedEvent event = new DownloadingCompletedEvent(this, isSuccessfullyDownloaded, new File(entry.getKey()).getName());
				for (DownloadingCompletedListener ls : listeners) {
					ls.listenForDownloadingCompletion(event);
				}
			}
		}
		RunningCompletedEvent event = new RunningCompletedEvent(this, true);
		for (DownloadingCompletedListener ls : listeners) {
			ls.listenForRunningCompleted(event);
		}
	}