package org.alfresco.repo.favourites; import java.util.Date; import org.alfresco.service.cmr.favourites.FavouritesService.Type; import org.alfresco.service.cmr.repository.NodeRef; /** * Representation of a user's favourite site, document, folder. * * @author steveglover * */ public class PersonFavourite { private String userName; private String title; private Type type; // using a type rather then subclassing to make sorting of PersonFavourites easier TODO private Date createdAt; private NodeRef nodeRef; public static class PersonFavouriteKey { private String userName; private Type type; private String title; private NodeRef nodeRef; private Date createdAt; public PersonFavouriteKey(String userName, String title, Type type, NodeRef nodeRef) { super(); this.userName = userName; this.type = type; this.nodeRef = nodeRef; } public PersonFavouriteKey(String userName, String title, Type type, NodeRef nodeRef, Date createdAt) { super(); this.userName = userName; this.type = type; this.nodeRef = nodeRef; this.createdAt = createdAt; } public String getTitle() { return title; } public String getUserName() { return userName; } public Type getType() { return type; } public Date getCreatedAt() { return createdAt; } public NodeRef getNodeRef() { return nodeRef; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((nodeRef == null) ? 0 : nodeRef.hashCode()); result = prime * result + ((userName == null) ? 0 : userName.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; PersonFavouriteKey other = (PersonFavouriteKey) obj; if (nodeRef == null) { if (other.nodeRef != null) return false; } else if (!nodeRef.equals(other.nodeRef)) return false; if (userName == null) { if (other.userName != null) return false; } else if (!userName.equals(other.userName)) return false; return true; } @Override public String toString() { return "PersonFavouriteKey [userName=" + userName + ", nodeRef=" + nodeRef + "]"; } } /* * Used for comparisons */ PersonFavourite(String userName, NodeRef nodeRef, Type type) { super(); if(userName == null) { throw new IllegalArgumentException("Must provide a userName"); } if(nodeRef == null) { throw new IllegalArgumentException("Must provide a nodeRef"); } if(type == null) { throw new IllegalArgumentException("Must provide a type"); } this.userName = userName; this.nodeRef = nodeRef; this.type = type; } public PersonFavourite(String userName, NodeRef nodeRef, Type type, String title, Date createdAt) { super(); if(userName == null) { throw new IllegalArgumentException("Must provide a userName"); } if(nodeRef == null) { throw new IllegalArgumentException("Must provide a nodeRef"); } if(type == null) { throw new IllegalArgumentException("Must provide a type"); } if(title == null) { throw new IllegalArgumentException("Must provide a title"); } // re-instate if Share can persist createdAt for favourites // if(createdAt == null) // { // throw new IllegalArgumentException("Must provide a createdAt"); // } this.userName = userName; this.nodeRef = nodeRef; this.type = type; this.title = title; this.createdAt = createdAt; } // PersonFavourite(String userName, NodeRef nodeRef, Type type, String title, Date createdAt, boolean exists) // { // this(userName, nodeRef, type, title, createdAt); // this.exists = exists; // } public PersonFavouriteKey getKey() { PersonFavouriteKey key = new PersonFavouriteKey(getUserName(), getTitle(), getType(), getNodeRef(), getCreatedAt()); return key; } public String getTitle() { return title; } public String getUserName() { return userName; } public Type getType() { return type; } public NodeRef getNodeRef() { return nodeRef; } public Date getCreatedAt() { return createdAt; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((nodeRef == null) ? 0 : nodeRef.hashCode()); result = prime * result + ((userName == null) ? 0 : userName.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; PersonFavourite other = (PersonFavourite) obj; if (nodeRef == null) { if (other.nodeRef != null) return false; } else if (!nodeRef.equals(other.nodeRef)) return false; if (userName == null) { if (other.userName != null) return false; } else if (!userName.equals(other.userName)) return false; return true; } @Override public String toString() { return "PersonFavourite [userName=" + userName + ", name=" + title + ", type=" + type + ", createdAt=" + createdAt + ", nodeRef=" + nodeRef + "]"; } }