1 51 package org.bsf.listOfValues; 52 53 import org.bsf.listOfValues.exceptions.NoSuchLovException; 54 import org.bsf.listOfValues.exceptions.NoSuchLovValueException; 55 import org.bsf.listOfValues.lovValue.LovValue; 56 57 import javax.ejb.CreateException ; 58 import javax.ejb.FinderException ; 59 import javax.ejb.ObjectNotFoundException ; 60 import javax.ejb.RemoveException ; 61 import javax.naming.InitialContext ; 62 import javax.naming.NamingException ; 63 import javax.rmi.PortableRemoteObject ; 64 import java.sql.*; 65 import java.util.Collection ; 66 import java.util.Iterator ; 67 import java.util.List ; 68 import java.util.Map ; 69 70 111 public class LovServiceBean extends org.bsf.commons.ejb.SessionAdapterBean { 112 private static final String TABLE_NAME_FROM_LOV_OID_STATEMENT 113 = "SELECT TABLE_NAME FROM BSF_LOV WHERE OID = ?"; 114 115 private LOVLocalHome _lovEntityLocalHome = null; 116 117 private final String JNDI_DATABASE_NAME = "DBPool"; 118 119 137 public List getLOVMetaData( Long p_lovOID ) throws FinderException { 138 if ( p_lovOID == null ) { 139 throw new IllegalArgumentException ( "Need a non null oid to retrun anything..." ); 140 } 141 142 List metaDatas = null; 143 144 logGraphBegin( "getLOVMetaData for LOV " + p_lovOID ); 145 146 LOVLocal lovLocal = _lovEntityLocalHome.findByPrimaryKey( p_lovOID ); 148 149 metaDatas = lovLocal.getMetaData(); 151 152 return metaDatas; 153 } 154 155 177 public LovValue getLovValue( Long p_lovOID, Long p_lovValueOID ) 178 throws NoSuchLovException, NoSuchLovValueException { 179 180 LOVLocal lovLocal = null; 181 LovValue lovValue = null; 182 183 if ( ( p_lovOID == null ) || ( p_lovValueOID == null ) ) { 184 String msg = "Needs a non null lovOID (" + p_lovOID 185 + ") and p_lovValueOID (" + p_lovValueOID 186 + ") to return a LovValue..."; 187 188 throw new IllegalArgumentException ( msg ); 189 } 190 191 logDebug( "getLovValue " + p_lovValueOID + " in LOV " + p_lovOID ); 192 193 lovLocal = getLov( p_lovOID ); 195 196 lovValue = lovLocal.getLovValue( p_lovValueOID ); 198 199 return lovValue; 200 } 201 202 220 public List getListOfValues( Long p_lovOID ) throws NoSuchLovException { 221 if ( p_lovOID == null ) { 222 throw new IllegalArgumentException ( "Need a non null oid to retrieve a LOV..." ); 223 } 224 225 List listOfValues = null; 226 LOVLocal lovLocal = null; 227 228 logGraphBegin( "getSortedLOV for the lovOID " + p_lovOID ); 229 230 lovLocal = getLov( p_lovOID ); 232 233 listOfValues = lovLocal.getListOfValues(); 235 236 logGraphEnd( "getSortedLOV for the lovOID " + p_lovOID ); 237 238 return listOfValues; 239 } 240 241 259 public Map getLovValues( Long p_lovOID ) throws NoSuchLovException { 260 LOVLocal lovLocal = null; 261 Map mapLov = null; 262 263 logGraphBegin( "getLovValues as a map for lovOID " + p_lovOID ); 264 265 lovLocal = getLov( p_lovOID ); 266 mapLov = lovLocal.getLovValuesPerOID(); 267 268 logGraphEnd( "getLovValues as a map for lovOID " + p_lovOID ); 269 270 return mapLov; 271 } 272 273 289 public void resynchronizeListOfValues( Long p_lovOID ) throws NoSuchLovException { 290 if ( p_lovOID == null ) { 291 throw new IllegalArgumentException ( "Can't resynchronize for a null lovOID" ); 292 } 293 294 String physicalTable = null; 295 Connection connection = null; 296 PreparedStatement preparedStatement = null; 297 ResultSet rsTableName = null; 298 299 logGraphBegin( "resynchronizeLOV " + p_lovOID ); 300 301 try { 302 connection = getConnection( JNDI_DATABASE_NAME ); 304 preparedStatement = connection.prepareStatement( TABLE_NAME_FROM_LOV_OID_STATEMENT ); 305 preparedStatement.setString( 1, p_lovOID.toString() ); 306 rsTableName = preparedStatement.executeQuery(); 307 308 if ( rsTableName.next() ) { 310 physicalTable = rsTableName.getString( 1 ); 311 } else { 312 throw new NoSuchLovException( p_lovOID ); 313 } 314 } catch( SQLException Se ) { 315 handleSQLException( Se ); 316 } finally { 317 try { 318 if ( rsTableName != null ) { 320 rsTableName.close(); 321 } 322 323 if ( preparedStatement != null ) { 324 preparedStatement.close(); 325 } 326 327 if ( connection != null ) { 328 connection.close(); 329 } 330 } catch( SQLException Se ) { 331 logFatal( "Exception in finaly " + Se ); 332 } 333 } 334 335 resynchronizeListOfValues( physicalTable ); 337 } 338 339 351 public void resynchronizeListOfValues( String p_tableName ) { 352 if ( p_tableName == null ) { 353 return; 355 } 356 357 try { 358 Collection lovs = _lovEntityLocalHome.findByPhysicalTable( p_tableName ); 359 360 Iterator lovIterator = lovs.iterator(); 361 362 while ( lovIterator.hasNext() ) { 363 Object aRef = lovIterator.next(); 364 365 LOVLocal aLovLocal = (LOVLocal) PortableRemoteObject.narrow( aRef, LOVLocal.class ); 367 368 aLovLocal.remove(); 370 } 371 } catch( RemoveException removeException ) { 372 handleExceptionAsSystemException( removeException ); 373 } catch( FinderException finderException ) { 374 handleFinderException( finderException ); 375 } 376 } 377 378 387 private LOVLocal getLov( Long p_lovOID ) throws NoSuchLovException { 388 LOVLocal lovLocal = null; 389 390 try { 391 lovLocal = _lovEntityLocalHome.findByPrimaryKey( p_lovOID ); 392 } catch( ObjectNotFoundException ONFe ) { 393 throw new NoSuchLovException( p_lovOID ); 394 } catch( FinderException Fe ) { 395 handleFinderException( Fe ); 396 } 397 398 return lovLocal; 399 } 400 401 405 public void ejbCreate() throws CreateException { 406 logDebug( "ejbCreate() -> Retrieving the home(s)..." ); 407 408 try { 410 InitialContext ic = new InitialContext (); 411 _lovEntityLocalHome = (LOVLocalHome) ic.lookup( "java:comp/env/ejb/LOV" ); 412 } catch( NamingException e ) { 413 handleExceptionAsSystemException( e ); 414 } 415 } 416 } 417
| Popular Tags
|