Yair Zaslavsky has uploaded a new change for review.

Change subject: [WIP] core: Implementing insertAsyncTaskEntities using batch
......................................................................

[WIP] core: Implementing insertAsyncTaskEntities using batch

Change-Id: Ifb4889cbc71b9beadf107430cdc0d5db3b081dea
Signed-off-by: Yair Zaslavsky <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskUtils.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAO.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
4 files changed, 58 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/47/16447/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskUtils.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskUtils.java
index 9b6e28c..aa70ca3 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskUtils.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskUtils.java
@@ -1,10 +1,14 @@
 package org.ovirt.engine.core.bll.tasks;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
 import org.ovirt.engine.core.bll.SPMAsyncTask;
 import org.ovirt.engine.core.common.VdcObjectType;
+import org.ovirt.engine.core.common.businessentities.AsyncTaskEntity;
 import org.ovirt.engine.core.common.businessentities.AsyncTasks;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.TransactionScopeOption;
@@ -34,12 +38,11 @@
                     public Void runInTransaction() {
                         
addOrUpdateTaskInDB(asyncTask.getParameters().getDbAsyncTask());
                         Map<Guid, VdcObjectType> entitiesMap = 
asyncTask.getEntitiesMap();
-                        for (Entry<Guid, VdcObjectType> entry : 
entitiesMap.entrySet()) {
-                            
getAsyncTaskDao().insertAsyncTaskEntity(asyncTask.getParameters()
-                                    .getDbAsyncTask().getTaskId(), 
entry.getKey(), entry.getValue());
-                        }
+                        List<AsyncTaskEntity> asyncTaskEntities = 
buildAsyncTaskEntities(asyncTask.getParameters().getDbAsyncTask().getTaskId(),entitiesMap);
+                        
getAsyncTaskDao().insertAsyncTaskEntities(asyncTaskEntities);
                         return null;
                     }
+
                 });
             }
         } catch (RuntimeException e) {
@@ -48,6 +51,17 @@
                     asyncTask.getVdsmTaskId()), e);
         }
     }
+    
+       private static List<AsyncTaskEntity> buildAsyncTaskEntities(
+                       Guid taskId, Map<Guid, VdcObjectType> entitiesMap) {
+               List<AsyncTaskEntity> results = new ArrayList<>();
+               for (Map.Entry<Guid, VdcObjectType> entry: 
entitiesMap.entrySet()) {
+                       results.add(new 
AsyncTaskEntity(taskId,entry.getValue(), entry.getKey()));
+
+               }
+               return results;
+       }
+
 
     private static void addOrUpdateTaskInDB(AsyncTasks asyncTask) {
         getAsyncTaskDao().saveOrUpdate(asyncTask, null, (Guid[]) null);
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAO.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAO.java
index 7339008..9fccb14 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAO.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAO.java
@@ -1,8 +1,10 @@
 package org.ovirt.engine.core.dao;
 
 import java.util.List;
+import java.util.Map;
 
 import org.ovirt.engine.core.common.VdcObjectType;
+import org.ovirt.engine.core.common.businessentities.AsyncTaskEntity;
 import org.ovirt.engine.core.common.businessentities.AsyncTasks;
 import org.ovirt.engine.core.compat.Guid;
 
@@ -95,4 +97,6 @@
     List<AsyncTasks> getTasksByEntity(Guid entityId);
 
     void insertAsyncTaskEntity(Guid taskId, Guid entityId, VdcObjectType 
value);
+
+       void insertAsyncTaskEntities(List<AsyncTaskEntity> asyncTaskEntities);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
index 6518e7d..7997f89 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
@@ -10,6 +10,7 @@
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskType;
+import org.ovirt.engine.core.common.businessentities.AsyncTaskEntity;
 import org.ovirt.engine.core.common.businessentities.AsyncTaskResultEnum;
 import org.ovirt.engine.core.common.businessentities.AsyncTaskStatusEnum;
 import org.ovirt.engine.core.common.businessentities.AsyncTasks;
@@ -17,6 +18,7 @@
 import org.ovirt.engine.core.dal.dbbroker.CustomMapSqlParameterSource;
 import org.ovirt.engine.core.dal.dbbroker.DbEngineDialect;
 import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils;
+import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper;
 import org.ovirt.engine.core.utils.ReflectionUtils;
 import org.ovirt.engine.core.utils.SerializationFactory;
 import org.ovirt.engine.core.utils.log.Log;
@@ -98,6 +100,20 @@
             return SerializationFactory.getSerializer().serialize(params);
         }
     }
