package com.l7tech.server.audit;

import com.l7tech.gateway.common.audit.AuditRecord;
import com.l7tech.gateway.common.audit.AuditSearchCriteria;
import com.l7tech.gateway.common.audit.MessageSummaryAuditRecord;
import com.l7tech.util.Functions.QuaternaryVoid;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Join;
import jakarta.persistence.criteria.JoinType;
import jakarta.persistence.criteria.Order;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.util.ArrayList;

class ad implements QuaternaryVoid<CriteriaBuilder, CriteriaQuery, Root, Predicate> {
   final boolean val$hasRequestIdProperty;
   final AuditSearchCriteria val$criteria;
   private static final String[] a;

   ad(AuditRecordManagerImpl var1, boolean var2, AuditSearchCriteria var3) {
      this.val$hasRequestIdProperty = var2;
      this.val$criteria = var3;
   }

   public void call(CriteriaBuilder var1, CriteriaQuery var2, Root var3, Predicate var4) {
      ArrayList var5 = new ArrayList();
      String[] var8 = a;
      var5.add(var3.get(var8[11]));
      var5.add(var3.get(var8[9]));
      var5.add(var3.get(var8[2]));
      var5.add(var3.get(var8[7]));
      var5.add(var3.get(var8[4]));
      var5.add(var3.get(var8[0]));
      var5.add(var3.get(var8[6]));
      if (this.val$hasRequestIdProperty) {
         var5.add(var3.get(var8[5]));
      }

      if (this.val$criteria.operation != null && MessageSummaryAuditRecord.class.isAssignableFrom(var3.getJavaType())) {
         var8 = a;
         var5.add(var3.get(var8[3]));
      }

      if (this.val$criteria.messageId != null) {
         Predicate var6;
         if (AuditRecord.class.isAssignableFrom(var3.getJavaType())) {
            var8 = a;
            Join var7 = var3.join(var8[12], JoinType.INNER);
            var6 = var1.and(var4, var1.equal(var7.get(var8[8]), this.val$criteria.messageId));
         } else {
            var8 = a;
            var6 = var1.and(var4, var1.equal(var3.get(var8[10]).get(var8[1]), this.val$criteria.messageId));
         }

         CriteriaQuery var10000 = var2.multiselect(var5).where(var6);
         Order[] var10001 = new Order[1];
         var8 = a;
         var10001[0] = var1.desc(var3.get(var8[13]));
         var10000.orderBy(var10001).distinct(true);
      } else {
         var2.multiselect(var5).where(var4).orderBy(new Order[]{var1.desc(var3.get(a[13]))});
      }
   }

   static {
      String[] var5 = new String[14];
      int var3 = 0;
      String var2 = "G\u0003DILe\tG\u000f[VDq#c\u000e\u0007G\u000f[VDq#\rE\u001aMWDb/E\u0004fDHs\u0006D\u0005L@lr\fY\u001eZw@g3O\u0019\\lA\u0006Y\u001eZiSz\tY\u0003OKDb3X\u000f\tG\u000f[VDq#c\u000e\u0004D\u000bE@\u0007N\u000f\\DLz5\u0004M\u0005AA";
      int var4 = "G\u0003DILe\tG\u000f[VDq#c\u000e\u0007G\u000f[VDq#\rE\u001aMWDb/E\u0004fDHs\u0006D\u0005L@lr\fY\u001eZw@g3O\u0019\\lA\u0006Y\u001eZiSz\tY\u0003OKDb3X\u000f\tG\u000f[VDq#c\u000e\u0004D\u000bE@\u0007N\u000f\\DLz5\u0004M\u0005AA"
         .length();
      char var1 = 6;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 32;
         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) {
                     a = var5;
                     return;
                  }

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

                  var2 = "\fM\u001e\u0006\u000e8w\u0006\u0005A\u0006\u000b\u000e'";
                  var4 = "\fM\u001e\u0006\u000e8w\u0006\u0005A\u0006\u000b\u000e'".length();
                  var1 = 7;
                  var7 = -1;
            }

            var10000 = 98;
            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] ^ 102);
      }

      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 -> 10;
            case 1 -> 74;
            case 2 -> 8;
            case 3 -> 5;
            case 4 -> 5;
            case 5 -> 54;
            default -> 102;
         });
      }

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