<commit_before>package sotechat.data;

import java.util.HashSet;
import java.util.Set;

/**
 * Luokka sisaltaa kanavan tiedot. Tietoa yllapidetaan myos
 * <code>Session</code>-olioissa hakuoperaatioiden nopeuttamiseksi.
 */
public class Channel {

    /**
     * Kanavatunnus.
     */
    private String channelId;

    /**
     * Kanavan taman hetkiset tilaajat, eli kaikki kenella on aktiivinen
     * <code>WebSocket</code>-yhteys.
     */
    private Set<Session> currentSubscribers;

    /**
     * Aktiiviset kayttajatunnukset.
     */
    private Set<String> activeUserIds;

    /**
     * Historia kaikista kanavalla joskus olleista kayttajatunnuksista.
     */
    private Set<String> historicUserIds;

    /**
     * Kanavaan liittyvan ammattilaisen kayttajatunnus.
     */
    private String assignedPro;

    /**
     * Onko kanava vielka kaytossa.
     */
    private boolean active;

    /**
     * Konstruktori.
     *
     * @param pChannelId Kanavatunnus.
     */
    public Channel(final String pChannelId) {
        this.channelId = pChannelId;
        currentSubscribers = new HashSet<>();
        activeUserIds = new HashSet<>();
        historicUserIds = new HashSet<>();
        this.assignedPro = "";
        this.active = true;
    }

    /**
     * Kirjaa <code>Channel</code>-olioon ja <code>Session</code>-olioon
     * oikeuden osallistua kanavalle.
     *
     * @param session <code>Session</code>-olio.
     */
    public final synchronized void allowParticipation(final Session session) {
        session.addChannel(channelId);
        String userId = session.get("userId");<commit_msg>pienta viilausta<commit_after>package sotechat.data;

import java.util.HashSet;
import java.util.Set;

/**
 * Luokka sisaltaa kanavan tiedot. Tietoa yllapidetaan myos
 * <code>Session</code>-olioissa hakuoperaatioiden nopeuttamiseksi.
 */
public class Channel {

    /**
     * Kanavatunnus.
     */
    private String channelId;

    /**
     * Kanavan tamanhetkiset tilaajat, eli kaikki kenella on aktiivinen
     * <code>WebSocket</code>-yhteys.
     */
    private Set<Session> currentSubscribers;

    /**
     * Aktiiviset kayttajatunnukset.
     */
    private Set<String> activeUserIds;

    /**
     * Historia kaikista kanavalla joskus olleista kayttajatunnuksista.
     */
    private Set<String> historicUserIds;

    /**
     * Kanavaan liittyvan ammattilaisen kayttajatunnus.
     */
    private String assignedPro;

    /**
     * Onko kanava viela kaytossa.
     */
    private boolean active;

    /**
     * Konstruktori.
     *
     * @param pChannelId Kanavatunnus.
     */
    public Channel(final String pChannelId) {
        this.channelId = pChannelId;
        currentSubscribers = new HashSet<>();
        activeUserIds = new HashSet<>();
        historicUserIds = new HashSet<>();
        this.assignedPro = "";
        this.active = true;
    }

    /**
     * Kirjaa <code>Channel</code>-olioon ja <code>Session</code>-olioon
     * oikeuden osallistua kanavalle.
     *
     * @param session <code>Session</code>-olio.
     */
    public final synchronized void allowParticipation(final Session session) {
        session.addChannel(channelId);
        String userId = session.get("userId");
{'fraction_non_alphanumeric': 0.10929299166409386, 'fraction_numerical': 0.0, 'mean_word_length': 2.540983606557377, 'pattern_counts': {'":': 0, '<': 35, '<?xml version=': 0, '>': 35, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7137319', 'n_tokens_mistral': 1096, 'n_tokens_neox': 1045, 'n_words': 213}