package org.ovirt.engine.ui.uicommonweb.models.templates;
import org.ovirt.engine.core.common.businessentities.VmBase;
import org.ovirt.engine.core.common.businessentities.VmTemplate;
import org.ovirt.engine.core.compat.Version;
import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor;
import org.ovirt.engine.ui.uicommonweb.builders.vm.CommentVmBaseToUnitBuilder;
import org.ovirt.engine.ui.uicommonweb.builders.vm.CommonVmBaseToUnitBuilder;
import org.ovirt.engine.ui.uicommonweb.builders.vm.CoreVmBaseToUnitBuilder;
import org.ovirt.engine.ui.uicommonweb.builders.vm.HwOnlyVmBaseToUnitBuilder;
import org.ovirt.engine.ui.uicommonweb.builders.vm.KernelParamsVmBaseToUnitBuilder;
import org.ovirt.engine.ui.uicommonweb.builders.vm.NameAndDescriptionVmBaseToUnitBuilder;
import org.ovirt.engine.ui.uicommonweb.builders.vm.SerialNumberPolicyVmBaseToUnitBuilder;
import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
import org.ovirt.engine.ui.uicommonweb.models.vms.instancetypes.ExistingNonClusterModelBehavior;
public class ExistingBlankTemplateModelBehavior extends ExistingNonClusterModelBehavior {
private VmTemplate template;
public ExistingBlankTemplateModelBehavior(VmTemplate template) {
super(template);
this.template = template;
}
@Override
protected void postBuild() {
getModel().getBaseTemplate().setIsAvailable(false);
getModel().getTemplateVersionName().setIsAvailable(false);
getModel().getVmType().setIsChangeable(true);
getModel().getEmulatedMachine().setIsAvailable(false);
getModel().getCustomCpu().setIsAvailable(false);
getModel().getOSType().setIsAvailable(false);
updateCustomPropertySheet(latestCluster());
getModel().getCustomPropertySheet().deserialize(template.getCustomProperties());
updateTimeZone(template.getTimeZone());
getModel().getVmInitEnabled().setEntity(template.getVmInit() != null);
getModel().getVmInitModel().init(template);
}
@Override
protected Version getCompatibilityVersion() {
return latestCluster();
}
@Override
protected void buildModel(VmBase vmBase, BuilderExecutor.BuilderExecutionFinished<VmBase, UnitVmModel> callback) {
new BuilderExecutor<>(callback,
new NameAndDescriptionVmBaseToUnitBuilder(),
new CommentVmBaseToUnitBuilder(),
new CommonVmBaseToUnitBuilder(
new HwOnlyVmBaseToUnitBuilder(),
new CoreVmBaseToUnitBuilder(
new KernelParamsVmBaseToUnitBuilder(),
new SerialNumberPolicyVmBaseToUnitBuilder()
)))
.build(vmBase, getModel());
}
public VmTemplate getVmTemplate() {
return template;
}
}