Package sagan.blog

Source Code of sagan.blog.PostBuilder

package sagan.blog;

import sagan.team.MemberProfile;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class PostBuilder {

    private Long id;
    private String title;
    private MemberProfile author;
    private PostCategory category;
    private String rawContent;
    private String renderedContent;
    private String renderedSummary;
    private Date createdAt;
    private Date publishAt;
    private boolean broadcast;
    private boolean draft;

    public PostBuilder() {
        title = "My Post";
        author = new MemberProfile();
        author.setUsername("test");
        category = PostCategory.ENGINEERING;
        rawContent = "post body";
        renderedContent = "post body";
        renderedSummary = "summary";
        broadcast = false;
        publishAt = new Date(System.currentTimeMillis());
        draft = false;
    }

    public static PostBuilder post() {
        return new PostBuilder();
    }

    public PostBuilder id(Long id) {
        this.id = id;
        return this;
    }

    public PostBuilder author(MemberProfile author) {
        this.author = author;
        return this;
    }

    public PostBuilder author(String username, String name) {
        author.setUsername(username);
        author.setName(name);
        return this;
    }

    public PostBuilder title(String title) {
        this.title = title;
        return this;
    }

    public PostBuilder rawContent(String rawContent) {
        this.rawContent = rawContent;
        return this;
    }

    public PostBuilder renderedContent(String renderedContent) {
        this.renderedContent = renderedContent;
        return this;
    }

    public PostBuilder renderedSummary(String renderedSummary) {
        this.renderedSummary = renderedSummary;
        return this;
    }

    public PostBuilder createdAt(Date date) {
        createdAt = date;
        return this;
    }

    public PostBuilder createdAt(String dateString) throws ParseException {
        createdAt = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(dateString);
        return this;
    }

    public PostBuilder category(PostCategory category) {
        this.category = category;
        return this;
    }

    public PostBuilder draft() {
        draft = true;
        return this;
    }

    public PostBuilder unscheduled() {
        publishAt = null;
        return this;
    }

    public PostBuilder publishAt(Date date) {
        publishAt = date;
        return this;
    }

    public PostBuilder publishAt(String dateString) throws ParseException {
        return publishAt(new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(dateString));
    }

    public PostBuilder publishYesterday() {
        long oneDay = 1000 * 60 * 60 * 24;
        return publishAt(new Date(System.currentTimeMillis() - oneDay));
    }

    public PostBuilder isBroadcast() {
        broadcast = true;
        return this;
    }

    public Post build() {
        Post post = new Post(id, title, rawContent, category);
        post.setAuthor(author);
        post.setRenderedContent(renderedContent);
        post.setRenderedSummary(renderedSummary);
        if (createdAt != null) {
            post.setCreatedAt(createdAt);
        }
        post.setBroadcast(broadcast);
        post.setDraft(draft);
        post.setPublishAt(publishAt);

        return post;
    }

}
TOP

Related Classes of sagan.blog.PostBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.