package org.ovirt.engine.api.restapi.types;
import org.ovirt.engine.api.common.util.StatusUtils;
import org.ovirt.engine.api.model.DataCenter;
import org.ovirt.engine.api.model.DataCenterStatus;
import org.ovirt.engine.api.restapi.model.StorageFormat;
import org.ovirt.engine.api.model.StorageType;
import org.ovirt.engine.api.model.Version;
import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
import org.ovirt.engine.core.common.businessentities.storage_pool;
import org.ovirt.engine.core.compat.Guid;
public class DataCenterMapper {
@Mapping(from = DataCenter.class, to = storage_pool.class)
public static storage_pool map(DataCenter model, storage_pool template) {
storage_pool entity = template != null ? template : new storage_pool();
if (model.isSetId()) {
entity.setId(new Guid(model.getId()));
}
if (model.isSetName()) {
entity.setname(model.getName());
}
if (model.isSetDescription()) {
entity.setdescription(model.getDescription());
}
if (model.isSetStorageType()) {
StorageType storageType = StorageType.fromValue(model.getStorageType());
if (storageType != null) {
entity.setstorage_pool_type(StorageDomainMapper.map(storageType, null));
}
}
if (model.isSetStorageFormat()) {
StorageFormat storageFormat = StorageFormat.fromValue(model.getStorageFormat());
if (storageFormat!=null) {
entity.setStoragePoolFormatType(StorageFormatMapper.map(storageFormat, null));
}
}
if (model.isSetVersion() && model.getVersion().isSetMajor() && model.getVersion().isSetMinor()) {
entity.setcompatibility_version(new org.ovirt.engine.core.compat.Version(model.getVersion().getMajor(),
model.getVersion().getMinor()));
}
return entity;
}
@Mapping(from = storage_pool.class, to = DataCenter.class)
public static DataCenter map(storage_pool entity, DataCenter template) {
DataCenter model = template != null ? template : new DataCenter();
model.setId(entity.getId().toString());
model.setName(entity.getname());
model.setDescription(entity.getdescription());
model.setStorageType(StorageDomainMapper.map(entity.getstorage_pool_type(), null));
if (entity.getstatus()!=null) {
model.setStatus(StatusUtils.create(map(entity.getstatus(), null)));
}
if (entity.getcompatibility_version() != null) {
model.setVersion(new Version());
model.getVersion().setMajor(entity.getcompatibility_version().getMajor());
model.getVersion().setMinor(entity.getcompatibility_version().getMinor());
}
if (entity.getStoragePoolFormatType()!=null) {
StorageFormat storageFormat = StorageFormatMapper.map(entity.getStoragePoolFormatType(), null);
if (storageFormat!=null) {
model.setStorageFormat(storageFormat.value());
}
}
return model;
}
@Mapping(from = StoragePoolStatus.class, to = DataCenterStatus.class)
private static DataCenterStatus map(StoragePoolStatus storagePoolStatus, DataCenterStatus dataCenterStatus) {
switch (storagePoolStatus) {
case Contend:
return DataCenterStatus.CONTEND;
case Maintanance:
return DataCenterStatus.MAINTENANCE;
case NotOperational:
return DataCenterStatus.NOT_OPERATIONAL;
case Problematic:
return DataCenterStatus.PROBLEMATIC;
case Uninitialized:
return DataCenterStatus.UNINITIALIZED;
case Up:
return DataCenterStatus.UP;
default: throw new IllegalStateException("Enum mapping failed");
}
}
}