package blog.blogEntry;
import java.io.*;
import java.util.logging.*;
import javax.enterprise.context.*;
import javax.enterprise.inject.*;
import javax.inject.*;
import blog.common.*;
import blog.security.*;
import blog.user.*;
@Named @ConversationScoped
public class BlogEntryService implements Serializable
{
private static final long serialVersionUID = 1L;
@Inject private Logger log; // just for demonstration, not actually useful
@Inject private Conversation conversation; // for demonstration; @javax.faces.view.ViewScoped is better
@Inject private Database db;
@Inject @CurrentUser private User user;
private Long id;
private BlogEntry instance;
public Long getId() { return id; }
public void setId(Long id)
{
beginConversation();
log.info("set blog entry id " + id);
this.id = id;
}
@Produces
public BlogEntry getInstance()
{
if (instance == null || id != null && !id.equals(instance.getId())) {
instance = db.find(BlogEntry.class, id);
}
log.info("return blog entry " + instance);
return instance;
}
public void newInstance()
{
beginConversation();
BlogEntry blogEntry = new BlogEntry();
blogEntry.setAuthor(user);
instance = blogEntry;
id = null;
}
private void beginConversation()
{
if (conversation.isTransient()) {
conversation.begin();
log.info("beginConversation conversation with id " + conversation.getId());
}
}
private void endConversation()
{
if (!conversation.isTransient()) {
conversation.end();
}
}
public void save()
{
id = db.save(instance);
}
public void delete()
{
log.info("delete blog entry " + instance);
db.remove(instance);
endConversation();
}
}