Maor Lipchuk has uploaded a new change for review.

Change subject: webadmin: Add attach warnning in Data center module
......................................................................

webadmin: Add attach warnning in Data center module

Change-Id: I3086670488aba8d0df12223dd61b3830f6764bd9
Bug-Url: https://bugzilla.redhat.com/1138115
Signed-off-by: Maor Lipchuk <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterStorageListModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java
2 files changed, 85 insertions(+), 18 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/52/36452/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterStorageListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterStorageListModel.java
index 255577c..a364573 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterStorageListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterStorageListModel.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.ui.uicommonweb.models.datacenters;
 
 import java.util.ArrayList;
+import java.util.List;
 
 import org.ovirt.engine.core.common.VdcActionUtils;
 import org.ovirt.engine.core.common.action.AttachStorageDomainToPoolParameters;
@@ -11,6 +12,7 @@
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainSharedStatus;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
 import org.ovirt.engine.core.common.businessentities.StorageFormatType;
@@ -163,6 +165,8 @@
     {
         privatepb_remove = value;
     }
+
+    private ArrayList<StorageDomain> selectedStorageDomains;
 
     public DataCenterStorageListModel()
     {
@@ -449,6 +453,7 @@
     public void onAttach()
     {
         ListModel model = (ListModel) getWindow();
+        ArrayList<StorageDomain> selectedDataStorageDomains = new 
ArrayList<StorageDomain>();
 
         if (getEntity() == null)
         {
@@ -456,26 +461,83 @@
             return;
         }
 
-        ArrayList<StorageDomain> items = new ArrayList<StorageDomain>();
-        for (EntityModel a : Linq.<EntityModel> cast(model.getItems()))
-        {
-            if (a.getIsSelected())
-            {
-                items.add((StorageDomain) a.getEntity());
+        selectedStorageDomains = new ArrayList<StorageDomain>();
+        for (EntityModel a : Linq.<EntityModel> cast(model.getItems())) {
+            if (a.getIsSelected()) {
+                StorageDomain storageDomain = (StorageDomain) a.getEntity();
+                selectedStorageDomains.add(storageDomain);
+                if (storageDomain.getStorageDomainType() == 
StorageDomainType.Data) {
+                    selectedDataStorageDomains.add(storageDomain);
+                }
             }
         }
 
-        if (items.size() > 0)
-        {
-            ArrayList<VdcActionParametersBase> pb = new 
ArrayList<VdcActionParametersBase>();
-            for (StorageDomain a : items)
-            {
-                pb.add(new AttachStorageDomainToPoolParameters(a.getId(), 
getEntity().getId()));
-            }
-
-            
Frontend.getInstance().runMultipleAction(VdcActionType.AttachStorageDomainToPool,
 pb);
+        if (selectedStorageDomains.isEmpty()) {
+            cancel();
+            return;
         }
 
+        
AsyncDataProvider.getInstance().getStorageDomainsWithAttachedStoragePoolGuid(
+                new AsyncQuery(this, new INewAsyncCallback() {
+                    @Override
+                    public void onSuccess(Object target, Object returnValue) {
+                        DataCenterStorageListModel dataCenterStorageListModel 
= (DataCenterStorageListModel) target;
+                        List<StorageDomainStatic> attachedStorageDomains = 
(List<StorageDomainStatic>) returnValue;
+                        if (!attachedStorageDomains.isEmpty()) {
+                            ConfirmationModel model = new ConfirmationModel();
+                            dataCenterStorageListModel.setWindow(null);
+                            dataCenterStorageListModel.setWindow(model);
+
+                            List<String> stoageDomainNames = new 
ArrayList<String>();
+                            for (StorageDomainStatic domain : 
attachedStorageDomains) {
+                                stoageDomainNames.add(domain.getStorageName());
+                            }
+                            model.setItems(stoageDomainNames);
+
+                            model.setTitle(ConstantsManager.getInstance()
+                                    .getConstants()
+                                    
.storageDomainsAttachedToDataCenterWarningTitle());
+                            model.setMessage(ConstantsManager.getInstance()
+                                    .getConstants()
+                                    
.storageDomainsAttachedToDataCenterWarningMessage());
+
+                            
model.setHelpTag(HelpTag.attach_storage_domain_confirmation);
+                            
model.setHashName("attach_storage_domain_confirmation"); //$NON-NLS-1$
+
+                            model.getLatch().setIsAvailable(true);
+                            model.getLatch().setIsChangable(true);
+
+                            UICommand onApprove = new 
UICommand("OnAttachApprove", dataCenterStorageListModel); //$NON-NLS-1$
+                            
onApprove.setTitle(ConstantsManager.getInstance().getConstants().ok());
+                            onApprove.setIsDefault(true);
+                            model.getCommands().add(onApprove);
+
+                            UICommand cancel = new UICommand("Cancel", 
dataCenterStorageListModel); //$NON-NLS-1$
+                            
cancel.setTitle(ConstantsManager.getInstance().getConstants().cancel());
+                            cancel.setIsCancel(true);
+                            model.getCommands().add(cancel);
+                        } else {
+                            executeAttachStorageDomains();
+                        }
+                    }
+                }), getEntity(), selectedDataStorageDomains);
+    }
+
+    public void onAttachApprove() {
+        ConfirmationModel model = (ConfirmationModel) getWindow();
+        if (!model.validate()) {
+            return;
+        }
+
+        executeAttachStorageDomains();
+    }
+
+    public void executeAttachStorageDomains() {
+        ArrayList<VdcActionParametersBase> pb = new 
ArrayList<VdcActionParametersBase>();
+        for (StorageDomain storageDomain : selectedStorageDomains) {
+            pb.add(new 
AttachStorageDomainToPoolParameters(storageDomain.getId(), 
getEntity().getId()));
+        }
+        
Frontend.getInstance().runMultipleAction(VdcActionType.AttachStorageDomainToPool,
 pb);
         cancel();
     }
 
@@ -796,6 +858,10 @@
         {
             onAttach();
         }
+        else if ("OnAttachApprove".equals(command.getName())) //$NON-NLS-1$
+        {
+            onAttachApprove();
+        }
         else if ("OnDetach".equals(command.getName())) //$NON-NLS-1$
         {
             onDetach();
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java
index d82f504..d06bb0c 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java
@@ -178,13 +178,13 @@
             final Provider<RemoveConfirmationPopupPresenterWidget> 
removeConfirmPopupProvider,
             final Provider<DataCenterListModel> mainModelProvider,
             final Provider<DataCenterStorageListModel> modelProvider) {
-
         SearchableDetailTabModelProvider<StorageDomain, DataCenterListModel, 
DataCenterStorageListModel> result =
                 new SearchableDetailTabModelProvider<StorageDomain, 
DataCenterListModel, DataCenterStorageListModel>(
                         eventBus, defaultConfirmPopupProvider) {
                     @Override
                     public AbstractModelBoundPopupPresenterWidget<? extends 
Model, ?> getModelPopup(DataCenterStorageListModel source,
-                            UICommand lastExecutedCommand, Model windowModel) {
+                            UICommand lastExecutedCommand,
+                            Model windowModel) {
                         DataCenterStorageListModel model = getModel();
 
                         if (lastExecutedCommand == 
model.getAttachStorageCommand()) {
@@ -200,7 +200,8 @@
                     @Override
                     public AbstractModelBoundPopupPresenterWidget<? extends 
ConfirmationModel, ?> getConfirmModelPopup(DataCenterStorageListModel source,
                             UICommand lastExecutedCommand) {
-                        if (lastExecutedCommand == 
getModel().getDetachCommand()) {
+                        if (lastExecutedCommand == 
getModel().getDetachCommand() ||
+                                
lastExecutedCommand.getName().equals("OnAttach")) { //$NON-NLS-1$ ) {
                             return removeConfirmPopupProvider.get();
                         } else {
                             return super.getConfirmModelPopup(source, 
lastExecutedCommand);


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

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

Reply via email to