001    package railo.runtime.interpreter.ref.literal;
002    
003    import java.math.BigDecimal;
004    
005    import railo.runtime.PageContext;
006    import railo.runtime.exp.PageException;
007    import railo.runtime.interpreter.ref.Ref;
008    import railo.runtime.interpreter.ref.util.RefUtil;
009    
010    /**
011     * Literal Number
012     */
013    public final class LBigDecimal implements Ref {
014    
015        public static final LBigDecimal ZERO = new LBigDecimal(BigDecimal.ZERO);
016        public static final LBigDecimal ONE = new LBigDecimal(BigDecimal.ONE);
017        
018        
019        
020            private BigDecimal literal;
021    
022        /**
023         * constructor of the class
024         * @param literal
025         */
026        public LBigDecimal(BigDecimal literal) {
027            this.literal=literal;
028        }
029    
030        /**
031         * constructor of the class
032         * @param literal
033         * @throws PageException 
034         */
035        public LBigDecimal(String literal) throws PageException {
036            this.literal=new BigDecimal(literal);
037        }
038        
039        public BigDecimal getBigDecimal() {
040            return literal;
041        }
042        
043        @Override
044            public Object getValue(PageContext pc) {
045            return literal;
046        }
047        
048        @Override
049        public Object getCollection(PageContext pc) {
050            return getValue(pc);
051        }
052    
053        @Override
054        public String getTypeName() {
055            return "number";
056        }
057        
058        @Override
059        public Object touchValue(PageContext pc) {
060            return getValue(pc);
061        }
062    
063        @Override
064        public String toString() {
065            return literal.toString();
066        }
067        
068        @Override
069            public boolean eeq(PageContext pc,Ref other) throws PageException {
070                    return RefUtil.eeq(pc,this,other);
071            }
072    }