package com.l7tech.gateway.common.audit;

import com.l7tech.gateway.common.Component;
import com.l7tech.objectmodel.Goid;
import com.l7tech.security.rbac.RbacAttribute;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import org.hibernate.annotations.Proxy;

@Entity
@Proxy(lazy = false)
@Table(name = "audit_system")
public class SystemAuditRecord extends AuditRecord {
   private static final long serialVersionUID = 1907760870061310459L;
   private String action;
   private int componentId;
   private boolean alwaysAudit;

   @Deprecated
   protected SystemAuditRecord() {
   }

   public SystemAuditRecord(Level var1, String var2, Component var3, String var4, boolean var5, Goid var6, String var7, String var8, String var9, String var10) {
      super(var1, var2, var10, var6, var7, var8, var3.getName(), var4);
      this.componentId = var3.getId();
      this.alwaysAudit = var5;
      this.action = var9;
   }

   @RbacAttribute
   @Column(name = "component_id")
   public int getComponentId() {
      return this.componentId;
   }

   public boolean alwaysAudit() {
      return this.alwaysAudit;
   }

   @RbacAttribute
   @Column(name = "action")
   public String getAction() {
      return this.action;
   }

   @Deprecated
   public void setComponentId(int var1) {
      this.componentId = var1;
   }

   @Deprecated
   public void setAction(String var1) {
      this.action = var1;
   }

   @Override
   public void serializeOtherProperties(OutputStream var1, boolean var2, boolean var3) throws IOException {
      try {
         var1.write(Integer.toString(this.componentId).getBytes());
         var1.write(":".getBytes());
         if (this.action != null) {
            var1.write(this.action.getBytes());
         }
      } catch (IOException var4) {
         throw a(var4);
      }

      var1.write(":".getBytes());
   }

   @Transient
   @Override
   public Map<String, Object> getAuditMetadata() {
      HashMap var1 = new HashMap<>(super.getAuditMetadata());
      var1.put(com.l7tech.gateway.common.audit.a.i, this.action);
      var1.put(com.l7tech.gateway.common.audit.a.j, Component.getFullNameFromId(this.componentId));
      return var1;
   }

   private static IOException a(IOException var0) {
      return var0;
   }
}
