public int getSize(ObjectProvider ownerOP) { int numRows; String sizeStmt = getSizeStmt(); try { ExecutionContext ec = ownerOP.getExecutionContext(); ManagedConnection mconn = storeMgr.getConnection(ec); SQLController sqlControl = storeMgr.getSQLController(); try { PreparedStatement ps = sqlControl.getStatementForQuery(mconn, sizeStmt); try { int jdbcPosition = 1; jdbcPosition = BackingStoreHelper.populateOwnerInStatement(ownerOP, ec, ps, jdbcPosition, this); if (getElementInfo() != null && getElementInfo().length == 1) { // TODO Allow for multiple element types (e.g interface implementations) for (int i = 0; i < getElementInfo().length; i++) { if (getElementInfo()[i].getDiscriminatorMapping() != null) { jdbcPosition = BackingStoreHelper.populateElementDiscriminatorInStatement( ec, ps, jdbcPosition, true, getElementInfo()[i], clr); } } } if (getRelationDiscriminatorMapping() != null) { jdbcPosition = BackingStoreHelper.populateRelationDiscriminatorInStatement( ec, ps, jdbcPosition, this); } ResultSet rs = sqlControl.executeStatementQuery(ec, mconn, sizeStmt, ps); try { if (!rs.next()) { throw new NucleusDataStoreException(Localiser.msg("056007", sizeStmt)); } numRows = rs.getInt(1); JDBCUtils.logWarnings(rs); } finally { rs.close(); } } finally { sqlControl.closeStatement(mconn, ps); } } finally { mconn.release(); } } catch (SQLException e) { throw new NucleusDataStoreException(Localiser.msg("056007", sizeStmt), e); } return numRows; }
public int getSize(ObjectProvider ownerOP) { int numRows; String sizeStmt = getSizeStmt(); try { ExecutionContext ec = ownerOP.getExecutionContext(); ManagedConnection mconn = storeMgr.getConnection(ec); SQLController sqlControl = storeMgr.getSQLController(); try { PreparedStatement ps = sqlControl.getStatementForQuery(mconn, sizeStmt); try { int jdbcPosition = 1; if (elementInfo == null) { jdbcPosition = BackingStoreHelper.populateOwnerInStatement(ownerOP, ec, ps, jdbcPosition, this); } else { if (usingJoinTable()) { jdbcPosition = BackingStoreHelper.populateOwnerInStatement(ownerOP, ec, ps, jdbcPosition, this); if (elementInfo[0].getDiscriminatorMapping() != null) { jdbcPosition = BackingStoreHelper.populateElementDiscriminatorInStatement( ec, ps, jdbcPosition, true, elementInfo[0], clr); } if (relationDiscriminatorMapping != null) { jdbcPosition = BackingStoreHelper.populateRelationDiscriminatorInStatement( ec, ps, jdbcPosition, this); } } else { for (int i = 0; i < elementInfo.length; i++) { jdbcPosition = BackingStoreHelper.populateOwnerInStatement( ownerOP, ec, ps, jdbcPosition, this); if (elementInfo[i].getDiscriminatorMapping() != null) { jdbcPosition = BackingStoreHelper.populateElementDiscriminatorInStatement( ec, ps, jdbcPosition, true, elementInfo[i], clr); } if (relationDiscriminatorMapping != null) { jdbcPosition = BackingStoreHelper.populateRelationDiscriminatorInStatement( ec, ps, jdbcPosition, this); } } } } ResultSet rs = sqlControl.executeStatementQuery(ec, mconn, sizeStmt, ps); try { if (!rs.next()) { throw new NucleusDataStoreException(Localiser.msg("056007", sizeStmt)); } numRows = rs.getInt(1); if (elementInfo != null && elementInfo.length > 1) { while (rs.next()) { numRows = numRows + rs.getInt(1); } } JDBCUtils.logWarnings(rs); } finally { rs.close(); } } catch (SQLException sqle) { NucleusLogger.GENERAL.error("Exception in size", sqle); throw sqle; } finally { sqlControl.closeStatement(mconn, ps); } } finally { mconn.release(); } } catch (SQLException e) { throw new NucleusDataStoreException(Localiser.msg("056007", sizeStmt), e); } return numRows; }