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.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; /** * <code>TagDAO</code> 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 user group tags by the given ids. * * @param ids * the ids * @return the list of tags */ List<tags> getAllUserGroupTagsWithIds(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 VDS tags with the given tag ids. * * @param ids * the tag ids * @return the list of tags */ List<tags> getAllForVdsWithIds(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 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. * * @param id */ void remove(Guid id); // TODO these APIs will be eliminated when we move to hibernate void attachUserGroupToTag(tags_user_group_map map); tags_user_group_map getTagUserGroupByGroupIdAndByTagId(Guid tagId, Guid groupId); void detachUserGroupFromTag(Guid tagId, Guid groupId); List<tags_user_group_map> getTagUserGroupMapsForTagName(String tagName); tags_user_map getTagUserByTagIdAndByuserId(Guid tagId, Guid userId); void attachUserToTag(tags_user_map tagUserMap); void detachUserFromTag(Guid tagId, Guid userId); List<tags_user_map> getTagUserMapByTagName(String tagName); tags_vds_map getTagVdsByTagIdAndByVdsId(Guid tagId, Guid vdsId); void attachVdsToTag(tags_vds_map tagVdsMap); void detachVdsFromTag(Guid tagId, Guid vdsId); List<tags_vds_map> getTagVdsMapByTagName(String tagName); tags_vm_map getTagVmByTagIdAndByVmId(Guid tagId, Guid vmId); void attachVmToTag(tags_vm_map tagVmMap); void updateDefaultDisplayForVmTag(tags_vm_map tagsVmMap); void detachVmFromTag(Guid tagId, Guid vmId); List<tags_vm_map> getTagVmMapByTagName(String tagName); List<tags_vm_map> getTagVmMapByVmIdAndDefaultTag(Guid vmid); List<tags_vm_map> getTimeLeasedUserVmsByAdGroupAndVmPoolId(Guid adGroupId, Guid vmPoolId); List<tags_vm_pool_map> getVmPoolTagsByVmPoolIdAndAdElementId(NGuid vmPoolId, Guid adElementId); }