package org.ovirt.engine.core.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.ovirt.engine.core.common.businessentities.TagsType;
import org.ovirt.engine.core.common.businessentities.tags;
import org.ovirt.engine.core.common.businessentities.tags_user_group_map;
import org.ovirt.engine.core.common.businessentities.tags_user_map;
import org.ovirt.engine.core.common.businessentities.tags_vds_map;
import org.ovirt.engine.core.common.businessentities.tags_vm_map;
import org.ovirt.engine.core.common.businessentities.tags_vm_pool_map;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.NGuid;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
/**
* <code>TagDAODbFacadeImpl</code> provides an implementation of {@link TagDAO} that uses code refactored from the
* {@link DbFacade} class.
*
*
*/
public class TagDAODbFacadeImpl extends BaseDAODbFacade implements TagDAO {
private class TagRowMapper implements ParameterizedRowMapper<tags> {
@Override
public tags mapRow(ResultSet rs, int rowNum) throws SQLException {
tags entity = new tags();
entity.setdescription(getValueOrNull(rs, "description", ""));
entity.settag_id(Guid.createGuidFromString(getValueOrNull(rs,
"tag_id", Guid.NewGuid().getUuid().toString())));
entity.settag_name(getValueOrNull(rs, "tag_name", ""));
entity.setparent_id(NGuid.createGuidFromString(getValueOrNull(rs,
"parent_id", Guid.NewGuid().getUuid().toString())));
entity.setIsReadonly(rs.getBoolean("readonly"));
entity.settype(TagsType.forValue(Integer.valueOf(getValueOrNull(rs,
"type", "0"))));
return entity;
}
String getValueOrNull(ResultSet rs, String name, String defval) {
String result = null;
try {
result = rs.getString(name);
} catch (SQLException e) {
// consume exception, fall back to default value
}
return result != null ? result : defval;
}
}
@Override
public tags get(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("tag_id", id);
return getCallsHandler()
.executeRead("GettagsBytag_id", new TagRowMapper(), parameterSource);
}
@Override
public tags getByName(String name) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("tag_name", name);
return getCallsHandler()
.executeRead("GettagsBytag_name", new TagRowMapper(), parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags> getAll() {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource();
return getCallsHandler()
.executeReadList("GetAllFromtags", new TagRowMapper(), parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags> getAllForParent(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("parent_id", id);
return getCallsHandler()
.executeReadList("GettagsByparent_id", new TagRowMapper(), parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags> getAllForUserGroups(String ids) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("group_ids", ids);
return getCallsHandler()
.executeReadList("GetTagsByUserGroupId", new TagRowMapper(), parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags> getAllUserGroupTagsWithIds(String ids) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("tag_ids", ids);
return getCallsHandler()
.executeReadList("GetUserGroupTagsByTagIds", new TagRowMapper(), parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags> getAllForUsers(String ids) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("user_ids", ids);
return getCallsHandler()
.executeReadList("GetTagsByUserId", new TagRowMapper(), parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags> getAllForUsersWithIds(String ids) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("tag_ids", ids);
return getCallsHandler()
.executeReadList("GetUserTagsByTagIds", new TagRowMapper(), parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags> getAllForVds(String ids) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("vds_ids", ids);
return getCallsHandler()
.executeReadList("GetTagsByVdsId", new TagRowMapper(), parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags> getAllForVdsWithIds(String ids) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("tag_ids", ids);
return getCallsHandler()
.executeReadList("GetVdsTagsByTagIds", new TagRowMapper(), parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags> getAllForVm(String ids) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("vm_ids", ids);
return getCallsHandler()
.executeReadList("GetTagsByVmId", new TagRowMapper(), parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags> getAllVmTagsWithIds(String ids) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("tag_ids", ids);
return getCallsHandler()
.executeReadList("GetVmTagsByTagId", new TagRowMapper(), parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags> getAllForVmPools(String ids) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("vm_pool_ids", ids);
return getCallsHandler()
.executeReadList("GetTagsByVmpoolId", new TagRowMapper(), parameterSource);
}
@Override
public void save(tags tag) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("description", tag.getdescription())
.addValue("tag_id", tag.gettag_id())
.addValue("tag_name", tag.gettag_name())
.addValue("parent_id", tag.getparent_id())
.addValue("readonly", tag.getIsReadonly())
.addValue("type", tag.gettype());
Map<String, Object> dbResults = getCallsHandler()
.executeModification("Inserttags", parameterSource);
tag.settag_id(new Guid(dbResults.get("tag_id").toString()));
}
@Override
public void remove(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("tag_id", id);
getCallsHandler()
.executeModification("Deletetags", parameterSource);
}
@Override
public void update(tags tag) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("description", tag.getdescription())
.addValue("tag_id", tag.gettag_id())
.addValue("tag_name", tag.gettag_name())
.addValue("parent_id", tag.getparent_id())
.addValue("readonly", tag.getIsReadonly())
.addValue("type", tag.gettype());
getCallsHandler()
.executeModification("Updatetags", parameterSource);
}
@Override
public tags_user_group_map getTagUserGroupByGroupIdAndByTagId(Guid tag, Guid group) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("group_id", group)
.addValue("tag_id", tag);
ParameterizedRowMapper<tags_user_group_map> mapper = new ParameterizedRowMapper<tags_user_group_map>() {
@Override
public tags_user_group_map mapRow(ResultSet rs, int rowNum) throws SQLException {
tags_user_group_map entity = new tags_user_group_map();
entity.setgroup_id(Guid.createGuidFromString(rs.getString("group_id")));
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
return entity;
}
};
return getCallsHandler()
.executeRead("GetTagUserGroupByGroupIdAndByTagId", mapper, parameterSource);
}
@Override
public void attachUserGroupToTag(tags_user_group_map tagUserGroupMap) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("group_id",
tagUserGroupMap.getgroup_id()).addValue("tag_id", tagUserGroupMap.gettag_id());
getCallsHandler()
.executeModification("Inserttags_user_group_map", parameterSource);
}
@Override
public void detachUserGroupFromTag(Guid tagId, Guid groupId) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("group_id", groupId)
.addValue("tag_id", tagId);
getCallsHandler()
.executeModification("Deletetags_user_group_map", parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags_user_group_map> getTagUserGroupMapsForTagName(String tagName) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_name", tagName);
ParameterizedRowMapper<tags_user_group_map> mapper = new ParameterizedRowMapper<tags_user_group_map>() {
@Override
public tags_user_group_map mapRow(ResultSet rs, int rowNum) throws SQLException {
tags_user_group_map entity = new tags_user_group_map();
entity.setgroup_id(Guid.createGuidFromString(rs.getString("group_id")));
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
return entity;
}
};
return getCallsHandler()
.executeReadList("Gettags_user_group_mapByTagName", mapper, parameterSource);
}
@Override
public tags_user_map getTagUserByTagIdAndByuserId(Guid tagId, Guid userId) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_id", tagId).addValue(
"user_id", userId);
ParameterizedRowMapper<tags_user_map> mapper = new ParameterizedRowMapper<tags_user_map>() {
@Override
public tags_user_map mapRow(ResultSet rs, int rowNum) throws SQLException {
tags_user_map entity = new tags_user_map();
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
entity.setuser_id(Guid.createGuidFromString(rs.getString("user_id")));
return entity;
}
};
return getCallsHandler()
.executeRead("GetTagUserByTagIdAndByuserId", mapper, parameterSource);
}
@Override
public void attachUserToTag(tags_user_map tagUserMap) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_id",
tagUserMap.gettag_id()).addValue("user_id", tagUserMap.getuser_id());
getCallsHandler()
.executeModification("Inserttags_user_map", parameterSource);
}
@Override
public void detachUserFromTag(Guid tagId, Guid userId) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_id", tagId).addValue(
"user_id", userId);
getCallsHandler()
.executeModification("Deletetags_user_map", parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags_user_map> getTagUserMapByTagName(String tagName) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_name", tagName);
ParameterizedRowMapper<tags_user_map> mapper = new ParameterizedRowMapper<tags_user_map>() {
@Override
public tags_user_map mapRow(ResultSet rs, int rowNum) throws SQLException {
tags_user_map entity = new tags_user_map();
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
entity.setuser_id(Guid.createGuidFromString(rs.getString("user_id")));
return entity;
}
};
return getCallsHandler()
.executeReadList("Gettags_user_mapByTagName", mapper, parameterSource);
}
@Override
public tags_vds_map getTagVdsByTagIdAndByVdsId(Guid tagId, Guid vdsId) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_id", tagId).addValue(
"vds_id", vdsId);
ParameterizedRowMapper<tags_vds_map> mapper = new ParameterizedRowMapper<tags_vds_map>() {
@Override
public tags_vds_map mapRow(ResultSet rs, int rowNum) throws SQLException {
tags_vds_map entity = new tags_vds_map();
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
entity.setvds_id(Guid.createGuidFromString(rs.getString("vds_id")));
return entity;
}
};
return getCallsHandler()
.executeRead("GetTagVdsBytagIdAndByVdsId", mapper, parameterSource);
}
@Override
public void attachVdsToTag(tags_vds_map tagVdsMap) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_id",
tagVdsMap.gettag_id()).addValue("vds_id", tagVdsMap.getvds_id());
getCallsHandler()
.executeModification("Inserttags_vds_map", parameterSource);
}
@Override
public void detachVdsFromTag(Guid tagId, Guid vdsId) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_id", tagId).addValue(
"vds_id", vdsId);
getCallsHandler()
.executeModification("Deletetags_vds_map", parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags_vds_map> getTagVdsMapByTagName(String tagName) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_name", tagName);
ParameterizedRowMapper<tags_vds_map> mapper = new ParameterizedRowMapper<tags_vds_map>() {
@Override
public tags_vds_map mapRow(ResultSet rs, int rowNum) throws SQLException {
tags_vds_map entity = new tags_vds_map();
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
entity.setvds_id(Guid.createGuidFromString(rs.getString("vds_id")));
return entity;
}
};
return getCallsHandler()
.executeReadList("Gettags_vds_mapByTagName", mapper, parameterSource);
}
@Override
public tags_vm_map getTagVmByTagIdAndByVmId(Guid tagId, Guid vmId) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_id", tagId).addValue(
"vm_id", vmId);
ParameterizedRowMapper<tags_vm_map> mapper = new ParameterizedRowMapper<tags_vm_map>() {
@Override
public tags_vm_map mapRow(ResultSet rs, int rowNum) throws SQLException {
tags_vm_map entity = new tags_vm_map();
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
entity.setvm_id(Guid.createGuidFromString(rs.getString("vm_id")));
entity.setDefaultDisplayType((Integer) rs.getObject("DefaultDisplayType"));
return entity;
}
};
return getCallsHandler()
.executeRead("GetTagVmByTagIdAndByvmId", mapper, parameterSource);
}
@Override
public void attachVmToTag(tags_vm_map tagVmMap) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_id",
tagVmMap.gettag_id()).addValue("vm_id", tagVmMap.getvm_id()).addValue("DefaultDisplayType",
tagVmMap.getDefaultDisplayType());
getCallsHandler()
.executeModification("Inserttags_vm_map", parameterSource);
}
@Override
public void updateDefaultDisplayForVmTag(tags_vm_map tagsVmMap) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_id",
tagsVmMap.gettag_id()).addValue("vm_id", tagsVmMap.getvm_id()).addValue("DefaultDisplayType",
tagsVmMap.getDefaultDisplayType());
getCallsHandler()
.executeModification("UpdateVmTagsDefaultDisplayType", parameterSource);
}
@Override
public void detachVmFromTag(Guid tagId, Guid vmId) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_id", tagId).addValue(
"vm_id", vmId);
getCallsHandler()
.executeModification("Deletetags_vm_map", parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags_vm_map> getTagVmMapByTagName(String tagName) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("tag_name", tagName);
ParameterizedRowMapper<tags_vm_map> mapper = new ParameterizedRowMapper<tags_vm_map>() {
@Override
public tags_vm_map mapRow(ResultSet rs, int rowNum) throws SQLException {
tags_vm_map entity = new tags_vm_map();
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
entity.setvm_id(Guid.createGuidFromString(rs.getString("vm_id")));
return entity;
}
};
return getCallsHandler()
.executeReadList("Gettags_vm_mapByTagName", mapper, parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags_vm_map> getTagVmMapByVmIdAndDefaultTag(Guid vmid) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("vm_id", vmid);
ParameterizedRowMapper<tags_vm_map> mapper = new ParameterizedRowMapper<tags_vm_map>() {
@Override
public tags_vm_map mapRow(ResultSet rs, int rowNum) throws SQLException {
tags_vm_map entity = new tags_vm_map();
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
entity.setvm_id(Guid.createGuidFromString(rs.getString("vm_id")));
entity.setDefaultDisplayType((Integer) rs.getObject("DefaultDisplayType"));
return entity;
}
};
return getCallsHandler()
.executeReadList(
"GetnVmTagsByVmIdAndDefaultTag", mapper, parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags_vm_map> getTimeLeasedUserVmsByAdGroupAndVmPoolId(Guid adGroupId, Guid vmPoolId) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("groupId", adGroupId)
.addValue("vm_pool_id", vmPoolId);
ParameterizedRowMapper<tags_vm_map> mapper = new ParameterizedRowMapper<tags_vm_map>() {
@Override
public tags_vm_map mapRow(ResultSet rs, int rowNum) throws SQLException {
tags_vm_map entity = new tags_vm_map();
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
entity.setvm_id(Guid.createGuidFromString(rs.getString("vm_id")));
entity.setDefaultDisplayType((Integer) rs.getObject("DefaultDisplayType"));
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
return entity;
}
};
return getCallsHandler()
.executeReadList(
"GetTimeLeasedUsersVmsByGroupIdAndPoolId", mapper, parameterSource);
}
@SuppressWarnings("unchecked")
@Override
public List<tags_vm_pool_map> getVmPoolTagsByVmPoolIdAndAdElementId(NGuid vmPoolId, Guid adElementId) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("ad_id", adElementId)
.addValue("vm_pool_id", vmPoolId);
ParameterizedRowMapper<tags_vm_pool_map> mapper = new ParameterizedRowMapper<tags_vm_pool_map>() {
@Override
public tags_vm_pool_map mapRow(ResultSet rs, int rowNum) throws SQLException {
tags_vm_pool_map entity = new tags_vm_pool_map();
entity.settag_id(Guid.createGuidFromString(rs.getString("tag_id")));
entity.setvm_pool_id(Guid.createGuidFromString(rs.getString("vm_pool_id")));
return entity;
}
};
return getCallsHandler()
.executeReadList(
"GetVmPoolTagsByVmPoolIdAndAdElementId", mapper, parameterSource);
}
}