UserChannel.java
/*
* The coLAB project
* Copyright (C) 2021-2023 AlbaSim, MEI, HEIG-VD, HES-SO
*
* Licensed under the MIT License
*/
package ch.colabproject.colab.api.ws.channel.model;
import ch.colabproject.colab.api.Helper;
import ch.colabproject.colab.api.model.user.User;
import ch.colabproject.colab.generator.model.annotations.ExtractJavaDoc;
import java.util.Objects;
/**
* The channel to be used to transmit data to a specific user. Eg. its accounts, everything the user
* sees in its lobby (project index and their teams, etc)
* <p>
* Usage :
* </p>
* <p>
* Subscription : as soon as possible on client side + on current user reload<br>
* Unsubscription : none<br>
* </p>
* <p>
* Can be watched by admin in the Who page
* </p>
*
* @author maxence
*/
@ExtractJavaDoc
public class UserChannel implements WebsocketChannel {
private static final long serialVersionUID = 1L;
/**
* ID of the channel owner
*/
private Long userId;
/**
* Get the value of userId
*
* @return the value of userId
*/
public Long getUserId() {
return userId;
}
/**
* Set the value of userId
*
* @param userId new value of userId
*/
public void setUserId(Long userId) {
this.userId = userId;
}
@Override
public String getUrn() {
return Helper.getColabBaseUrn(this) + "/" + userId;
}
@Override
public int hashCode() {
int hash = 5;
hash = 17 * hash + Objects.hashCode(this.userId);
return hash;
}
/**
* Channel equals if they both refer to the same user
*
* @param obj other channel
*
* @return true if both refer to the same user
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final UserChannel other = (UserChannel) obj;
return Objects.equals(this.userId, other.userId);
}
@Override
public String toString() {
return "UserChannel{" + "userId=" + userId + '}';
}
/**
* get the channel dedicated to the given user.
*
* @param user the user
*
* @return the user very own channel
*/
public static UserChannel build(User user) {
UserChannel channel = new UserChannel();
channel.setUserId(user.getId());
return channel;
}
}