package com.l7tech.gateway.common.audit;

import com.l7tech.gateway.common.cluster.LogRequest;
import com.l7tech.identity.User;
import com.l7tech.objectmodel.Goid;
import com.l7tech.util.DeserializeSafe;
import com.l7tech.util.Pair;
import java.io.Serializable;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.logging.Level;

@DeserializeSafe
public final class AuditSearchCriteria implements Serializable {
   public final Date fromTime;
   public final Date toTime;
   public final Level fromLevel;
   public final Level toLevel;
   public final Class recordClass;
   public final String nodeId;
   public final Map<String, Long> nodeIdToStartMsg;
   public final Map<String, Long> nodeIdToEndMsg;
   public final int maxRecords;
   public final String serviceName;
   public final String message;
   public final String requestId;
   public final User user;
   public final String userName;
   public final String userIdOrDn;
   public final Integer messageId;
   public final String entityClassName;
   public final Goid entityId;
   public final String operation;
   public final boolean getFromPolicy;
   static final long serialVersionUID = 3515639754396095222L;
   private static final String[] a;

   private AuditSearchCriteria(AuditSearchCriteria.Builder var1) {
      this.fromTime = var1.a;
      this.toTime = var1.b;
      this.fromLevel = var1.c;
      this.toLevel = var1.d;
      this.recordClass = var1.e;
      this.nodeId = var1.f;
      this.maxRecords = var1.i;
      this.serviceName = var1.k;
      this.message = var1.l;
      this.requestId = var1.m;
      this.operation = var1.t;
      this.user = var1.n;
      this.userName = var1.o;
      this.userIdOrDn = var1.p;
      this.messageId = var1.q;
      this.entityClassName = var1.r;
      this.entityId = var1.s;
      this.nodeIdToStartMsg = var1.g;
      this.nodeIdToEndMsg = var1.h;
      this.getFromPolicy = var1.j;
   }

   public Pair<String, String> getAuditQueryDetails() {
      StringBuilder var1 = new StringBuilder();
      StringBuilder var2 = new StringBuilder();
      Date var3 = this.fromTime;
      Date var4 = this.toTime;
      String var10000;
      if (var3 != null && var3.getTime() != 0L) {
         var10000 = var3.toString();
      } else {
         String[] var12 = a;
         var10000 = var12[20];
      }

      String var5 = var10000;
      if (var3 != null && var4 != null) {
         String var10002 = var4.toString();
         String[] var17 = a;
         var1.append(var17[14] + var5 + var17[13] + var10002 + " ");
         var2.append(var17[4] + var5 + var17[26] + var4.toString() + var17[28]);
      } else if (var3 != null && var4 == null) {
         String[] var16 = a;
         var1.append(var16[21] + var5 + " ");
         var2.append(var16[0] + var5 + var16[24]);
      } else if (var3 == null && var4 != null) {
         String var10001 = var4.toString();
         String[] var15 = a;
         var1.append(var15[8] + var10001 + " ");
         var2.append(var15[15] + var4.toString() + var15[24]);
      }

      Level var6 = this.fromLevel;
      if (var6 == null) {
         var6 = Level.FINEST;
      }

      Level var7 = this.toLevel;
      if (var7 == null) {
         var7 = Level.SEVERE;
      }

      if (var6.equals(var7)) {
         String var34 = var6.getName();
         String[] var18 = a;
         var2.append(var18[5] + var34 + var18[24]);
      } else {
         String var35 = String.valueOf(var6);
         String var40 = String.valueOf(var7);
         String[] var19 = a;
         var2.append(var19[7] + var35 + var19[26] + var40 + var19[24]);
      }

      for (Entry var10 : this.nodeIdToStartMsg.entrySet()) {
         String var36 = (String)var10.getKey();
         String var41 = String.valueOf(var10.getValue());
         String[] var20 = a;
         var2.append(var20[22] + var36 + var20[2] + var41 + var20[24]);
      }

      for (Entry var11 : this.nodeIdToEndMsg.entrySet()) {
         String var37 = (String)var11.getKey();
         String var42 = String.valueOf(var11.getValue());
         String[] var21 = a;
         var2.append(var21[17] + var37 + var21[23] + var42 + var21[24]);
      }

      if (this.recordClass != null) {
         String var38 = this.recordClass.getName();
         String[] var22 = a;
         var2.append(var22[1] + var38 + var22[24]);
      }

      if (this.requestId != null) {
         String[] var23 = a;
         var2.append(var23[9] + this.requestId + var23[24]);
      }

      if (this.operation != null) {
         String[] var24 = a;
         var2.append(var24[11] + this.operation + var24[24]);
      }

      if (this.serviceName != null) {
         String[] var25 = a;
         var2.append(var25[18] + this.serviceName + var25[24]);
      }

      if (this.message != null) {
         String[] var26 = a;
         var2.append(var26[16] + this.message + var26[24]);
      }

      if (this.nodeId != null) {
         String[] var27 = a;
         var2.append(var27[25] + this.nodeId + var27[24]);
      }

      if (this.userName != null) {
         String[] var28 = a;
         var2.append(var28[10] + this.userName + var28[24]);
      }

      if (this.userIdOrDn != null) {
         String[] var29 = a;
         var2.append(var29[6] + this.userIdOrDn + var29[24]);
      }

      if (this.messageId != null) {
         String[] var30 = a;
         var2.append(var30[27] + this.messageId + var30[24]);
      }

      if (this.recordClass == null || this.recordClass.equals(AdminAuditRecord.class)) {
         if (this.entityClassName != null) {
            String[] var31 = a;
            var2.append(var31[12] + this.entityClassName + var31[24]);
         }

         if (this.entityId != null) {
            String var39 = String.valueOf(this.entityId);
            String[] var32 = a;
            var2.append(var32[19] + var39 + var32[24]);
         }
      }

      String[] var33 = a;
      var2.append(var33[3] + this.getFromPolicy + var33[24]);
      return new Pair(var1.toString(), var2.toString());
   }