+
+    // Cannot be static as depends on dialect which is a non static field
+    private MapSqlParameterMapper<AsyncTaskEntity> mapper = new 
MapSqlParameterMapper<AsyncTaskEntity>() {
+
+        @Override
+        public MapSqlParameterSource map(AsyncTaskEntity entity) {
+            CustomMapSqlParameterSource paramSource = 
getCustomMapSqlParameterSource();
+            paramSource.addValue("task_id", entity.getTaskId()).
+                    addValue("entity_id", entity.getEntityId()).
+                    addValue("entity_type", entity.getEntityType());
+            return paramSource;
+
+        }
+    };
 
     @Override
     public AsyncTasks get(Guid id) {
@@ -213,4 +229,9 @@
         getCallsHandler().executeModification("InsertAsyncTaskEntities", 
parameterSource);
 
     }
+
+    @Override
+    public void insertAsyncTaskEntities(List<AsyncTaskEntity> 
asyncTaskEntities) {
+        getCallsHandler().executeStoredProcAsBatch("InsertAsyncTaskEntities", 
asyncTaskEntities, mapper);
+    }
 }
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
index 9260b80..64263c2 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
@@ -5,6 +5,7 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -16,6 +17,7 @@
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskType;
+import org.ovirt.engine.core.common.businessentities.AsyncTaskEntity;
 import org.ovirt.engine.core.common.businessentities.AsyncTaskResultEnum;
 import org.ovirt.engine.core.common.businessentities.AsyncTaskStatusEnum;
 import org.ovirt.engine.core.common.businessentities.AsyncTasks;
@@ -24,8 +26,8 @@
 
 /**
  * <code>AsyncTaskDAOTest</code> performs tests against the {@link 
AsyncTaskDAO} type.
- *
- *
+ * 
+ * 
  */
 public class AsyncTaskDAOTest extends BaseDAOTestCase {
     private static final int TASK_COUNT = 2;
@@ -252,7 +254,7 @@
     }
 
     @Test
-    public void testInsertAsyncTaskEntities() {
+    public void testInsertAsyncTaskEntitity() {
         dao.save(newAsyncTask);
         Guid newEntityId = Guid.newGuid();
         dao.insertAsyncTaskEntity(newAsyncTask.getTaskId(), newEntityId, 
VdcObjectType.VM);
@@ -263,4 +265,14 @@
         assertEquals(newAsyncTask.getTaskId(), taskIdFromDb);
 
     }
+
+    @Test
+    public void testInsertAsyncTaskEntitities() {
+        dao.save(newAsyncTask);
+        List<AsyncTaskEntity> asyncTaskEntities = new 
ArrayList<AsyncTaskEntity>();
+        asyncTaskEntities.add(new AsyncTaskEntity(newAsyncTask.getTaskId(), 
VdcObjectType.Storage, Guid.newGuid()));
+        asyncTaskEntities.add(new AsyncTaskEntity(newAsyncTask.getTaskId(), 
VdcObjectType.Disk, Guid.newGuid()));
+        dao.insertAsyncTaskEntities(asyncTaskEntities);
+        // TODO: Missing DAO API to get all entities associated with a single 
task
+    }
 }


-- 
To view, visit http://gerrit.ovirt.org/16447
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifb4889cbc71b9beadf107430cdc0d5db3b081dea
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yair Zaslavsky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to