package org.ovirt.engine.core.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import org.apache.commons.lang.StringUtils;
import org.ovirt.engine.core.common.businessentities.VmEntityType;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
/**
* Abstract row mapper that maps the fields of {@link Disk}.
*
* @param <T> The type of disk to map for.
*/
abstract class AbstractDiskRowMapper<T extends Disk> extends AbstractBaseDiskRowMapper<T> {
@Override
public T mapRow(ResultSet rs, int rowNum) throws SQLException {
T entity = super.mapRow(rs, rowNum);
entity.setNumberOfVms(rs.getInt("number_of_vms"));
String vmNames = rs.getString("vm_names");
entity.setVmNames(StringUtils.isEmpty(vmNames) ? null
: new ArrayList<>(Arrays.asList(vmNames.split(","))));
String templateVersionNames = rs.getString("template_version_names");
entity.setTemplateVersionNames(StringUtils.isEmpty(templateVersionNames) ? null
: new ArrayList<>(Arrays.asList(templateVersionNames.split(","))));
String entityType = rs.getString("entity_type");
handleEntityType(entityType, entity);
return entity;
}
private static void handleEntityType(String entityType, Disk entity) {
if (entityType != null && !entityType.isEmpty()) {
VmEntityType vmEntityType = VmEntityType.valueOf(entityType);
entity.setVmEntityType(vmEntityType);
}
}
}