package org.ovirt.engine.core.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; import java.util.List; import javax.inject.Named; import javax.inject.Singleton; import org.ovirt.engine.core.common.job.StepSubjectEntity; import org.ovirt.engine.core.common.utils.EnumUtils; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @Named @Singleton public class StepSubjectEntityDaoImpl extends BaseDao implements StepSubjectEntityDao { @Override public List<StepSubjectEntity> getStepSubjectEntitiesByStepId(Guid stepId) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("step_id", stepId); return getCallsHandler().executeReadList("GetStepSubjectEntitiesByStepId", StepSubjectEntityRowMapper.getInstance(), parameterSource); } @Override public void remove(Guid entityId, Guid stepId) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("entity_id", entityId) .addValue("step_id", stepId); getCallsHandler().executeModification("DeleteStepSubjectEntity", parameterSource); } public void saveAll(Collection<StepSubjectEntity> entities) { if (entities.isEmpty()) { return; } getCallsHandler().executeStoredProcAsBatch("InsertStepSubjectEntity", entities, getMapper()); } private MapSqlParameterMapper<StepSubjectEntity> getMapper() { return (StepSubjectEntity stepSubjectEntity) -> getCustomMapSqlParameterSource() .addValue("step_id", stepSubjectEntity.getStepId()) .addValue("entity_id", stepSubjectEntity.getEntityId()) .addValue("step_entity_weight", stepSubjectEntity.getStepEntityWeight()) .addValue("entity_type", EnumUtils.nameOrNull(stepSubjectEntity.getEntityType())); } public static class StepSubjectEntityRowMapper extends AbstractSubjectEntityRowMapper<StepSubjectEntity> { private static final StepSubjectEntityRowMapper instance = new StepSubjectEntityRowMapper(); @Override public StepSubjectEntity mapRow(ResultSet rs, int rowNum) throws SQLException { StepSubjectEntity stepSubjectEntity = super.mapRow(rs, rowNum); stepSubjectEntity.setStepEntityWeight(getInteger(rs, "step_entity_weight")); stepSubjectEntity.setStepId(getGuid(rs, "step_id")); return stepSubjectEntity; } protected StepSubjectEntity createSubjectEntity() { return new StepSubjectEntity(); } public static StepSubjectEntityRowMapper getInstance() { return instance; } } }