   public boolean containsSimilarCritiera(AuditSearchCriteria var1) {
      if ((this.fromLevel != null || var1.fromLevel == null) && (this.fromLevel == null || this.fromLevel.equals(var1.fromLevel))) {
         if ((this.toLevel != null || var1.toLevel == null) && (this.toLevel == null || this.toLevel.equals(var1.toLevel))) {
            if ((this.recordClass != null || var1.recordClass == null) && (this.recordClass == null || this.recordClass.equals(var1.recordClass))) {
               if ((this.requestId != null || var1.requestId == null) && (this.requestId == null || this.requestId.equals(var1.requestId))) {
                  if ((this.operation != null || var1.operation == null) && (this.operation == null || this.operation.equals(var1.operation))) {
                     if ((this.serviceName != null || var1.serviceName == null) && (this.serviceName == null || this.serviceName.equals(var1.serviceName))) {
                        if ((this.message != null || var1.message == null) && (this.message == null || this.message.equals(var1.message))) {
                           if ((this.nodeId != null || var1.nodeId == null) && (this.nodeId == null || this.nodeId.equals(var1.nodeId))) {
                              if ((this.userName != null || var1.userName == null) && (this.userName == null || this.userName.equals(var1.userName))) {
                                 if ((this.userIdOrDn != null || var1.userIdOrDn == null)
                                    && (this.userIdOrDn == null || this.userIdOrDn.equals(var1.userIdOrDn))) {
                                    if ((this.messageId != null || var1.messageId == null) && (this.messageId == null || this.messageId.equals(var1.messageId))
                                       )
                                     {
                                       if (this.recordClass == null || this.recordClass.equals(AdminAuditRecord.class)) {
                                          if (this.entityClassName == null && var1.entityClassName != null
                                             || this.entityClassName != null && !this.entityClassName.equals(var1.entityClassName)) {
                                             return false;
                                          }

                                          if (this.entityId == null && var1.entityId != null || this.entityId != null && !this.entityId.equals(var1.entityId)) {
                                             return false;
                                          }
                                       }

                                       return true;
                                    } else {
                                       return false;
                                    }
                                 } else {
                                    return false;
                                 }
                              } else {
                                 return false;
                              }
                           } else {
                              return false;
                           }
                        } else {
                           return false;
                        }
                     } else {
                        return false;
                     }
                  } else {
                     return false;
                  }
               } else {
                  return false;
               }
            } else {
               return false;
            }
         } else {
            return false;
         }
      } else {
         return false;
      }
   }

