001    /*
002     * Copyright 2006-2008 The Kuali Foundation
003     * 
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     * http://www.opensource.org/licenses/ecl2.php
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.rice.kns.util;
017    
018    import java.math.BigDecimal;
019    
020    import org.apache.ojb.broker.accesslayer.conversions.FieldConversion;
021    
022    /**
023     * Creates a KualiPercent object from the data field. Field is stored as a percentage.
024     * 
025     * 
026     */
027    public class OjbKualiPercentFieldConversion implements FieldConversion {
028    
029        /**
030         * @see FieldConversion#javaToSql(Object)
031         */
032        public Object javaToSql(Object source) {
033            Object converted = source;
034    
035            if (source instanceof KualiPercent) {
036                converted = ((KualiPercent) source).bigDecimalValue();
037            }
038    
039            return converted;
040        }
041    
042        /**
043         * @see FieldConversion#sqlToJava(Object)
044         */
045        public Object sqlToJava(Object source) {
046    
047            // Check for null, and verify object type.
048            // Do conversion if our type is correct (BigDecimal).
049            if (source != null && source instanceof BigDecimal) {
050                BigDecimal converted = (BigDecimal) source;
051    
052                // Once we have converted, we need to convert again to KualiPercent.
053                KualiPercent percentConverted = new KualiPercent((BigDecimal) converted);
054    
055                return percentConverted;
056    
057            }
058            else {
059                return null;
060            }
061        }
062    }