1 5 package polyglot.pth; 6 7 import java.io.PrintStream ; 8 import java.text.DateFormat ; 9 import java.text.SimpleDateFormat ; 10 import java.util.Calendar ; 11 import java.util.Date ; 12 13 import polyglot.util.ErrorQueue; 14 15 18 public abstract class OutputController { 19 protected final PrintStream out; 20 protected final Calendar today; 21 protected final Calendar week; 22 public OutputController(PrintStream out) { 23 this.out = out; 24 today = Calendar.getInstance(); 25 week = Calendar.getInstance(); 26 Calendar now = Calendar.getInstance(); 27 28 today.clear(); 29 today.set(now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DATE)); 30 week.setTimeInMillis(today.getTimeInMillis()); 31 week.add(Calendar.DATE, -6); 32 } 33 34 public void startTest(Test t) { 35 if (t instanceof ScriptTestSuite) { 36 startScriptTestSuite((ScriptTestSuite)t); 37 } 38 else if (t instanceof SourceFileTest) { 39 startSourceFileTest((SourceFileTest)t); 40 } 41 } 42 public void finishTest(Test t, ErrorQueue eq) { 43 if (t instanceof ScriptTestSuite) { 44 finishScriptTestSuite((ScriptTestSuite)t); 45 } 46 else if (t instanceof SourceFileTest) { 47 finishSourceFileTest((SourceFileTest)t, eq); 48 } 49 } 50 51 protected abstract void startScriptTestSuite(ScriptTestSuite sts); 52 protected abstract void startSourceFileTest(SourceFileTest sft); 53 protected abstract void finishScriptTestSuite(ScriptTestSuite sts); 54 protected abstract void finishSourceFileTest(SourceFileTest sft, ErrorQueue eq); 55 56 public abstract void displayTestSuiteResults(String suiteName, TestSuite ts); 57 public abstract void displayTestResults(TestResult tr, String testName); 58 59 protected DateFormat getDefaultDateFormat() { 60 return new SimpleDateFormat ("d-MMM-YY"); 61 } 62 protected DateFormat getSameYearDateFormat() { 63 return new SimpleDateFormat ("d-MMM"); 64 } 65 protected DateFormat getSameWeekDateFormat() { 66 return new SimpleDateFormat ("EEE k:mm"); 67 } 68 protected DateFormat getTodayDateFormat() { 69 return new SimpleDateFormat ("k:mm"); 70 } 71 public String getDateDisplay(Date d) { 72 if (d == null) return "never"; 73 74 DateFormat df; 75 Calendar dt = Calendar.getInstance(); 76 dt.setTime(d); 77 78 if (dt.after(today)) { 79 df = getTodayDateFormat(); 80 } 81 else if (dt.after(week)) { 82 df = getSameWeekDateFormat(); 83 } 84 else if (dt.get(Calendar.YEAR) == today.get(Calendar.YEAR)) { 85 df = getSameYearDateFormat(); 86 } 87 else { 88 df = getDefaultDateFormat(); 89 } 90 91 return df.format(d); 92 } 93 } 94 | Popular Tags |