package org.ovirt.engine.core.dao;
import java.util.List;
import org.ovirt.engine.core.common.businessentities.Tags;
import org.ovirt.engine.core.common.businessentities.TagsTemplateMap;
import org.ovirt.engine.core.common.businessentities.TagsUserGroupMap;
import org.ovirt.engine.core.common.businessentities.TagsUserMap;
import org.ovirt.engine.core.common.businessentities.TagsVdsMap;
import org.ovirt.engine.core.common.businessentities.TagsVmMap;
import org.ovirt.engine.core.compat.Guid;
/**
* {@code TagDao} defines a type for performing CRUD operations on instances of {@link Tags}.
*/
public interface TagDao extends Dao {
/**
* Retrieves the tag with the specified id.
*
* @param id
* the tag id
* @return the tag
*/
Tags get(Guid id);
/**
* Retrieves the tag with the specified name.
*
* @param name
* the tag name
* @return the tag
*/
Tags getByName(String name);
/**
* Retrieves all tags.
*
* @return the list of tags
*/
List<Tags> getAll();
/**
* Retrieves all tags with the given parent id.
*
* @param id
* the parent id
* @return the list of tags
*/
List<Tags> getAllForParent(Guid id);
/**
* Retrieves the list of tags for the given user group ids.
*
* @param ids
* the group ids
* @return the list of tags
*/
List<Tags> getAllForUserGroups(String ids);
/**
* Retrieves the list of tags for the given VDS ids.
*
* @param ids
* the VDS ids
* @return the list of tags
*/
List<Tags> getAllForVds(String ids);
/**
* Retrieves the list of tags for the given VM ids.
*
* @param ids
* the VM ids
* @return the list of tags
*/
List<Tags> getAllForVm(String ids);
/**
* Retrieves the list of tags for the given Template ids.
*
* @param ids
* the Template ids
* @return the list of tags
*/
List<Tags> getAllForTemplate(String ids);
/**
* Retrieves the list of VM tags for the given tag ids.
*
* @param ids
* the tag ids
* @return the list of tags
*/
List<Tags> getAllVmTagsWithIds(String ids);
/**
* Retrieves the list of tags for the given VM pool ids.
*
* @param ids
* the pool ids
* @return the list of tags
*/
List<Tags> getAllForVmPools(String ids);
/**
* Retrieves the list of tags for a given user ids.
*
* @param ids
* the user ids
* @return the list of tags
*/
List<Tags> getAllForUsers(String ids);
/**
* Retrieves the list of user tags for a given tag id.
*
* @param ids
* the tag ids
* @return the list of tags
*/
List<Tags> getAllForUsersWithIds(String ids);
/**
* Saves the supplied tag.
*
* @param tag
* the tag
*/
void save(Tags tag);
/**
* Updates the supplied tag.
*
* @param tag
* the tag
*/
void update(Tags tag);
/**
* Removes the tag with the specified id.
*/
void remove(Guid id);
void attachUserGroupToTag(TagsUserGroupMap map);
TagsUserGroupMap getTagUserGroupByGroupIdAndByTagId(Guid tagId, Guid groupId);
void detachUserGroupFromTag(Guid tagId, Guid groupId);
TagsUserMap getTagUserByTagIdAndByuserId(Guid tagId, Guid userId);
void attachUserToTag(TagsUserMap tagUserMap);
void detachUserFromTag(Guid tagId, Guid userId);
TagsVdsMap getTagVdsByTagIdAndByVdsId(Guid tagId, Guid vdsId);
void attachVdsToTag(TagsVdsMap tagVdsMap);
void detachVdsFromTag(Guid tagId, Guid vdsId);
TagsVmMap getTagVmByTagIdAndByVmId(Guid tagId, Guid vmId);
void attachVmToTag(TagsVmMap tagVmMap);
void updateDefaultDisplayForVmTag(TagsVmMap tagsVmMap);
void detachVmFromTag(Guid tagId, Guid vmId);
List<TagsVmMap> getTagVmMapByVmIdAndDefaultTag(Guid vmid);
TagsTemplateMap getTagTemplateByTagIdAndByTemplateId(Guid tagId, Guid templateId);
void attachTemplateToTag(TagsTemplateMap tagVmMap);
void detachTemplateFromTag(Guid tagId, Guid vmId);
}