Added creationDate variable in Contact & added pendingGroups query
This commit is contained in:
		| @@ -1,8 +1,19 @@ | ||||
| package envoy.server.data; | ||||
|  | ||||
| import java.util.Date; | ||||
| import java.util.Set; | ||||
|  | ||||
| import javax.persistence.*; | ||||
| import javax.persistence.CascadeType; | ||||
| import javax.persistence.Entity; | ||||
| import javax.persistence.FetchType; | ||||
| import javax.persistence.GeneratedValue; | ||||
| import javax.persistence.Id; | ||||
| import javax.persistence.Inheritance; | ||||
| import javax.persistence.InheritanceType; | ||||
| import javax.persistence.ManyToMany; | ||||
| import javax.persistence.Table; | ||||
| import javax.persistence.Temporal; | ||||
| import javax.persistence.TemporalType; | ||||
|  | ||||
| /** | ||||
|  * This class acts as a superclass for all contacts, being {@link User}s and | ||||
| @@ -26,6 +37,9 @@ public abstract class Contact { | ||||
| 	protected long		id; | ||||
| 	protected String	name; | ||||
|  | ||||
| 	@Temporal(TemporalType.TIMESTAMP) | ||||
| 	private Date creationDate; | ||||
|  | ||||
| 	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) | ||||
| 	protected Set<Contact> contacts; | ||||
|  | ||||
| @@ -86,6 +100,18 @@ public abstract class Contact { | ||||
| 	 */ | ||||
| 	public void setContacts(Set<Contact> contacts) { this.contacts = contacts; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return the creationDate | ||||
| 	 * @since Envoy Server Standalone v0.1-beta | ||||
| 	 */ | ||||
| 	public Date getCreationDate() { return creationDate; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @param creationDate the creationDate to set | ||||
| 	 * @since Envoy Server Standalone v0.1-beta | ||||
| 	 */ | ||||
| 	public void setCreationDate(Date creationDate) { this.creationDate = creationDate; } | ||||
|  | ||||
| 	/** | ||||
| 	 * {@inheritDoc} | ||||
| 	 */ | ||||
|   | ||||
| @@ -3,6 +3,7 @@ package envoy.server.data; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| import javax.persistence.Entity; | ||||
| import javax.persistence.NamedQueries; | ||||
| import javax.persistence.NamedQuery; | ||||
| import javax.persistence.Table; | ||||
|  | ||||
| @@ -19,19 +20,32 @@ import javax.persistence.Table; | ||||
|  */ | ||||
| @Entity | ||||
| @Table(name = "groups") | ||||
| @NamedQuery( | ||||
| @NamedQueries({ | ||||
| 	@NamedQuery( | ||||
| 		name = Group.findByName, | ||||
| 		query = "SELECT g FROM Group g WHERE g.name = :name" | ||||
| ) | ||||
| 	), | ||||
| 	@NamedQuery( | ||||
| 		name = Group.findPendingGroups, | ||||
| 		query = "SELECT g FROM Group g WHERE g.creationDate > :lastSeen AND :user MEMBER OF g.contacts" | ||||
| 	) | ||||
| }) | ||||
| public class Group extends Contact { | ||||
|  | ||||
| 	/** | ||||
| 	 * Named query retrieving a group by name (parameter {@code :name}. | ||||
| 	 * Named query retrieving a group by name (parameter {@code :name}). | ||||
| 	 *  | ||||
| 	 * @since Envoy Server Standalone v0.1-beta | ||||
| 	 */ | ||||
| 	public static final String findByName = "Group.findByName"; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Named query retrieving all pending groups for a specific user (parameter {@code :user}, {@code :lastSeen}). | ||||
| 	 *  | ||||
| 	 * @since Envoy Server Standalone v0.1-beta | ||||
| 	 */ | ||||
| 	public static final String findPendingGroups = "Group.findPendingGroups"; | ||||
|  | ||||
| 	/** | ||||
| 	 * {@inheritDoc} | ||||
| 	 */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 DieGurke
					DieGurke