samples/stateful/src/org/apidesign/stateful/api/ProgressStateless.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 30 Oct 2014 21:30:10 +0100
changeset 409 40cabcdcd2be
permissions -rw-r--r--
Updating to NBMs from NetBeans 8.0.1 as some of them are required to run on JDK8
     1 package org.apidesign.stateful.api;
     2 
     3 /** API for notifying progress that cannot call
     4  * {@link #start(int)} and {@link InProgress#progress(int)} in wrong
     5  * order. In contract to {@link ProgressStateful} class which allows that.
     6  *
     7  * @author Jaroslav Tulach <jtulach@netbeans.org>
     8  */
     9 public abstract class ProgressStateless {
    10 // BEGIN: progress.phases
    11     public static ProgressStateless create(String name) {
    12         return createImpl(name);
    13     }
    14     public abstract InProgress start(int totalAmount);
    15 
    16     public abstract class InProgress {
    17         public abstract void progress(int howMuch);
    18         public abstract void finish();
    19         // FINISH: progress.phases
    20 
    21         InProgress() {
    22         }
    23     }
    24 
    25 
    26     ProgressStateless() {
    27     }
    28     
    29     private static ProgressStateless createImpl(String name) {
    30         return new Impl(name);
    31     }
    32 
    33     private static final class Impl extends ProgressStateless {
    34         private final String name;
    35 
    36         public Impl(String name) {
    37             this.name = name;
    38         }
    39 
    40         @Override
    41         public InProgress start(int totalAmount) {
    42             return new InImpl(totalAmount);
    43         }
    44 
    45         private class InImpl extends InProgress {
    46             private final int total;
    47             private int current;
    48 
    49             public InImpl(int total) {
    50                 this.total = total;
    51             }
    52 
    53             @Override
    54             public void progress(int howMuch) {
    55                 current = howMuch;
    56             }
    57 
    58             @Override
    59             public void finish() {
    60                 current = total;
    61             }
    62         }
    63     }
    64 }