details:   https://code.openbravo.com/erp/devel/pi/rev/502f1cd5e0ce
changeset: 28118:502f1cd5e0ce
user:      David Miguelez <david.miguelez <at> openbravo.com>
date:      Wed Nov 25 10:58:12 2015 +0100
summary:   Fixes Issue 31252. Fixes problem in Product Characteristics 
description.

When updating, deleting or creating a new Product, it stores in a list
the id's of the affected Products and then it modifies the description
when the Transaction is completed.

diffstat:

 src/org/openbravo/event/ProductCharacteristicValueEventHandler.java |  41 
++++++---
 1 files changed, 27 insertions(+), 14 deletions(-)

diffs (98 lines):

diff -r 0eb0853e3d48 -r 502f1cd5e0ce 
src/org/openbravo/event/ProductCharacteristicValueEventHandler.java
--- a/src/org/openbravo/event/ProductCharacteristicValueEventHandler.java       
Mon Nov 23 10:20:38 2015 +0100
+++ b/src/org/openbravo/event/ProductCharacteristicValueEventHandler.java       
Wed Nov 25 10:58:12 2015 +0100
@@ -18,11 +18,12 @@
  */
 package org.openbravo.event;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 
 import javax.enterprise.event.Observes;
 
-import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.openbravo.base.model.Entity;
 import org.openbravo.base.model.ModelProvider;
@@ -45,7 +46,7 @@
   protected Logger logger = Logger.getLogger(this.getClass());
   private static Entity[] entities = { ModelProvider.getInstance().getEntity(
       ProductCharacteristicValue.ENTITY_NAME) };
-  private static ThreadLocal<String> prodchvalueUpdated = new 
ThreadLocal<String>();
+  private static ThreadLocal<List<String>> prodchvalueUpdated = new 
ThreadLocal<List<String>>();
 
   @Override
   protected Entity[] getObservedEntities() {
@@ -62,7 +63,7 @@
       return;
     }
     final ProductCharacteristicValue pchv = (ProductCharacteristicValue) 
event.getTargetInstance();
-    prodchvalueUpdated.set(pchv.getProduct().getId());
+    addProductToList(pchv);
   }
 
   public void onUpdate(@Observes EntityUpdateEvent event) {
@@ -70,7 +71,8 @@
       return;
     }
     final ProductCharacteristicValue pchv = (ProductCharacteristicValue) 
event.getTargetInstance();
-    prodchvalueUpdated.set(pchv.getProduct().getId());
+    prodchvalueUpdated.get().add(pchv.getProduct().getId());
+    addProductToList(pchv);
   }
 
   public void onDelete(@Observes EntityDeleteEvent event) {
@@ -78,14 +80,14 @@
       return;
     }
     final ProductCharacteristicValue pchv = (ProductCharacteristicValue) 
event.getTargetInstance();
-    prodchvalueUpdated.set(pchv.getProduct().getId());
+    addProductToList(pchv);
   }
 
   public void onTransactionCompleted(@Observes TransactionCompletedEvent 
event) {
-    String strProductId = prodchvalueUpdated.get();
+    List<String> productList = prodchvalueUpdated.get();
     prodchvalueUpdated.set(null);
     prodchvalueUpdated.remove();
-    if (StringUtils.isBlank(strProductId) || 
event.getTransaction().wasRolledBack()) {
+    if (productList == null || productList.isEmpty() || 
event.getTransaction().wasRolledBack()) {
       return;
     }
     try {
@@ -99,15 +101,26 @@
             OBContext.getOBContext().getLanguage().getLanguage());
       }
 
-      ProcessBundle pb = new 
ProcessBundle(VariantChDescUpdateProcess.AD_PROCESS_ID, vars)
-          .init(new DalConnectionProvider(false));
-      HashMap<String, Object> parameters = new HashMap<String, Object>();
-      parameters.put("mProductId", strProductId);
-      parameters.put("mChValueId", null);
-      pb.setParams(parameters);
-      OBScheduler.getInstance().schedule(pb);
+      for (String strProductId : productList) {
+        ProcessBundle pb = new 
ProcessBundle(VariantChDescUpdateProcess.AD_PROCESS_ID, vars)
+            .init(new DalConnectionProvider(false));
+        HashMap<String, Object> parameters = new HashMap<String, Object>();
+        parameters.put("mProductId", strProductId);
+        parameters.put("mChValueId", null);
+        pb.setParams(parameters);
+        OBScheduler.getInstance().schedule(pb);
+      }
     } catch (Exception e) {
       logger.error("Error executing process", e);
     }
   }
+
+  private void addProductToList(ProductCharacteristicValue pchv) {
+    List<String> productList = prodchvalueUpdated.get();
+    if (productList == null) {
+      productList = new ArrayList<String>();
+    }
+    productList.add(pchv.getProduct().getId());
+    prodchvalueUpdated.set(productList);
+  }
 }
\ No newline at end of file

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

Reply via email to