package org.blog.core.repositoryimpl;
import static org.blog.core.domain.BlogPostProperties.commentSet;
import static org.blog.core.domain.BlogPostProperties.inBlog;
import static org.blog.core.domain.BlogPostProperties.published;
import static org.sculptor.framework.accessapi.ConditionalCriteriaBuilder.criteriaFor;
import java.util.List;
import org.blog.core.domain.Blog;
import org.blog.core.domain.BlogPost;
import org.sculptor.framework.accessapi.ConditionalCriteria;
import org.springframework.stereotype.Repository;
/**
* Repository implementation for BlogPost
*/
@Repository("blogPostRepository")
public class BlogPostRepositoryImpl extends BlogPostRepositoryBase {
public BlogPostRepositoryImpl() {
}
@Override
public List<BlogPost> findPostsWithGreatComments() {
List<ConditionalCriteria> condition = criteriaFor(BlogPost.class).withProperty(commentSet().title())
.ignoreCaseLike(".*great.*").and().withProperty(published()).isNotNull().orderBy(published())
.descending().build();
return findByCondition(condition);
}
@Override
public List<BlogPost> findPostsInBlog(Blog blog) {
List<ConditionalCriteria> condition = criteriaFor(BlogPost.class).withProperty(inBlog()).eq(blog)
.orderBy(published()).descending().build();
return findByCondition(condition);
}
}