package com.l7tech.gateway.common.audit;

import com.l7tech.common.io.XmlUtil;
import com.l7tech.gateway.common.mapping.MessageContextMappingValues;
import com.l7tech.objectmodel.Goid;
import com.l7tech.security.token.SecurityTokenType;
import jakarta.xml.bind.MarshalException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.logging.Level;
import org.apache.commons.text.StringEscapeUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;

public class AuditRecordDomMarshaller {
   private static final String a;
   private static final String[] b;

   public Element marshal(Document var1, AuditRecord var2) throws MarshalException {
      if (var2 instanceof AdminAuditRecord var5) {
         return this.a(var1, var5);
      } else if (var2 instanceof SystemAuditRecord var4) {
         return this.a(var1, var4);
      } else if (var2 instanceof MessageSummaryAuditRecord var3) {
         return this.a(var1, var3);
      } else {
         throw new MarshalException(b[34]);
      }
   }

   private Element a(Document var1, String var2) {
      String[] var4 = b;
      Element var3 = var1.createElementNS(var4[15], var2);
      var3.setAttributeNS(XmlUtil.XMLNS_NS, var4[12], var4[65]);
      return var3;
   }

   private Element a(Element var1, String var2, String var3) {
      Document var4 = var1.getOwnerDocument();
      Element var5 = var4.createElementNS(b[65], var2);
      Text var6 = var4.createTextNode(var3 == null ? "" : var3);
      var5.appendChild(var6);
      var1.appendChild(var5);
      return var5;
   }

   private void a(Element var1, AuditRecord var2) {
      if (var2 != null) {
         String var3 = var2.getGoid() != null ? var2.getId() : null;
         String var4 = var2.getIpAddress();
         String var5 = var2.getMessage();
         long var6 = var2.getMillis();
         String var8 = var2.getNodeId();
         Level var9 = var2.getLevel();
         String var10 = var2.getStrLvl();
         String var11 = var2.getStrRequestId();
         long var12 = var2.getSequenceNumber();
         if (var3 != null) {
            String[] var18 = b;
            var1.setAttribute(var18[63], var3);
         }

         String[] var20 = b;
         var1.setAttribute(var20[25], var2.getName());
         var1.setAttribute(var20[47], Long.toString(var12));
         var1.setAttribute(var20[53], Integer.toString(var9.intValue()));
         var1.setAttribute(var20[61], var10);
         this.a(var1, var20[62], var8);
         if (var11 != null && var11.length() > 0) {
            this.a(var1, var20[43], var11);
         }

         var20 = b;
         this.a(var1, var20[55], Long.toString(var6));
         this.a(var1, var20[17], var5);
         this.a(var1, var20[35], var4);
         if (var2.getUserId() != null || var2.getUserName() != null) {
            Document var10000 = var1.getOwnerDocument();
            var20 = b;
            Element var14 = var10000.createElementNS(var20[65], var20[13]);
            if (var2.getIdentityProviderGoid() != null) {
               var14.setAttribute(var20[3], Goid.toString(var2.getIdentityProviderGoid()));
            }

            var20 = b;
            var14.setAttribute(var20[36], var2.getUserId());
            var14.setAttribute(var20[18], var2.getUserName());
            var1.appendChild(var14);
         }

         ArrayList var19 = new ArrayList(var2.getDetails() == null ? Collections.emptySet() : var2.getDetails());
         if (!var19.isEmpty()) {
            Collections.sort(var19);
            Document var25 = var1.getOwnerDocument();
            var20 = b;
            Element var15 = var25.createElementNS(var20[65], var20[50]);

            for (AuditDetail var17 : var19) {
               this.a(var15, var17);
            }

            var1.appendChild(var15);
         }
      }
   }

   private void a(Element var1, AuditDetail var2) {
      if (var2 != null) {
         int var3 = var2.getComponentId();
         int var4 = var2.getMessageId();
         int var5 = var2.getOrdinal();
         String var6 = var2.getException();
         long var7 = var2.getTime();
         Document var10000 = var1.getOwnerDocument();
         String[] var16 = b;
         Element var9 = var10000.createElementNS(var16[65], var16[40]);
         var9.setAttribute(var16[6], Integer.toString(var3));
         var9.setAttribute(var16[44], Integer.toString(var4));
         var9.setAttribute(var16[21], Integer.toString(var5));
         var9.setAttribute(var16[9], Long.toString(var7));
         String[] var10 = var2.getParams();
         if (var10 != null && var10.length > 0) {
            Element var11 = var1.getOwnerDocument().createElementNS(var16[65], var16[30]);

            for (String var15 : var10) {
               if (var15 != null) {
                  var16 = b;
                  this.a(var11, var16[10], StringEscapeUtils.escapeXml10(var15));
               }
            }

            var9.appendChild(var11);
         }

         if (var6 != null) {
            this.a(var9, b[51], var6);
         }

         var1.appendChild(var9);
      }
   }

