dalabai's picture
Upload folder using huggingface_hub
9373c61 verified
raw
history blame
3.23 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.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
@Entity
@Table(name = "policy_rules")
public class PolicyRule {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(columnDefinition = "UUID")
private UUID id;
@NotBlank
@Size(max = 255)
@Column(nullable = false)
private String name; // A unique name for the rule within the policy, e.g., "rule1", "checkPII"
@Size(max = 1000)
private String description;
@NotBlank
@Column(nullable = false, columnDefinition = "TEXT")
private String condition; // MVEL expression, e.g., "asset.assetType == 'S3_BUCKET' && asset.tags.contains('PII')"
// Rules with lower numbers have higher priority
@Column(nullable = false)
private int priority = 1;
// Optional: Actions specific to this rule, if different from policy-level actions or to augment them
@JdbcTypeCode(SqlTypes.JSON)
@Column(columnDefinition = "jsonb")
private Map<String, Object> actions;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "policy_id", nullable = false)
private Policy policy;
@Column(nullable = false, updatable = false)
private Instant createdAt;
private Instant updatedAt;
// 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 String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
public Map<String, Object> getActions() {
return actions;
}
public void setActions(Map<String, Object> actions) {
this.actions = actions;
}
public Policy getPolicy() {
return policy;
}
public void setPolicy(Policy policy) {
this.policy = policy;
}
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;
}
@PrePersist
protected void onCreate() {
createdAt = Instant.now();
updatedAt = Instant.now();
}
@PreUpdate
protected void onUpdate() {
updatedAt = Instant.now();
}
}