package org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.affinity_groups; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.ui.uicommonweb.models.vms.key_value.BaseKeyModel; import org.ovirt.engine.ui.uicommonweb.models.vms.key_value.KeyValueLineModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; public class VmsSelectionModel extends BaseKeyModel { public VmsSelectionModel() { super(ConstantsManager.getInstance() .getConstants() .selectVm(), ConstantsManager.getInstance() .getConstants() .noAvailableVms()); } Map<String, VM> allVmNameMap; public void init(List<VM> vms, List<Guid> usedVms) { if (vms == null || usedVms == null) { return; } allVmNameMap = new HashMap<>(); Map<Guid, VM> vmmMap = new HashMap<>(); for (VM vm : vms) { allVmNameMap.put(vm.getName(), vm); vmmMap.put(vm.getId(), vm); } Set<String> usedVmNames = new HashSet<>(); for (Guid guid : usedVms) { usedVmNames.add(vmmMap.get(guid).getName()); } init(allVmNameMap.keySet(), usedVmNames); } @Override public KeyValueLineModel createNewLineModel(String key) { KeyValueLineModel keyValueLineModel = super.createNewLineModel(key); keyValueLineModel.getValue().setIsAvailable(false); keyValueLineModel.getValues().setIsAvailable(false); return keyValueLineModel; } @Override protected void initLineModel(KeyValueLineModel keyValueLineModel, String key) { // no implementation } @Override protected void setValueByKey(KeyValueLineModel lineModel, String key) { // no implementation } public List<Guid> getSelectedVmIds() { List<Guid> list = new ArrayList<>(); for (KeyValueLineModel keyModel : getItems()) { String selectedItem = keyModel.getKeys().getSelectedItem(); if (isKeyValid(selectedItem)) { list.add(allVmNameMap.get(selectedItem).getId()); } } return list; } }