PostKey.java
package org.exoplatform.forum.service.cache.model.key;
import org.exoplatform.forum.common.cache.model.ScopeCacheKey;
import org.exoplatform.forum.service.Post;
public class PostKey extends ScopeCacheKey {
private final String category;
private final String forum;
private final String topic;
private final String post;
public PostKey(String category, String forum, String topic, String post) {
this.category = category;
this.forum = forum;
this.topic = topic;
this.post = post;
}
public PostKey(Post post) {
int endPos = post.getPath().indexOf(post.getForumId()) - 1;
String catId = post.getPath().substring(0, endPos);
int startPos = catId.lastIndexOf("/") + 1;
catId = catId.substring(startPos);
this.category = catId;
this.forum = post.getForumId();
this.topic = post.getTopicId();
this.post = post.getId();
}
public String getCategory() {
return category;
}
public String getForum() {
return forum;
}
public String getTopic() {
return topic;
}
public String getPost() {
return post;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof PostKey)) return false;
if (!super.equals(o)) return false;
PostKey postKey = (PostKey) o;
if (category != null ? !category.equals(postKey.category) : postKey.category != null) return false;
if (forum != null ? !forum.equals(postKey.forum) : postKey.forum != null) return false;
if (post != null ? !post.equals(postKey.post) : postKey.post != null) return false;
if (topic != null ? !topic.equals(postKey.topic) : postKey.topic != null) return false;
return true;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + (category != null ? category.hashCode() : 0);
result = 31 * result + (forum != null ? forum.hashCode() : 0);
result = 31 * result + (topic != null ? topic.hashCode() : 0);
result = 31 * result + (post != null ? post.hashCode() : 0);
return result;
}
}