package org.jboss.seam.example.seamspace;
import static org.jboss.seam.ScopeType.CONVERSATION;
import java.util.ArrayList;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.End;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.Scope;
@Scope(CONVERSATION)
@Name("blog")
public class BlogAction
{
private String name;
private Integer blogId;
@In
private EntityManager entityManager;
@In(required = false) @Out(required = false)
private MemberBlog selectedBlog;
@In(required = false)
private Member authenticatedMember;
/**
* Used to read a single blog entry for a member
*/
@Factory("selectedBlog")
@Begin(join=true)
public void getBlog()
{
try
{
selectedBlog = (MemberBlog) entityManager.createQuery(
"from MemberBlog b where b.blogId = :blogId and b.member.memberName = :memberName")
.setParameter("blogId", blogId)
.setParameter("memberName", name)
.getSingleResult();
}
catch (NoResultException ex) { }
}
@Begin
public void createEntry()
{
selectedBlog = new MemberBlog();
}
@End
public void saveEntry()
{
selectedBlog.setMember(authenticatedMember);
selectedBlog.setEntryDate(new Date());
selectedBlog.setComments(new ArrayList<BlogComment>());
entityManager.persist(selectedBlog);
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public Integer getBlogId()
{
return blogId;
}
public void setBlogId(Integer blogId)
{
this.blogId = blogId;
}
}