package org.ovirt.engine.ui.uicommonweb.models.storage; import java.util.Collections; import org.ovirt.engine.core.compat.*; import org.ovirt.engine.ui.uicompat.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.core.common.vdscommands.*; import org.ovirt.engine.core.common.queries.*; import org.ovirt.engine.core.common.action.*; import org.ovirt.engine.ui.frontend.*; import org.ovirt.engine.ui.uicommonweb.*; import org.ovirt.engine.ui.uicommonweb.models.*; import org.ovirt.engine.core.common.*; import org.ovirt.engine.ui.uicompat.*; import org.ovirt.engine.core.common.queries.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.ui.uicommonweb.*; import org.ovirt.engine.ui.uicommonweb.models.*; @SuppressWarnings("unused") public abstract class ImportSanStorageModel extends SanStorageModelBase { private java.util.List<storage_domains> candidates; public java.util.List<storage_domains> getCandidates() { return candidates; } public void setCandidates(java.util.List<storage_domains> value) { if (candidates != value) { candidates = value; OnPropertyChanged(new PropertyChangedEventArgs("Candidates")); getCandidatesList().setItems(ToEntityModelList(candidates)); } } private ListModel candidatesList; public ListModel getCandidatesList() { return candidatesList; } public void setCandidatesList(ListModel value) { if (candidatesList != value) { candidatesList = value; OnPropertyChanged(new PropertyChangedEventArgs("CandidatesList")); } } private String error; public String getError() { return error; } public void setError(String value) { if (!StringHelper.stringsEqual(error, value)) { error = value; OnPropertyChanged(new PropertyChangedEventArgs("Error")); } } private VDS oldHost; protected ImportSanStorageModel() { setCandidatesList(new ListModel()); InitializeItems(null); } @Override protected void PostDiscoverTargets(java.util.ArrayList<SanTargetModel> newItems) { super.PostDiscoverTargets(newItems); InitializeItems(newItems); } @Override protected void UpdateInternal() { super.UpdateInternal(); if (getContainer().getProgress() != null) { return; } VDS host = (VDS)getContainer().getHost().getSelectedItem(); if (host == null) { return; } if (host != oldHost) { setItems(null); oldHost = host; } InitializeItems(null); setError(null); getContainer().StartProgress(null); Frontend.RunQuery(VdcQueryType.GetExistingStorageDomainList, new GetExistingStorageDomainListParameters(host.getvds_id(), getType(), getRole(), ""), new AsyncQuery(this, new INewAsyncCallback() { @Override public void OnSuccess(Object target, Object returnValue) { ImportSanStorageModel model = (ImportSanStorageModel)target; Object result = ((VdcQueryReturnValue)returnValue).getReturnValue(); if (result != null) { model.setCandidates((java.util.ArrayList<storage_domains>)result); } else { setError("Error while retrieving list of domains. Please consult your Storage Administrator."); } model.getContainer().StopProgress(); } }, true)); } private void InitializeItems(java.util.List<SanTargetModel> newItems) { if (getItems() == null) { setItems(new ObservableCollection<SanTargetModel>()); } else { java.util.ArrayList<SanTargetModel> items = new java.util.ArrayList<SanTargetModel>(); items.addAll((java.util.List<SanTargetModel>)getItems()); //Add new targets. if (newItems != null) { for (SanTargetModel newItem : newItems) { if (Linq.FirstOrDefault(items, new Linq.TargetPredicate(newItem)) == null) { items.add(newItem); } } } setItems(items); UpdateLoginAllAvailability(); } } @Override public boolean Validate() { boolean isValid = getSelectedItem() != null || getCandidatesList().getSelectedItem() != null; if (!isValid) { getInvalidityReasons().add("Please select a Storage Domain to import"); } setIsValid(isValid); return super.Validate() && getIsValid(); } private Iterable ToEntityModelList(java.util.List<storage_domains> list) { java.util.ArrayList<EntityModel> entityModelList = new java.util.ArrayList<EntityModel>(); for (Object storage : list) { EntityModel model = new EntityModel(); model.setEntity(storage); entityModelList.add(model); } return entityModelList; } }