// Path: app/src/main/java/de/codecentric/dao/CommentDao.java
// public interface CommentDao {
// 
//     public List<Comment> getCommentsBySessionId(Long sessionId);
// 
//     public List<TimelineEntry> getRecentComments();
// 
//     public void saveComment(Comment comment);
// 
// }
// 
// Path: app/src/main/java/de/codecentric/domain/Comment.java
// @Entity(name = "comment")
// @NamedQueries({ @NamedQuery(name = "findCommentForSession", query = "from comment where sessionId=:sessionId order by date desc"),
//                 @NamedQuery(name = "findRecentComments", query = "select c.date, c.author, c.text, s.id, s.title from comment c, session s where c.sessionId = s.id order by c.date desc") })
// public class Comment {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     private long id;
// 
//     private Date date;
// 
//     private String author;
// 
//     @Column(length = 2048)
//     private String text;
//     private Long sessionId;
// 
//     public Comment() {
//     }
// 
//     public Comment(Date date, String author, String text, Long sessionId) {
//         super();
//         this.date = date;
//         this.author = author;
//         this.text = text;
//         this.sessionId = sessionId;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public Date getDate() {
//         return date;
//     }
// 
//     public void setDate(Date date) {
//         this.date = date;
//     }
// 
//     public String getAuthor() {
//         return author;
//     }
// 
//     public String getProcessedAuthor() {
//         return author;
//         // return TwitterLinkCreator.process(author);
//     }
// 
//     public void setAuthor(String author) {
//         this.author = author;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// 
//     public Long getSessionId() {
//         return sessionId;
//     }
// 
//     public void setSessionId(Long sessionId) {
//         this.sessionId = sessionId;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((text == null) ? 0 : text.hashCode());
//         result = prime * result + ((author == null) ? 0 : author.hashCode());
//         result = prime * result + ((date == null) ? 0 : date.hashCode());
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null) {
//             return false;
//         }
//         if (getClass() != obj.getClass()) {
//             return false;
//         }
//         Comment other = (Comment) obj;
//         if (text == null) {
//             if (other.text != null) {
//                 return false;
//             }
//         } else if (!text.equals(other.text)) {
//             return false;
//         }
//         if (author == null) {
//             if (other.author != null) {
//                 return false;
//             }
//         } else if (!author.equals(other.author)) {
//             return false;
//         }
//         if (date == null) {
//             if (other.date != null) {
//                 return false;
//             }
//         } else if (!date.equals(other.date)) {
//             return false;
//         }
//         return true;
//     }
// }
// 
// Path: app/src/main/java/de/codecentric/model/TimelineEntry.java
// public class TimelineEntry {
// 
//     private String date;
//     private String user;
//     private String comment;
//     private String sessionId;
//     private String sessionTitle;
// 
//     public TimelineEntry(String date, String user, String comment, String sessionId, String sessionTitle) {
//         super();
//         this.date = date;
//         this.user = user;
//         this.comment = comment;
//         this.sessionId = sessionId;
//         this.sessionTitle = sessionTitle;
//     }
// 
//     public String getDate() {
//         return date;
//     }
// 
//     public String getUser() {
//         return user;
//     }
// 
//     public String getProcessedUser() {
//         return TwitterLinkCreator.process(user);
//     }
// 
//     public String getComment() {
//         return comment;
//     }
// 
//     public String getSessionId() {
//         return sessionId;
//     }
// 
//     public String getSessionTitle() {
//         return sessionTitle;
//     }
// 
// }


import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import de.codecentric.dao.CommentDao;
import de.codecentric.domain.Comment;
import de.codecentric.model.TimelineEntry;

package de.codecentric.dao.impl;





@Repository("commentDao")
@Transactional

// Path: app/src/main/java/de/codecentric/dao/CommentDao.java
// public interface CommentDao {
// 
//     public List<Comment> getCommentsBySessionId(Long sessionId);
// 
//     public List<TimelineEntry> getRecentComments();
// 
//     public void saveComment(Comment comment);
// 
// }
// 
// Path: app/src/main/java/de/codecentric/domain/Comment.java
// @Entity(name = "comment")
// @NamedQueries({ @NamedQuery(name = "findCommentForSession", query = "from comment where sessionId=:sessionId order by date desc"),
//                 @NamedQuery(name = "findRecentComments", query = "select c.date, c.author, c.text, s.id, s.title from comment c, session s where c.sessionId = s.id order by c.date desc") })
// public class Comment {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     private long id;
// 
//     private Date date;
// 
//     private String author;
// 
//     @Column(length = 2048)
//     private String text;
//     private Long sessionId;
// 
//     public Comment() {
//     }
// 
//     public Comment(Date date, String author, String text, Long sessionId) {
//         super();
//         this.date = date;
//         this.author = author;
//         this.text = text;
//         this.sessionId = sessionId;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public Date getDate() {
//         return date;
//     }
// 
//     public void setDate(Date date) {
//         this.date = date;
//     }
// 
//     public String getAuthor() {
//         return author;
//     }
// 
//     public String getProcessedAuthor() {
//         return author;
//         // return TwitterLinkCreator.process(author);
//     }
// 
//     public void setAuthor(String author) {
//         this.author = author;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// 
//     public Long getSessionId() {
//         return sessionId;
//     }
// 
//     public void setSessionId(Long sessionId) {
//         this.sessionId = sessionId;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((text == null) ? 0 : text.hashCode());
//         result = prime * result + ((author == null) ? 0 : author.hashCode());
//         result = prime * result + ((date == null) ? 0 : date.hashCode());
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null) {
//             return false;
//         }
//         if (getClass() != obj.getClass()) {
//             return false;
//         }
//         Comment other = (Comment) obj;
//         if (text == null) {
//             if (other.text != null) {
//                 return false;
//             }
//         } else if (!text.equals(other.text)) {
//             return false;
//         }
//         if (author == null) {
//             if (other.author != null) {
//                 return false;
//             }
//         } else if (!author.equals(other.author)) {
//             return false;
//         }
//         if (date == null) {
//             if (other.date != null) {
//                 return false;
//             }
//         } else if (!date.equals(other.date)) {
//             return false;
//         }
//         return true;
//     }
// }
// 
// Path: app/src/main/java/de/codecentric/model/TimelineEntry.java
// public class TimelineEntry {
// 
//     private String date;
//     private String user;
//     private String comment;
//     private String sessionId;
//     private String sessionTitle;
// 
//     public TimelineEntry(String date, String user, String comment, String sessionId, String sessionTitle) {
//         super();
//         this.date = date;
//         this.user = user;
//         this.comment = comment;
//         this.sessionId = sessionId;
//         this.sessionTitle = sessionTitle;
//     }
// 
//     public String getDate() {
//         return date;
//     }
// 
//     public String getUser() {
//         return user;
//     }
// 
//     public String getProcessedUser() {
//         return TwitterLinkCreator.process(user);
//     }
// 
//     public String getComment() {
//         return comment;
//     }
// 
//     public String getSessionId() {
//         return sessionId;
//     }
// 
//     public String getSessionTitle() {
//         return sessionTitle;
//     }
// 
// }


// Path: app/src/main/java/de/codecentric/dao/impl/JpaCommentDao.java
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import de.codecentric.dao.CommentDao;
import de.codecentric.domain.Comment;
import de.codecentric.model.TimelineEntry;

package de.codecentric.dao.impl;





@Repository("commentDao")
@Transactional

public class JpaCommentDao implements CommentDao {
