package org.dicadeveloper.weplantaforest.articlemanager.articles; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import org.dicadeveloper.weplantaforest.articlemanager.user.User; import org.dicadeveloper.weplantaforest.articlemanager.views.Views; import org.dicadeveloper.weplantaforest.common.support.Language; import org.springframework.hateoas.Identifiable; import com.fasterxml.jackson.annotation.JsonView; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter public class Article implements Identifiable<Long> { public enum ArticleType { HOME, WHAT_WE_DO, NEWS, PARTNER, HELP_US, FAQ, LINKS, ABOUT_US, DISCLAIMER, KNOWLEDGEBASE, OUR_GOALS, OUR_CODEX, THE_IDEA, THE_TEAM, JOBS, IMPRESS, PRESS, NEWSLETTER, FINANCIALS, BLOG; } @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "_articleId") @JsonView({ Views.UserArticleView.class, Views.UserArticleShortView.class, Views.BackofficeArticleOverview.class, Views.BackofficeArticleView.class}) private Long id; @Column(name = "_createdOn") @JsonView({ Views.UserArticleView.class, Views.BackofficeArticleOverview.class, Views.BackofficeArticleView.class}) private Long createdOn; @Column(name = "_lastEditedOn") @JsonView({ Views.UserArticleView.class, Views.BackofficeArticleOverview.class}) private Long lastEditedOn; @Column(name = "_articleType") @JsonView({ Views.UserArticleView.class, Views.BackofficeArticleOverview.class, Views.BackofficeArticleView.class}) private ArticleType articleType; @Column(name = "_lang", nullable = false) @JsonView({Views.BackofficeArticleOverview.class, Views.BackofficeArticleView.class}) private Language lang; @Column(name = "_showFull", nullable = false) @JsonView({ Views.UserArticleView.class, Views.BackofficeArticleView.class}) private boolean showFull; @Column(name = "_title") @JsonView({ Views.UserArticleView.class, Views.UserArticleShortView.class, Views.BackofficeArticleOverview.class, Views.BackofficeArticleView.class}) private String title; @Column(name = "_intro", columnDefinition = "TEXT") @JsonView({ Views.UserArticleView.class, Views.UserArticleShortView.class, Views.BackofficeArticleOverview.class, Views.BackofficeArticleView.class}) private String intro; @Column(name = "_imageFileName") @JsonView({ Views.UserArticleView.class, Views.UserArticleShortView.class, Views.BackofficeArticleView.class}) private String imageFileName; @Column(name = "_imageCopyrights") @JsonView({ Views.UserArticleView.class, Views.BackofficeArticleView.class}) private String imageDescription; @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "_owner__userId", nullable = false) @JsonView({ Views.UserArticleView.class, Views.UserArticleShortView.class, Views.BackofficeArticleOverview.class, Views.BackofficeArticleView.class}) private User owner; @Column(name = "_visible") @JsonView(Views.BackofficeArticleView.class) private boolean visible; @OneToMany(mappedBy = "article", fetch = FetchType.LAZY) @JsonView({ Views.UserArticleView.class, Views.BackofficeArticleView.class}) private List<Paragraph> paragraphs; }