package org.ovirt.engine.core.bll;
import java.util.List;
import javax.inject.Inject;
import org.ovirt.engine.core.common.businessentities.VmTemplate;
import org.ovirt.engine.core.common.queries.GetVmTemplateParameters;
import org.ovirt.engine.core.dao.VmTemplateDao;
/* Returns a list of all templates under required base template - including the base template */
public class GetVmTemplatesByBaseTemplateIdQuery<P extends GetVmTemplateParameters>
extends QueriesCommandBase<P> {
@Inject
private VmHandler vmHandler;
@Inject
private VmTemplateDao vmTemplateDao;
@Inject
private VmTemplateHandler vmTemplateHandler;
public GetVmTemplatesByBaseTemplateIdQuery(P parameters) {
super(parameters);
}
@Override
protected void executeQueryCommand() {
List<VmTemplate> templateList = vmTemplateDao.getTemplateVersionsForBaseTemplate(getParameters().getId());
if (templateList != null) {
VmTemplate baseTemplate = vmTemplateDao.get(getParameters().getId(), getUserID(), getParameters().isFiltered());
if (baseTemplate != null) {
templateList.add(baseTemplate);
}
// Load VmInit and disks
for (VmTemplate template : templateList) {
vmHandler.updateVmInitFromDB(template, true);
vmTemplateHandler.updateDisksFromDb(template);
}
}
getQueryReturnValue().setReturnValue(templateList);
}
}