package org.ovirt.engine.ui.uicommonweb.models.storage;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.ovirt.engine.core.common.businessentities.StorageDomain;
import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.queries.GetUnregisteredBlockStorageDomainsParameters;
import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.common.utils.Pair;
import org.ovirt.engine.ui.frontend.Frontend;
import org.ovirt.engine.ui.uicommonweb.models.ListModel;
import org.ovirt.engine.ui.uicompat.ConstantsManager;
public abstract class ImportSanStorageModel extends SanStorageModelBase {
protected ListModel<StorageDomain> storageDomains;
@Override
protected String getListName() {
return "ImportSanStorageModel"; //$NON-NLS-1$
}
@Override
protected void initializeItems(List<LunModel> newLuns, List<SanTargetModel> newTargets) {
}
public ListModel<StorageDomain> getStorageDomains() {
return storageDomains;
}
public void setStorageDomains(ListModel<StorageDomain> storageDomains) {
this.storageDomains = storageDomains;
}
protected void addStorageDomains(ArrayList<StorageDomain> storageDomains) {
Set<StorageDomain> allStorageDomains = new HashSet<>();
allStorageDomains.addAll(getStorageDomains().getItems());
allStorageDomains.addAll(storageDomains);
getStorageDomains().setItems(new ArrayList<StorageDomain>(allStorageDomains));
}
protected void postGetUnregisteredStorageDomains(List<StorageDomain> storageDomains, List<StorageServerConnections> connections) {
// Override if needed
}
protected void getUnregisteredStorageDomains(List<StorageServerConnections> connections) {
VDS vds = getContainer().getHost().getSelectedItem();
Frontend.getInstance().runQuery(VdcQueryType.GetUnregisteredBlockStorageDomains,
new GetUnregisteredBlockStorageDomainsParameters(vds.getId(), getType(), connections),
new AsyncQuery<VdcQueryReturnValue>(returnValue -> {
Pair<List<StorageDomain>, List<StorageServerConnections>> returnValuePair =
returnValue.getReturnValue();
ArrayList<StorageDomain> storageDomains =
(ArrayList<StorageDomain>) returnValuePair.getFirst();
ArrayList<StorageServerConnections> connections1 =
(ArrayList<StorageServerConnections>) returnValuePair.getSecond();
if (storageDomains != null) {
addStorageDomains(storageDomains);
}
postGetUnregisteredStorageDomains(storageDomains, connections1);
}));
}
@Override
public boolean validate() {
boolean isValid = getStorageDomains().getSelectedItems() != null &&
!getStorageDomains().getSelectedItems().isEmpty();
if (!isValid) {
getInvalidityReasons().add(ConstantsManager.getInstance().getConstants().noStorageDomainsSelectedInvalidReason());
}
setIsValid(isValid);
return getIsValid();
}
}