EventsSearch.java

package com.tradecloud.dto.event;

import com.tradecloud.domain.dto.base.SearchBase;
import com.tradecloud.domain.model.events.Event;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import java.util.*;

@Component
@Scope("view")
public class EventsSearch<T extends Event> extends SearchBase {
    private Set<String> references;
    private String reference;
    private String eventType;
    private Class<T> eventClass;
    private String eventClassName;
    private String organisationalunit;
    private String consumerTag;
    private String state;
    private Set<String> states=new HashSet<>();
    private String reinstateUser;
    private Date from;
    private Date to;
    private String eventId;
    private Long paymentId;

    private OrganisationalUnit organisationalUnit;

    private Collection<OrganisationalUnit> organisationalUnits;

    public EventsSearch(Class<T> eventClass) {
        this.eventClass = eventClass;
    }

    public EventsSearch() {
    }

    @Override
    public String getTableName() {
        return eventClass.getName();
    }

    public String getEventType() {
        return eventType;
    }

    public void setEventType(String eventType) {
        this.eventType = eventType;
    }

    public Class<T> getEventClass() {
        if(eventClass==null){
            return (Class<T>) Event.class;
        }
        return eventClass;
    }

    public void setEventClass(Class<T> eventClass) {
        this.eventClass = eventClass;
    }

    public Set<String> getReferences() {
        return references;
    }

    public void setReferences(Set<String> references) {
        this.references = references;
    }

    @Override
    public String toString() {
        return "EventsSearch{" +
                "references=" + references +
                ", eventType='" + eventType + '\'' +
                ", eventClass=" + eventClass +
                '}';
    }

    public String getOrganisationalunit() {
        return organisationalunit;
    }

    public void setOrganisationalunit(String organisationalunit) {
        this.organisationalunit = organisationalunit;
    }

    public String getConsumerTag() {
        return consumerTag;
    }

    public void setConsumerTag(String consumerTag) {
        this.consumerTag = consumerTag;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getReference() {
        return reference;
    }

    public void setReference(String reference) {
        this.reference = reference;
    }

    public String getEventClassName() {
        return eventClassName;
    }

    public void setEventClassName(String eventClassName) {
        this.eventClassName = eventClassName;
        if(eventClassName==null){
            this.eventClass=null;
        }else{
            this.eventClass=Event.getClassesMap().get(eventClassName);
        }
    }

    public Date getFrom() {
        return from;
    }

    public void setFrom(Date from) {
        this.from = from;
    }

    public Date getTo() {
        return to;
    }

    public void setTo(Date to) {
        this.to = to;
    }

    public String getReinstateUser() {
        return reinstateUser;
    }

    public void setReinstateUser(String reinstateUser) {
        this.reinstateUser = reinstateUser;
    }

    public Set<String> getStates() {
        return states;
    }

    public void setStates(Set<String> states) {
        this.states = states;
    }

    public String getEventId() {
        return eventId;
    }

    public void setEventId(String eventId) {
        this.eventId = eventId;
    }

    public Long getPaymentId() {
        return paymentId;
    }

    public void setPaymentId(Long paymentId) {
        this.paymentId = paymentId;
    }

    @Override
    public OrganisationalUnit getOrganisationalUnit() {
        return organisationalUnit;
    }

    public void setOrganisationalUnit(OrganisationalUnit organisationalUnit) {
        this.organisationalUnit = organisationalUnit;
    }

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

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

    @Override
    public void setOrganisationalUnits2(List<OrganisationalUnit> organisationalUnits) {
        setOrganisationalUnits(organisationalUnits);
    }

    @Override
    public Collection<OrganisationalUnit> getOrganisationalUnits2() {
        return getOrganisationalUnits();
    }

    public void setOrganisationalUnit2(OrganisationalUnit organisationalUnit) {
        setOrganisationalUnit(organisationalUnit);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        EventsSearch<?> that = (EventsSearch<?>) o;
        return Objects.equals(references, that.references) &&
                Objects.equals(reference, that.reference) &&
                Objects.equals(eventType, that.eventType) &&
                Objects.equals(eventClass, that.eventClass) &&
                Objects.equals(eventClassName, that.eventClassName) &&
                Objects.equals(organisationalunit, that.organisationalunit) &&
                Objects.equals(consumerTag, that.consumerTag) &&
                Objects.equals(state, that.state) &&
                Objects.equals(states, that.states) &&
                Objects.equals(eventId, that.eventId) &&
                Objects.equals(reinstateUser, that.reinstateUser) &&
                Objects.equals(from, that.from) &&
                Objects.equals(to, that.to) &&
                Objects.equals(paymentId, that.paymentId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(references, reference, eventType, eventClass, eventClassName, organisationalunit, consumerTag, state, states,
                reinstateUser, from, to,eventId,paymentId);
    }
}