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    }