package org.zstack.tag;
import org.zstack.header.message.APICreateMessage;
import org.zstack.header.tag.SystemTagCreateMessageValidator;
import org.zstack.header.tag.SystemTagInventory;
import org.zstack.header.tag.TagInventory;
import java.util.Collection;
import java.util.List;
/**
*/
public interface TagManager {
SystemTagInventory createNonInherentSystemTag(String resourceUuid, String tag, String resourceType);
SystemTagInventory createInherentSystemTag(String resourceUuid, String tag, String resourceType);
void createInherentSystemTags(List<String> sysTags, String resourceUuid, String resourceType);
void createNonInherentSystemTags(List<String> sysTags, String resourceUuid, String resourceType);
void createTagsFromAPICreateMessage(APICreateMessage msg, String resourceUuid, String resourceType);
TagInventory createSysTag(String resourceUuid, String tag, String resourceType);
TagInventory createUserTag(String resourceUuid, String tag, String resourceType);
TagInventory createSysTag(String resourceUuid, Enum tag, String resourceType);
TagInventory createUserTag(String resourceUuid, Enum tag, String resourceType);
void copySystemTag(String srcResourceUuid, String srcResourceType, String dstResourceUuid, String dstResourceType);
SystemTagInventory updateSystemTag(String tagUuid, String newTag);
List<String> findSystemTags(String resourceUuid);
List<String> findUserTags(String resourceUuid);
boolean hasSystemTag(String resourceUuid, String tag);
boolean hasSystemTag(String resourceUuid, Enum tag);
void deleteSystemTag(String tag, String resourceUuid, String resourceType, Boolean inherit);
void deleteSystemTagUseLike(String tag, String resourceUuid, String resourceType, Boolean inherit);
Collection<String> getManagedEntityNames();
void validateSystemTag(String resourceUuid, String resourceType, String tag);
void installCreateMessageValidator(String resourceType, SystemTagCreateMessageValidator validator);
}