package org.ovirt.mobile.movirt.rest.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.ovirt.mobile.movirt.rest.RestEntityWrapper;
import org.ovirt.mobile.movirt.util.ObjectUtils;
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class StorageDomain implements RestEntityWrapper<org.ovirt.mobile.movirt.model.StorageDomain> {
public String id;
public String name;
public String type;
public String available;
public String used;
public Storage storage;
public String storage_format;
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Storage {
public String address;
public String type;
public String path;
}
@Override
public org.ovirt.mobile.movirt.model.StorageDomain toEntity() {
org.ovirt.mobile.movirt.model.StorageDomain storageDomain = new org.ovirt.mobile.movirt.model.StorageDomain();
storageDomain.setId(id);
storageDomain.setName(name);
storageDomain.setStorageFormat(storage_format);
if (storage != null) {
if (storage.address != null) {
storageDomain.setStorageAddress(storage.address);
}
if (storage.type != null) {
storageDomain.setStorageType(storage.type);
}
if (storage.path != null) {
storageDomain.setStoragePath(storage.path);
}
}
storageDomain.setType(mapType(type));
storageDomain.setAvailableSize(ObjectUtils.parseLong(available));
storageDomain.setUsedSize(ObjectUtils.parseLong(used));
return storageDomain;
}
protected org.ovirt.mobile.movirt.model.StorageDomain.Status mapStatus(String status) {
try {
if (status == null) { // sometimes behaves as unknown when null
return org.ovirt.mobile.movirt.model.StorageDomain.Status.ACTIVE;
}
return org.ovirt.mobile.movirt.model.StorageDomain.Status.valueOf(status.toUpperCase());
} catch (Exception e) {
return org.ovirt.mobile.movirt.model.StorageDomain.Status.UNKNOWN;
}
}
private static org.ovirt.mobile.movirt.model.StorageDomain.Type mapType(String type) {
try {
return org.ovirt.mobile.movirt.model.StorageDomain.Type.valueOf(type.toUpperCase());
} catch (Exception e) {
// guess it is this...
return org.ovirt.mobile.movirt.model.StorageDomain.Type.DATA;
}
}
}