dalabai's picture
Upload folder using huggingface_hub
9373c61 verified
raw
history blame
5.53 kB
package com.dalab.policyengine.model;
import java.time.Instant;
import java.util.Map;
import java.util.UUID;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.type.SqlTypes;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.PrePersist;
import jakarta.persistence.PreUpdate;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
/**
* Entity representing a filtering rule for event subscriptions.
* Uses MVEL expressions to define conditions for event matching.
*/
@Entity
@Table(name = "event_rules")
public class EventRule {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(columnDefinition = "UUID")
private UUID id;
@NotBlank
@Size(max = 255)
@Column(nullable = false)
private String name;
@Size(max = 500)
private String description;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "subscription_id", nullable = false)
private EventSubscription subscription;
/**
* MVEL expression for evaluating events
* Example: "eventType == 'POLICY_VIOLATION' && severity == 'HIGH' && assetId.startsWith('prod-')"
*/
@Column(columnDefinition = "TEXT", nullable = false)
private String condition;
/**
* Rule priority (lower number = higher priority)
*/
@Column(nullable = false)
private Integer priority = 1;
/**
* Whether this rule is enabled
*/
@Column(nullable = false)
private Boolean enabled = true;
/**
* Additional parameters for the rule
*/
@JdbcTypeCode(SqlTypes.JSON)
@Column(columnDefinition = "jsonb")
private Map<String, Object> parameters;
@Column(nullable = false, updatable = false)
private Instant createdAt;
private Instant updatedAt;
@Column(columnDefinition = "UUID")
private UUID createdByUserId;
@Column(columnDefinition = "UUID")
private UUID updatedByUserId;
// Constructors
public EventRule() {}
public EventRule(String name, String condition) {
this.name = name;
this.condition = condition;
}
// Getters and Setters
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public EventSubscription getSubscription() {
return subscription;
}
public void setSubscription(EventSubscription subscription) {
this.subscription = subscription;
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
public Integer getPriority() {
return priority;
}
public void setPriority(Integer priority) {
this.priority = priority;
}
public Boolean getEnabled() {
return enabled;
}
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
public Map<String, Object> getParameters() {
return parameters;
}
public void setParameters(Map<String, Object> parameters) {
this.parameters = parameters;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
public UUID getCreatedByUserId() {
return createdByUserId;
}
public void setCreatedByUserId(UUID createdByUserId) {
this.createdByUserId = createdByUserId;
}
public UUID getUpdatedByUserId() {
return updatedByUserId;
}
public void setUpdatedByUserId(UUID updatedByUserId) {
this.updatedByUserId = updatedByUserId;
}
@PrePersist
protected void onCreate() {
createdAt = Instant.now();
updatedAt = Instant.now();
}
@PreUpdate
protected void onUpdate() {
updatedAt = Instant.now();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof EventRule)) return false;
EventRule eventRule = (EventRule) o;
return id != null && id.equals(eventRule.getId());
}
@Override
public int hashCode() {
return getClass().hashCode();
}
@Override
public String toString() {
return "EventRule{" +
"id=" + id +
", name='" + name + '\'' +
", condition='" + condition + '\'' +
", priority=" + priority +
", enabled=" + enabled +
'}';
}
}