EventOrganisationalUnit.java

package com.tradecloud.domain.model.events;

import com.tradecloud.authentication.User;
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.event.EventGroup;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;

import javax.persistence.*;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

@Entity
public class EventOrganisationalUnit extends PersistenceBase {

    @ManyToOne(fetch = FetchType.EAGER)
    private User integratedUser;

    @Enumerated(EnumType.STRING)
    private EventGroup eventGroup;

    @OneToMany(fetch = FetchType.EAGER, orphanRemoval = true)
    private List<OrganisationalUnit> organisationalUnits;

    public User getIntegratedUser() {
        return integratedUser;
    }

    public void setIntegratedUser(User integratedUser) {
        this.integratedUser = integratedUser;
    }

    public EventGroup getEventGroup() {
        return eventGroup;
    }

    public void setEventGroup(EventGroup eventGroup) {
        this.eventGroup = eventGroup;
    }

    public List<OrganisationalUnit> getOrganisationalUnits() {
        return organisationalUnits;
    }

    public void setOrganisationalUnits(List<OrganisationalUnit> organisationalUnits) {
        this.organisationalUnits = organisationalUnits;
    }

    public OrganisationalUnit[] getEventOrganisationalUnits() {
        if (organisationalUnits != null)
            return getOrganisationalUnits().toArray(new OrganisationalUnit[0]);

        return null;
    }

    public void setEventOrganisationalUnits(OrganisationalUnit[] eventOrganisationalUnits) {
        if (eventOrganisationalUnits != null) {
            List<OrganisationalUnit> units = Arrays.stream(eventOrganisationalUnits).filter(Objects::nonNull).collect(Collectors.toList());
            setOrganisationalUnits(units);
        } else {
            setOrganisationalUnits(null);
        }
    }
}