001 package railo.runtime.type.dt; 002 003 import java.text.SimpleDateFormat; 004 import java.util.Locale; 005 006 import railo.commons.date.DateTimeUtil; 007 import railo.runtime.PageContext; 008 import railo.runtime.dump.DumpData; 009 import railo.runtime.dump.DumpProperties; 010 import railo.runtime.dump.DumpTable; 011 import railo.runtime.dump.SimpleDumpData; 012 import railo.runtime.engine.ThreadLocalPageContext; 013 import railo.runtime.exp.PageException; 014 import railo.runtime.op.Operator; 015 import railo.runtime.type.SimpleValue; 016 017 018 /** 019 * Printable and Castable Date Object (no visible time) 020 */ 021 public final class DateImpl extends Date implements SimpleValue { 022 023 private static SimpleDateFormat railoFormatter= new SimpleDateFormat("yyyy-MM-dd",Locale.US); 024 025 //private TimeZone timezone; 026 027 028 public DateImpl() { 029 this(null,System.currentTimeMillis()); 030 } 031 public DateImpl(long utcTime) { 032 this(null,utcTime); 033 } 034 035 public DateImpl(PageContext pc) { 036 this(pc,System.currentTimeMillis()); 037 } 038 public DateImpl(PageContext pc, long utcTime) { 039 super(DateTimeImpl.addOffset(ThreadLocalPageContext.getConfig(pc), utcTime)); 040 //this.timezone=ThreadLocalPageContext.getTimeZone(pc); 041 } 042 043 public DateImpl(java.util.Date date) { 044 super(date.getTime()); 045 /*if(date instanceof Localized) { 046 Localized l=(Localized) date; 047 this.timezone=l.getTimezone(); 048 } 049 else timezone=ThreadLocalPageContext.getTimeZone();*/ 050 } 051 052 @Override 053 public String castToString() { 054 synchronized (railoFormatter) { 055 railoFormatter.setTimeZone(ThreadLocalPageContext.getTimeZone()); 056 return "{d '"+railoFormatter.format(this)+"'}"; 057 } 058 } 059 060 @Override 061 public String castToString(String defaultValue) { 062 return castToString(); 063 } 064 065 @Override 066 public double toDoubleValue() { 067 return DateTimeUtil.getInstance().toDoubleValue(this); 068 } 069 070 @Override 071 public double castToDoubleValue(double defaultValue) { 072 return DateTimeUtil.getInstance().toDoubleValue(this); 073 } 074 075 @Override 076 public DumpData toDumpData(PageContext pageContext, int maxlevel, DumpProperties dp) { 077 String str=castToString(""); 078 DumpTable table=new DumpTable("date","#ff9900","#ffcc00","#000000"); 079 table.appendRow(1, new SimpleDumpData("Date"), new SimpleDumpData(str)); 080 return table; 081 } 082 083 @Override 084 public boolean castToBooleanValue() throws PageException { 085 return DateTimeUtil.getInstance().toBooleanValue(this); 086 } 087 088 @Override 089 public Boolean castToBoolean(Boolean defaultValue) { 090 return defaultValue; 091 } 092 093 @Override 094 public double castToDoubleValue() { 095 return DateTimeUtil.getInstance().toDoubleValue(this); 096 } 097 098 @Override 099 public DateTime castToDateTime() { 100 return this; 101 } 102 103 104 @Override 105 public DateTime castToDateTime(DateTime defaultValue) { 106 return this; 107 } 108 109 110 @Override 111 public int compareTo(boolean b) { 112 return Operator.compare(castToDoubleValue(), b?1D:0D); 113 } 114 115 @Override 116 public int compareTo(DateTime dt) throws PageException { 117 return Operator.compare((java.util.Date)this, (java.util.Date)dt); 118 } 119 120 @Override 121 public int compareTo(double d) throws PageException { 122 return Operator.compare(castToDoubleValue(), d); 123 } 124 125 @Override 126 public int compareTo(String str) { 127 return Operator.compare(castToString(), str); 128 } 129 }