   private void a(Element var1, MessageContextMappingValues var2) {
      String[] var3 = b;
      var1.setAttribute(var3[14], var2.getDigested());
      this.a(var1, var3[54], var2.getAuthUserId());
      this.a(var1, var3[5], var2.getAuthUserUniqueId());
      this.a(var1, var3[27], Long.toString(var2.getCreateTime()));
      this.a(var1, var3[32], var2.getServiceOperation());
      this.a(var1, var3[49], var2.getMapping1_value());
      this.a(var1, var3[45], var2.getMapping2_value());
      this.a(var1, var3[7], var2.getMapping3_value());
      this.a(var1, var3[33], var2.getMapping4_value());
      this.a(var1, var3[41], var2.getMapping5_value());
   }

   private Element a(Document var1, MessageSummaryAuditRecord var2) {
      String[] var7 = b;
      Element var3 = this.a(var1, var7[24]);
      var3.setAttribute(var7[37], var7[57]);
      this.a(var3, var2);
      SecurityTokenType var4 = var2.getAuthenticationType();
      if (var4 != null) {
         this.a(var3, var7[38], var4.getName());
      }

      MessageContextMappingValues var5 = var2.getMappingValuesEntity();
      if (var5 != null) {
         var7 = b;
         Element var6 = var1.createElementNS(var7[65], var7[39]);
         this.a(var6, var5);
         var3.appendChild(var6);
      }

      Goid var8 = var2.getMappingValuesId();
      if (var8 != null) {
         var7 = b;
         this.a(var3, var7[56], var8.toString());
      }

      var7 = b;
      this.a(var3, var7[0], var2.getOperationName());
      this.a(var3, var7[58], Integer.toString(var2.getRequestContentLength()));
      String var10002 = var7[23];
      String var10003;
      if (var2.getRequestXml() != null) {
         var10003 = var7[20];
      } else {
         var7 = b;
         var10003 = var7[11];
      }

      this.a(var3, var10002, var10003);
      var7 = b;
      this.a(var3, var7[52], Integer.toString(var2.getResponseContentLength()));
      var10002 = var7[26];
      if (var2.getResponseXml() != null) {
         var10003 = var7[8];
      } else {
         var7 = b;
         var10003 = var7[59];
      }

      this.a(var3, var10002, var10003);
      var7 = b;
      this.a(var3, var7[29], Integer.toString(var2.getResponseHttpStatus()));
      this.a(var3, var7[31], Integer.toString(var2.getRoutingLatency()));
      if (var2.getServiceGoid() != null) {
         this.a(var3, var7[22], Goid.toString(var2.getServiceGoid()));
      }

      this.a(var3, b[4], Integer.toString(var2.getStatus()));
      return var3;
   }

   private Element a(Document var1, SystemAuditRecord var2) {
      String[] var4 = b;
      Element var3 = this.a(var1, var4[28]);
      var3.setAttribute(var4[64], var4[1]);
      this.a(var3, var2);
      var3.setAttribute(var4[42], var2.getAction());
      var3.setAttribute(var4[2], Integer.toString(var2.getComponentId()));
      return var3;
   }

   private Element a(Document var1, AdminAuditRecord var2) {
      String[] var6 = b;
      Element var3 = this.a(var1, var6[24]);
      var3.setAttribute(var6[37], var6[16]);
      this.a(var3, var2);
      char var4 = var2.getAction();
      var3.setAttribute(var6[46], Character.toString(var4));
      Element var5 = var1.createElementNS(var6[65], var6[60]);
      var5.setAttribute(var6[19], var2.getEntityClassname());
      if (var2.getEntityGoid() != null) {
         var5.setAttribute(var6[48], Goid.toString(var2.getEntityGoid()));
      }

      var3.appendChild(var5);
      return var3;
   }

