Federico Simoncelli has uploaded a new change for review.

Change subject: [wip] core: unify GetImagesList using ImageFileType.All
......................................................................

[wip] core: unify GetImagesList using ImageFileType.All

Change-Id: I4e8fb85c3f0d58778b03fd0aa101d95bbeebf3f6
Signed-off-by: Federico Simoncelli <fsimo...@redhat.com>
---
M backend/manager/dbscripts/repo_files_meta_data_sp.sql
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RepoFileMetaDataDAODbFacadeImpl.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageIsoListModel.java
3 files changed, 88 insertions(+), 107 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/67/13867/1

diff --git a/backend/manager/dbscripts/repo_files_meta_data_sp.sql 
b/backend/manager/dbscripts/repo_files_meta_data_sp.sql
index e568f06..5f4fc8d 100644
--- a/backend/manager/dbscripts/repo_files_meta_data_sp.sql
+++ b/backend/manager/dbscripts/repo_files_meta_data_sp.sql
@@ -18,14 +18,20 @@
 LANGUAGE plpgsql;
 
 
-Create or replace FUNCTION DeleteRepo_domain_file_list(v_repo_domain_id UUID, 
v_file_type INTEGER)
+Create or replace FUNCTION DeleteRepo_domain_file_list(v_storage_domain_id 
UUID, v_file_type INTEGER DEFAULT NULL)
 RETURNS VOID
    AS $procedure$
 BEGIN
 
-   DELETE FROM repo_file_meta_data
-   WHERE repo_domain_id = v_repo_domain_id
-     AND file_type = v_file_type;
+   IF v_file_type IS NULL
+   THEN
+     DELETE FROM repo_file_meta_data
+     WHERE repo_domain_id = v_storage_domain_id;
+   ELSE
+     DELETE FROM repo_file_meta_data
+     WHERE repo_domain_id = v_storage_domain_id
+       AND file_type = v_file_type;
+   END IF;
 
    RETURN;
 END; $procedure$
@@ -34,15 +40,25 @@
 DROP FUNCTION IF EXISTS 
GetRepo_files_by_storage_domain_and_storage_pool(v_storage_pool_id UUID,
     v_storage_domain_id UUID, v_file_type INTEGER);
 
-Create or replace FUNCTION GetRepo_files_by_storage_domain(v_storage_domain_id 
UUID, v_file_type INTEGER)
+Create or replace FUNCTION GetRepo_files_by_storage_domain(v_storage_domain_id 
UUID, v_file_type INTEGER DEFAULT NULL)
 RETURNS SETOF repo_file_meta_data
    AS $procedure$
 BEGIN
-   RETURN QUERY SELECT repo_file_meta_data.*
-   FROM repo_file_meta_data
-   WHERE repo_domain_id = v_storage_domain_id
-   AND repo_file_meta_data.file_type = v_file_type
-   ORDER BY repo_file_meta_data.last_refreshed;
+
+   IF v_file_type IS NULL
+   THEN
+     RETURN QUERY SELECT repo_file_meta_data.*
+     FROM repo_file_meta_data
+     WHERE repo_domain_id = v_storage_domain_id
+     ORDER BY repo_file_meta_data.last_refreshed;
+   ELSE
+     RETURN QUERY SELECT repo_file_meta_data.*
+     FROM repo_file_meta_data
+     WHERE repo_domain_id = v_storage_domain_id
+     AND repo_file_meta_data.file_type = v_file_type
+     ORDER BY repo_file_meta_data.last_refreshed;
+   END IF;
+
 END; $procedure$
 LANGUAGE plpgsql;
 
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RepoFileMetaDataDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RepoFileMetaDataDAODbFacadeImpl.java
index 3a09587..6e16292 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RepoFileMetaDataDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RepoFileMetaDataDAODbFacadeImpl.java
@@ -23,9 +23,12 @@
 public class RepoFileMetaDataDAODbFacadeImpl extends BaseDAODbFacade 
