dalabai's picture
Upload folder using huggingface_hub
9373c61 verified
raw
history blame
4.22 kB
package com.dalab.policyengine.model;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.type.SqlTypes;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
@Entity
@Table(name = "policies")
public class Policy {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(columnDefinition = "UUID")
private UUID id;
@NotBlank
@Size(max = 255)
@Column(nullable = false, unique = true)
private String name;
@Size(max = 1000)
private String description;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private PolicyStatus status = PolicyStatus.DISABLED;
// MVEL condition for the policy. If all rules pass, this condition is evaluated.
// Could be null if policy relies solely on its individual rules.
@Column(columnDefinition = "TEXT")
private String conditionLogic; // e.g., "rule1 && (rule2 || rule3)"
@OneToMany(mappedBy = "policy", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
private List<PolicyRule> rules = new ArrayList<>();
@JdbcTypeCode(SqlTypes.JSON)
@Column(columnDefinition = "jsonb")
private Map<String, Object> actions; // e.g., { "notify": { "email": "admin@example.com" }, "addLabel": "Sensitive" }
@Column(nullable = false, updatable = false)
private Instant createdAt;
private Instant updatedAt;
@Column(columnDefinition = "UUID")
private UUID createdByUserId;
@Column(columnDefinition = "UUID")
private UUID updatedByUserId;
// 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 PolicyStatus getStatus() {
return status;
}
public void setStatus(PolicyStatus status) {
this.status = status;
}
public String getConditionLogic() {
return conditionLogic;
}
public void setConditionLogic(String conditionLogic) {
this.conditionLogic = conditionLogic;
}
public List<PolicyRule> getRules() {
return rules;
}
public void setRules(List<PolicyRule> rules) {
this.rules = rules;
this.rules.forEach(rule -> rule.setPolicy(this));
}
public void addRule(PolicyRule rule) {
this.rules.add(rule);
rule.setPolicy(this);
}
public void removeRule(PolicyRule rule) {
this.rules.remove(rule);
rule.setPolicy(null);
}
public Map<String, Object> getActions() {
return actions;
}
public void setActions(Map<String, Object> actions) {
this.actions = actions;
}
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();
}
}