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