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.Bookmark; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.CustomMapSqlParameterSource; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; /** * {@code BookmarkDaoImpl} provides a concrete implementation of {@link BookmarkDao}. */ @Named @Singleton public class BookmarkDaoImpl extends BaseDao implements BookmarkDao { private static final RowMapper<Bookmark> bookmarkRowMapper = (rs, rowNum) -> { Bookmark entity = new Bookmark(); entity.setId(getGuid(rs, "bookmark_id")); entity.setName(rs.getString("bookmark_name")); entity.setValue(rs.getString("bookmark_value")); return entity; }; private class BookmarkSqlParameterSource extends CustomMapSqlParameterSource { public BookmarkSqlParameterSource(Bookmark bookmark) { super(getDialect()); addValue("bookmark_id", bookmark.getId()); addValue("bookmark_name", bookmark.getName()); addValue("bookmark_value", bookmark.getValue()); } public BookmarkSqlParameterSource() { super(getDialect()); } public BookmarkSqlParameterSource(Guid id) { super(getDialect()); addValue("bookmark_id", id); } public BookmarkSqlParameterSource(String name) { super(getDialect()); addValue("bookmark_name", name); } } @Override public Bookmark get(Guid id) { MapSqlParameterSource parameterSource = new BookmarkSqlParameterSource( id); return getCallsHandler().executeRead("GetBookmarkBybookmark_id", bookmarkRowMapper, parameterSource); } @Override public Bookmark getByName(String name) { MapSqlParameterSource parameterSource = new BookmarkSqlParameterSource( name); return getCallsHandler().executeRead("GetBookmarkBybookmark_name", bookmarkRowMapper, parameterSource); } @Override public List<Bookmark> getAll() { MapSqlParameterSource parameterSource = new BookmarkSqlParameterSource(); return getCallsHandler().executeReadList("GetAllFromBookmarks", bookmarkRowMapper, parameterSource); } @Override public void save(Bookmark bookmark) { Guid id = bookmark.getId(); if (Guid.isNullOrEmpty(id)) { id = Guid.newGuid(); bookmark.setId(id); } MapSqlParameterSource parameterSource = new BookmarkSqlParameterSource( bookmark); getCallsHandler().executeModification("InsertBookmark", parameterSource); } @Override public void update(Bookmark bookmark) { MapSqlParameterSource parameterSource = new BookmarkSqlParameterSource( bookmark); getCallsHandler().executeModification("UpdateBookmark", parameterSource); } @Override public void remove(Guid id) { MapSqlParameterSource parameterSource = new BookmarkSqlParameterSource( id); getCallsHandler().executeModification("DeleteBookmark", parameterSource); } }