package org.ovirt.engine.ui.uicommon.models.userportal; import java.util.Collections; import org.ovirt.engine.core.compat.*; import org.ovirt.engine.ui.uicompat.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.core.common.vdscommands.*; import org.ovirt.engine.core.common.queries.*; import org.ovirt.engine.core.common.action.*; import org.ovirt.engine.ui.frontend.*; import org.ovirt.engine.ui.uicommon.*; import org.ovirt.engine.ui.uicommon.models.*; import org.ovirt.engine.core.common.*; import org.ovirt.engine.ui.uicommon.dataprovider.*; import org.ovirt.engine.ui.uicommon.models.configure.*; import org.ovirt.engine.ui.uicommon.models.pools.*; import org.ovirt.engine.ui.uicommon.models.vms.*; import org.ovirt.engine.ui.uicompat.*; import org.ovirt.engine.core.common.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.core.common.interfaces.*; import org.ovirt.engine.ui.uicommon.*; import org.ovirt.engine.ui.uicommon.models.*; @SuppressWarnings("unused") public class UserPortalListModel extends IUserPortalListModel implements IVmPoolResolutionService { public static EventDefinition SearchCompletedEventDefinition; private Event privateSearchCompletedEvent; public Event getSearchCompletedEvent() { return privateSearchCompletedEvent; } private void setSearchCompletedEvent(Event value) { privateSearchCompletedEvent = value; } private UICommand privateNewDesktopCommand; public UICommand getNewDesktopCommand() { return privateNewDesktopCommand; } private void setNewDesktopCommand(UICommand value) { privateNewDesktopCommand = value; } private UICommand privateNewServerCommand; public UICommand getNewServerCommand() { return privateNewServerCommand; } private void setNewServerCommand(UICommand value) { privateNewServerCommand = value; } private UICommand privateEditCommand; public UICommand getEditCommand() { return privateEditCommand; } private void setEditCommand(UICommand value) { privateEditCommand = value; } private UICommand privateRemoveCommand; public UICommand getRemoveCommand() { return privateRemoveCommand; } private void setRemoveCommand(UICommand value) { privateRemoveCommand = value; } private UICommand privateSaveCommand; public UICommand getSaveCommand() { return privateSaveCommand; } private void setSaveCommand(UICommand value) { privateSaveCommand = value; } private UICommand privateRunOnceCommand; public UICommand getRunOnceCommand() { return privateRunOnceCommand; } private void setRunOnceCommand(UICommand value) { privateRunOnceCommand = value; } private UICommand privateChangeCdCommand; public UICommand getChangeCdCommand() { return privateChangeCdCommand; } private void setChangeCdCommand(UICommand value) { privateChangeCdCommand = value; } private UICommand privateNewTemplateCommand; public UICommand getNewTemplateCommand() { return privateNewTemplateCommand; } private void setNewTemplateCommand(UICommand value) { privateNewTemplateCommand = value; } private UnitVmModel vmModel; public UnitVmModel getVmModel() { return vmModel; } public void setVmModel(UnitVmModel value) { if (vmModel != value) { vmModel = value; OnPropertyChanged(new PropertyChangedEventArgs("VmModel")); } } private ConfirmationModel confirmationModel; public ConfirmationModel getConfirmationModel() { return confirmationModel; } public void setConfirmationModel(ConfirmationModel value) { if (confirmationModel != value) { confirmationModel = value; OnPropertyChanged(new PropertyChangedEventArgs("ConfirmationModel")); } } private RunOnceModel runOnceModel; public RunOnceModel getRunOnceModel() { return runOnceModel; } public void setRunOnceModel(RunOnceModel value) { if (runOnceModel != value) { runOnceModel = value; OnPropertyChanged(new PropertyChangedEventArgs("RunOnceModel")); } } private AttachCdModel attachCdModel; public AttachCdModel getAttachCdModel() { return attachCdModel; } public void setAttachCdModel(AttachCdModel value) { if (attachCdModel != value) { attachCdModel = value; OnPropertyChanged(new PropertyChangedEventArgs("AttachCdModel")); } } private EntityModel vmGeneralModel; private ListModel vmSnapshotListModel; private EntityModel vmMonitorModel; private ListModel vmDiskListModel; private ListModel vmInterfaceListModel; private ListModel permissionListModel; private ListModel vmEventListModel; private ListModel vmAppListModel; private EntityModel poolGeneralModel; private ListModel poolDiskListModel; private ListModel poolInterfaceListModel; private java.util.ArrayList<VM> privatevms; public java.util.ArrayList<VM> getvms() { return privatevms; } public void setvms(java.util.ArrayList<VM> value) { privatevms = value; } private java.util.ArrayList<vm_pools> privatepools; public java.util.ArrayList<vm_pools> getpools() { return privatepools; } public void setpools(java.util.ArrayList<vm_pools> value) { privatepools = value; } private VM privatetempVm; public VM gettempVm() { return privatetempVm; } public void settempVm(VM value) { privatetempVm = value; } private storage_domains privatestorageDomain; public storage_domains getstorageDomain() { return privatestorageDomain; } public void setstorageDomain(storage_domains value) { privatestorageDomain = value; } private java.util.ArrayList<String> CustomPropertiesKeysList; private java.util.HashMap<Guid, java.util.ArrayList<ConsoleModel>> cachedConsoleModels; static { SearchCompletedEventDefinition = new EventDefinition("SearchCompleted", UserPortalListModel.class); } public UserPortalListModel() { setSearchCompletedEvent(new Event(SearchCompletedEventDefinition)); cachedConsoleModels = new java.util.HashMap<Guid, java.util.ArrayList<ConsoleModel>>(); setNewDesktopCommand(new UICommand("NewDesktop", this)); setNewServerCommand(new UICommand("NewServer", this)); setEditCommand(new UICommand("Edit", this)); setRemoveCommand(new UICommand("Remove", this)); setSaveCommand(new UICommand("Save", this)); setRunOnceCommand(new UICommand("RunOnce", this)); setChangeCdCommand(new UICommand("ChangeCD", this)); setNewTemplateCommand(new UICommand("NewTemplate", this)); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object result) { UserPortalListModel userPortalListModel = (UserPortalListModel)model; if (result != null) { userPortalListModel.CustomPropertiesKeysList = new java.util.ArrayList<String>(); for (String s : ((String)result).split("[;]", -1)) { userPortalListModel.CustomPropertiesKeysList.add(s); } } }}; AsyncDataProvider.GetCustomPropertiesList(_asyncQuery); } @Override protected void SyncSearch() { super.SyncSearch(); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object ReturnValue) { UserPortalListModel userPortalListModel = (UserPortalListModel)model; userPortalListModel.setvms((java.util.ArrayList<VM>)((VdcQueryReturnValue)ReturnValue).getReturnValue()); userPortalListModel.OnVmAndPoolLoad(); }}; Frontend.RunQuery(VdcQueryType.GetUserVmsByUserIdAndGroups, new GetUserVmsByUserIdAndGroupsParameters(Frontend.getLoggedInUser().getUserId()), _asyncQuery); AsyncQuery _asyncQuery1 = new AsyncQuery(); _asyncQuery1.setModel(this); _asyncQuery1.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object ReturnValue) { UserPortalListModel userPortalListModel = (UserPortalListModel)model; userPortalListModel.setpools((java.util.ArrayList<vm_pools>)((VdcQueryReturnValue)ReturnValue).getReturnValue()); userPortalListModel.OnVmAndPoolLoad(); }}; Frontend.RunQuery(VdcQueryType.GetAllVmPoolsAttachedToUser, new GetAllVmPoolsAttachedToUserParameters(Frontend.getLoggedInUser().getUserId()), _asyncQuery1); } @Override protected void AsyncSearch() { super.AsyncSearch(); SyncSearch(); } @Override public void Search() { EnsureAsyncSearchStopped(); SyncSearch(); } @Override protected void InitDetailModels() { super.InitDetailModels(); vmGeneralModel = new VmGeneralModel(); vmGeneralModel.setIsAvailable(false); vmSnapshotListModel = new VmSnapshotListModel(); vmSnapshotListModel.setIsAvailable(false); vmMonitorModel = new VmMonitorModel(); vmMonitorModel.setIsAvailable(false); vmDiskListModel = new VmDiskListModel(); vmDiskListModel.setIsAvailable(false); vmInterfaceListModel = new VmInterfaceListModel(); vmInterfaceListModel.setIsAvailable(false); permissionListModel = new PermissionListModel(); permissionListModel.setIsAvailable(false); vmEventListModel = new VmEventListModel(); vmEventListModel.setIsAvailable(false); vmAppListModel = new VmAppListModel(); vmAppListModel.setIsAvailable(false); poolGeneralModel = new PoolGeneralModel(); poolGeneralModel.setIsAvailable(false); poolDiskListModel = new PoolDiskListModel(); poolDiskListModel.setIsAvailable(false); poolInterfaceListModel = new PoolInterfaceListModel(); poolInterfaceListModel.setIsAvailable(false); ObservableCollection<EntityModel> list = new ObservableCollection<EntityModel>(); list.add(vmGeneralModel); list.add(poolGeneralModel); list.add(vmInterfaceListModel); list.add(poolInterfaceListModel); list.add(vmDiskListModel); list.add(poolDiskListModel); list.add(vmSnapshotListModel); list.add(permissionListModel); list.add(vmEventListModel); list.add(vmAppListModel); list.add(vmMonitorModel); setDetailModels(list); permissionListModel.setIsAvailable(true); vmEventListModel.setIsAvailable(true); vmAppListModel.setIsAvailable(true); } @Override protected Object ProvideDetailModelEntity(Object selectedItem) { //Each item in this list model is not a business entity, //therefore select an Entity property to provide it to //the detail models. EntityModel model = (EntityModel)selectedItem; if (model == null) { return null; } return model.getEntity(); } @Override protected void UpdateDetailsAvailability() { super.UpdateDetailsAvailability(); UserPortalItemModel item = (UserPortalItemModel)getSelectedItem(); vmGeneralModel.setIsAvailable(item != null && !item.getIsPool()); vmSnapshotListModel.setIsAvailable(item != null && !item.getIsPool()); vmMonitorModel.setIsAvailable(item != null && !item.getIsPool()); vmDiskListModel.setIsAvailable(item != null && !item.getIsPool()); vmInterfaceListModel.setIsAvailable(item != null && !item.getIsPool()); vmEventListModel.setIsAvailable(item != null && !item.getIsPool()); poolGeneralModel.setIsAvailable(item != null && item.getIsPool()); poolDiskListModel.setIsAvailable(item != null && item.getIsPool()); poolInterfaceListModel.setIsAvailable(item != null && item.getIsPool()); } @Override public void ExecuteCommand(UICommand command) { super.ExecuteCommand(command); if (command == getNewDesktopCommand()) { NewDesktop(); } if (command == getNewServerCommand()) { NewServer(); } else if (command == getEditCommand()) { Edit(); } else if (command == getRemoveCommand()) { remove(); } else if (command == getSaveCommand()) { OnSave(); } else if (command == getRunOnceCommand()) { RunOnce(); } else if (command == getChangeCdCommand()) { ChangeCD(); } else if (command == getNewTemplateCommand()) { NewTemplate(); } else if (StringHelper.stringsEqual(command.getName(), "Cancel")) { Cancel(); } else if (StringHelper.stringsEqual(command.getName(), "OnRemove")) { OnRemove(); } else if (StringHelper.stringsEqual(command.getName(), "OnRunOnce")) { OnRunOnce(); } else if (StringHelper.stringsEqual(command.getName(), "OnChangeCD")) { OnChangeCD(); } else if (StringHelper.stringsEqual(command.getName(), "OnNewTemplate")) { OnNewTemplate(); } } private void NewTemplate() { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); if (selectedItem == null) { return; } VM vm = (VM)selectedItem.getEntity(); setVmModel(new UnitVmModel(new NewTemplateVmModelBehavior(vm))); getVmModel().setTitle("New Template"); getVmModel().setHashName("new_template"); getVmModel().setIsNew(true); getVmModel().setVmType(vm.getvm_type()); getVmModel().Initialize(null); UICommand tempVar = new UICommand("OnNewTemplate", this); tempVar.setTitle("OK"); tempVar.setIsDefault(true); getVmModel().getCommands().add(tempVar); UICommand tempVar2 = new UICommand("Cancel", this); tempVar2.setTitle("Cancel"); tempVar2.setIsCancel(true); getVmModel().getCommands().add(tempVar2); } private void OnNewTemplate() { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); if (selectedItem == null) { Cancel(); return; } UnitVmModel model = vmModel; if (!model.Validate()) { model.setIsValid(false); } else { String name = (String)model.getName().getEntity(); //Check name unicitate. AsyncDataProvider.IsTemplateNameUnique(new AsyncQuery(this, new INewAsyncCallback() { @Override public void OnSuccess(Object target, Object returnValue) { UserPortalListModel userPortalListModel = (UserPortalListModel)target; boolean isNameUnique = (Boolean)returnValue; if (!isNameUnique) { userPortalListModel.getVmModel().getName().getInvalidityReasons().clear(); userPortalListModel.getVmModel().getName().getInvalidityReasons().add("Name must be unique."); userPortalListModel.getVmModel().getName().setIsValid(false); userPortalListModel.getVmModel().setIsValid(false); } else { userPortalListModel.PostNameUniqueCheck(userPortalListModel); Cancel(); } } }), name); } } public void PostNameUniqueCheck(UserPortalListModel userPortalListModel) { UnitVmModel model = userPortalListModel.getVmModel(); UserPortalItemModel selectedItem = (UserPortalItemModel)userPortalListModel.getSelectedItem(); VM vm = (VM)selectedItem.getEntity(); VM tempVar = new VM(); tempVar.setvm_guid(vm.getvm_guid()); tempVar.setvm_type(model.getVmType()); tempVar.setvm_os((VmOsType)model.getOSType().getSelectedItem()); tempVar.setnum_of_monitors((Integer)model.getNumOfMonitors().getSelectedItem()); tempVar.setvm_domain(model.getDomain().getIsAvailable() ? (String)model.getDomain().getSelectedItem() : ""); tempVar.setvm_mem_size_mb((Integer)model.getMemSize().getEntity()); tempVar.setMinAllocatedMem((Integer)model.getMinAllocatedMemory().getEntity()); tempVar.setvds_group_id(((VDSGroup)model.getCluster().getSelectedItem()).getID()); tempVar.settime_zone(model.getTimeZone().getIsAvailable() && model.getTimeZone().getSelectedItem() != null ? ((java.util.Map.Entry<String, String>)model.getTimeZone().getSelectedItem()).getKey() : ""); tempVar.setnum_of_sockets((Integer)model.getNumOfSockets().getEntity()); tempVar.setcpu_per_socket((Integer)model.getTotalCPUCores().getEntity() / (Integer)model.getNumOfSockets().getEntity()); tempVar.setusb_policy((UsbPolicy)model.getUsbPolicy().getSelectedItem()); tempVar.setis_auto_suspend(false); tempVar.setis_stateless((Boolean)model.getIsStateless().getEntity()); tempVar.setdefault_boot_sequence(model.getBootSequence()); tempVar.setauto_startup((Boolean)model.getIsHighlyAvailable().getEntity()); tempVar.setiso_path(model.getCdImage().getIsChangable() ? (String)model.getCdImage().getSelectedItem() : ""); tempVar.setinitrd_url(vm.getinitrd_url()); tempVar.setkernel_url(vm.getkernel_url()); tempVar.setkernel_params(vm.getkernel_params()); VM newvm = tempVar; EntityModel displayProtocolSelectedItem = (EntityModel)model.getDisplayProtocol().getSelectedItem(); newvm.setdefault_display_type((DisplayType)displayProtocolSelectedItem.getEntity()); EntityModel prioritySelectedItem = (EntityModel)model.getPriority().getSelectedItem(); newvm.setpriority((Integer)prioritySelectedItem.getEntity()); AddVmTemplateParameters addVmTemplateParameters = new AddVmTemplateParameters(newvm, (String)model.getName().getEntity(), (String)model.getDescription().getEntity()); addVmTemplateParameters.setDestinationStorageDomainId(((storage_domains)model.getStorageDomain().getSelectedItem()).getid()); addVmTemplateParameters.setPublicUse((Boolean)model.getIsTemplatePublic().getEntity()); Frontend.RunAction(VdcActionType.AddVmTemplate, addVmTemplateParameters, new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult result) { } }, this); } @Override protected void OnSelectedItemChanged() { super.OnSelectedItemChanged(); UpdateActionAvailability(); } private void RunOnce() { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); if (selectedItem == null || selectedItem.getEntity() == null) { return; } VM vm = (VM)selectedItem.getEntity(); RunOnceModel model = new RunOnceModel(); setRunOnceModel(model); model.setTitle("Run Virtual Machine(s)"); model.setHashName("run_virtual_machine"); model.getAttachIso().setEntity(false); model.getAttachFloppy().setEntity(false); model.getRunAsStateless().setEntity(vm.getis_stateless()); model.getRunAndPause().setEntity(false); model.setHwAcceleration(true); AsyncQuery _asyncQuery0 = new AsyncQuery(); _asyncQuery0.setModel(this); _asyncQuery0.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model0, Object result0) { if (result0 != null) { storage_domains isoDomain = (storage_domains)result0; UserPortalListModel thisUserPortalListModel = (UserPortalListModel)model0; AsyncQuery _asyncQuery01 = new AsyncQuery(); _asyncQuery01.setModel(thisUserPortalListModel); _asyncQuery01.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model1, Object result) { UserPortalListModel userPortalListModel = (UserPortalListModel)model1; RunOnceModel runOnceModel = userPortalListModel.getRunOnceModel(); java.util.ArrayList<String> images = (java.util.ArrayList<String>)result; runOnceModel.getIsoImage().setItems(images); if (runOnceModel.getIsoImage().getIsChangable() && runOnceModel.getIsoImage().getSelectedItem() == null) { runOnceModel.getIsoImage().setSelectedItem(Linq.FirstOrDefault(images)); } }}; AsyncDataProvider.GetIrsImageList(_asyncQuery01, isoDomain.getid(), false); AsyncQuery _asyncQuery02 = new AsyncQuery(); _asyncQuery02.setModel(thisUserPortalListModel); _asyncQuery02.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model2, Object result) { UserPortalListModel userPortalListModel = (UserPortalListModel)model2; UserPortalItemModel userPortalItemModel = (UserPortalItemModel)userPortalListModel.getSelectedItem(); RunOnceModel runOnceModel = userPortalListModel.getRunOnceModel(); VM selectedVM = (VM)userPortalItemModel.getEntity(); java.util.ArrayList<String> images = (java.util.ArrayList<String>)result; if (DataProvider.IsWindowsOsType(selectedVM.getvm_os())) { // Add a pseudo floppy disk image used for Windows' sysprep. if (!selectedVM.getis_initialized()) { images.add(0, "[sysprep]"); runOnceModel.getAttachFloppy().setEntity(true); } else { images.add("[sysprep]"); } } runOnceModel.getFloppyImage().setItems(images); if (runOnceModel.getFloppyImage().getIsChangable() && runOnceModel.getFloppyImage().getSelectedItem() == null) { runOnceModel.getFloppyImage().setSelectedItem(Linq.FirstOrDefault(images)); } }}; AsyncDataProvider.GetFloppyImageList(_asyncQuery02, isoDomain.getid(), false); } }}; AsyncDataProvider.GetIsoDomainByDataCenterId(_asyncQuery0, vm.getstorage_pool_id()); //passing Kernel parameters model.getKernel_parameters().setEntity(vm.getkernel_params()); model.getKernel_path().setEntity(vm.getkernel_url()); model.getInitrd_path().setEntity(vm.getinitrd_url()); model.getCustomProperties().setEntity(vm.getCustomProperties()); model.setIsLinux_Unassign_UnknownOS(DataProvider.IsLinuxOsType(vm.getvm_os()) || vm.getvm_os() == VmOsType.Unassigned || vm.getvm_os() == VmOsType.Other); model.setIsWindowsOS(DataProvider.IsWindowsOsType(vm.getvm_os())); model.getIsVmFirstRun().setEntity(!vm.getis_initialized()); model.getSysPrepDomainName().setSelectedItem(vm.getvm_domain()); // Update Domain list AsyncDataProvider.GetDomainList(new AsyncQuery(model, new INewAsyncCallback() { @Override public void OnSuccess(Object target, Object returnValue1) { RunOnceModel runOnceModel = (RunOnceModel)target; java.util.List<String> domains = (java.util.List<String>)returnValue1; String oldDomain = (String)runOnceModel.getSysPrepDomainName().getSelectedItem(); if (oldDomain != null && !oldDomain.equals("") && !domains.contains(oldDomain)) { domains.add(0, oldDomain); } runOnceModel.getSysPrepDomainName().setItems(domains); runOnceModel.getSysPrepDomainName().setSelectedItem((oldDomain != null) ? oldDomain : Linq.FirstOrDefault(domains)); } }), true); //Display protocols. EntityModel tempVar = new EntityModel(); tempVar.setTitle("VNC"); tempVar.setEntity(DisplayType.vnc); EntityModel vncProtocol = tempVar; EntityModel tempVar2 = new EntityModel(); tempVar2.setTitle("Spice"); tempVar2.setEntity(DisplayType.qxl); EntityModel qxlProtocol = tempVar2; java.util.ArrayList<EntityModel> items = new java.util.ArrayList<EntityModel>(); items.add(vncProtocol); items.add(qxlProtocol); model.getDisplayProtocol().setItems(items); model.getDisplayProtocol().setSelectedItem(vm.getdefault_display_type() == DisplayType.vnc ? vncProtocol : qxlProtocol); model.setCustomPropertiesKeysList(this.CustomPropertiesKeysList); //Boot sequence. AsyncQuery _asyncQuery2 = new AsyncQuery(); _asyncQuery2.setModel(this); _asyncQuery2.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model3, Object ReturnValue) { UserPortalListModel userPortalListModel = (UserPortalListModel)model3; boolean hasNics = ((java.util.ArrayList<VmNetworkInterface>)((VdcQueryReturnValue)ReturnValue).getReturnValue()).size() > 0; if (!hasNics) { BootSequenceModel bootSequenceModel = userPortalListModel.getRunOnceModel().getBootSequence(); bootSequenceModel.getNetworkOption().setIsChangable(false); bootSequenceModel.getNetworkOption().getChangeProhibitionReasons().add("Virtual Machine must have at least one network interface defined to boot from network."); } }}; Frontend.RunQuery(VdcQueryType.GetVmInterfacesByVmId, new GetVmByVmIdParameters(vm.getvm_guid()), _asyncQuery2); UICommand tempVar3 = new UICommand("OnRunOnce", this); tempVar3.setTitle("OK"); tempVar3.setIsDefault(true); model.getCommands().add(tempVar3); UICommand tempVar4 = new UICommand("Cancel", this); tempVar4.setTitle("Cancel"); tempVar4.setIsCancel(true); model.getCommands().add(tempVar4); } private void OnRunOnce() { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); if (selectedItem == null || selectedItem.getEntity() == null) { Cancel(); return; } VM vm = (VM)selectedItem.getEntity(); RunOnceModel model = runOnceModel; if (!model.Validate()) { return; } BootSequenceModel bootSequenceModel = model.getBootSequence(); RunVmOnceParams tempVar = new RunVmOnceParams(); tempVar.setVmId(vm.getvm_guid()); tempVar.setBootSequence(bootSequenceModel.getSequence()); tempVar.setDiskPath((Boolean)model.getAttachIso().getEntity() ? (String)model.getIsoImage().getSelectedItem() : ""); tempVar.setFloppyPath(model.getFloppyImagePath()); tempVar.setKvmEnable(model.getHwAcceleration()); tempVar.setRunAndPause((Boolean)model.getRunAndPause().getEntity()); tempVar.setAcpiEnable(true); tempVar.setRunAsStateless((Boolean)model.getRunAsStateless().getEntity()); tempVar.setReinitialize(model.getReinitialize()); tempVar.setCustomProperties((String)model.getCustomProperties().getEntity()); RunVmOnceParams param = tempVar; //kernel params if (model.getKernel_path().getEntity() != null) { param.setkernel_url((String)model.getKernel_path().getEntity()); } if (model.getKernel_parameters().getEntity() != null) { param.setkernel_params((String)model.getKernel_parameters().getEntity()); } if (model.getInitrd_path().getEntity() != null) { param.setinitrd_url((String)model.getInitrd_path().getEntity()); } //Sysprep params if (model.getSysPrepDomainName().getSelectedItem() != null) { param.setSysPrepDomainName((String)model.getSysPrepDomainName().getSelectedItem()); } if (model.getSysPrepUserName().getEntity() != null) { param.setSysPrepUserName((String)model.getSysPrepUserName().getEntity()); } if (model.getSysPrepPassword().getEntity() != null) { param.setSysPrepPassword((String)model.getSysPrepPassword().getEntity()); } EntityModel displayProtocolSelectedItem = (EntityModel)model.getDisplayProtocol().getSelectedItem(); param.setUseVnc((DisplayType)displayProtocolSelectedItem.getEntity() == DisplayType.vnc); Frontend.RunAction(VdcActionType.RunVmOnce, param, new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult result) { } }, this); Cancel(); } private void UpdateActionAvailability() { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); getEditCommand().setIsExecutionAllowed(selectedItem != null && !selectedItem.getIsPool()); getRemoveCommand().setIsExecutionAllowed(selectedItem != null && !selectedItem.getIsPool() && VdcActionUtils.CanExecute(new java.util.ArrayList<VM>(java.util.Arrays.asList(new VM[] { (VM)selectedItem.getEntity() })), VM.class, VdcActionType.RemoveVm)); getRunOnceCommand().setIsExecutionAllowed(selectedItem != null && !selectedItem.getIsPool() && VdcActionUtils.CanExecute(new java.util.ArrayList<VM>(java.util.Arrays.asList(new VM[] { (VM)selectedItem.getEntity() })), VM.class, VdcActionType.RunVmOnce)); getChangeCdCommand().setIsExecutionAllowed(selectedItem != null && !selectedItem.getIsPool() && VdcActionUtils.CanExecute(new java.util.ArrayList<VM>(java.util.Arrays.asList(new VM[] { (VM)selectedItem.getEntity() })), VM.class, VdcActionType.ChangeDisk)); getNewTemplateCommand().setIsExecutionAllowed(selectedItem != null && !selectedItem.getIsPool() && VdcActionUtils.CanExecute(new java.util.ArrayList<VM>(java.util.Arrays.asList(new VM[] { (VM)selectedItem.getEntity() })), VM.class, VdcActionType.AddVmTemplate)); } private void NewDesktop() { NewInternal(VmType.Desktop); } private void NewServer() { NewInternal(VmType.Server); } private void NewInternal(VmType vmType) { setVmModel(new UnitVmModel(new UserPortalNewVmModelBehavior())); getVmModel().setTitle("New " + (vmType == VmType.Server ? "Server" : "Desktop") + " Virtual Machine"); vmModel.setHashName(getVmModel().getTitle().toLowerCase().replace(' ', '_')); getVmModel().setIsNew(true); getVmModel().setVmType(vmType); getVmModel().setCustomPropertiesKeysList(CustomPropertiesKeysList); getVmModel().Initialize(null); // Ensures that the default provisioning is "Clone" for a new server and "Thin" for a new desktop. EntityModel selectedItem = null; boolean selectValue = getVmModel().getVmType() == VmType.Server; for (Object item : getVmModel().getProvisioning().getItems()) { EntityModel a = (EntityModel)item; if ((Boolean)a.getEntity() == selectValue) { selectedItem = a; break; } } getVmModel().getProvisioning().setSelectedItem(selectedItem); } private void Edit() { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); if (selectedItem == null) { return; } VM vm = (VM)selectedItem.getEntity(); setVmModel(new UnitVmModel(new UserPortalExistingVmModelBehavior(vm))); getVmModel().setTitle("Edit " + (vm.getvm_type() == VmType.Server ? "Server" : "Desktop") + " Virtual Machine"); vmModel.setHashName(getVmModel().getTitle().toLowerCase().replace(' ', '_')); getVmModel().setVmType(vm.getvm_type()); getVmModel().setCustomPropertiesKeysList(CustomPropertiesKeysList); getVmModel().Initialize(null); } private void remove() { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); VM vm = (VM)selectedItem.getEntity(); setConfirmationModel(new ConfirmationModel()); getConfirmationModel().setTitle("Remove Virtual Machine"); getConfirmationModel().setHashName("remove_virtual_machine"); getConfirmationModel().setMessage("Virtual Machine"); java.util.ArrayList<String> list = new java.util.ArrayList<String>(); list.add(vm.getvm_name()); getConfirmationModel().setItems(list); UICommand tempVar = new UICommand("OnRemove", this); tempVar.setTitle("OK"); tempVar.setIsDefault(true); getConfirmationModel().getCommands().add(tempVar); UICommand tempVar2 = new UICommand("Cancel", this); tempVar2.setTitle("Cancel"); tempVar2.setIsCancel(true); getConfirmationModel().getCommands().add(tempVar2); } private void OnRemove() { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); VM vm = (VM)selectedItem.getEntity(); Frontend.RunAction(VdcActionType.RemoveVm, new RemoveVmParameters(vm.getvm_guid(), false), new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult result) { } }, this); Cancel(); } private void ChangeCD() { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); if (selectedItem == null || selectedItem.getEntity() == null) { return; } VM vm = (VM)selectedItem.getEntity(); AttachCdModel model = new AttachCdModel(); setAttachCdModel(model); model.setTitle("Change CD"); model.setHashName("change_cd"); AsyncQuery _asyncQuery0 = new AsyncQuery(); _asyncQuery0.setModel(this); _asyncQuery0.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model0, Object result0) { UserPortalListModel userPortalListModel0 = (UserPortalListModel)model0; java.util.ArrayList<String> images0 = new java.util.ArrayList<String>(java.util.Arrays.asList(new String[] { "No CDs" })); userPortalListModel0.getAttachCdModel().getIsoImage().setItems(images0); userPortalListModel0.getAttachCdModel().getIsoImage().setSelectedItem(Linq.FirstOrDefault(images0)); if (result0 != null) { storage_domains isoDomain = (storage_domains)result0; AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(userPortalListModel0); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model1, Object result) { UserPortalListModel userPortalListModel = (UserPortalListModel)model1; AttachCdModel _attachCdModel = userPortalListModel.getAttachCdModel(); java.util.ArrayList<String> images = (java.util.ArrayList<String>)result; if (images.size() > 0) { images.add(0, ConsoleModel.EjectLabel); _attachCdModel.getIsoImage().setItems(images); } if (_attachCdModel.getIsoImage().getIsChangable()) { _attachCdModel.getIsoImage().setSelectedItem(Linq.FirstOrDefault(images)); } }}; AsyncDataProvider.GetIrsImageList(_asyncQuery, isoDomain.getid(), false); } }}; AsyncDataProvider.GetIsoDomainByDataCenterId(_asyncQuery0, vm.getstorage_pool_id()); UICommand tempVar = new UICommand("OnChangeCD", this); tempVar.setTitle("OK"); tempVar.setIsDefault(true); model.getCommands().add(tempVar); UICommand tempVar2 = new UICommand("Cancel", this); tempVar2.setTitle("Cancel"); tempVar2.setIsCancel(true); model.getCommands().add(tempVar2); } private void OnChangeCD() { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); if (selectedItem == null || selectedItem.getEntity() == null) { Cancel(); return; } VM vm = (VM)selectedItem.getEntity(); AttachCdModel model = getAttachCdModel(); String isoName = (StringHelper.stringsEqual(model.getIsoImage().getSelectedItem().toString(), ConsoleModel.EjectLabel)) ? "" : model.getIsoImage().getSelectedItem().toString(); Frontend.RunAction(VdcActionType.ChangeDisk, new ChangeDiskCommandParameters(vm.getvm_guid(), isoName), new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult result) { } }, this); } private void OnSave() { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); if (!getVmModel().getIsNew() && selectedItem.getEntity() == null) { Cancel(); return; } settempVm(getVmModel().getIsNew() ? new VM() : (VM)Cloner.clone(selectedItem.getEntity())); if (!getVmModel().Validate()) { return; } // Check name uniqueness. AsyncDataProvider.IsVmNameUnique(new AsyncQuery(this, new INewAsyncCallback() { @Override public void OnSuccess(Object target, Object returnValue) { UserPortalListModel userPortalListModel = (UserPortalListModel)target; boolean isNameUnique = (Boolean)returnValue; String newName = (String)getVmModel().getName().getEntity(); String currentName = userPortalListModel.gettempVm().getvm_name(); if (!isNameUnique && newName.compareToIgnoreCase(currentName) != 0) { userPortalListModel.getVmModel().getName().getInvalidityReasons().clear(); userPortalListModel.getVmModel().getName().getInvalidityReasons().add("Name must be unique."); userPortalListModel.getVmModel().getName().setIsValid(false); userPortalListModel.getVmModel().setIsValid(false); userPortalListModel.getVmModel().setIsGeneralTabValid(false); } else { userPortalListModel.PostVmNameUniqueCheck(userPortalListModel); } } }), (String)getVmModel().getName().getEntity()); } public void PostVmNameUniqueCheck(UserPortalListModel userPortalListModel) { UserPortalItemModel selectedItem = (UserPortalItemModel)userPortalListModel.getSelectedItem(); String name = (String)getVmModel().getName().getEntity(); //Save changes. VmTemplate template = (VmTemplate)getVmModel().getTemplate().getSelectedItem(); gettempVm().setvm_type(getVmModel().getVmType()); gettempVm().setvmt_guid(template.getId()); gettempVm().setvm_name(name); gettempVm().setvm_os((VmOsType)getVmModel().getOSType().getSelectedItem()); gettempVm().setnum_of_monitors((Integer)getVmModel().getNumOfMonitors().getSelectedItem()); gettempVm().setvm_description((String)getVmModel().getDescription().getEntity()); gettempVm().setvm_domain(getVmModel().getDomain().getIsAvailable() ? (String)getVmModel().getDomain().getSelectedItem() : ""); gettempVm().setvm_mem_size_mb((Integer)getVmModel().getMemSize().getEntity()); gettempVm().setMinAllocatedMem((Integer)getVmModel().getMinAllocatedMemory().getEntity()); Guid newClusterID = ((VDSGroup)getVmModel().getCluster().getSelectedItem()).getID(); gettempVm().setvds_group_id(newClusterID); gettempVm().settime_zone((getVmModel().getTimeZone().getIsAvailable() && getVmModel().getTimeZone().getSelectedItem() != null) ? ((java.util.Map.Entry<String, String>)getVmModel().getTimeZone().getSelectedItem()).getKey() : ""); gettempVm().setnum_of_sockets((Integer)getVmModel().getNumOfSockets().getEntity()); gettempVm().setcpu_per_socket((Integer)getVmModel().getTotalCPUCores().getEntity() / (Integer)getVmModel().getNumOfSockets().getEntity()); gettempVm().setusb_policy((UsbPolicy)getVmModel().getUsbPolicy().getSelectedItem()); gettempVm().setis_auto_suspend(false); gettempVm().setis_stateless((Boolean)getVmModel().getIsStateless().getEntity()); gettempVm().setdefault_boot_sequence(getVmModel().getBootSequence()); gettempVm().setiso_path(getVmModel().getCdImage().getIsChangable() ? (String)getVmModel().getCdImage().getSelectedItem() : ""); gettempVm().setauto_startup((Boolean)getVmModel().getIsHighlyAvailable().getEntity()); gettempVm().setinitrd_url((String)getVmModel().getInitrd_path().getEntity()); gettempVm().setkernel_url((String)getVmModel().getKernel_path().getEntity()); gettempVm().setkernel_params((String)getVmModel().getKernel_parameters().getEntity()); gettempVm().setCustomProperties((String)getVmModel().getCustomProperties().getEntity()); EntityModel displayProtocolSelectedItem = (EntityModel)getVmModel().getDisplayProtocol().getSelectedItem(); gettempVm().setdefault_display_type((DisplayType)displayProtocolSelectedItem.getEntity()); EntityModel prioritySelectedItem = (EntityModel)getVmModel().getPriority().getSelectedItem(); gettempVm().setpriority((Integer)prioritySelectedItem.getEntity()); VDS defaultHost = (VDS)getVmModel().getDefaultHost().getSelectedItem(); if ((Boolean)getVmModel().getIsAutoAssign().getEntity()) { gettempVm().setdedicated_vm_for_vds(null); } else { gettempVm().setdedicated_vm_for_vds(defaultHost.getvds_id()); } gettempVm().setMigrationSupport(MigrationSupport.MIGRATABLE); if ((Boolean)getVmModel().getRunVMOnSpecificHost().getEntity()) { gettempVm().setMigrationSupport(MigrationSupport.PINNED_TO_HOST); } else if ((Boolean)getVmModel().getDontMigrateVM().getEntity()) { gettempVm().setMigrationSupport(MigrationSupport.IMPLICITLY_NON_MIGRATABLE); } boolean cancel = true; if (getVmModel().getIsNew()) { if (gettempVm().getvmt_guid().equals(Guid.Empty)) { AddVmFromScratchParameters parameters = new AddVmFromScratchParameters(gettempVm(), new java.util.ArrayList<DiskImageBase>(), Guid.Empty); parameters.setMakeCreatorExplicitOwner(true); Frontend.RunAction(VdcActionType.AddVmFromScratch, parameters, new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult result) { } }, this); } else { setstorageDomain((storage_domains)getVmModel().getStorageDomain().getSelectedItem()); if ((Boolean)((EntityModel)getVmModel().getProvisioning().getSelectedItem()).getEntity()) { AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object result) { UserPortalListModel userPortalListModel1 = (UserPortalListModel)model; java.util.ArrayList<DiskImage> templateDisks = (java.util.ArrayList<DiskImage>)result; for (DiskImage templateDisk : templateDisks) { DiskModel disk = null; for (DiskModel a : userPortalListModel1.getVmModel().getDisks()) { if (StringHelper.stringsEqual(a.getName(), templateDisk.getinternal_drive_mapping())) { disk = a; break; } } templateDisk.setvolume_type((VolumeType)disk.getVolumeType().getSelectedItem()); templateDisk.setvolume_format(DataProvider.GetDiskVolumeFormat((VolumeType)disk.getVolumeType().getSelectedItem(), getstorageDomain().getstorage_type())); } java.util.HashMap<String, DiskImageBase> dict = new java.util.HashMap<String, DiskImageBase>(); for (DiskImage a : templateDisks) { dict.put(a.getinternal_drive_mapping(), a); } AddVmFromTemplateParameters parameters = new AddVmFromTemplateParameters(gettempVm(), dict, getstorageDomain().getid()); parameters.setMakeCreatorExplicitOwner(true); Frontend.RunAction(VdcActionType.AddVmFromTemplate, parameters, new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult a) { } }, this); userPortalListModel1.Cancel(); }}; AsyncDataProvider.GetTemplateDiskList(_asyncQuery, template.getId()); cancel = false; } else { VmManagementParametersBase parameters = new VmManagementParametersBase(gettempVm()); parameters.setStorageDomainId(getstorageDomain().getid()); parameters.setMakeCreatorExplicitOwner(true); Frontend.RunAction(VdcActionType.AddVm, parameters, new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult result) { } }, this); } } } else { Guid oldClusterID = ((VM)selectedItem.getEntity()).getvds_group_id(); if (oldClusterID.equals(newClusterID) == false) { Frontend.RunAction(VdcActionType.ChangeVMCluster, new ChangeVMClusterParameters(newClusterID, gettempVm().getvm_guid()), new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult result) { Frontend.RunAction(VdcActionType.UpdateVm, new VmManagementParametersBase(gettempVm()), new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult a) { } }, this); } }, this); } else { Frontend.RunAction(VdcActionType.UpdateVm, new VmManagementParametersBase(gettempVm()), new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult a) { } }, this); } } if (cancel) { Cancel(); } } private void Cancel() { Frontend.Unsubscribe(); setConfirmationModel(null); setVmModel(null); } private void VmModel_DataCenter_ItemsChanged() { storage_pool dataCenter = null; for (Object item : getVmModel().getDataCenter().getItems()) { storage_pool a = (storage_pool)item; if (getVmModel().getIsNew()) { dataCenter = a; break; } else { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); VM vm = (VM)selectedItem.getEntity(); if (a.getId().equals(vm.getstorage_pool_id())) { dataCenter = a; break; } } } if (!getVmModel().getIsNew() && dataCenter == null) { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); VM vm = (VM)selectedItem.getEntity(); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object result) { UserPortalListModel userPortalListModel = (UserPortalListModel)model; java.util.ArrayList<storage_pool> list = new java.util.ArrayList<storage_pool>(java.util.Arrays.asList(new storage_pool[] { (storage_pool)result })); userPortalListModel.getVmModel().getDataCenter().setItems(list); userPortalListModel.getVmModel().getDataCenter().setSelectedItem(Linq.FirstOrDefault(list)); }}; AsyncDataProvider.GetDataCenterById(_asyncQuery, vm.getstorage_pool_id()); } else { getVmModel().getDataCenter().setSelectedItem(dataCenter); } } private void VmModel_Cluster_ItemsChanged() { if (!getVmModel().getIsNew()) { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); VM vm = (VM)selectedItem.getEntity(); VDSGroup cluster = null; for (Object item : getVmModel().getCluster().getItems()) { VDSGroup a = (VDSGroup)item; if (a.getID().equals(vm.getvds_group_id())) { cluster = a; break; } } getVmModel().getCluster().setSelectedItem(cluster); getVmModel().getCluster().setIsChangable(vm.getstatus() == VMStatus.Down); } } private void VmModel_DefaultHost_ItemsChanged() { if (!getVmModel().getIsNew()) { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); VM vm = (VM)selectedItem.getEntity(); VDS host = null; for (Object item : getVmModel().getDefaultHost().getItems()) { VDS a = (VDS)item; if (a.getvds_id().equals(((vm.getdedicated_vm_for_vds() != null) ? vm.getdedicated_vm_for_vds() : Guid.Empty))) { host = a; break; } } if (host == null) { getVmModel().getIsAutoAssign().setEntity(true); } else { getVmModel().getDefaultHost().setSelectedItem(host); getVmModel().getIsAutoAssign().setEntity(false); } } } private void VmModel_DisplayProtocol_ItemsChanged() { if (!getVmModel().getIsNew()) { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); VM vm = (VM)selectedItem.getEntity(); EntityModel displayType = null; for (Object item : getVmModel().getDisplayProtocol().getItems()) { EntityModel a = (EntityModel)item; DisplayType dt = (DisplayType)a.getEntity(); if (dt == vm.getdefault_display_type()) { displayType = a; break; } } getVmModel().getDisplayProtocol().setSelectedItem(displayType); } } private void VmModel_Priority_ItemsChanged() { if (!getVmModel().getIsNew()) { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); VM vm = (VM)selectedItem.getEntity(); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object result) { UserPortalListModel userPortalListModel = (UserPortalListModel)model; int roundPriority = (Integer)result; EntityModel priority = null; for (Object item : userPortalListModel.getVmModel().getPriority().getItems()) { EntityModel a = (EntityModel)item; int p = (Integer)a.getEntity(); if (p == roundPriority) { priority = a; break; } } userPortalListModel.getVmModel().getPriority().setSelectedItem(priority); }}; AsyncDataProvider.GetRoundedPriority(_asyncQuery, vm.getpriority()); } } private void VmModel_TimeZone_ItemsChanged() { if (!getVmModel().getIsNew()) { UserPortalItemModel selectedItem = (UserPortalItemModel)getSelectedItem(); VM vm = (VM)selectedItem.getEntity(); if (!StringHelper.isNullOrEmpty(vm.gettime_zone())) { getVmModel().getTimeZone().setSelectedItem(Linq.FirstOrDefault((Iterable<java.util.Map.Entry<String, String>>)getVmModel().getTimeZone().getItems(), new Linq.TimeZonePredicate(vm.gettime_zone()))); } } } @Override public void eventRaised(Event ev, Object sender, EventArgs args) { super.eventRaised(ev, sender, args); if (ev.equals(ItemsChangedEventDefinition) && sender == getVmModel().getDataCenter()) { VmModel_DataCenter_ItemsChanged(); } else if (ev.equals(ItemsChangedEventDefinition) && sender == getVmModel().getCluster()) { VmModel_Cluster_ItemsChanged(); } else if (ev.equals(ItemsChangedEventDefinition) && sender == getVmModel().getDefaultHost()) { VmModel_DefaultHost_ItemsChanged(); } else if (ev.equals(ItemsChangedEventDefinition) && sender == getVmModel().getDisplayProtocol()) { VmModel_DisplayProtocol_ItemsChanged(); } else if (ev.equals(ItemsChangedEventDefinition) && sender == getVmModel().getPriority()) { VmModel_Priority_ItemsChanged(); } else if (ev.equals(ItemsChangedEventDefinition) && sender == getVmModel().getTimeZone()) { VmModel_TimeZone_ItemsChanged(); } } @Override public void OnVmAndPoolLoad() { if (getvms() != null && getpools() != null) { //Complete search. //Remove pools that has provided VMs. java.util.ArrayList<vm_pools> filteredPools = new java.util.ArrayList<vm_pools>(); poolMap = new java.util.HashMap<Guid, vm_pools>(); for (vm_pools pool : getpools()) { //Add pool to map. poolMap.put(pool.getvm_pool_id(), pool); boolean found = false; for (VM vm : getvms()) { if (vm.getVmPoolId() != null && vm.getVmPoolId().equals(pool.getvm_pool_id())) { found = true; break; } } if (!found) { filteredPools.add(pool); } } //Merge VMs and Pools, and create item models. java.util.List all = Linq.Concat(getvms(), filteredPools); Linq.Sort(all, new Linq.VmAndPoolByNameComparer()); java.util.ArrayList<Model> items = new java.util.ArrayList<Model>(); for (Object item : all) { UserPortalItemModel model = new UserPortalItemModel(this); model.setEntity(item); items.add(model); UpdateConsoleModel(model); } // In userportal 'Extended View': Set 'CanConnectAutomatically' to true if there's one and only one up VM. setCanConnectAutomatically(GetUpVms(items).size() == 1 && ((UICommand)GetUpVms(items).get(0).getDefaultConsole().getConnectCommand()).getIsExecutionAllowed()); setItems(items); setvms(null); setpools(null); getSearchCompletedEvent().raise(this, EventArgs.Empty); } } private void UpdateConsoleModel(UserPortalItemModel item) { if (item.getEntity() != null) { Object tempVar = item.getEntity(); VM vm = (VM)((tempVar instanceof VM) ? tempVar : null); if (vm == null) { return; } // Caching console model if needed if (!cachedConsoleModels.containsKey(vm.getvm_guid())) { SpiceConsoleModel spiceConsoleModel = new SpiceConsoleModel(); spiceConsoleModel.getErrorEvent().addListener(this); VncConsoleModel vncConsoleModel = new VncConsoleModel(); RdpConsoleModel rdpConsoleModel = new RdpConsoleModel(); cachedConsoleModels.put(vm.getvm_guid(), new java.util.ArrayList<ConsoleModel>(java.util.Arrays.asList(new ConsoleModel[] { spiceConsoleModel, vncConsoleModel, rdpConsoleModel }))); } // Getting cached console model java.util.ArrayList<ConsoleModel> cachedModels = cachedConsoleModels.get(vm.getvm_guid()); for (ConsoleModel cachedModel : cachedModels) { cachedModel.setEntity(null); cachedModel.setEntity(vm); } // Set default console by vm's display type item.setDefaultConsole(vm.getdisplay_type() == DisplayType.vnc ? cachedModels.get(1) : cachedModels.get(0)); // Adjust item's default console for userportal 'Extended View' item.getDefaultConsole().setForceVmStatusUp(false); // Update additional console if (DataProvider.IsWindowsOsType(vm.getvm_os())) { item.setAdditionalConsole(cachedModels.get(2)); item.setHasAdditionalConsole(true); } else { item.setAdditionalConsole(null); item.setHasAdditionalConsole(false); } } } }