   static {
      String[] var5 = new String[29];
      int var3 = 0;
      String var2 = "\rMJj<D?\"wSnt\u0010\r\r_Ko'D?\"gNnt\u0010\u0017VsWe']j\u001b>_~*YkVl[h!B{L>\u001f\rY[\u007fnVm\u0019s\u001eJ;Tv\u0002>rd![j\u0006>nd\"Y|\u000f$\u001e\u0007\rJWf+\n?\b\rR[}+\\%V\u0010\rKMn<\u0010V2>QyntQL>\b\rR[}+\\%V\n3pZ+\u001aYr\u0013$\u001e\r\rL[z;Ul\u0002>wOt\u0010\f\rKMn<\u0010Q\u0017s[1n\f\rQNn<Qk\u001fqP1n\u000f\r[P\u007f'DfV]Rj=C%V\u0004VjQ+\u0006\"wSnt\u0010\u000b\r[Pondv\u001b{\u0004+\u0013\rS[x=Qx\u0013>]d D~\u001fpM1n\t\rPQo+\u0010v\u0012>\u000f\rM[y8Y|\u0013>Pj#U%V\f\r[P\u007f'DfVWz1n\u0013JMJj<D?\u0019x\u001eh/\\z\u0018z_yp\f%j_y:\u0010K\u001fs[1n\t\rPQo+\u0010v\u0012>\u0017Vs_s']j\u001b>_~*YkVl[h!B{L>\u0002\u000b>\n\rPQo+\u0010V2$\u001e\u0004VjQ+";
      int var4 = "\rMJj<D?\"wSnt\u0010\r\r_Ko'D?\"gNnt\u0010\u0017VsWe']j\u001b>_~*YkVl[h!B{L>\u001f\rY[\u007fnVm\u0019s\u001eJ;Tv\u0002>rd![j\u0006>nd\"Y|\u000f$\u001e\u0007\rJWf+\n?\b\rR[}+\\%V\u0010\rKMn<\u0010V2>QyntQL>\b\rR[}+\\%V\n3pZ+\u001aYr\u0013$\u001e\r\rL[z;Ul\u0002>wOt\u0010\f\rKMn<\u0010Q\u0017s[1n\f\rQNn<Qk\u001fqP1n\u000f\r[P\u007f'DfV]Rj=C%V\u0004VjQ+\u0006\"wSnt\u0010\u000b\r[Pondv\u001b{\u0004+\u0013\rS[x=Qx\u0013>]d D~\u001fpM1n\t\rPQo+\u0010v\u0012>\u000f\rM[y8Y|\u0013>Pj#U%V\f\r[P\u007f'DfVWz1n\u0013JMJj<D?\u0019x\u001eh/\\z\u0018z_yp\f%j_y:\u0010K\u001fs[1n\t\rPQo+\u0010v\u0012>\u0017Vs_s']j\u001b>_~*YkVl[h!B{L>\u0002\u000b>\n\rPQo+\u0010V2$\u001e\u0004VjQ+"
         .length();
      char var1 = '\r';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 24;
         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 = "k9-\tA\"YS\u0017<\b\u0012v\u0002mX";
                  var4 = "k9-\tA\"YS\u0017<\b\u0012v\u0002mX".length();
                  var1 = '\r';
                  var7 = -1;
            }

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

      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 -> 110;
            case 1 -> 6;
            case 2 -> 38;
            case 3 -> 19;
            case 4 -> 86;
            case 5 -> 40;
            default -> 7;
         });
      }

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

   public static class Builder {
      private Date a = null;
      private Date b = null;
      private Level c = null;
      private Level d = null;
      private Class e = null;
      private String f = null;
      private final Map<String, Long> g;
      private final Map<String, Long> h;
      private int i = 0;
      private boolean j = false;
      private String k = null;
      private String l = null;
      private String m = null;
      private User n = null;
      private String o;
      private String p;
      private Integer q;
      private String r;
      private Goid s;
      private String t = null;

      public Builder() {
         this.g = Collections.emptyMap();
         this.h = Collections.emptyMap();
      }

      public Builder(LogRequest var1) {
         this.fromTime(var1.getStartMsgDate());
         this.toTime(var1.getEndMsgDate());
         this.fromLevel(var1.getLogLevel());
         this.serviceName(var1.getServiceName());
         this.message(var1.getMessage());
         this.requestId(var1.getRequestId());
         this.auditType(var1.getAuditType());
         this.userName(var1.getUserName());
         this.userIdOrDn(var1.getUserIdOrDn());
         this.messageId(var1.getMessageId());
         this.entityClassName(var1.getEntityClassName());
         this.entityId(var1.getEntityId());
         this.operation(var1.getOperation());
         this.getFromPolicy(var1.isGetFromPolicy());
         this.g = Collections.unmodifiableMap(new HashMap<>(var1.getNodeIdToStartTimestamp()));
         this.h = Collections.unmodifiableMap(new HashMap<>(var1.getNodeIdToEndMsg()));
      }

      public AuditSearchCriteria.Builder fromTime(Date var1) {
         this.a = var1;
         return this;
      }

      public AuditSearchCriteria.Builder toTime(Date var1) {
         this.b = var1;
         return this;
      }

      public AuditSearchCriteria.Builder fromLevel(Level var1) {
         this.c = var1;
         return this;
      }

      public AuditSearchCriteria.Builder toLevel(Level var1) {
         this.d = var1;
         return this;
      }

      public AuditSearchCriteria.Builder recordClass(Class var1) {
         this.e = var1;
         return this;
      }

      public AuditSearchCriteria.Builder nodeId(String var1) {
         this.f = var1;
         return this;
      }

      public AuditSearchCriteria.Builder maxRecords(int var1) {
         this.i = var1;
         return this;
      }

      public AuditSearchCriteria.Builder serviceName(String var1) {
         if (var1 != null && var1.length() > 0) {
            this.k = var1.replace("*", "%");
         } else {
            this.k = null;
         }

         return this;
      }

      public AuditSearchCriteria.Builder message(String var1) {
         if (var1 != null && var1.length() > 0) {
            this.l = var1.replace("*", "%");
         } else {
            this.l = null;
         }

         return this;
      }

      public AuditSearchCriteria.Builder requestId(String var1) {
         if (var1 != null && var1.length() > 0) {
            this.m = var1.replace("*", "%");
         } else {
            this.m = null;
         }

         return this;
      }

      public AuditSearchCriteria.Builder operation(String var1) {
         if (var1 != null && var1.length() > 0) {
            this.t = var1.replace("*", "%");
         } else {
            this.t = null;
         }

         return this;
      }

      public AuditSearchCriteria.Builder user(User var1) {
         this.n = var1;
         return this;
      }

      public AuditSearchCriteria.Builder auditType(AuditType var1) {
         switch (c.a[var1.ordinal()]) {
            case 1:
               return this.recordClass(AdminAuditRecord.class);
            case 2:
               return this.recordClass(MessageSummaryAuditRecord.class);
            case 3:
               return this.recordClass(SystemAuditRecord.class);
            default:
               return this;
         }
      }

      public AuditSearchCriteria.Builder userName(String var1) {
         if (var1 != null && !var1.trim().isEmpty()) {
            this.o = var1.replace("*", "%");
         } else {
            this.o = null;
         }

         return this;
      }

      public AuditSearchCriteria.Builder userIdOrDn(String var1) {
         if (var1 != null && !var1.trim().isEmpty()) {
            this.p = var1.replace("*", "%");
         } else {
            this.p = null;
         }

         return this;
      }

      public AuditSearchCriteria.Builder messageId(Integer var1) {
         this.q = var1;
         return this;
      }

      public AuditSearchCriteria.Builder entityClassName(String var1) {
         this.r = var1;
         return this;
      }

      public AuditSearchCriteria.Builder entityId(Goid var1) {
         this.s = var1;
         return this;
      }

      public AuditSearchCriteria.Builder getFromPolicy(boolean var1) {
         this.j = var1;
         return this;
      }

      public AuditSearchCriteria build() {
         return new AuditSearchCriteria(this);
      }
   }
}
