1 19 package org.netbeans.mdr.persistence.jdbcimpl; 20 21 import org.netbeans.mdr.persistence.*; 22 23 import java.util.*; 24 25 31 class JdbcSet extends AbstractSet 32 { 33 private final JdbcStorage storage; 34 private final Storage.EntryType entryType; 35 private final LazyPreparedStatement sqlIterator; 36 private final LazyPreparedStatement sqlSize; 37 private final LazyPreparedStatement sqlContains; 38 39 JdbcSet( 40 JdbcStorage storage, 41 Storage.EntryType entryType, 42 LazyPreparedStatement sqlIterator, 43 LazyPreparedStatement sqlSize, 44 LazyPreparedStatement sqlContains) 45 { 46 this.storage = storage; 47 this.entryType = entryType; 48 this.sqlIterator = sqlIterator; 49 this.sqlSize = sqlSize; 50 this.sqlContains = sqlContains; 51 } 52 53 public Iterator iterator() 55 { 56 try { 57 return storage.getResultSetIterator(sqlIterator,null,entryType); 58 } catch (StorageException ex) { 59 throw new RuntimeStorageException(ex); 60 } 61 } 62 63 public boolean contains(Object obj) 65 { 66 try { 67 int n = storage.getSingletonInt( 68 sqlContains,new Object []{obj}); 69 return n > 0; 70 } catch (StorageException ex) { 71 throw new RuntimeStorageException(ex); 72 } 73 } 74 75 public int size() 77 { 78 try { 79 if (sqlSize != null) { 80 return storage.getSingletonInt(sqlSize,null); 81 } else { 82 return storage.getResultSetCount(sqlIterator,null); 85 } 86 } catch (StorageException ex) { 87 throw new RuntimeStorageException(ex); 88 } 89 } 90 } 91 92 | Popular Tags |