package org.ovirt.engine.core.dao; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Named; import javax.inject.Singleton; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.businessentities.SubjectEntity; import org.ovirt.engine.core.common.utils.EnumUtils; import org.ovirt.engine.core.compat.Guid; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; /** * Implements the CRUD operations for {@code JobSubjectEntity}, a satellite table of {@code Job}. */ @Named @Singleton public class JobSubjectEntityDaoImpl extends BaseDao implements JobSubjectEntityDao { private static JobSubjectEntityRowMapper jobSubjectEntityRowMapper = new JobSubjectEntityRowMapper(); @Override public void save(Guid jobId, Guid entityId, VdcObjectType entityType) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("job_id", jobId) .addValue("entity_id", entityId) .addValue("entity_type", EnumUtils.nameOrNull(entityType)); getCallsHandler().executeModification("InsertJobSubjectEntity", parameterSource); } @Override public Map<Guid, VdcObjectType> getJobSubjectEntityByJobId(Guid jobId) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("job_id", jobId); List<SubjectEntity> list = getCallsHandler().executeReadList("GetJobSubjectEntityByJobId", jobSubjectEntityRowMapper, parameterSource); Map<Guid, VdcObjectType> entityMap = new HashMap<>(); for (SubjectEntity jobSubjectEntity : list) { entityMap.put(jobSubjectEntity.getEntityId(), jobSubjectEntity.getEntityType()); } return entityMap; } @Override public List<Guid> getJobIdByEntityId(Guid entityId) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("entity_id", entityId); return getCallsHandler().executeReadList("GetAllJobIdsByEntityId", createGuidMapper(), parameterSource); } private static class JobSubjectEntityRowMapper extends AbstractSubjectEntityRowMapper<SubjectEntity> { protected SubjectEntity createSubjectEntity() { return new SubjectEntity(); } } }