package gr.uom.java.ast; import org.eclipse.jdt.core.ITypeRoot; import org.eclipse.jdt.core.dom.Comment; public class CommentObject { private ASTInformation comment; private String text; private CommentType type; private int startLine; private int endLine; private volatile int hashCode = 0; public CommentObject(String text, CommentType type, int startLine, int endLine) { this.text = text; this.type = type; this.startLine = startLine; this.endLine = endLine; } public void setComment(Comment comment) { this.comment = ASTInformationGenerator.generateASTInformation(comment); } public Comment getComment() { return (Comment)comment.recoverASTNode(); } public String getText() { return text; } public CommentType getType() { return type; } //first line of the file starts from 0 public int getStartLine() { return startLine; } public int getEndLine() { return endLine; } public ITypeRoot getITypeRoot() { return comment.getITypeRoot(); } public int getStartPosition() { return comment.getStartPosition(); } public int getLength() { return comment.getLength(); } public boolean equals(Object o) { if(this == o) { return true; } if (o instanceof CommentObject) { CommentObject comment = (CommentObject)o; return this.getITypeRoot().equals(comment.getITypeRoot()) && this.getStartPosition() == comment.getStartPosition() && this.getLength() == comment.getLength(); } return false; } public int hashCode() { if(hashCode == 0) { int result = 17; result = 37*result + this.getITypeRoot().hashCode(); result = 37*result + this.getStartPosition(); result = 37*result + this.getLength(); hashCode = result; } return hashCode; } public String toString() { StringBuilder sb = new StringBuilder(); sb.append(comment.getITypeRoot().getPath()).append("\n"); sb.append("Start line: " + startLine).append("\n"); sb.append("End line:" + endLine).append("\n"); sb.append(text); return sb.toString(); } }