package org.ovirt.engine.api.restapi.types;
import org.ovirt.engine.api.model.Host;
import org.ovirt.engine.api.model.Image;
import org.ovirt.engine.api.model.ImageTransfer;
import org.ovirt.engine.api.model.ImageTransferPhase;
import org.ovirt.engine.api.restapi.utils.GuidUtils;
public class ImageTransferMapper {
@Mapping(from = ImageTransfer.class,
to = org.ovirt.engine.core.common.businessentities.storage.ImageTransfer.class)
public static org.ovirt.engine.core.common.businessentities.storage.ImageTransfer map(ImageTransfer model,
org.ovirt.engine.core.common.businessentities.storage.ImageTransfer template) {
org.ovirt.engine.core.common.businessentities.storage.ImageTransfer entity = template != null ? template :
new org.ovirt.engine.core.common.businessentities.storage.ImageTransfer();
if (model.isSetId()) {
entity.setId(GuidUtils.asGuid(model.getId()));
}
if (model.isSetHost() && model.getHost().isSetId()) {
entity.setVdsId(GuidUtils.asGuid(model.getHost().getId()));
}
if (model.isSetImage() && model.getImage().isSetId()) {
entity.setDiskId(GuidUtils.asGuid(model.getImage().getId()));
}
return entity;
}
@Mapping(from = org.ovirt.engine.core.common.businessentities.storage.ImageTransfer.class, to = ImageTransfer.class)
public static ImageTransfer map(org.ovirt.engine.core.common.businessentities.storage.ImageTransfer entity, ImageTransfer template) {
ImageTransfer model = template != null ? template : new ImageTransfer();
if (entity.getId() != null) {
model.setId(entity.getId().toString());
}
if (entity.getVdsId() != null) {
model.setHost(new Host());
model.getHost().setId(entity.getVdsId().toString());
}
if (entity.getDiskId() != null) {
model.setImage(new Image());
model.getImage().setId(entity.getDiskId().toString());
}
if (entity.getProxyUri() != null && entity.getImagedTicketId() != null) {
model.setProxyUrl( entity.getClientURLForTransfer() );
}
if (entity.getSignedTicket() != null) {
model.setSignedTicket(entity.getSignedTicket());
}
if (entity.getPhase() != null) {
model.setPhase(mapPhase(entity.getPhase()));
}
return model;
}
private static ImageTransferPhase mapPhase(org.ovirt.engine.core.common.businessentities.storage.ImageTransferPhase phase) {
switch (phase) {
case UNKNOWN:
return ImageTransferPhase.UNKNOWN;
case INITIALIZING:
return ImageTransferPhase.INITIALIZING;
case TRANSFERRING:
return ImageTransferPhase.TRANSFERRING;
case RESUMING:
return ImageTransferPhase.RESUMING;
case PAUSED_SYSTEM:
return ImageTransferPhase.PAUSED_SYSTEM;
case PAUSED_USER:
return ImageTransferPhase.PAUSED_USER;
case CANCELLED:
return ImageTransferPhase.CANCELLED;
case FINALIZING_SUCCESS:
return ImageTransferPhase.FINALIZING_SUCCESS;
case FINALIZING_FAILURE:
return ImageTransferPhase.FINALIZING_FAILURE;
case FINISHED_SUCCESS:
return ImageTransferPhase.FINISHED_SUCCESS;
case FINISHED_FAILURE:
return ImageTransferPhase.FINISHED_FAILURE;
default:
throw new IllegalArgumentException("The value \"" + phase + "\" isn't a valid image transfer phase.");
}
}
}