ProgressPrinter.java
01 /*
02  *  ProgressPrinter.java
03  *
04  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
05  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
06  *
07  *  This file is part of GATE (see http://gate.ac.uk/), and is free
08  *  software, licenced under the GNU Library General Public License,
09  *  Version 2, June 1991 (in the distribution as file licence.html,
10  *  and also available at http://gate.ac.uk/gate/licence.html).
11  *
12  *  Valentin Tablan, 21/07/2000
13  *
14  *  $Id: ProgressPrinter.java 17600 2014-03-08 18:47:11Z markagreenwood $
15  */
16 
17 package gate.util;
18 
19 import java.io.PrintStream;
20 
21 import gate.event.ProgressListener;
22 
23 
24 /**
25  * Class used to simulate the behaviour of a progress bar on an OutputStream.
26  *
27  */
28 public class ProgressPrinter implements ProgressListener {
29 
30   /**
31    * Constructor.
32    *
33    @param out the stream used for output
34    @param numberOfSteps the number of steps until the process is over (the
35    *     number of characters printed for a full run)
36    */
37   public ProgressPrinter(PrintStream out, int numberOfSteps) {
38     this.out = out;
39     this.numberOfSteps = numberOfSteps;
40   }
41 
42   /**
43    * Constructor. Uses the default number of steps.
44    *
45    @param out
46    */
47   public ProgressPrinter(PrintStream out) {
48     this.out = out;
49   }
50 
51   @Override
52   public void processFinished() {
53     for(int i = currentValue; i < numberOfSteps; i++) {
54       out.print("#");
55     }
56     out.println("]");
57     currentValue = 0;
58     started = false;
59   }
60 
61   @Override
62   public void progressChanged(int newValue) {
63     if(!started){
64       out.print("[");
65       started = true;
66     }
67     newValue = newValue * numberOfSteps / 100;
68     if(newValue > currentValue){
69       for(int i = currentValue; i < newValue; i++) {
70         out.print("#");
71       }
72       currentValue = newValue;
73     }
74   }
75 
76   /**    *
77    */
78   int currentValue = 0;
79 
80   /**    *
81    */
82   int numberOfSteps = 70;
83 
84   /**    */
85   PrintStream out;
86 
87   /**    */
88   boolean started = false;
89 
90 // class ProgressPrinter