001 package railo.commons.io.res.util; 002 003 import railo.commons.io.ModeUtil; 004 import railo.commons.io.res.Resource; 005 import railo.runtime.exp.PageException; 006 import railo.runtime.op.Castable; 007 import railo.runtime.op.Caster; 008 import railo.runtime.op.Operator; 009 import railo.runtime.op.date.DateCaster; 010 import railo.runtime.type.ObjectWrap; 011 import railo.runtime.type.dt.DateTime; 012 013 public final class ModeObjectWrap implements ObjectWrap,Castable { 014 015 private final Resource res; 016 private String mode=null; 017 018 public ModeObjectWrap(Resource res) { 019 this.res=res; 020 } 021 022 @Override 023 public Object getEmbededObject() { 024 return toString(); 025 } 026 027 @Override 028 public Object getEmbededObject(Object def) { 029 return toString(); 030 } 031 032 @Override 033 public String toString() { 034 //print.dumpStack(); 035 if(mode==null) mode=ModeUtil.toStringMode(res.getMode()); 036 return mode; 037 } 038 039 public String castString() { 040 return toString(); 041 } 042 043 @Override 044 public boolean castToBooleanValue() throws PageException { 045 return Caster.toBooleanValue(toString()); 046 } 047 048 @Override 049 public Boolean castToBoolean(Boolean defaultValue) { 050 return Caster.toBoolean(toString(),defaultValue); 051 } 052 053 @Override 054 public DateTime castToDateTime() throws PageException { 055 return Caster.toDatetime(toString(),null); 056 } 057 058 @Override 059 public DateTime castToDateTime(DateTime defaultValue) { 060 return DateCaster.toDateAdvanced(toString(),true,null,defaultValue); 061 } 062 063 @Override 064 public double castToDoubleValue() throws PageException { 065 return Caster.toDoubleValue(toString()); 066 } 067 068 @Override 069 public double castToDoubleValue(double defaultValue) { 070 return Caster.toDoubleValue(toString(),defaultValue); 071 } 072 073 @Override 074 public String castToString() throws PageException { 075 return toString(); 076 } 077 078 @Override 079 public String castToString(String defaultValue) { 080 return toString(); 081 } 082 083 @Override 084 public int compareTo(String str) throws PageException { 085 return Operator.compare(toString(), str); 086 } 087 088 @Override 089 public int compareTo(boolean b) throws PageException { 090 return Operator.compare(castToBooleanValue(), b); 091 } 092 093 @Override 094 public int compareTo(double d) throws PageException { 095 return Operator.compare(castToDoubleValue(), d); 096 } 097 098 @Override 099 public int compareTo(DateTime dt) throws PageException { 100 return Operator.compare(toString(), dt.castToString()); 101 } 102 103 }