package org.ovirt.engine.core.bll;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.context.CommandContext;
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.comparators.VmsComparer;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.VmDao;
public class MigrateVMActionRunner extends SortedMultipleActionsRunnerBase {
@Inject
private VmDao vmDao;
public MigrateVMActionRunner(VdcActionType actionType,
ArrayList<VdcActionParametersBase> parameters,
CommandContext commandContext, boolean isInternal) {
super(actionType, parameters, commandContext, isInternal);
}
@Override
protected void sortCommands() {
ArrayList<CommandBase<?>> commands = getCommands();
final Map<Guid, VM> vms = new HashMap<>(commands.size());
for (CommandBase<?> cmd : commands) {
vms.put(cmd.getVmId(), vmDao.get(cmd.getVmId()));
}
Collections.sort(commands,
Comparator.comparing((CommandBase<?> c) -> vms.get(c.getVmId()), new VmsComparer()).reversed());
}
}