package com.idega.block.article.data; import java.util.Collection; import javax.ejb.FinderException; import com.idega.core.file.data.ICFile; import com.idega.data.GenericEntity; import com.idega.data.IDOAddRelationshipException; import com.idega.data.IDORelationshipException; import com.idega.data.IDORemoveRelationshipException; import com.idega.data.query.Column; import com.idega.data.query.Criteria; import com.idega.data.query.MatchCriteria; import com.idega.data.query.OR; import com.idega.data.query.SelectQuery; import com.idega.data.query.Table; import com.idega.user.data.User; public class CommentBMPBean extends GenericEntity implements Comment { private static final long serialVersionUID = 4322088004402422054L; private static final String TABLE_NAME = "IC_COMMENT"; private static final String COLUMN_ANNOUNCED_TO_PUBLIC = "ANNOUNCED_TO_PUBLIC"; private static final String COLUMN_AUTHOR = "AUTHOR"; private static final String COLUMN_COMMENT_HOLDER = "COMMENT_HOLDER"; private static final String COLUMN_DELETED = "DELETED"; private static final String COLUMN_PRIVATE = "PRIVATE"; private static final String COLUMN_REPLY_FOR_COMMENT_ID = "REPLY_FOR_COMMENT"; private static final String COLUMN_ENTRY_ID = "ENTRY_ID"; private static final String COMMENT_READERS = TABLE_NAME + "_READERS"; private static final String COMMENT_ATTACHMENTS = TABLE_NAME + "_ATTACHMENTS"; @Override public String getEntityName() { return TABLE_NAME; } @Override public void initializeAttributes() { addAttribute(getIDColumnName()); addAttribute(COLUMN_ANNOUNCED_TO_PUBLIC, "Announced to public", Boolean.class); addAttribute(COLUMN_AUTHOR, "Author", true, true, Integer.class, MANY_TO_ONE, User.class); addAttribute(COLUMN_COMMENT_HOLDER, "Comment holder", String.class); addAttribute(COLUMN_DELETED, "Deleted", Boolean.class); addAttribute(COLUMN_PRIVATE, "Private", Boolean.class); addAttribute(COLUMN_REPLY_FOR_COMMENT_ID, "Reply for comment", Integer.class); addAttribute(COLUMN_ENTRY_ID, "Entry ID", String.class); addManyToManyRelationShip(User.class, COMMENT_READERS); addManyToManyRelationShip(ICFile.class, COMMENT_ATTACHMENTS); } @Override public boolean isAnnouncedToPublic() { return getBooleanColumnValue(COLUMN_ANNOUNCED_TO_PUBLIC); } @Override public Integer getAuthorId() { return getIntColumnValue(COLUMN_AUTHOR); } @Override public String getCommentHolder() { return getStringColumnValue(COLUMN_COMMENT_HOLDER); } @Override public boolean isDeleted() { return getBooleanColumnValue(COLUMN_DELETED); } @Override public boolean isPrivateComment() { return getBooleanColumnValue(COLUMN_PRIVATE); } @Override public Integer getReplyForCommentId() { return getIntColumnValue(COLUMN_REPLY_FOR_COMMENT_ID); } @Override public void setAnnouncedToPublic(Boolean announcedToPublic) { setColumn(COLUMN_ANNOUNCED_TO_PUBLIC, announcedToPublic); } @Override public void setAuthorId(Integer authorId) { setColumn(COLUMN_AUTHOR, authorId); } @Override public void setCommentHolder(String commentHolder) { setColumn(COLUMN_COMMENT_HOLDER, commentHolder); } @Override public void setDeleted(Boolean deleted) { setColumn(COLUMN_DELETED, deleted); } @Override public void setPrivateComment(Boolean privateComment) { setColumn(COLUMN_PRIVATE, privateComment); } @Override public void setReplyForCommentId(Integer replyForCommentId) { setColumn(COLUMN_REPLY_FOR_COMMENT_ID, replyForCommentId); } @Override public void removeReadBy(User reader) throws IDORemoveRelationshipException { this.idoRemoveFrom(reader); } @Override public void addReadBy(User reader) throws IDOAddRelationshipException { this.idoAddTo(reader); } @Override public Collection<User> getReadBy() { try { return super.idoGetRelatedEntities(User.class); } catch (IDORelationshipException e) { e.printStackTrace(); } return null; } @Override public String getEntryId() { return getStringColumnValue(COLUMN_ENTRY_ID); } @Override public void setEntryId(String entryId) { setColumn(COLUMN_ENTRY_ID, entryId); } Collection<Object> ejbFindAllCommentsForUser(User author, String commentHolder) throws FinderException { Table table = new Table(this); SelectQuery query = new SelectQuery(table); query.addColumn(new Column(table, getIDColumnName())); query.addCriteria(new MatchCriteria(new Column(table, COLUMN_AUTHOR), MatchCriteria.EQUALS, author.getId())); query.addCriteria(new MatchCriteria(new Column(table, COLUMN_COMMENT_HOLDER), MatchCriteria.EQUALS, commentHolder)); addNotDeletedCriteria(query, table); return this.idoFindPKsByQuery(query); } Collection<Object> ejbFindAllCommentsByHolder(String commentHolder) throws FinderException { Table table = new Table(this); SelectQuery query = new SelectQuery(table); query.addColumn(new Column(table, getIDColumnName())); query.addCriteria(new MatchCriteria(new Column(table, COLUMN_COMMENT_HOLDER), MatchCriteria.EQUALS, commentHolder)); addNotDeletedCriteria(query, table); return this.idoFindPKsByQuery(query); } private void addNotDeletedCriteria(SelectQuery query, Table table) { Criteria isNull = new MatchCriteria(new Column(table, COLUMN_DELETED), MatchCriteria.IS, MatchCriteria.NULL); Criteria isFalse = new MatchCriteria(new Column(table, COLUMN_DELETED), MatchCriteria.EQUALS, false); query.addCriteria(new OR(isNull, isFalse)); } @Override public void addAttachment(ICFile attachment) throws IDOAddRelationshipException { this.idoAddTo(attachment); } @Override public Collection<ICFile> getAllAttachments() { try { return super.idoGetRelatedEntities(ICFile.class); } catch (IDORelationshipException e) { e.printStackTrace(); } return null; } @Override public void removeAtttachment(ICFile attachment) throws IDORemoveRelationshipException { this.idoRemoveFrom(attachment); } }