Rework the text parser.
[Sone.git] / src / main / java / net / pterodactylus / sone / text / PostPart.java
1 /*
2  * Sone - PostPart.java - Copyright © 2011–2013 David Roden
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 package net.pterodactylus.sone.text;
19
20 import static com.google.common.base.Objects.equal;
21
22 import net.pterodactylus.sone.data.Post;
23
24 /**
25  * {@link Part} implementation that stores a reference to a {@link Post}.
26  *
27  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
28  */
29 public class PostPart implements Part {
30
31         /** The post this part refers to. */
32         private final Post post;
33
34         /**
35          * Creates a new post part.
36          *
37          * @param post
38          *            The referenced post
39          */
40         public PostPart(Post post) {
41                 this.post = post;
42         }
43
44         //
45         // ACCESSORS
46         //
47
48         @Override
49         public boolean isPlainText() {
50                 return false;
51         }
52
53         @Override
54         public boolean isFreenetLink() {
55                 return false;
56         }
57
58         /**
59          * Returns the post referenced by this part.
60          *
61          * @return The post referenced by this part
62          */
63         public Post getPost() {
64                 return post;
65         }
66
67         //
68         // PART METHODS
69         //
70
71         @Override
72         public String getText() {
73                 return post.getText();
74         }
75
76         @Override
77         public int hashCode() {
78                 return getPost().hashCode();
79         }
80
81         @Override
82         public boolean equals(Object object) {
83                 if (!(object instanceof PostPart)) {
84                         return false;
85                 }
86                 PostPart postPart = (PostPart) object;
87                 return equal(getPost(), postPart.getPost());
88         }
89
90 }