package org.ovirt.engine.core.bll; import java.util.LinkedList; import java.util.List; import javax.inject.Inject; import org.ovirt.engine.core.bll.context.EngineContext; import org.ovirt.engine.core.common.businessentities.GraphicsDevice; import org.ovirt.engine.core.common.businessentities.VmDevice; import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.utils.VmDeviceType; import org.ovirt.engine.core.dao.VmDeviceDao; public class GetGraphicsDevicesQuery <P extends IdQueryParameters> extends QueriesCommandBase<P> { @Inject private VmDeviceDao vmDeviceDao; public GetGraphicsDevicesQuery(P parameters) { super(parameters); } public GetGraphicsDevicesQuery(P parameters, EngineContext context) { super(parameters, context); } @Override protected void executeQueryCommand() { List<GraphicsDevice> result = new LinkedList<>(); // we must use getVmDeviceByVmIdTypeAndDevice since it supports user filtering List<VmDevice> spiceDevs = vmDeviceDao.getVmDeviceByVmIdTypeAndDevice( getParameters().getId(), VmDeviceGeneralType.GRAPHICS, VmDeviceType.SPICE.getName(), getUserID(), getParameters().isFiltered()); if (spiceDevs != null && !spiceDevs.isEmpty()) { result.add(new GraphicsDevice(spiceDevs.get(0))); } List<VmDevice> vncDevs = vmDeviceDao.getVmDeviceByVmIdTypeAndDevice( getParameters().getId(), VmDeviceGeneralType.GRAPHICS, VmDeviceType.VNC.getName(), getUserID(), getParameters().isFiltered()); if (vncDevs != null && !vncDevs.isEmpty()) { result.add(new GraphicsDevice(vncDevs.get(0))); } setReturnValue(result); } }