package org.ovirt.engine.core.dao.scheduling; import java.util.LinkedHashMap; import javax.inject.Named; import javax.inject.Singleton; import org.ovirt.engine.core.common.scheduling.PolicyUnit; import org.ovirt.engine.core.common.scheduling.PolicyUnitType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.DefaultGenericDao; import org.ovirt.engine.core.utils.SerializationFactory; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @Named @Singleton public class PolicyUnitDaoImpl extends DefaultGenericDao<PolicyUnit, Guid> implements PolicyUnitDao { public PolicyUnitDaoImpl() { super("PolicyUnit"); } @Override protected MapSqlParameterSource createFullParametersMapper(PolicyUnit entity) { return createIdParameterMapper(entity.getId()) .addValue("name", entity.getName()) .addValue("is_internal", entity.isInternal()) .addValue("type", entity.getPolicyUnitType() == null ? PolicyUnitType.FILTER.getValue() : entity.getPolicyUnitType() .getValue()) .addValue("description", entity.getDescription()) .addValue("custom_properties_regex", SerializationFactory.getSerializer().serialize(entity.getParameterRegExMap())) .addValue("enabled", entity.isEnabled()); } @Override protected MapSqlParameterSource createIdParameterMapper(Guid id) { return getCustomMapSqlParameterSource().addValue("id", id); } @Override protected RowMapper<PolicyUnit> createEntityRowMapper() { return (rs, arg1) -> { PolicyUnit policyUnit = new PolicyUnit(); policyUnit.setId(getGuid(rs, "id")); policyUnit.setName(rs.getString("name")); policyUnit.setInternal(rs.getBoolean("is_internal")); policyUnit.setPolicyUnitType(PolicyUnitType.forValue(rs.getInt("type"))); policyUnit.setDescription(rs.getString("description")); policyUnit.setParameterRegExMap(SerializationFactory.getDeserializer() .deserializeOrCreateNew(rs.getString("custom_properties_regex"), LinkedHashMap.class)); policyUnit.setEnabled(rs.getBoolean("enabled")); return policyUnit; }; } }