package org.ovirt.engine.core.dao.gluster; import java.util.Date; import java.util.List; import javax.inject.Named; import javax.inject.Singleton; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSnapshotSchedule; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSnapshotScheduleRecurrence; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.BaseDao; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @Named @Singleton public class GlusterVolumeSnapshotScheduleDaoImpl extends BaseDao implements GlusterVolumeSnapshotScheduleDao { private static final RowMapper<GlusterVolumeSnapshotSchedule> snapshotScheduleRowMapper = (rs, rowNum) -> { GlusterVolumeSnapshotSchedule schedule = new GlusterVolumeSnapshotSchedule(); schedule.setClusterId(getGuidDefaultEmpty(rs, "cluster_id")); schedule.setVolumeId(getGuidDefaultEmpty(rs, "volume_id")); schedule.setJobId(rs.getString("job_id")); schedule.setSnapshotNamePrefix(rs.getString("snapshot_name_prefix")); schedule.setSnapshotDescription(rs.getString("snapshot_description")); schedule.setRecurrence(GlusterVolumeSnapshotScheduleRecurrence.from(rs.getString("recurrence"))); schedule.setTimeZone(rs.getString("time_zone")); schedule.setInterval(rs.getInt("interval")); schedule.setStartDate(rs.getTimestamp("start_date") == null ? null : new Date(rs.getTimestamp("start_date") .getTime())); schedule.setExecutionTime(rs.getTime("execution_time")); schedule.setDays(rs.getString("days")); schedule.setEndByDate(rs.getTimestamp("end_by")); return schedule; }; @Override public void save(GlusterVolumeSnapshotSchedule schedule) { getCallsHandler().executeModification("InsertGlusterVolumeSnapshotSchedule", createFullParameterMapper(schedule)); } @Override public GlusterVolumeSnapshotSchedule getByVolumeId(Guid volumeId) { return getCallsHandler().executeRead("GetGlusterVolumeSnapshotScheduleByVolumeId", snapshotScheduleRowMapper, getCustomMapSqlParameterSource().addValue("volume_id", volumeId)); } @Override public void removeByVolumeId(Guid volumeId) { getCallsHandler().executeModification("DeleteGlusterVolumeSnapshotScheduleByVolumeId", getCustomMapSqlParameterSource().addValue("volume_id", volumeId)); } @Override public List<GlusterVolumeSnapshotSchedule> getAllWithQuery(String query) { return getJdbcTemplate().query(query, snapshotScheduleRowMapper); } @Override public void updateScheduleByVolumeId(Guid volumeId, GlusterVolumeSnapshotSchedule schedule) { getCallsHandler().executeModification("UpdateGlusterVolumeSnapshotScheduleByVolumeId", createFullParameterMapper(schedule)); } protected MapSqlParameterSource createFullParameterMapper(GlusterVolumeSnapshotSchedule schedule) { return getCustomMapSqlParameterSource().addValue("volume_id", schedule.getVolumeId()) .addValue("job_id", schedule.getJobId()) .addValue("snapshot_name_prefix", schedule.getSnapshotNamePrefix()) .addValue("snapshot_description", schedule.getSnapshotDescription()) .addValue("recurrence", schedule.getRecurrence().toString()) .addValue("time_zone", schedule.getTimeZone()) .addValue("interval", schedule.getInterval()) .addValue("start_date", schedule.getStartDate()) .addValue("execution_time", schedule.getExecutionTime()) .addValue("days", schedule.getDays()) .addValue("end_by", schedule.getEndByDate()); } }