BasicTimer.java Source code

Java tutorial

Introduction

Here is the source code for BasicTimer.java

Source

import java.util.*;

/**
 * @author Matthew D. Hicks
 *
 */
public class BasicTimer {
    public static final int TYPE_CLOCK = 1;
    public static final int TYPE_ELAPSED = 2;
    public static final int TYPE_REMAINING = 3;

    private int type;
    private long start;
    private long max;

    public BasicTimer(int type) {
        this.type = type;
        start = System.currentTimeMillis();
    }

    public long getTime() {
        if (type == TYPE_CLOCK) {
            return System.currentTimeMillis();
        } else if (type == TYPE_ELAPSED) {
            return System.currentTimeMillis() - start;
        } else if (type == TYPE_REMAINING) {
            return max - (System.currentTimeMillis() - start);
        }
        throw new RuntimeException("Type does not match anything known: " + type);
    }

    public void setMax(long max) {
        this.max = max;
    }

    public static void main(String[] args) throws Exception {
        int type = TYPE_REMAINING;
        BasicTimer timer = new BasicTimer(type);
        timer.setMax(10000);
        GregorianCalendar calendar = new GregorianCalendar();
        while (true) {
            Thread.sleep(1000);
            if (type == TYPE_CLOCK) {
                calendar.setTimeInMillis(timer.getTime());
                System.out.println("Clock: " + calendar);
            } else if (type == TYPE_ELAPSED) {
                System.out.println("Elapsed: " + (timer.getTime() / 1000) + " seconds");
            } else if (type == TYPE_REMAINING) {
                System.out.println("Remaining: " + (timer.getTime() / 1000) + " seconds");
            }
        }
    }
}