[ 
https://issues.apache.org/jira/browse/MNG-5977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Osipov closed MNG-5977.
-------------------------------
    Resolution: Fixed

Changes in detail:

* Introduced a {{FileSizeFormat}} which flexibly scales the input to the 
nearest unit (B, kB, MB, GB)
  from 1 to 10 with one decimal place, from 10 with whole numbers. All units 
cleanly scale with SI prefixes.
  Additionally, a progress format is also available which scales progressed 
size and total size
  with the unit of the total size. An unknown total size is handled too. If 
progressed size and total
  size are equal (download has finished), numbers collapse. The format class 
has full test coverage.
  All transfer listeners use this format equally.
* Synchronize all calls of the console transfer listener to avoid race 
conditions for the {{PrintStream}}
  which happens for longer lines.
* Print overriding blank lines when necessary only.
* Prepend the progress with {{Progress (n): }} to denote that first progress is 
going on and second how many
  transfers are in the pipeline.
* Separate parallel progresses with {{ | }}.
* Replaced {{ConcurrentHashMap}} with a synchronized {{LinkedHashMap}}. This 
retains the insertion
  order of the transfers which makes the progress meter look like a parallel 
progress queue. No disturbing
  jumps between progress changes anymore.
* If running in debug mode, the filename is printed additionally.

> Improve output readability of our MavenTransferListener implementations
> -----------------------------------------------------------------------
>
>                 Key: MNG-5977
>                 URL: https://issues.apache.org/jira/browse/MNG-5977
>             Project: Maven
>          Issue Type: Improvement
>          Components: Command Line, Embedding
>    Affects Versions: 3.3.9
>            Reporter: Michael Osipov
>            Assignee: Michael Osipov
>             Fix For: 3.4.0
>
>         Attachments: current.zip, improved.zip, improved.zip
>
>
> The current output of Downloading/Downladed/Uploading/Uploaded transfer 
> notification has some flaws:
> 1. It does not scale numbers between 1 and 1000 with appropriate units
> 2. It should use correct size ({{kB}}, {{MB}}, {{GB}} and time units ({{s}}) 
> but doesn't. (see https://en.wikipedia.org/wiki/Binary_prefix and 
> https://en.wikipedia.org/wiki/Metric_prefix)
> 3. When Aether downloads in parallel (which applies for non-POM files) the 
> progress interleaves due to race conditions to {{System.out}} and you do not 
> know to which resource a progress belongs to.
> Let's use an improved version of MPIR {{DependenciesRenderer}}'s 
> [{{FileDecimalFormat}}|https://github.com/apache/maven-plugins/blob/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java#L1583]
>  for it.
> concrete examples:
> before
> {noformat}191/191 KB   27/48 KB   48/119 KB   80/87 KB   13/13 KB   {noformat}
> after:
> {noformat}Progress (4): 500/800 B | 40/45 kB | 193 kB/315 kB | 1.3/9 MB | 
> 12/30 MB{noformat}
> if total size is unavailable or the file has already been downloaded but not 
> removed from the list, the output will be:
> {noformat}Progress (4): 800 B | 40/45 kB | 193 kB | 9 MB | 12 MB{noformat}
> or in debug mode:
> {noformat}Progress (5): xml-apis-1.3.04.jar (<progress>) | 
> maven-shared-utils-0.6.jar (<progress>) | xercesImpl-2.9.1.jar (<progress>) | 
> commons-digester-1.6.jar (<progress>) | maven-reporting-impl-2.3.jar 
> (<progress>){noformat}
> If the scale is between 1 and 10, one decimal position will be printed out. 
> If it is between 10 and 1000, it will be an integer.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to