   static {
      String[] var5 = new String[66];
      int var3 = 0;
      String var2 = "xClwm\u0016\u0007x]Gda\u0007\u0006dJzqi\u000f\u000bt\\duc\f\u000byG@a\u0014~Wlkx\u000b\u001anc{jz\u000b\nrANje\u0006\u0006dGhqy\u0011\u0010vF}mY\u0011\u000befgl}\u0017\u000b^W\u000bt\\duc\f\u000byG@a\rzRyue\f\t$Ehiy\u0007\u0004cA|`\u0004cZd`\u0005gR{da\u0005qRevi\u0005o^ek\u007f\u0004b@lw\u0006sZn`\u007f\u0016\u001b\u007fG}u6MA{\u0004}`o\n@t\\d*m\u0017\n~G&wi\u0001\u0005vWdlb\u0007zVzvm\u0005\u000b\u0004yRd`\u0005t_hv\u007f\u0004cA|`\u0007xAmlb\u0003\u0002\ndV{se\u0001\u000bXZm\u0010eVxpi\u0011\u001aDR\u007f`h$\u0002vT\u0005vFmlx\u0004yRd`\u0011eVzuc\f\u001dr`hsi\u0006({Rn\ntAldx\u0007:~^l\u0005vFmlx\u0012eVzuc\f\u001dr{}q|1\u001avG|v\u0006gR{da\u0011\u000ee\\|qe\f\t[R}`b\u0001\u0017\u0010dV{se\u0001\u000bXClwm\u0016\u0007x]\rzRyue\f\t#Ehiy\u0007\u001dB]zp|\u0012\u0001eGla,\u0003\u001bsZ}%~\u0007\rxAm%x\u001b\u001er\t~CHah\u0010\u000bd@\u0002~W\u0004cJy`\bvF}mX\u001b\u001er\u001bzVzvm\u0005\u000bT\\gqi\u001a\u001aZRyue\f\tARepi\u0011\u0006sV}de\u000e\rzRyue\f\t\"Ehiy\u0007\u0006vP}lc\f\teVxpi\u0011\u001a^W\tzVzvm\u0005\u000b^W\rzRyue\f\t%Ehiy\u0007\u0006vP}lc\f\u000edVxpi\f\rr}|hn\u0007\u001c\u0004p\\`a\rzRyue\f\t&Ehiy\u0007\u0007sV}de\u000e\u001d\trKj`|\u0016\u0007x]\u0015eVzuc\f\u001drpfkx\u0007\u0000c\u007flkk\u0016\u0006\u0005{V\u007f``\nvF}mY\u0011\u000bezm\u0004cZd`\u0010zRyue\f\tARepi\u0011!~W\u0007zVzvm\u0005\u000b\u0014eVxpi\u0011\u001aT\\gqi\f\u001a[Vgbx\n\u0005qRevi\u0006r]}lx\u001b\b{V\u007f``1\u001ae\u0006y\\m`E\u0006\u0002~W";
      int var4 = "xClwm\u0016\u0007x]Gda\u0007\u0006dJzqi\u000f\u000bt\\duc\f\u000byG@a\u0014~Wlkx\u000b\u001anc{jz\u000b\nrANje\u0006\u0006dGhqy\u0011\u0010vF}mY\u0011\u000befgl}\u0017\u000b^W\u000bt\\duc\f\u000byG@a\rzRyue\f\t$Ehiy\u0007\u0004cA|`\u0004cZd`\u0005gR{da\u0005qRevi\u0005o^ek\u007f\u0004b@lw\u0006sZn`\u007f\u0016\u001b\u007fG}u6MA{\u0004}`o\n@t\\d*m\u0017\n~G&wi\u0001\u0005vWdlb\u0007zVzvm\u0005\u000b\u0004yRd`\u0005t_hv\u007f\u0004cA|`\u0007xAmlb\u0003\u0002\ndV{se\u0001\u000bXZm\u0010eVxpi\u0011\u001aDR\u007f`h$\u0002vT\u0005vFmlx\u0004yRd`\u0011eVzuc\f\u001dr`hsi\u0006({Rn\ntAldx\u0007:~^l\u0005vFmlx\u0012eVzuc\f\u001dr{}q|1\u001avG|v\u0006gR{da\u0011\u000ee\\|qe\f\t[R}`b\u0001\u0017\u0010dV{se\u0001\u000bXClwm\u0016\u0007x]\rzRyue\f\t#Ehiy\u0007\u001dB]zp|\u0012\u0001eGla,\u0003\u001bsZ}%~\u0007\rxAm%x\u001b\u001er\t~CHah\u0010\u000bd@\u0002~W\u0004cJy`\bvF}mX\u001b\u001er\u001bzVzvm\u0005\u000bT\\gqi\u001a\u001aZRyue\f\tARepi\u0011\u0006sV}de\u000e\rzRyue\f\t\"Ehiy\u0007\u0006vP}lc\f\teVxpi\u0011\u001a^W\tzVzvm\u0005\u000b^W\rzRyue\f\t%Ehiy\u0007\u0006vP}lc\f\u000edVxpi\f\rr}|hn\u0007\u001c\u0004p\\`a\rzRyue\f\t&Ehiy\u0007\u0007sV}de\u000e\u001d\trKj`|\u0016\u0007x]\u0015eVzuc\f\u001drpfkx\u0007\u0000c\u007flkk\u0016\u0006\u0005{V\u007f``\nvF}mY\u0011\u000bezm\u0004cZd`\u0010zRyue\f\tARepi\u0011!~W\u0007zVzvm\u0005\u000b\u0014eVxpi\u0011\u001aT\\gqi\f\u001a[Vgbx\n\u0005qRevi\u0006r]}lx\u001b\b{V\u007f``1\u001ae\u0006y\\m`E\u0006\u0002~W"
         .length();
      char var1 = '\r';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 39;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     a = b[65];
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "i@sj\u001buMw\u007f<GKq\u000ewje\u0000J~Vn g\u001d\u0000tM,}c\u000b";
                  var4 = "i@sj\u001buMw\u007f<GKq\u000ewje\u0000J~Vn g\u001d\u0000tM,}c\u000b".length();
                  var1 = 4;
                  var7 = -1;
            }

            var10000 = 45;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 73);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 48;
            case 1 -> 20;
            case 2 -> 46;
            case 3 -> 34;
            case 4 -> 43;
            case 5 -> 69;
            default -> 73;
         });
      }

      return new String(var10001).intern();
   }
}
