package org.ovirt.engine.ui.uicommonweb.models.profiles;
import java.util.ArrayList;
import java.util.List;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.profiles.ProfileBase;
import org.ovirt.engine.ui.frontend.Frontend;
import org.ovirt.engine.ui.uicommonweb.UICommand;
import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel;
import org.ovirt.engine.ui.uicommonweb.models.ListModel;
public abstract class RemoveProfileModel<P extends ProfileBase> extends ConfirmationModel {
private final List<P> profiles;
private final ListModel sourceListModel;
public RemoveProfileModel(ListModel sourceListModel, List<P> profiles) {
this.sourceListModel = sourceListModel;
this.profiles = profiles;
ArrayList<String> items = new ArrayList<>();
for (P profile : profiles) {
items.add(profile.getName());
}
setItems(items);
getCommands().add(UICommand.createDefaultOkUiCommand("OnRemove", this)); //$NON-NLS-1$
getCommands().add(UICommand.createCancelUiCommand("Cancel", this)); //$NON-NLS-1$
}
protected abstract VdcActionType getRemoveActionType();
protected abstract VdcActionParametersBase getRemoveProfileParams(P profile);
private void onRemove() {
if (getProgress() != null) {
return;
}
ArrayList<VdcActionParametersBase> vdcActionParametersBaseList = new ArrayList<>();
for (P profile : getProfiles()) {
VdcActionParametersBase parameters = getRemoveProfileParams(profile);
vdcActionParametersBaseList.add(parameters);
}
startProgress();
Frontend.getInstance().runMultipleAction(getRemoveActionType(), vdcActionParametersBaseList,
result -> {
stopProgress();
cancel();
}, null);
}
public List<P> getProfiles() {
return profiles;
}
private void cancel() {
sourceListModel.setWindow(null);
sourceListModel.setConfirmWindow(null);
}
@Override
public void executeCommand(UICommand command) {
super.executeCommand(command);
if ("Cancel".equals(command.getName())) {//$NON-NLS-1$
cancel();
}
else if ("OnRemove".equals(command.getName())) {//$NON-NLS-1$
onRemove();
}
}
}