package javacodebook.core.timedisplay;

import java.util.Date;
/**
 * Zeigt die verbleibende Zeit an. Je nachdem, wie gross die 
 * verbleibende Zeit ist, werden Sekunden, Minuten, Stunden 
 * oder Tage angezeigt.
 * @author  Mark Donnermeyer
 */
public class RemainingTime {
    
    long end;
    
    private static final String NO_REMAINING_TIME_STR = "-";
    
    private static final int MAX_SHOW_SECONDS = 240;
    private static final int MAX_SHOW_MINUTES = 180;
    private static final int MAX_SHOW_HOURS   = 72;
    
    public RemainingTime(long endDate) {
        this.end = endDate;
    }
    
    public RemainingTime(Date endDate) {
        this.end = endDate.getTime();
    }
    
    public String getRemainingTime() {
        
        long now = System.currentTimeMillis();
        long left = (end - now) / 1000;
        
        if (left < 0)
            return NO_REMAINING_TIME_STR;
        else if (left < MAX_SHOW_SECONDS)
            return("" + left + " Sekunden");
        else if (left < 120)
            return ("1 Minute");
        else if (left < MAX_SHOW_MINUTES*60)
            return ("" + left/60 + " Minuten");
        else if (left < MAX_SHOW_HOURS*3600)
            return ("" + left/(60*60) + " Stunden");
        else if (left < 3600*48)
            return ("1 Tag");
        else
            return ("" + left/(60*60*24) + " Tage");
    }
}