package com.intuit.tank.project; /* * #%L * Intuit Tank data model * %% * Copyright (C) 2011 - 2015 Intuit Inc. * %% * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * #L% */ import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.OneToMany; import javax.persistence.Table; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.hibernate.envers.Audited; import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.NotEmpty; import com.intuit.tank.util.ScriptFilterType; @Entity @Audited @Table(name = "script_filter") public class ScriptFilter extends OwnableEntity implements Comparable<ScriptFilter> { private static final long serialVersionUID = 1L; @Column(name = "name", length = 255, nullable = false) @NotEmpty @Length(max = 255) private String name; @Column(name = "persist") private boolean persist = true; @Column(name = "all_conditions_must_pass") private boolean allConditionsMustPass; @Column(name = "filter_type") private ScriptFilterType filterType; @Column(name = "external_script_id") private Integer externalScriptId; @Column(name = "product_name", length = 255) @Length(max = 255) private String productName; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinTable(joinColumns = @JoinColumn(name = "filter_id"), inverseJoinColumns = @JoinColumn(name = "action_id")) private Set<ScriptFilterAction> actions = new HashSet<ScriptFilterAction>(); @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinTable(joinColumns = @JoinColumn(name = "filter_id"), inverseJoinColumns = @JoinColumn(name = "condition_id")) private Set<ScriptFilterCondition> conditions = new HashSet<ScriptFilterCondition>(); public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<ScriptFilterAction> getActions() { return actions; } public void setActions(Set<ScriptFilterAction> actions) { this.actions = actions; } public void addAction(ScriptFilterAction action) { this.actions.add(action); } public Set<ScriptFilterCondition> getConditions() { return conditions; } public void setConditions(Set<ScriptFilterCondition> conditions) { this.conditions = conditions; } public void addCondition(ScriptFilterCondition condition) { this.conditions.add(condition); } public boolean getPersist() { return persist; } public void setPersist(boolean persist) { this.persist = persist; } public boolean getAllConditionsMustPass() { return allConditionsMustPass; } public void setAllConditionsMustPass(boolean allConditionsMustPass) { this.allConditionsMustPass = allConditionsMustPass; } public ScriptFilterType getFilterType() { if (this.filterType == null) { return ScriptFilterType.INTERNAL; } else { return this.filterType; } } public void setFilterType(ScriptFilterType filterType) { this.filterType = filterType; } public Integer getExternalScriptId() { return externalScriptId; } public void setExternalScriptId(Integer externalScriptId) { this.externalScriptId = externalScriptId; } /** * @return the productName */ public String getProductName() { return productName; } /** * @param productName * the productName to set */ public void setProductName(String productName) { this.productName = productName; } /** * @{inheritDoc */ @Override public String toString() { return new ToStringBuilder(this).append("id", getId()).append("name", name).append("persist", this.persist) .append("allConditionsMustPass", this.allConditionsMustPass) .toString(); } /** * @{inheritDoc */ @Override public boolean equals(Object obj) { if (!(obj instanceof ScriptFilter)) { return false; } ScriptFilter o = (ScriptFilter) obj; return new EqualsBuilder().append(o.getId(), getId()).isEquals(); } /** * @{inheritDoc */ @Override public int hashCode() { return new HashCodeBuilder(39, 41).append(getId()).toHashCode(); } /** * @{inheritDoc */ @Override public int compareTo(ScriptFilter o) { return name.compareToIgnoreCase(o.getName()); } }