package org.ovirt.engine.core.bll;
import java.util.List;
import org.ovirt.engine.core.common.action.AddImagesFromImportParameters;
import org.ovirt.engine.core.common.businessentities.DiskImage;
import org.ovirt.engine.core.common.businessentities.DiskImageTemplate;
import org.ovirt.engine.core.common.businessentities.ImageStatus;
import org.ovirt.engine.core.common.errors.VdcBLLException;
import org.ovirt.engine.core.common.errors.VdcBllErrors;
import org.ovirt.engine.core.compat.LogCompat;
import org.ovirt.engine.core.compat.LogFactoryCompat;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;
//VB & C# TO JAVA CONVERTER TODO TASK: Java annotations will not correspond to .NET attributes:
@InternalCommandAttribute
public class AddTemplateImagesFromImportCommand<T extends AddImagesFromImportParameters> extends
AddImagesFromImportCommand<T> {
public AddTemplateImagesFromImportCommand(T parameters) {
super(parameters);
}
@Override
protected void executeCommand() {
ProcessImageInIrs();
for (List<DiskImage> importedImagesPerDrive : getParameters().getImportedImages().values()) // foreach
// drive:
{
for (DiskImage importedImage : importedImagesPerDrive) // foreach
// image in
// current
// drive
// (should
// be only
// one):
{
DiskImageTemplate dt = new DiskImageTemplate(importedImage.getId(),
importedImage.getcontainer_guid(), importedImage.getinternal_drive_mapping(),
importedImage.getId(), "", "", getNow(), importedImage.getsize(),
importedImage.getdescription(), null);
try {
DbFacade.getInstance().getDiskImageTemplateDAO().save(dt);
importedImage.setimageStatus(ImageStatus.LOCKED);
DbFacade.getInstance().getDiskImageDAO().save(importedImage);
}
catch (RuntimeException e) {
log.error(
String.format(
"ImagesHandler::AddTemplateImagesFromImportCommand::ExecuteCommand: Failed adding image %1$s to DB",
importedImage.getId()),
e);
throw new VdcBLLException(VdcBllErrors.DB, e);
}
setActionReturnValue(dt); // / TODO: Not a good return value -
// template has
// several DiskImageTemplates in case of a multi-drive template.
}
}
setSucceeded(true);
}
private static LogCompat log = LogFactoryCompat.getLog(AddTemplateImagesFromImportCommand.class);
}