package org.ovirt.engine.core.bll; import org.ovirt.engine.core.compat.*; import org.ovirt.engine.core.common.queries.*; import org.ovirt.engine.core.common.vdscommands.*; import org.ovirt.engine.core.utils.linq.LinqUtils; import org.ovirt.engine.core.utils.linq.Function; import java.util.List; import java.util.Map; /** * Gets a list of all the names (in VmWare's case : the IDs) of all candidates. */ public class GetImportCandidatesQuery<P extends GetImportCandidatesQueryParameters> extends GetImportCandidatesBase<P> { public GetImportCandidatesQuery(P parameters) { super(parameters); } @Override protected void executeQueryCommand() { if (getParameters().getCandidateSource() == ImportCandidateSourceEnum.KVM) { // Get the dictionary of candidates and build a list of their names: Map<String, ImportCandidateInfoBase> retFromIrs = (Map) Backend .getInstance() .runInternalQuery( VdcQueryType.GetImportCandidatesInfo, new GetImportCandidatesQueryParameters(getParameters().getPath(), getParameters().getCandidateSource(), getParameters() .getCandidateType())).getReturnValue(); if (retFromIrs == null) { getQueryReturnValue().setReturnValue(null); } else { // LINQ 29456 // QueryReturnValue.ReturnValue = new List<string> // (retFromIrs.Values.Select<ImportCandidateInfoBase,string> // (a => a.CandidateDisplayName)); List<String> list = LinqUtils.foreach(retFromIrs.values(), new Function<ImportCandidateInfoBase, String>() { @Override public String eval(ImportCandidateInfoBase importCandidateInfoBase) { return importCandidateInfoBase.getCandidateDisplayName(); } }); getQueryReturnValue().setReturnValue(list); } } else // VMWARE -> get the list of candidates' IDs straight from the // resource manager: { // todo - omer handle this java.util.ArrayList<String> retFromIrs = (java.util.ArrayList<String>) Backend .getInstance() .getResourceManager() .RunVdsCommand( VDSCommandType.GetImportCandidates, new GetImportCandidatesVDSCommandParameters(Guid.Empty, getParameters().getPath(), getParameters().getCandidateSource(), getParameters() .getCandidateType())).getReturnValue(); getQueryReturnValue().setReturnValue(retFromIrs); } } }