diff --git a/YACOSCore/ejbModule/org/yacos/core/forum/IMessageManager.java b/YACOSCore/ejbModule/org/yacos/core/forum/IMessageManager.java new file mode 100644 index 0000000..63530af --- /dev/null +++ b/YACOSCore/ejbModule/org/yacos/core/forum/IMessageManager.java @@ -0,0 +1,13 @@ +package org.yacos.core.forum; + +import java.util.List; + +import javax.ejb.Remote; + +@Remote +public interface IMessageManager { + + public Message addMessage(String message, String title, Integer articleId, String userLogin); + public List getMessagesForArticle(Integer articleId); + +} diff --git a/YACOSCore/ejbModule/org/yacos/core/forum/Message.java b/YACOSCore/ejbModule/org/yacos/core/forum/Message.java new file mode 100644 index 0000000..cc48faf --- /dev/null +++ b/YACOSCore/ejbModule/org/yacos/core/forum/Message.java @@ -0,0 +1,116 @@ +package org.yacos.core.forum; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.yacos.core.article.Article; +import org.yacos.core.users.User; + +@Entity +public class Message implements Serializable { + + /** + * + */ + private static final long serialVersionUID = -8960098137182930392L; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + private Integer id; + private String message; + private String title; + + @Temporal(TemporalType.DATE) + private Date dateMessage; + + @ManyToOne(targetEntity=Article.class) + @JoinColumn(name="article_id",nullable=false) + private Article article; + + @ManyToOne(targetEntity=User.class) + @JoinColumn(name="user_id",nullable=false) + private User user; + + public Message() {} + + public Message(Integer id, String message, String title, Article article, User user) { + this.id = id; + this.message = message; + this.title = title; + this.dateMessage = new Date(); + this.article = article; + this.user = user; + } + + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Integer getId() { + return id; + } + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public void setId(Integer id) { + this.id = id; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + @Temporal(TemporalType.DATE) + public Date getDateMessage() { + return dateMessage; + } + + @Temporal(TemporalType.DATE) + public void setDateMessage(Date dateMessage) { + this.dateMessage = dateMessage; + } + + @ManyToOne(targetEntity=Article.class) + @JoinColumn(name="article_id",nullable=false) + public Article getArticle() { + return article; + } + + @ManyToOne(targetEntity=Article.class) + @JoinColumn(name="article_id",nullable=false) + public void setArticle(Article article) { + this.article = article; + } + + @ManyToOne(targetEntity=User.class) + @JoinColumn(name="user_id",nullable=false) + public User getUser() { + return user; + } + + @ManyToOne(targetEntity=User.class) + @JoinColumn(name="user_id",nullable=false) + public void setUser(User user) { + this.user = user; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} diff --git a/YACOSCore/ejbModule/org/yacos/core/forum/MessageManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/forum/MessageManagerBean.java new file mode 100644 index 0000000..404a2e5 --- /dev/null +++ b/YACOSCore/ejbModule/org/yacos/core/forum/MessageManagerBean.java @@ -0,0 +1,64 @@ +package org.yacos.core.forum; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import javax.annotation.Resource; +import javax.ejb.Stateless; +import javax.ejb.TransactionManagement; +import javax.ejb.TransactionManagementType; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; +import javax.transaction.UserTransaction; +import org.yacos.core.article.Article; +import org.yacos.core.users.User; + +@Stateless +@TransactionManagement(TransactionManagementType.BEAN) +public class MessageManagerBean implements IMessageManager, Serializable { + + /** + * + */ + private static final long serialVersionUID = -2669902949630827480L; + + @PersistenceContext + EntityManager em; + @Resource + UserTransaction ut; + + public Message addMessage(String message, String title, Integer articleId, String userLogin) { + try { + ut.begin(); + Message m = new Message(); + m.setMessage(message); + m.setTitle(title); + m.setDateMessage(new Date()); + User user = em.find(User.class, userLogin); + m.setUser(user); + Article a = em.find(Article.class, articleId); + m.setArticle(a); + em.persist(m); + ut.commit(); + + return m; + } catch (Exception e) { + try { + ut.rollback(); + e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + return null; + } + + @SuppressWarnings("unchecked") + public List getMessagesForArticle(Integer articleId) { + Article a = em.find(Article.class, articleId); + Query query = em.createQuery("from Message m WHERE article = ? ORDER BY m.dateMessage"); + query.setParameter(1, a); + return query.getResultList(); + } +}