package org.ovirt.engine.core.dao;
import java.util.List;
import javax.inject.Named;
import javax.inject.Singleton;
import org.ovirt.engine.core.common.businessentities.storage.StorageServerConnectionExtension;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@Named
@Singleton
public class StorageServerConnectionExtensionDaoImpl extends DefaultGenericDao<StorageServerConnectionExtension, Guid> implements StorageServerConnectionExtensionDao {
public StorageServerConnectionExtensionDaoImpl() {
super("StorageServerConnectionExtension");
// This is needed since the max storage procedure name length is 64 chars and the default generated one exceeds that length
setProcedureNameForGet("GetStorageServerConnectionExtensionById");
}
@Override
public List<StorageServerConnectionExtension> getByHostId(Guid hostId) {
return getCallsHandler().executeReadList("GetStorageServerConnectionExtensionsByHostId",
createEntityRowMapper(), getCustomMapSqlParameterSource().addValue("vds_id", hostId));
}
@Override
public StorageServerConnectionExtension getByHostIdAndTarget(Guid hostId, String target) {
return getCallsHandler().executeRead("GetStorageServerConnectionExtensionsByHostIdAndTarget",
createEntityRowMapper(),
getCustomMapSqlParameterSource().addValue("vds_id", hostId).addValue("iqn", target));
}
@Override
protected MapSqlParameterSource createFullParametersMapper(StorageServerConnectionExtension entity) {
return createIdParameterMapper(entity.getId())
.addValue("vds_id", entity.getHostId())
.addValue("iqn", entity.getIqn())
.addValue("user_name", entity.getUserName())
.addValue("password", DbFacadeUtils.encryptPassword(entity.getPassword()));
}
@Override
protected MapSqlParameterSource createIdParameterMapper(Guid id) {
return getCustomMapSqlParameterSource().addValue("id", id);
}
@Override
protected RowMapper<StorageServerConnectionExtension> createEntityRowMapper() {
return (rs, rowNum) -> {
StorageServerConnectionExtension ssce = new StorageServerConnectionExtension();
ssce.setId(getGuidDefaultEmpty(rs, "id"));
ssce.setHostId(getGuidDefaultEmpty(rs, "vds_id"));
ssce.setIqn(rs.getString("iqn"));
ssce.setUserName(rs.getString("user_name"));
ssce.setPassword(DbFacadeUtils.decryptPassword(rs.getString("password")));
return ssce;
};
}
}