package org.ovirt.engine.ui.uicommonweb.models.disks;
import java.util.ArrayList;
import java.util.HashMap;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.ui.frontend.Frontend;
import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
import org.ovirt.engine.ui.uicompat.ConstantsManager;
@SuppressWarnings("unused")
public class DiskVmListModel extends SearchableListModel<Disk, VM> {
private HashMap diskVmMap;
public DiskVmListModel() {
setTitle(ConstantsManager.getInstance().getConstants().virtualMachinesTitle());
setHelpTag(HelpTag.virtual_machines);
setHashName("virtual_machines"); //$NON-NLS-1$
}
@Override
protected void onEntityChanged() {
super.onEntityChanged();
if (getEntity() != null) {
getSearchCommand().execute();
}
}
@Override
protected void syncSearch() {
Disk disk = getEntity();
if (disk == null) {
return;
}
IdQueryParameters getVmsByDiskGuidParameters = new IdQueryParameters(disk.getId());
getVmsByDiskGuidParameters.setRefresh(getIsQueryFirstTime());
Frontend.getInstance().runQuery(VdcQueryType.GetVmsByDiskGuid, getVmsByDiskGuidParameters, new AsyncQuery<VdcQueryReturnValue>(returnValue -> {
diskVmMap = returnValue.getReturnValue();
ArrayList<VM> vmList = new ArrayList<>();
ArrayList<VM> pluggedList = (ArrayList<VM>) diskVmMap.get(true);
ArrayList<VM> unPluggedList = (ArrayList<VM>) diskVmMap.get(false);
if (pluggedList != null) {
vmList.addAll(pluggedList);
}
if (unPluggedList != null) {
vmList.addAll(unPluggedList);
}
setItems(vmList);
}));
setIsQueryFirstTime(false);
}
@Override
protected void onSelectedItemChanged() {
super.onSelectedItemChanged();
updateActionAvailability();
}
@Override
protected void selectedItemsChanged() {
super.selectedItemsChanged();
updateActionAvailability();
}
private void updateActionAvailability() {
}
@Override
protected String getListName() {
return "DiskVmListModel"; //$NON-NLS-1$
}
public boolean isDiskPluggedToVm(VM vm) {
ArrayList<VM> pluggedList = (ArrayList<VM>) diskVmMap.get(true);
return pluggedList != null && pluggedList.contains(vm);
}
}