package org.ovirt.engine.api.restapi.types;
import org.apache.commons.lang.StringUtils;
import org.ovirt.engine.api.model.GlusterBrick;
import org.ovirt.engine.api.model.GlusterBrickStatus;
import org.ovirt.engine.api.model.GlusterVolume;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
import org.ovirt.engine.core.compat.Guid;
/**
* Mapper for mapping between the REST model class {@link GlusterBrick} and the business entity class
* {@link GlusterBrickEntity}
*
* @see GlusterBrick
* @see GlusterBrickEntity
*/
public class GlusterBrickMapper {
@Mapping(from = GlusterBrick.class, to = GlusterBrickEntity.class)
public static GlusterBrickEntity map(GlusterBrick fromBrick, GlusterBrickEntity toBrick) {
GlusterBrickEntity brick = (toBrick == null) ? new GlusterBrickEntity() : toBrick;
if(fromBrick.isSetId()) {
brick.setId(Guid.createGuidFromStringDefaultEmpty(fromBrick.getId()));
}
if(fromBrick.isSetServerId()) {
brick.setServerId(Guid.createGuidFromStringDefaultEmpty(fromBrick.getServerId()));
}
if(fromBrick.isSetBrickDir()) {
brick.setBrickDirectory(fromBrick.getBrickDir());
}
return brick;
}
@Mapping(from = GlusterBrickEntity.class, to = GlusterBrick.class)
public static GlusterBrick map(GlusterBrickEntity fromBrick, GlusterBrick toBrick) {
GlusterBrick brick = (toBrick == null) ? new GlusterBrick() : toBrick;
if(fromBrick.getId() != null) {
brick.setId(fromBrick.getId().toString());
}
if(fromBrick.getServerId() != null) {
brick.setServerId(fromBrick.getServerId().toString());
}
if(StringUtils.isNotEmpty(fromBrick.getQualifiedName())) {
brick.setName(fromBrick.getQualifiedName());
}
if(fromBrick.getBrickDirectory() != null) {
brick.setBrickDir(fromBrick.getBrickDirectory());
}
if(fromBrick.getStatus() != null) {
brick.setStatus(mapBrickStatus(fromBrick.getStatus()));
}
if(fromBrick.getVolumeId() != null) {
brick.setGlusterVolume(new GlusterVolume());
brick.getGlusterVolume().setId(fromBrick.getVolumeId().toString());
}
return brick;
}
private static GlusterBrickStatus mapBrickStatus(org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus status) {
switch (status) {
case UP:
return GlusterBrickStatus.UP;
case DOWN:
return GlusterBrickStatus.DOWN;
case UNKNOWN:
return GlusterBrickStatus.UNKNOWN;
default:
return null;
}
}
}