package marubinotto.piggydb.model;
import java.util.List;
import marubinotto.piggydb.model.auth.Password;
import marubinotto.piggydb.model.auth.User;
import marubinotto.util.Size;
import org.apache.commons.fileupload.FileItem;
public interface Fragment extends Classifiable, Password {
public final static long ID_HOME = 0L;
public final static int TITLE_MAX_LENGTH = 150;
public Fragment copyForUpdate();
public String toStringWithDescendents();
//
// Title
//
public String makeHeadline();
public String makeHeadline(int maxLength);
public boolean hasMoreThanHeadline();
public String getTitle();
public void setTitleByUser(String title, User user);
public boolean canChangeTitle(User user);
//
// Content
//
public String getContent();
public String makeContentHeadline();
public void setContentByUser(String content, User user);
public void setFileInput(FileItem fileInput);
public FileItem getFileInput();
public boolean isFile();
public String getFileName();
public String getFileType();
public String getMimeType();
public boolean isImageFile();
public Size getFileSize();
//
// Special
//
public boolean isHome();
//
// Tagged
//
public boolean isPublic();
public boolean isTrash();
public boolean isUserFragment();
//
// Relationships
//
public List<FragmentRelation> getParentRelations();
public List<FragmentRelation> navigateToOneWayParents(Long contextRelationId);
public List<Fragment> getParents();
public FragmentRelation getParentRelationByParentId(long parentId);
public boolean hasChildren();
public boolean hasChildren(boolean publicOnly);
public List<FragmentRelation> getChildRelations();
public List<FragmentRelation> getChildRelations(boolean publicOnly);
public boolean isNavigableToChildren(FragmentRelation contextRelation);
public List<FragmentRelation> navigateToChildren(FragmentRelation contextRelation);
public List<FragmentRelation> navigateToChildren(Long contextParentId);
public List<Fragment> getChildren();
//
// As a tag
//
public boolean isTag();
public Long getTagId();
public Tag asTag();
public void setAsTagByUser(boolean asTag, User user);
public void validateAsTag(User user, TagRepository tagRepository)
throws Exception;
}