package org.ovirt.engine.ui.uicommonweb.builders.vm;
import java.util.Arrays;
import org.ovirt.engine.core.common.businessentities.VmBase;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.ui.uicommonweb.builders.Builder;
import org.ovirt.engine.ui.uicommonweb.builders.BuilderList;
import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
import org.ovirt.engine.ui.uicommonweb.models.vms.IconCache;
import org.ovirt.engine.ui.uicommonweb.models.vms.IconWithOsDefault;
import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
import org.ovirt.engine.ui.uicommonweb.validation.ValidationResult;
public class IconVmBaseToUnitBuilder implements Builder<VmBase, UnitVmModel> {
@Override
public void build(final VmBase source, final UnitVmModel destination, final BuilderList<VmBase, UnitVmModel> rest) {
final Guid defaultIconId = AsyncDataProvider.getInstance().getOsDefaultIconId(source.getOsId(), false);
final Guid iconId = source.getLargeIconId() != null
? source.getLargeIconId()
: defaultIconId;
IconCache.getInstance().getOrFetchIcons(Arrays.asList(iconId, defaultIconId), idToIconMap -> {
destination.getIcon().setEntity(new IconWithOsDefault(
idToIconMap.get(iconId),
idToIconMap.get(defaultIconId),
source.getSmallIconId(),
ValidationResult.ok()
));
rest.head().build(source, destination, rest.tail());
});
}
}