package models;
import javax.jcr.nodetype.NodeType;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.jcrom.AbstractJcrEntity;
import org.jcrom.annotations.JcrIdentifier;
import org.jcrom.annotations.JcrNode;
import org.jcrom.annotations.JcrProperty;
import org.jcrom.annotations.JcrReference;
@JcrNode(
nodeType = NodeType.NT_UNSTRUCTURED,
mixinTypes = {
NodeType.MIX_CREATED,
NodeType.MIX_LAST_MODIFIED,
NodeType.MIX_REFERENCEABLE
},
classNameProperty = "className")
public class Flag extends AbstractJcrEntity {
private static final long serialVersionUID = 1L;
@JcrIdentifier
protected String id;
@JcrProperty
protected String targetId;
@JcrReference
protected User user;
public Flag() {}
public Flag(final String id, final String targetId, final User user) {
this.id = id;
this.name = generateName(targetId, user);
this.targetId = targetId;
this.user = user;
}
public String getId() {
return id;
}
public String getTargetId() {
return targetId;
}
public User getUser() {
return user;
}
@Override
public boolean equals(Object other) {
return EqualsBuilder.reflectionEquals(this, other);
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
public static String generateName(final String targetId, final User user) {
return String.format("%s_%s", user.getId(), targetId);
}
}