content: /**
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *   http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   * KIND, either express or implied.  See the License for the
   * specific language governing permissions and limitations
   * under the License.
   */
  package org.apache.aries.samples.blog.api;
  
  import java.util.List;
  
  public interface BloggingService
  {
    /**
     *  Get the blog
     *  @return the title of the Blog
     */
    String getBlogTitle();
  
    /** 
     * Get the author associated with a given email address.
     * 
     * @param email the email address of interest
     * @return the blog author with the supplied email address
     */
    BlogAuthor getBlogAuthor(String email);
    
    /**
     * Get the blog post with the specified id.
     * 
     * @param id the blog entry id
     * @return the blog post
     */
    BlogEntry getBlogEntry(long id);
  
  
    /**
     * Update the attributes of an author.
     * 
     * @param email the email address of the author being updated
     * @param nickName the display name for this author
     * @param name the full name for this author
     * @param bio the biography for this author
     * @param dob the date of birth for this author
     */
    void updateBlogAuthor(String email, String nickName, String name, String bio, String dob);
    
    /**
     * Get the number of entries(posts) in the blog
     * @return the number of posts.
     */
    public int getNoOfEntries(); 
    
    /**
     * Get the a number of entries starting at the teh first index
     * @param firstPostIndex
     * @param noOfPosts
     * @return a list of BlogEntries
     */
    public List<? extends BlogEntry> getBlogEntries(int firstPostIndex, int noOfPosts);
    
    /**
     * Get all the blog entries
     * @return a lost of BlogEntrys
     */
    public List<? extends BlogEntry> getAllBlogEntries();
  
    /**
     * Create a new author.
     * 
     * @param email the author's email address
     * @param nickName the author's display name
     * @param name the author's full name
     * @param bio the author's biography
     * @param dob the author's date of birth
     */
    void createBlogAuthor(String email, String nickName, String name, String bio, String dob);
    
    /**
     * 
     * @param email the email address of the author
     * @param title the title of the post
     * @param blogText the test of the post
     * @param tags list of tags associated with the post
     */
    void createBlogEntry(String email, String title, String blogText, String tags); 
    
    /**
     * Retrieve the state of the blog commenting service
     * 
     * @return true if available else false
     */
    boolean isCommentingAvailable();
    
    /**
     * Create a comment
     * @param text
     * @param email
     * @param entryId
     */
    void createBlogComment(String text, String email, long entryId);
    
    /**
     * Get the comments associated with an entry
     * @param entry
     * @return a list of comments for an entry (post)
     */
    List <? extends BlogComment> getCommentsForEntry(BlogEntry entry);
    
    
    
    
  }
  