package marubinotto.piggydb.model; import java.util.Collection; import marubinotto.piggydb.model.auth.User; import marubinotto.piggydb.model.base.Entity; import marubinotto.piggydb.model.exception.InvalidTaggingException; public interface Classifiable extends Entity { public Classification getClassification(); public boolean canChangeClassification(User user); public void addTagByUser(Tag tag, User user) throws InvalidTaggingException; public void addTagByUser(String name, TagRepository tagRepository, User user) throws InvalidTaggingException, Exception; public boolean canAddTag(Tag tag, User user); public boolean canAddTag(String tagName, User user); public void updateTagsByUser( Collection<String> tagNames, TagRepository tagRepository, User user) throws InvalidTaggingException, Exception; public void removeTagByUser(String name, User user); public boolean canRemoveTag(Tag tag, User user); public void removeTagsByUserClassifiedAs(String tagName, User user); }