This repository has been archived on 2021-12-05. You can view files and clone it, but cannot push or open issues or pull requests.
envoy/server/src/main/java/envoy/server/data/Group.java

47 lines
1.3 KiB
Java

package envoy.server.data;
import java.util.stream.Collectors;
import javax.persistence.*;
/**
* Represents a group inside the database. Referred to as "server group" as opposed to "group" from
* Envoy Common.
*
* @author Maximilian Käfer
* @since Envoy Server Standalone v0.1-alpha
*/
@Entity
@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 final class Group extends Contact {
/**
* 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";
@Override
public envoy.data.Group toCommon() {
return new envoy.data.Group(id, name, contacts.parallelStream().map(User.class::cast)
.map(User::toFlatCommon).collect(Collectors.toSet()));
}
@Override
protected envoy.data.Group toFlatCommon() {
return toCommon();
}
}