/** * 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.persistence; import java.util.Date; import java.util.List; /** * This is the interface for the persistence layer of the blog * application. This persistence layer is registered in the service * registry and is used by the main application layer. * */ public interface BlogPersistenceService { /** * Get all the blog entries in the data store * @return a list of BlogEntry objects */ public List<? extends Entry> getAllBlogEntries(); /** * Get the number of blog entries in the data store * @return the number of blog entries */ public int getNoOfBlogEntries(); /** * Get the first N most recent posts starting from post X * @param firstPostIndex - The index of the first post to be retrieved * @param no - The number of posts to be retrieved starting from firstPostIndex */ public List<? extends Entry> getBlogEntries(int firstPostIndex, int no); /** * Get all the blog entries made by a particular * author * * @param emailAddress the author's email address * @return a list of BlogEntry objects */ public List<? extends Entry> getBlogsForAuthor(String emailAddress); /** * Get a BlogEntry that has a given title * @param title the title of interest * @return A BlogEntry with a specific title (or null if no entry exists in the * data store) */ public Entry findBlogEntryByTitle(String title); /** * Get BlogEntries created or modified between two specified dates * @param start The Date defining the start of the time period * @param end The Date defining the end of the time period * @return A list of BlogEntry objects */ public List<? extends Entry> getBlogEntriesModifiedBetween(Date start, Date end); /** * Obtain a given Blog post using its unique id. * * @param postId the posts unique id. * @return the Blog post. */ public Entry getBlogEntryById(long postId); /** * Get the details for an author * @param emailAddress the Author's email address * @return An Author object */ public Author getAuthor(String emailAddress); /** * Get all authors in the database * @return a List of Authors */ public List<? extends Author> getAllAuthors(); /** * Create an author in the database * * @param emailAddress * The author's email address * @param dob * The author's date of birth * @param name * The author's name * @param displayName * ?? * @param bio * The author's bio. */ public void createAuthor(String email, Date dob, String name, String displayName, String bio); /** * Create an Blog post in the database * * @param a * The author * @param title * The title of the post * @param blogText * The text of the post * @param tags * ?? */ public void createBlogPost(String email, String title, String blogText, List<String> tags); /** * Update an author in the database * @param */ public void updateAuthor(String email, Date dob, String name, String displayName, String bio); /** * Update an post in the database * * @param email The author's email * @param title The title of the post * @param blogText The text of the blog * @param tags The list of tags * @param updatedDate The date the update was made */ public void updateBlogEntry(long id, String email, String title, String blogText, List<String> tags, Date updatedDate); /** * Remove the author with the specified email address * * @param emailAddress the email address of the author to remove */ public void removeAuthor(String emailAddress); /** * Remove the specified BlogEntry, note that this must be a BlogEntry returned by * this service. * * @param id the unique id of the blog entry to remove */ public void removeBlogEntry(long id); }