1 /* 2 * Copyright 2007 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.ole.sys.dataaccess; 17 18 import org.apache.ojb.broker.accesslayer.conversions.FieldConversion; 19 20 /** 21 * This class is intended to be used for inverting all the boolean values stored in the database before loading them into the 22 * business object and vice versa. This functionality is necessary for situations where a database table stores the opposite of the 23 * intented boolean attribute. An example is where a given business object has a pre-defined attribute, such as "inactive", while 24 * the user wishes to display the value as an 'active' indicator rather than an 'inactive indicator. Ideally, it would be better to 25 * replace the field in the database with the appropriate representation of the data so we do not have to perform these confusing 26 * conversions on data. Unfortunately, this is not always an option. 27 */ 28 public class OjbCharBooleanFieldInverseConversion implements FieldConversion { 29 30 private static final String TRUE = "Y"; 31 private static final String FALSE = "N"; 32 33 /** 34 * This method takes the value intended to be passed to the SQL statement and replaces that value with its inverse. Thus TRUE 35 * becomes FALSE and vice versa. 36 * 37 * @see org.apache.ojb.broker.accesslayer.conversions.FieldConversion#javaToSql(java.lang.Object) 38 */ 39 public Object javaToSql(Object source) { 40 if (source instanceof Boolean) { 41 if (source.equals(Boolean.TRUE)) { 42 return FALSE; 43 } 44 else { 45 return TRUE; 46 } 47 } 48 else if (source instanceof String) { 49 if ("Y".equalsIgnoreCase((String) source)) { 50 return FALSE; 51 } 52 else if ("N".equalsIgnoreCase((String) source)) { 53 return TRUE; 54 } 55 } 56 return source; 57 } 58 59 /** 60 * This method takes the value returned from the database and replaces it with its inverse, thus FALSE becomes TRUE and vice 61 * versa. 62 * 63 * @see org.apache.ojb.broker.accesslayer.conversions.FieldConversion#sqlToJava(java.lang.Object) 64 */ 65 public Object sqlToJava(Object source) { 66 if (source instanceof String) { 67 if (TRUE.equals(source)) { 68 return Boolean.FALSE; 69 } 70 else { 71 return Boolean.TRUE; 72 } 73 } 74 else { 75 return source; 76 } 77 } 78 79 }