package com.l7tech.server.service;

import com.l7tech.gateway.common.service.ServiceDocument;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.objectmodel.EntityManager.UniqueType;
import com.l7tech.server.HibernateEntityManager;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public class ServiceDocumentManagerImpl extends HibernateEntityManager<ServiceDocument, EntityHeader> implements ServiceDocumentManager {
   private static final String m;
   private static final String n;
   private static final String[] o;

   @Override
   public Collection<ServiceDocument> findByServiceId(Goid var1) throws FindException {
      try {
         return (Collection<ServiceDocument>)this.getHibernateTemplate().execute(new al(this, var1));
      } catch (DataAccessException var4) {
         String var10002 = String.valueOf(var1);
         String[] var3 = o;
         throw new FindException(var3[3] + var10002 + var3[6], var4);
      }
   }

   private List<ServiceDocument> a(Session var1, Goid var2, boolean var3, String var4) {
      CriteriaBuilder var5 = var1.getCriteriaBuilder();
      CriteriaQuery var6 = var5.createQuery(ServiceDocument.class);
      Root var7 = var6.from(ServiceDocument.class);
      Predicate var8 = var5.conjunction();
      if (Goid.isDefault(var2)) {
         String[] var13 = o;
         var8 = var5.and(var8, var5.isNull(var7.get(var13[10])));
      } else {
         String[] var16 = o;
         var8 = var5.and(var8, var5.equal(var7.get(var16[8]), var2));
      }

      label33: {
         label32: {
            try {
               if (!var3) {
                  break label33;
               }

               if (var4 == null) {
                  break label32;
               }
            } catch (DataAccessException var14) {
               throw a(var14);
            }

            var8 = var5.and(var8, var5.equal(var7.get(o[9]), var4));
            break label33;
         }

         String[] var17 = o;
         var8 = var5.and(var8, var5.isNull(var7.get(var17[0])));
      }

      var6.select(var7).where(var8);
      List var9 = var1.createQuery(var6).getResultList();
      ArrayList var10 = new ArrayList(var9.size());

      for (ServiceDocument var12 : var9) {
         var10.add(var12);
      }

      return var10;
   }

   @Override
   public Collection<ServiceDocument> findByServiceIdAndType(Goid var1, String var2) throws FindException {
      try {
         return (Collection<ServiceDocument>)this.getHibernateTemplate().execute(new am(this, var1, var2));
      } catch (DataAccessException var5) {
         String var10002 = String.valueOf(var1);
         String[] var4 = o;
         throw new FindException(var4[1] + var10002 + var4[7], var5);
      }
   }

   public Goid save(ServiceDocument var1) throws SaveException {
      try {
         if (!this.a(var1)) {
            throw new SaveException(o[2]);
         }
      } catch (SaveException var2) {
         throw a(var2);
      }

      return super.save(var1);
   }

   public void update(ServiceDocument var1) throws UpdateException {
      try {
         if (!this.a(var1)) {
            throw new UpdateException(o[5]);
         }
      } catch (UpdateException var2) {
         throw a(var2);
      }

      super.update(var1);
   }

   @Transactional(propagation = Propagation.SUPPORTS)
   public Class getImpClass() {
      return ServiceDocument.class;
   }

   @Transactional(propagation = Propagation.SUPPORTS)
   @Override
   public Class getInterfaceClass() {
      return ServiceDocument.class;
   }

   @Transactional(propagation = Propagation.SUPPORTS)
   @Override
   public String getTableName() {
      return o[4];
   }

   @Override
   protected UniqueType getUniqueType() {
      return UniqueType.NONE;
   }

   private boolean a(ServiceDocument var1) {
      boolean var2 = true;
      if (var1 == null) {
         var2 = false;
      } else {
         if (Goid.isDefault(var1.getServiceId())) {
            var2 = false;
         }

         if (var1.getUri() == null) {
            var2 = false;
         }

         if (var1.getContents() == null) {
            var2 = false;
         }

         if (var1.getType() == null) {
            var2 = false;
         }

         if (var1.getContentType() == null) {
            var2 = false;
         }
      }

      return var2;
   }

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

   static {
      String[] var5 = new String[11];
      int var3 = 0;
      String var2 = "I\"r66x)p<\u0013\bET5f:\u000fO\u0003n>p%\bKFy4a&\fMMI(\"1\u0018\bPX)t:\u0002M\u0003T?g=\u0015AET>psF\u0019t5t2\rAG\u001d(g!\u0017A@X{f<\u0002]NX5v}6x)p<\u0013\bET5f:\u000fO\u0003n>p%\bKFy4a&\fMMI(\"1\u0018\bPX)t:\u0002M\u0003T?g=\u0015AET>psF\u0011N>p%\bKFb?m0\u0014EFS/q\u0019t5t2\rAG\u001d(g!\u0017A@X{f<\u0002]NX5v}\u0002\u001au\u0002\u001au\tN>p%\bKFt?";
      int var4 = "I\"r66x)p<\u0013\bET5f:\u000fO\u0003n>p%\bKFy4a&\fMMI(\"1\u0018\bPX)t:\u0002M\u0003T?g=\u0015AET>psF\u0019t5t2\rAG\u001d(g!\u0017A@X{f<\u0002]NX5v}6x)p<\u0013\bET5f:\u000fO\u0003n>p%\bKFy4a&\fMMI(\"1\u0018\bPX)t:\u0002M\u0003T?g=\u0015AET>psF\u0011N>p%\bKFb?m0\u0014EFS/q\u0019t5t2\rAG\u001d(g!\u0017A@X{f<\u0002]NX5v}\u0002\u001au\u0002\u001au\tN>p%\bKFt?"
         .length();
      char var1 = 4;
      int var7 = -1;

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

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

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

                  var2 = "v\u001dM\t\tq\u0001O\u001a7tyK\u0000";
                  var4 = "v\u001dM\t\tq\u0001O\u001a7tyK\u0000".length();
                  var1 = 4;
                  var7 = -1;
            }

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

      return var10000;
   }

   private static String b(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 -> 88;
            case 1 -> 62;
            case 2 -> 103;
            case 3 -> 54;
            case 4 -> 4;
            case 5 -> 77;
            default -> 70;
         });
      }

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