package com.ideyatech.flexiblesearch.bean;
import com.ideyatech.flexiblesearch.util.LogicalOperator;
import com.ideyatech.flexiblesearch.util.MatchType;
import com.ideyatech.flexiblesearch.util.ShrinkableLazyList;
import org.apache.commons.collections.FactoryUtils;
import org.opentides.bean.BaseEntity;
import org.opentides.bean.SystemCodes;
import javax.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: neilnamoro
* Date: 9/10/13
* Time: 3:33 PM
*
* FlexibleSearchCriteria holds the a collection of 'where clauses' that will
* be used in building the flexible search query
*/
@Entity
@Table(name="FLEXIBLE_SEARCH_CRITERIA")
public class SearchCriteria extends BaseEntity implements Serializable{
private static final long serialVersionUID = 407922708734543128L;
@ManyToOne
@JoinColumn(name = "FLEXIBLE_SEARCH_BEAN")
private SearchBean flexibleSearchBean;
@Enumerated(EnumType.STRING)
@Column(name = "LOGICAL_OPERATOR")
private LogicalOperator logicalOperator;
@Enumerated(EnumType.STRING)
@Column(name = "MATCH_TYPE")
private MatchType matchType;
@SuppressWarnings("unchecked")
@OneToMany(fetch = FetchType.LAZY, mappedBy = "flexibleSearchCriteria", cascade = {
CascadeType.MERGE, CascadeType.REFRESH, CascadeType.REMOVE })
private List<SearchRule> rules = ShrinkableLazyList.decorate(
new ArrayList<SearchRule>(),
FactoryUtils.instantiateFactory(SearchRule.class));
@Transient
private transient Boolean isDeleted = Boolean.valueOf(false);
public SearchBean getFlexibleSearchBean() {
return flexibleSearchBean;
}
public void setFlexibleSearchBean(SearchBean flexibleSearchBean) {
this.flexibleSearchBean = flexibleSearchBean;
}
public LogicalOperator getLogicalOperator() {
return logicalOperator;
}
public void setLogicalOperator(LogicalOperator logicalOperator) {
this.logicalOperator = logicalOperator;
}
public MatchType getMatchType() {
return matchType;
}
public void setMatchType(MatchType matchType) {
this.matchType = matchType;
}
public List<SearchRule> getRules() {
return rules;
}
public void setRules(List<SearchRule> rules) {
this.rules = rules;
}
public Boolean getDeleted() {
return isDeleted;
}
public void setDeleted(Boolean deleted) {
isDeleted = deleted;
}
}