// Path: src/main/java/com/hantsylabs/restexample/springmvc/domain/Post.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// @Entity
// @Table(name = "posts")
// public class Post implements Serializable {
// 
//     /**
//      *
//      */
//     private static final long serialVersionUID = 1L;
// 
//     public enum Status {
// 
//         DRAFT,
//         PUBLISHED
//     }
// 
//     public Post(String title, String content) {
//         this.title = title;
//         this.content = content;
//     }
//     
//     @Id()
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "id")
//     private Long id;
// 
//     @Column(name = "title")
//     private String title;
// 
//     @Column(name = "content")
//     @Size(max = 2000)
//     private String content;
// 
//     @Column(name = "status")
//     @Enumerated
//     private Status status = Status.DRAFT;
// 
//     @ManyToOne
//     @JoinColumn(name = "created_by")
//     @CreatedBy
//     private User createdBy;
// 
//     @Column(name = "created_date")
//     @CreatedDate
//     private LocalDateTime createdDate;
// 
//     @ManyToOne
//     @JoinColumn(name = "last_modified_by")
//     @LastModifiedBy
//     private User lastModifiedBy;
// 
//     @Column(name = "last_modified_date")
//     @LastModifiedDate
//     private LocalDateTime lastModifiedDate;
// 
// }


import com.hantsylabs.restexample.springmvc.domain.Post;
import com.hantsylabs.restexample.springmvc.domain.Post_;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.util.StringUtils;
package com.hantsylabs.restexample.springmvc.repository;


/**
 *
 * @author Hantsy Bai<hantsy@gmail.com>
 *
 */
public class PostSpecifications {

    private PostSpecifications() {}

// Path: src/main/java/com/hantsylabs/restexample/springmvc/domain/Post.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// @Entity
// @Table(name = "posts")
// public class Post implements Serializable {
// 
//     /**
//      *
//      */
//     private static final long serialVersionUID = 1L;
// 
//     public enum Status {
// 
//         DRAFT,
//         PUBLISHED
//     }
// 
//     public Post(String title, String content) {
//         this.title = title;
//         this.content = content;
//     }
//     
//     @Id()
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "id")
//     private Long id;
// 
//     @Column(name = "title")
//     private String title;
// 
//     @Column(name = "content")
//     @Size(max = 2000)
//     private String content;
// 
//     @Column(name = "status")
//     @Enumerated
//     private Status status = Status.DRAFT;
// 
//     @ManyToOne
//     @JoinColumn(name = "created_by")
//     @CreatedBy
//     private User createdBy;
// 
//     @Column(name = "created_date")
//     @CreatedDate
//     private LocalDateTime createdDate;
// 
//     @ManyToOne
//     @JoinColumn(name = "last_modified_by")
//     @LastModifiedBy
//     private User lastModifiedBy;
// 
//     @Column(name = "last_modified_date")
//     @LastModifiedDate
//     private LocalDateTime lastModifiedDate;
// 
// }


// Path: src/main/java/com/hantsylabs/restexample/springmvc/repository/PostSpecifications.java
import com.hantsylabs.restexample.springmvc.domain.Post;
import com.hantsylabs.restexample.springmvc.domain.Post_;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.util.StringUtils;

package com.hantsylabs.restexample.springmvc.repository;


/**
 *
 * @author Hantsy Bai<hantsy@gmail.com>
 *
 */
public class PostSpecifications {

    private PostSpecifications() {}

    public static Specification<Post> filterByKeywordAndStatus(