1 21 22 package org.opensubsystems.core.persist.db; 23 24 import java.sql.Connection ; 25 import java.sql.PreparedStatement ; 26 import java.sql.SQLException ; 27 import java.util.Collection ; 28 import java.util.Iterator ; 29 30 import org.opensubsystems.core.data.BasicDataObject; 31 import org.opensubsystems.core.error.OSSException; 32 33 57 public class DatabaseCreateMultipleDataObjectsOperation extends DatabaseUpdateOperation 58 { 59 61 64 private boolean m_bFetchGeneratedValues; 65 66 68 80 public DatabaseCreateMultipleDataObjectsOperation( 81 DatabaseFactoryImpl factory, 82 String query, 83 ModifiableDatabaseSchema schema, 84 Collection colDataObject, 85 boolean bFetchGeneratedValues 86 ) 87 { 88 super(factory, query, schema, DatabaseUpdateOperation.DBOP_INSERT, colDataObject); 89 90 m_bFetchGeneratedValues = bFetchGeneratedValues; 91 } 92 93 95 98 protected void performOperation( 99 DatabaseFactoryImpl dbfactory, 100 Connection cntConnection, 101 PreparedStatement pstmQuery 102 ) throws OSSException, 103 SQLException  104 { 105 int[] arrInsertedReturn; 106 int iBatchedCount = 0; 107 Iterator items; 108 BasicDataObject data = null; 109 int size; 110 int iTotalInsertedReturn = 0; 111 int iIndex = 0; 112 113 if (!m_bFetchGeneratedValues) 114 { 115 size = ((Collection )m_data).size(); 116 for (items = ((Collection )m_data).iterator(); items.hasNext();) 117 { 118 data = (BasicDataObject)items.next(); 119 prepareData(data); 121 setValuesForInsert(pstmQuery, data, 1); 123 pstmQuery.addBatch(); 124 iBatchedCount++; 125 126 if (((iBatchedCount % Database.BATCH_ITERATOR) == 0) 128 || (iBatchedCount == size)) 129 { 130 arrInsertedReturn = pstmQuery.executeBatch(); 131 iTotalInsertedReturn += arrInsertedReturn.length; 132 } 133 } 134 setReturnData(new Integer (iTotalInsertedReturn)); 137 } 138 else 139 { 140 for (items = ((Collection )m_data).iterator(); items.hasNext();) 141 { 142 data = (BasicDataObject)items.next(); 143 prepareData(data); 145 pstmQuery.clearParameters(); 146 iIndex = ((BasicDatabaseFactory)dbfactory).setValuesForInsert(pstmQuery, data, 1); 147 DatabaseImpl.getInstance().insertAndFetchGeneratedValues( 148 cntConnection, pstmQuery, 149 m_dbschema.isInDomain(), 150 ((ModifiableDatabaseSchema)m_dbschema).getModifiableTableNames().get( 151 new Integer (m_iDataType)).toString(), 152 iIndex, data); 153 } 154 setReturnData(m_data); 155 } 156 } 157 } 158
| Popular Tags
|