package org.ovirt.engine.ui.uicommonweb.models.vms;
import java.util.ArrayList;
import java.util.List;
import org.ovirt.engine.core.common.action.StorageJobCommandParameters;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.ui.frontend.Frontend;
import org.ovirt.engine.ui.uicommonweb.ICommandTarget;
import org.ovirt.engine.ui.uicommonweb.UICommand;
import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel;
import org.ovirt.engine.ui.uicompat.ConstantsManager;
import org.ovirt.engine.ui.uicompat.UIConstants;
@SuppressWarnings("unused")
public class SparsifyDiskModel extends ConfirmationModel {
public static final String ON_SPARSIFY = "OnSparsifyDisk";
public static final String CANCEL_SPARSIFY = "CancelSparsifyDisk";
private List<Disk> disksToSparsify;
private UICommand cancelCommand;
public void initialize(VM vm, List<Disk> disksToSparsify, ICommandTarget target) {
this.disksToSparsify = disksToSparsify;
UIConstants uiConstants = ConstantsManager.getInstance().getConstants();
setTitle(uiConstants.sparsifyDisksTitle());
setMessage(uiConstants.sparsifyConfirmationPopupMessage());
setHelpTag(HelpTag.sparsify_disk);
setHashName("sparsify_disk"); //$NON-NLS-1$
List<DiskModel> items = new ArrayList<>();
for (Disk disk : disksToSparsify) {
DiskModel diskModel = new DiskModel();
diskModel.setDisk(disk);
diskModel.setVm(vm);
items.add(diskModel);
}
setItems(items);
UICommand okCommand = UICommand.createDefaultOkUiCommand(ON_SPARSIFY, target);
getCommands().add(okCommand);
cancelCommand = UICommand.createCancelUiCommand(CANCEL_SPARSIFY, target);
getCommands().add(cancelCommand);
}
public void onSparsify(final ICommandTarget target) {
List<VdcActionParametersBase> parameterList = new ArrayList<>();
for (Disk disk : disksToSparsify) {
VdcActionParametersBase parameters = new StorageJobCommandParameters(((DiskImage) disk).getImageId());
parameterList.add(parameters);
}
startProgress();
Frontend.getInstance().runMultipleAction(VdcActionType.SparsifyImage,
parameterList,
result -> {
stopProgress();
target.executeCommand(cancelCommand);
},
this);
}
}