Coverage Report - org.crosswire.common.progress.Progress
 
Classes in this File Line Coverage Branch Coverage Complexity
Progress
N/A
N/A
1
 
 1  
 /**
 2  
  * Distribution License:
 3  
  * JSword is free software; you can redistribute it and/or modify it under
 4  
  * the terms of the GNU Lesser General Public License, version 2.1 or later
 5  
  * as published by the Free Software Foundation. This program is distributed
 6  
  * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
 7  
  * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 8  
  * See the GNU Lesser General Public License for more details.
 9  
  *
 10  
  * The License is available on the internet at:
 11  
  *      http://www.gnu.org/copyleft/lgpl.html
 12  
  * or by writing to:
 13  
  *      Free Software Foundation, Inc.
 14  
  *      59 Temple Place - Suite 330
 15  
  *      Boston, MA 02111-1307, USA
 16  
  *
 17  
  * © CrossWire Bible Society, 2005 - 2016
 18  
  *
 19  
  */
 20  
 package org.crosswire.common.progress;
 21  
 
 22  
 import java.net.URI;
 23  
 
 24  
 /**
 25  
  * A Generic way of keeping track of Threads and monitoring their progress.
 26  
  * 
 27  
  * @see gnu.lgpl.License The GNU Lesser General Public License for details.
 28  
  * @author DM Smith
 29  
  */
 30  
 public interface Progress {
 31  
     /**
 32  
      * Indicate that the total amount of work is unknown.
 33  
      */
 34  
     int UNKNOWN = -1;
 35  
     String INSTALL_BOOK = "INSTALL_BOOK-%s";
 36  
     String RELOAD_BOOK_LIST = "RELOAD_BOOK_LIST";
 37  
     String DOWNLOAD_SEARCH_INDEX = "DOWNLOAD_SEARCH_INDEX-%s";
 38  
     String CREATE_INDEX = "CREATE_INDEX-%s";
 39  
 
 40  
     /**
 41  
      * Start the task measured from 0 to 100. It is the caller's responsibility to compute percentages.
 42  
      * 
 43  
      * @param sectionName
 44  
      *            the initial name of the job.
 45  
      */
 46  
     void beginJob(String sectionName);
 47  
 
 48  
     /**
 49  
      * Start the task reporting progress toward total work. Percentages will be
 50  
      * computed on behalf of the caller.
 51  
      * 
 52  
      * @param sectionName
 53  
      *            the initial name of the job.
 54  
      * @param totalWork
 55  
      *            the total amount that is to be worked.
 56  
      */
 57  
     void beginJob(String sectionName, int totalWork);
 58  
 
 59  
     /**
 60  
      * Start the task using timings from a prior run as a guess for the current
 61  
      * run. If there are no predictions then progress is faked.
 62  
      * 
 63  
      * @param sectionName
 64  
      *            the initial name of the job.
 65  
      * @param predictURI
 66  
      *            the URI of a properties file from which past behavior is read
 67  
      *            and the results of the current run are stored.
 68  
      */
 69  
     void beginJob(String sectionName, URI predictURI);
 70  
 
 71  
     /**
 72  
      * @return the job name
 73  
      */
 74  
     String getJobName();
 75  
 
 76  
     /**
 77  
      * @return the unique ID of the job
 78  
      */
 79  
     String getJobID();
 80  
 
 81  
     /**
 82  
      * Gets the current ProgressMode. Builders of progress bars should use
 83  
      * an indeterminant progress bar for ProgressMode.UNKNOWN and ProgressMode.PREDICTIVE.
 84  
      * @return the current progress mode.
 85  
      */
 86  
     ProgressMode getProgressMode();
 87  
 
 88  
     /**
 89  
      * @return the total amount of work to be done, or UNKNOWN if it not known
 90  
      */
 91  
     int getTotalWork();
 92  
 
 93  
     /**
 94  
      * Set the total amount of work to be done. This can be called any time. It
 95  
      * is the responsibility of the caller for it to be meaningful. It is
 96  
      * ignored when the task is started with a prediction properties file.
 97  
      * 
 98  
      * @param totalWork
 99  
      *            the total amount of work to be done in units that make sense
 100  
      *            to the caller.
 101  
      */
 102  
     void setTotalWork(int totalWork);
 103  
 
 104  
     /**
 105  
      * Return the computed percentage as an integer, typically from 0 to 100.
 106  
      * 
 107  
      * @return the amount of work done as a percentage
 108  
      */
 109  
     int getWork();
 110  
 
 111  
     /**
 112  
      * Indicate progress toward 100%. Note this is just a call to setWorkDone.
 113  
      * 
 114  
      * @param progress
 115  
      *            a part of the whole.
 116  
      */
 117  
     void setWork(int progress);
 118  
 
 119  
     /**
 120  
      * @return the amount of work done so far as reported by the caller
 121  
      */
 122  
     int getWorkDone();
 123  
 
 124  
     /**
 125  
      * Indicate progress toward the whole. It is up to the caller to give a
 126  
      * value that makes sense. When using 100 as a basis, it is typically a
 127  
      * number from 0 to 100. In every case, it is a number from 0 to totalWork.
 128  
      * 
 129  
      * @param progress
 130  
      *            a part of the whole.
 131  
      */
 132  
     void setWorkDone(int progress);
 133  
 
 134  
     /**
 135  
      * Indicate progress toward the whole. It is up to the caller to give a
 136  
      * value that makes sense.
 137  
      * 
 138  
      * @param step
 139  
      *            the amount of work done since the last call.
 140  
      */
 141  
     void incrementWorkDone(int step);
 142  
 
 143  
     /**
 144  
      * The section name is used in reporting progress.
 145  
      * 
 146  
      * @return the current section name
 147  
      */
 148  
     String getSectionName();
 149  
 
 150  
     /**
 151  
      * We have moved onto another section so update the section title. The section name is used in reporting progress.
 152  
      * 
 153  
      * @param name
 154  
      *            the name of the section
 155  
      */
 156  
     void setSectionName(String name);
 157  
 
 158  
     /**
 159  
      * Called to indicate that we are finished doing work.
 160  
      */
 161  
     void done();
 162  
 
 163  
     /**
 164  
      * Cancel the job (if possible). If isCancelable() is false, then the job
 165  
      * will be canceled if cancelable becomes true. There is no guarantee that
 166  
      * 
 167  
      */
 168  
     void cancel();
 169  
 
 170  
     /**
 171  
      * Used to determine whether job is done or canceled or reached totalWork.
 172  
      * 
 173  
      * @return true if finished
 174  
      */
 175  
     boolean isFinished();
 176  
 
 177  
     /**
 178  
      * Might the job be cancelable?
 179  
      * 
 180  
      * @return true if the job can be cancelled
 181  
      */
 182  
     boolean isCancelable();
 183  
 
 184  
     /**
 185  
      * Indicates whether the job is cancelable or not.
 186  
      * 
 187  
      * @param newCancelable
 188  
      *            The state to set.
 189  
      */
 190  
     void setCancelable(boolean newCancelable);
 191  
 
 192  
 }