implements RepoFileMetaDataDAO {
 
     @Override
-    public void removeRepoDomainFileList(Guid id, ImageFileType filetype) {
-        MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource()
-                .addValue("repo_domain_id", id).addValue("file_type", 
filetype.getValue());
+    public void removeRepoDomainFileList(Guid id, ImageFileType fileType) {
+        MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource().addValue("storage_domain_id", id);
+
+        if (fileType != ImageFileType.All) {
+            parameterSource.addValue("file_type", fileType.getValue());
+        }
 
         getCallsHandler().executeModification("DeleteRepo_domain_file_list", 
parameterSource);
     }
@@ -50,12 +53,15 @@
     @Override
     public List<RepoFileMetaData> getRepoListForStorageDomain(Guid 
storageDomainId,
             ImageFileType fileType) {
-        MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource().addValue("storage_domain_id",
-                storageDomainId);
-        parameterSource.addValue("file_type", fileType.getValue());
+        MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource();
+        parameterSource.addValue("storage_domain_id", storageDomainId);
 
-        return 
getCallsHandler().executeReadList("GetRepo_files_by_storage_domain", 
RepoFileMetaDataMapper.instance,
-                parameterSource);
+        if (fileType != ImageFileType.All) {
+            parameterSource.addValue("file_type", fileType.getValue());
+        }
+
+        return 
getCallsHandler().executeReadList("GetRepo_files_by_storage_domain",
+                RepoFileMetaDataMapper.instance, parameterSource);
     }
 
     /**
@@ -101,25 +107,7 @@
             entity.setSize(rs.getLong("size"));
             entity.setDateCreated((Date) rs.getObject("date_created"));
             entity.setLastRefreshed(rs.getLong("last_refreshed"));
-            return entity;
-        }
-    }
-
-    private static class StorageDomainRepoFileMetaDataMapper implements 
RowMapper<RepoFileMetaData> {
-        public static final StorageDomainRepoFileMetaDataMapper instance = new 
StorageDomainRepoFileMetaDataMapper();
-
-        @Override
-        public RepoFileMetaData mapRow(ResultSet rs, int rowNum) throws 
SQLException {
-            RepoFileMetaData entity = new RepoFileMetaData();
-            
entity.setStoragePoolId(Guid.createGuidFromString(rs.getString("storage_pool_id")));
-            
entity.setRepoDomainId(Guid.createGuidFromString(rs.getString("storage_domain_id")));
-            entity.setRepoFileName(rs.getString("repo_file_name"));
-            
entity.setStoragePoolStatus(StoragePoolStatus.forValue(rs.getInt("storage_pool_status")));
-            entity.setVdsStatus(VDSStatus.forValue(rs.getInt("vds_status")));
-            entity.setSize(rs.getLong("size"));
-            
entity.setStorageDomainStatus(StorageDomainStatus.forValue(rs.getInt("storage_domain_status")));
-            entity.setDateCreated((Date) rs.getObject("date_created"));
-            entity.setLastRefreshed(rs.getLong("last_refreshed"));
+            entity.setFileType(ImageFileType.forValue(rs.getInt("file_type")));
             return entity;
         }
     }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageIsoListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageIsoListModel.java
index e7222a5..4dad952 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageIsoListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageIsoListModel.java
@@ -1,28 +1,27 @@
 package org.ovirt.engine.ui.uicommonweb.models.storage;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
+import java.util.Comparator;
 
 import org.ovirt.engine.core.common.businessentities.ImageFileType;
 import org.ovirt.engine.core.common.businessentities.RepoFileMetaData;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.queries.GetImagesListParameters;
-import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
 import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.Frontend;
+import org.ovirt.engine.ui.frontend.INewAsyncCallback;
 import org.ovirt.engine.ui.uicommonweb.Linq;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 import org.ovirt.engine.ui.uicompat.EventArgs;
-import org.ovirt.engine.ui.uicompat.FrontendMultipleQueryAsyncResult;
-import org.ovirt.engine.ui.uicompat.IFrontendMultipleQueryAsyncCallback;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
 
 @SuppressWarnings("unused")
-public class StorageIsoListModel extends SearchableListModel implements 
IFrontendMultipleQueryAsyncCallback
+public class StorageIsoListModel extends SearchableListModel
 {
     @Override
     public Iterable getItems()
@@ -145,23 +144,52 @@
 
         StorageDomain storageDomain = (StorageDomain) getEntity();
 
-        GetImagesListParameters isoListParams = new GetImagesListParameters(
-                storageDomain.getId(), ImageFileType.ISO);
-        isoListParams.setForceRefresh(true);
-        isoListParams.setRefresh(getIsQueryFirstTime());
-
-        GetImagesListParameters floppyListParams = new GetImagesListParameters(
-                storageDomain.getId(), ImageFileType.Floppy);
-        floppyListParams.setForceRefresh(true);
-        floppyListParams.setRefresh(getIsQueryFirstTime());
+        GetImagesListParameters imagesListParams = new 
GetImagesListParameters(storageDomain.getId(), ImageFileType.All);
+        imagesListParams.setForceRefresh(true);
+        imagesListParams.setRefresh(getIsQueryFirstTime());
 
         StartProgress(null);
 
-        Frontend.RunMultipleQueries(new 
ArrayList<VdcQueryType>(Arrays.asList(new VdcQueryType[] {
-                VdcQueryType.GetImagesList, VdcQueryType.GetImagesList })),
-                new ArrayList<VdcQueryParametersBase>(Arrays.asList(new 
VdcQueryParametersBase[] {
-                        isoListParams, floppyListParams })),
-                this);
+        AsyncQuery _asyncQuery = new AsyncQuery();
+        _asyncQuery.setModel(this);
+        _asyncQuery.asyncCallback = new INewAsyncCallback() {
+            @Override
+            public void OnSuccess(Object model, Object returnObject)
+            {
+                VdcQueryReturnValue returnValue = (VdcQueryReturnValue) 
returnObject;
+
+                StopProgress();
+
+                if (!returnValue.getSucceeded()) {
+                    return;
+                }
+
+                ArrayList<RepoFileMetaData> repoFileList = 
(ArrayList<RepoFileMetaData>)
+                        returnValue.getReturnValue();
+
+                Collections.sort(repoFileList, new 
Comparator<RepoFileMetaData>() {
+                    @Override
+                    public int compare(RepoFileMetaData a, RepoFileMetaData b) 
{
+                        return 
a.getRepoFileName().compareToIgnoreCase(b.getRepoFileName());
+                    }
+                });
+
+                ArrayList<EntityModel> entityList = new 
ArrayList<EntityModel>();
+
+                for (RepoFileMetaData repoFileItem : repoFileList) {
+                    EntityModel entityItem = new EntityModel();
+                    entityItem.setHashName(repoFileItem.getRepoFileName());
+                    entityItem.setTitle(repoFileItem.getRepoFileName());
+                    entityItem.setEntity(repoFileItem.getFileType());
+                    entityList.add(entityItem);
+                }
+
+                UpdateIsoModels(entityList);
+                setIsEmpty(entityList.isEmpty());
+            }
+        };
+
+        Frontend.RunQuery(VdcQueryType.GetImagesList, imagesListParams, 
_asyncQuery);
     }
 
     @Override
@@ -169,57 +197,6 @@
     {
         super.AsyncSearch();
         SyncSearch();
-    }
-
-    @Override
-    public void Executed(FrontendMultipleQueryAsyncResult result)
-    {
-        StopProgress();
-
-        ArrayList<EntityModel> items = new ArrayList<EntityModel>();
-
-        VdcQueryReturnValue isoReturnValue = result.getReturnValues().get(0);
-
-        ArrayList<RepoFileMetaData> isoImages =
-                isoReturnValue.getSucceeded() ? (ArrayList<RepoFileMetaData>) 
isoReturnValue.getReturnValue()
-                        : new ArrayList<RepoFileMetaData>();
-
-        ArrayList<String> fileNameList = new ArrayList<String>();
-        for (RepoFileMetaData RepoFileMetaData : isoImages) {
-            fileNameList.add(RepoFileMetaData.getRepoFileName());
-        }
-        Collections.sort(fileNameList, new Linq.CaseInsensitiveComparer());
-
-        for (String item : fileNameList) {
-            EntityModel model = new EntityModel();
-            model.setHashName(item);
-            model.setTitle(item);
-            model.setEntity("CD/DVD"); //$NON-NLS-1$
-            items.add(model);
-        }
-
-        VdcQueryReturnValue floppyReturnValue = 
result.getReturnValues().get(1);
-
-        ArrayList<RepoFileMetaData> floppyImages =
-                floppyReturnValue.getSucceeded() ? 
(ArrayList<RepoFileMetaData>) floppyReturnValue.getReturnValue()
-                        : new ArrayList<RepoFileMetaData>();
-
-        ArrayList<String> floppyNameList = new ArrayList<String>();
-        for (RepoFileMetaData RepoFileMetaData : floppyImages) {
-            floppyNameList.add(RepoFileMetaData.getRepoFileName());
-        }
-        Collections.sort(floppyNameList, new Linq.CaseInsensitiveComparer());
-
-        for (String item : floppyNameList) {
-            EntityModel model = new EntityModel();
-            model.setHashName(item);
-            model.setTitle(item);
-            model.setEntity("Floppy"); //$NON-NLS-1$
-            items.add(model);
-        }
-
-        UpdateIsoModels(items);
-        setIsEmpty(items.isEmpty());
     }
 
     private void UpdateIsoModels(ArrayList<EntityModel> items)


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4e8fb85c3f0d58778b03fd0aa101d95bbeebf3f6
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Federico Simoncelli <fsimo...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to