Class CommentSet

  • All Implemented Interfaces:
    Iterable<Comment>, Collection<Comment>, Set<Comment>

    public class CommentSet
    extends AbstractSet<Comment>
    Store comments. Optimized for fast checking of duplicates, and retrieval of ratings. Removes are not really removed, only marked as hidden, so they don't reappear. Duplicates are detected based on an approximate time range. Max size of both elements and total text length is enforced. Supports persistence via save() and File constructor. NOT THREAD SAFE except for iterating AFTER the iterator() call.
    Since:
    0.9.31
    • Constructor Detail

      • CommentSet

        public CommentSet​(File file)
                   throws IOException
        File must be gzipped. Need not be sorted. See Comment.toPersistentString() for format.
        Throws:
        IOException
    • Method Detail

      • save

        public void save​(File file)
                  throws IOException
        File will be gzipped. Not sorted, includes hidden. See Comment.toPersistentString() for format. Sets isModified() to false.
        Throws:
        IOException
      • remove

        public boolean remove​(int id)
        Remove the id as retrieved from Comment.getID(). Only hides the comment, doesn't really remove it. This is for the UI.
        Returns:
        true if present and not previously hidden
      • getLatestCommentTime

        public long getLatestCommentTime()
        Is not adjusted if the latest comment wasn't hidden but is then hidden.
        Returns:
        the timestamp of the most recent non-hidden comment
      • isModified

        public boolean isModified()
        Returns:
        true if modified since instantiation
      • getMyRating

        public int getMyRating()
        Returns:
        0 if none, or 1-5
      • getRatingCount

        public int getRatingCount()
        Returns:
        Number of ratings making up the average rating
      • getAverageRating

        public double getAverageRating()
        Returns:
        0 if none, or 1-5
      • iterator

        public Iterator<Comment> iterator()
        Will be in reverse-sort order, i.e. newest-first. The returned iterator is thread-safe after this call. Changes after this call will not be reflected in the iterator. iter.remove() has no effect on the underlying set. Hidden comments not included. Returned values may be less than indicated in size() due to additional deduping in the iterator.
        Specified by:
        iterator in interface Collection<Comment>
        Specified by:
        iterator in interface Iterable<Comment>
        Specified by:
        iterator in interface Set<Comment>
        Specified by:
        iterator in class AbstractCollection<Comment>