You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2017/10/13 15:32:38 UTC
svn commit: r1812144 - in
/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity:
datasource/GenericDAO.java jdbc/SQLProcessor.java
Author: jleroux
Date: Fri Oct 13 15:32:38 2017
New Revision: 1812144
URL: http://svn.apache.org/viewvc?rev=1812144&view=rev
Log:
Improved: Implement AutoCloseable interface in SQLProcessor Class
(OFBIZ-9841)
Added AutoCloseable interface to SQLProcessor class and overridden Close method
Added closing of ResultSet, PreparedStatement and Connection Objects.
While calling SQLProcessor object in GenericDAO used Try-with-Resources and
removed unnecessary calls of the same object before actual use, also removed
finally blocks for method invocation.
Thanks: Pradhan Yash Sharma
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/datasource/GenericDAO.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/SQLProcessor.java
Modified: ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/datasource/GenericDAO.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/datasource/GenericDAO.java?rev=1812144&r1=1812143&r2=1812144&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/datasource/GenericDAO.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/datasource/GenericDAO.java Fri Oct 13 15:32:38 2017
@@ -109,16 +109,15 @@ public class GenericDAO {
throw new GenericModelException("Could not find ModelEntity record for entityName: " + entity.getEntityName());
}
- SQLProcessor sqlP = new SQLProcessor(entity.getDelegator(), helperInfo);
+ try (SQLProcessor sqlP = new SQLProcessor(entity.getDelegator(), helperInfo)) {
try {
return singleInsert(entity, modelEntity, modelEntity.getFieldsUnmodifiable(), sqlP);
} catch (GenericEntityException e) {
sqlP.rollback();
// no need to create nested, just throw original which will have all info: throw new GenericEntityException("Exception while inserting the following entity: " + entity.toString(), e);
throw e;
- } finally {
- sqlP.close();
+ }
}
}
@@ -176,8 +175,6 @@ public class GenericDAO {
return retVal;
} catch (GenericEntityException e) {
throw new GenericEntityException("Error while inserting: " + entity.toString(), e);
- } finally {
- sqlP.close();
}
}
@@ -214,15 +211,14 @@ public class GenericDAO {
}
private int customUpdate(GenericEntity entity, ModelEntity modelEntity, List<ModelField> fieldsToSave) throws GenericEntityException {
- SQLProcessor sqlP = new SQLProcessor(entity.getDelegator(), helperInfo);
+ try (SQLProcessor sqlP = new SQLProcessor(entity.getDelegator(), helperInfo)) {
try {
return singleUpdate(entity, modelEntity, fieldsToSave, sqlP);
} catch (GenericEntityException e) {
sqlP.rollback();
// no need to create nested, just throw original which will have all info: throw new GenericEntityException("Exception while updating the following entity: " + entity.toString(), e);
throw e;
- } finally {
- sqlP.close();
+ }
}
}
@@ -281,8 +277,6 @@ public class GenericDAO {
entity.synchronizedWithDatasource();
} catch (GenericEntityException e) {
throw new GenericEntityException("Error while updating: " + entity.toString(), e);
- } finally {
- sqlP.close();
}
if (retVal == 0) {
@@ -292,15 +286,14 @@ public class GenericDAO {
}
public int updateByCondition(Delegator delegator, ModelEntity modelEntity, Map<String, ? extends Object> fieldsToSet, EntityCondition condition) throws GenericEntityException {
- SQLProcessor sqlP = new SQLProcessor(delegator, helperInfo);
- try {
- return updateByCondition(modelEntity, fieldsToSet, condition, sqlP);
- } catch (GenericDataSourceException e) {
- sqlP.rollback();
- throw new GenericDataSourceException("Generic Entity Exception occurred in updateByCondition", e);
- } finally {
- sqlP.close();
+ try (SQLProcessor sqlP = new SQLProcessor(delegator, helperInfo)) {
+ try {
+ return updateByCondition(modelEntity, fieldsToSet, condition, sqlP);
+ } catch (GenericDataSourceException e) {
+ sqlP.rollback();
+ throw new GenericDataSourceException("Generic Entity Exception occurred in updateByCondition", e);
+ }
}
}
@@ -327,16 +320,12 @@ public class GenericDAO {
}
sql.append(" WHERE ").append(condition.makeWhereString(modelEntity, params, this.datasource));
- try {
- sqlP.prepareStatement(sql.toString());
- for (EntityConditionParam param: params) {
- SqlJdbcUtil.setValue(sqlP, param.getModelField(), modelEntity.getEntityName(), param.getFieldValue(), modelFieldTypeReader);
- }
-
- return sqlP.executeUpdate();
- } finally {
- sqlP.close();
+ sqlP.prepareStatement(sql.toString());
+ for (EntityConditionParam param: params) {
+ SqlJdbcUtil.setValue(sqlP, param.getModelField(), modelEntity.getEntityName(), param.getFieldValue(), modelFieldTypeReader);
}
+
+ return sqlP.executeUpdate();
}
/* ====================================================================== */
@@ -486,12 +475,8 @@ public class GenericDAO {
/* ====================================================================== */
public void select(GenericEntity entity) throws GenericEntityException {
- SQLProcessor sqlP = new SQLProcessor(entity.getDelegator(), helperInfo);
-
- try {
+ try (SQLProcessor sqlP = new SQLProcessor(entity.getDelegator(), helperInfo)) {
select(entity, sqlP);
- } finally {
- sqlP.close();
}
}
@@ -517,7 +502,6 @@ public class GenericDAO {
sqlBuffer.append(SqlJdbcUtil.makeFromClause(modelEntity, modelFieldTypeReader, datasource));
sqlBuffer.append(SqlJdbcUtil.makeWhereClause(modelEntity, modelEntity.getPkFieldsUnmodifiable(), entity, "AND", datasource.getJoinStyle()));
- try {
sqlP.prepareStatement(sqlBuffer.toString(), true, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
SqlJdbcUtil.setPkValues(sqlP, modelEntity, entity, modelFieldTypeReader);
sqlP.executeQuery();
@@ -535,9 +519,6 @@ public class GenericDAO {
} else {
// Debug.logWarning("[GenericDAO.select]: select failed, result set was empty for entity: " + entity.toString(), module);
throw new GenericEntityNotFoundException("Result set was empty for entity: " + entity.toString());
- }
- } finally {
- sqlP.close();
}
}
@@ -586,9 +567,7 @@ public class GenericDAO {
sqlBuffer.append(SqlJdbcUtil.makeFromClause(modelEntity, modelFieldTypeReader, datasource));
sqlBuffer.append(SqlJdbcUtil.makeWhereClause(modelEntity, modelEntity.getPkFieldsUnmodifiable(), entity, "AND", datasource.getJoinStyle()));
- SQLProcessor sqlP = new SQLProcessor(entity.getDelegator(), helperInfo);
-
- try {
+ try (SQLProcessor sqlP = new SQLProcessor(entity.getDelegator(), helperInfo)) {
sqlP.prepareStatement(sqlBuffer.toString(), true, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
SqlJdbcUtil.setPkValues(sqlP, modelEntity, entity, modelFieldTypeReader);
sqlP.executeQuery();
@@ -604,8 +583,6 @@ public class GenericDAO {
// Debug.logWarning("[GenericDAO.select]: select failed, result set was empty.", module);
throw new GenericEntityNotFoundException("Result set was empty for entity: " + entity.toString());
}
- } finally {
- sqlP.close();
}
}
@@ -902,7 +879,6 @@ public class GenericDAO {
public List<GenericValue> selectByMultiRelation(GenericValue value, ModelRelation modelRelationOne, ModelEntity modelEntityOne,
ModelRelation modelRelationTwo, ModelEntity modelEntityTwo, List<String> orderBy) throws GenericEntityException {
- SQLProcessor sqlP = new SQLProcessor(value.getDelegator(), helperInfo);
// get the tables names
String atable = modelEntityOne.getTableName(datasource);
@@ -972,7 +948,7 @@ public class GenericDAO {
List<GenericValue> retlist = new LinkedList<GenericValue>();
Delegator gd = value.getDelegator();
- try {
+ try (SQLProcessor sqlP = new SQLProcessor(value.getDelegator(), helperInfo)) {
sqlP.prepareStatement(sqlsb.toString());
for (Map.Entry<ModelField, Object> entry: bindMap.entrySet()) {
ModelField mf = entry.getKey();
@@ -996,8 +972,6 @@ public class GenericDAO {
}
retlist.add(gv);
}
- } finally {
- sqlP.close();
}
return retlist;
@@ -1102,7 +1076,7 @@ public class GenericDAO {
String sql = sqlBuffer.toString();
if (Debug.verboseOn()) Debug.logVerbose("Count select sql: " + sql, module);
- SQLProcessor sqlP = new SQLProcessor(delegator, helperInfo);
+ try (SQLProcessor sqlP = new SQLProcessor(delegator, helperInfo)) {
sqlP.prepareStatement(sql, findOptions.getSpecifyTypeAndConcur(), findOptions.getResultSetType(),
findOptions.getResultSetConcurrency(), findOptions.getFetchSize(), findOptions.getMaxRows());
if (verboseOn) {
@@ -1134,8 +1108,7 @@ public class GenericDAO {
} catch (SQLException e) {
throw new GenericDataSourceException("Error getting count value", e);
- } finally {
- sqlP.close();
+ }
}
}
@@ -1144,15 +1117,14 @@ public class GenericDAO {
/* ====================================================================== */
public int delete(GenericEntity entity) throws GenericEntityException {
- SQLProcessor sqlP = new SQLProcessor(entity.getDelegator(), helperInfo);
+ try (SQLProcessor sqlP = new SQLProcessor(entity.getDelegator(), helperInfo)) {
try {
return delete(entity, sqlP);
} catch (GenericDataSourceException e) {
sqlP.rollback();
throw new GenericDataSourceException("Exception while deleting the following entity: " + entity.toString(), e);
- } finally {
- sqlP.close();
+ }
}
}
@@ -1170,27 +1142,21 @@ public class GenericDAO {
int retVal;
- try {
sqlP.prepareStatement(sql.toString());
SqlJdbcUtil.setPkValues(sqlP, modelEntity, entity, modelFieldTypeReader);
retVal = sqlP.executeUpdate();
entity.removedFromDatasource();
- } finally {
- sqlP.close();
- }
return retVal;
}
public int deleteByCondition(Delegator delegator, ModelEntity modelEntity, EntityCondition condition) throws GenericEntityException {
- SQLProcessor sqlP = new SQLProcessor(delegator, helperInfo);
-
+ try (SQLProcessor sqlP = new SQLProcessor(delegator, helperInfo)) {
try {
return deleteByCondition(modelEntity, condition, sqlP);
} catch (GenericDataSourceException e) {
sqlP.rollback();
throw new GenericDataSourceException("Generic Entity Exception occurred in deleteByCondition", e);
- } finally {
- sqlP.close();
+ }
}
}
@@ -1208,13 +1174,9 @@ public class GenericDAO {
sql.append(" WHERE ").append(whereCondition);
}
- try {
sqlP.prepareStatement(sql.toString());
return sqlP.executeUpdate();
- } finally {
- sqlP.close();
- }
}
/* ====================================================================== */
Modified: ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/SQLProcessor.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/SQLProcessor.java?rev=1812144&r1=1812143&r2=1812144&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/SQLProcessor.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/SQLProcessor.java Fri Oct 13 15:32:38 2017
@@ -50,7 +50,7 @@ import org.apache.ofbiz.entity.transacti
* SQLProcessor - provides utility functions to ease database access
*
*/
-public class SQLProcessor {
+public class SQLProcessor implements AutoCloseable {
/** Module Name Used for debugging */
public static final String module = SQLProcessor.class.getName();
@@ -200,6 +200,7 @@ public class SQLProcessor {
*
* @throws GenericDataSourceException
*/
+ @Override
public void close() throws GenericDataSourceException {
if (_manualTX) {
if (Debug.verboseOn()) Debug.logVerbose("SQLProcessor:close() calling commit : _manualTX=" + _manualTX, module);