package org.ovirt.engine.ui.uicommonweb.models.userportal;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.VmPool;
import org.ovirt.engine.core.common.businessentities.comparators.DiskByDiskAliasComparator;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
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.models.SearchableListModel;
@SuppressWarnings("unused")
public class VmBasicDiskListModel extends SearchableListModel<Object, DiskImage> {
public VmBasicDiskListModel() {
setIsTimerDisabled(true);
}
@Override
protected void onEntityChanged() {
super.onEntityChanged();
if (getEntity() != null) {
getSearchCommand().execute();
}
}
@Override
protected void syncSearch() {
super.syncSearch();
if (getEntity() instanceof VM) {
VM vm = (VM) getEntity();
IdQueryParameters queryParameters = new IdQueryParameters(vm.getId());
queryParameters.setRefresh(getIsQueryFirstTime());
Frontend.getInstance().runQuery(VdcQueryType.GetAllDisksPartialDataByVmId, queryParameters,
new SetSortedItemsAsyncQuery(new DiskByDiskAliasComparator()));
}
else if (getEntity() instanceof VmPool) {
VmPool pool = (VmPool) getEntity();
Frontend.getInstance().runQuery(VdcQueryType.GetVmDataByPoolId,
new IdQueryParameters(pool.getVmPoolId()),
new AsyncQuery<VdcQueryReturnValue>(result -> {
if (result != null) {
VM vm = result.getReturnValue();
if (vm == null) {
return;
}
IdQueryParameters queryParameters = new IdQueryParameters(vm.getId());
queryParameters.setRefresh(getIsQueryFirstTime());
Frontend.getInstance().runQuery(VdcQueryType.GetAllDisksPartialDataByVmId, queryParameters,
new SetSortedItemsAsyncQuery(new DiskByDiskAliasComparator()));
}
}));
}
}
@Override
protected String getListName() {
return "VmBasicDiskListModel"; //$NON-NLS-1$
}
}