details:   https://code.openbravo.com/erp/devel/pi/rev/719179385778
changeset: 35531:719179385778
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Tue Mar 12 11:46:37 2019 +0100
summary:   fixed issue 40358: use bind-parameters in ImportEntryManager for 
type of data

details:   https://code.openbravo.com/erp/devel/pi/rev/92a2f9f50e21
changeset: 35532:92a2f9f50e21
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Tue Mar 12 11:59:39 2019 +0100
summary:   related to issue 40358: code clean up

  * Query String is now constant
  * Write the full query without concatenating properties makes it more readable
  * Using scrollable as AutoCloseable

diffstat:

 src/org/openbravo/service/importprocess/ImportEntryManager.java |  31 ++++-----
 1 files changed, 15 insertions(+), 16 deletions(-)

diffs (68 lines):

diff -r a1f3604f3132 -r 92a2f9f50e21 
src/org/openbravo/service/importprocess/ImportEntryManager.java
--- a/src/org/openbravo/service/importprocess/ImportEntryManager.java   Tue Mar 
12 11:28:15 2019 +0100
+++ b/src/org/openbravo/service/importprocess/ImportEntryManager.java   Tue Mar 
12 11:59:39 2019 +0100
@@ -469,8 +469,15 @@
   }
 
   private static class ImportEntryManagerThread implements Runnable {
+    private final ImportEntryManager manager;
 
-    private final ImportEntryManager manager;
+    // @formatter:off
+    private static final String IMPORT_ENTRY_QRY =
+          " from C_IMPORT_ENTRY "
+        + "where typeofdata = :typeOfData "
+        + "  and importStatus = 'Initial' "
+        + "order by creationDate, createdtimestamp";
+    // @formatter:on
 
     private boolean isRunning = false;
     private Object monitorObject = new Object();
@@ -552,7 +559,6 @@
 
             int entryCount = 0;
             try {
-
               // start processing, so ignore any notifications happening before
               wasNotifiedInParallel = false;
 
@@ -562,22 +568,16 @@
               for (String typeOfData : typesOfData) {
                 log.debug("Reading import entries for type of data {}", 
typeOfData);
 
-                final String importEntryQryStr = "from " + 
ImportEntry.ENTITY_NAME + " where "
-                    + ImportEntry.PROPERTY_TYPEOFDATA + "='" + typeOfData + "' 
and "
-                    + ImportEntry.PROPERTY_IMPORTSTATUS + "='Initial' order by 
"
-                    + ImportEntry.PROPERTY_CREATIONDATE + ", "
-                    + ImportEntry.PROPERTY_CREATEDTIMESTAMP;
-
                 final Query<ImportEntry> entriesQry = OBDal.getInstance()
                     .getSession()
-                    .createQuery(importEntryQryStr, ImportEntry.class);
-                entriesQry.setFirstResult(0);
-                entriesQry.setFetchSize(100);
-                entriesQry.setMaxResults(manager.importBatchSize);
+                    .createQuery(IMPORT_ENTRY_QRY, ImportEntry.class)
+                    .setParameter("typeOfData", typeOfData)
+                    .setFirstResult(0)
+                    .setFetchSize(100)
+                    .setMaxResults(manager.importBatchSize);
 
                 int typeOfDataEntryCount = 0;
-                final ScrollableResults entries = 
entriesQry.scroll(ScrollMode.FORWARD_ONLY);
-                try {
+                try (ScrollableResults entries = 
entriesQry.scroll(ScrollMode.FORWARD_ONLY)) {
                   while (entries.next() && isHandlingImportEntries()) {
                     entryCount++;
                     typeOfDataEntryCount++;
@@ -598,9 +598,8 @@
                       manager.setImportEntryError(entry.getId(), t);
                     }
                   }
-                } finally {
-                  entries.close();
                 }
+
                 if (typeOfDataEntryCount > 0) {
                   log.debug("Handled {} entries for {}", typeOfDataEntryCount, 
typeOfData);
                 }


_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to