53 lines
1.5 KiB
Java
53 lines
1.5 KiB
Java
package mops.gruppen2.domain.event;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.Value;
|
|
import lombok.extern.log4j.Log4j2;
|
|
import mops.gruppen2.domain.exception.GroupFullException;
|
|
import mops.gruppen2.domain.exception.IdMismatchException;
|
|
import mops.gruppen2.domain.exception.UserAlreadyExistsException;
|
|
import mops.gruppen2.domain.model.group.Group;
|
|
import mops.gruppen2.domain.model.group.User;
|
|
import mops.gruppen2.infrastructure.GroupCache;
|
|
|
|
import java.util.UUID;
|
|
|
|
/**
|
|
* Fügt einen einzelnen Nutzer einer Gruppe hinzu.
|
|
*/
|
|
@Log4j2
|
|
@Value
|
|
@AllArgsConstructor
|
|
public class AddMemberEvent extends Event {
|
|
|
|
@JsonProperty("user")
|
|
User user;
|
|
|
|
public AddMemberEvent(UUID groupId, String exec, String target, User user) throws IdMismatchException {
|
|
super(groupId, exec, target);
|
|
this.user = user;
|
|
|
|
if (!target.equals(user.getId())) {
|
|
throw new IdMismatchException("Der User passt nicht zur angegebenen userid.");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void updateCache(GroupCache cache, Group group) {
|
|
cache.usersPut(target, group);
|
|
}
|
|
|
|
@Override
|
|
protected void applyEvent(Group group) throws UserAlreadyExistsException, GroupFullException {
|
|
group.addMember(target, user);
|
|
|
|
log.trace("\t\t\t\t\tNeue Members: {}", group.getMembers());
|
|
}
|
|
|
|
@Override
|
|
public String type() {
|
|
return EventType.ADDMEMBER.toString();
|
|
}
|
|
}
|