package com.l7tech.server;

import com.l7tech.objectmodel.FindException;
import com.l7tech.server.util.ReadOnlyHibernateCallback;
import com.l7tech.util.Functions.BinaryThrows;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Expression;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.sql.SQLException;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.query.Query;

class bv extends ReadOnlyHibernateCallback<Integer> {
   final BinaryThrows val$predicateCustomizer;
   final HibernateEntityManager this$0;

   bv(HibernateEntityManager var1, BinaryThrows var2) {
      this.this$0 = var1;
      this.val$predicateCustomizer = var2;
   }

   protected Integer doInHibernateReadOnly(Session var1) throws HibernateException, SQLException {
      CriteriaBuilder var2 = var1.getCriteriaBuilder();
      CriteriaQuery var3 = var2.createQuery(Long.class);
      Root var4 = var3.from(this.this$0.getImpClass());
      var3.select(var2.count(var4));
      Predicate var5 = this.this$0.addFindAllPredicate(var2.conjunction(), var2, var4);

      try {
         CriteriaQuery var10000;
         Predicate var10001;
         label21: {
            try {
               var10000 = var3;
               if (this.val$predicateCustomizer == null) {
                  var10001 = var5;
                  break label21;
               }
            } catch (FindException var7) {
               throw a(var7);
            }

            var10001 = var2.and(var5, (Expression)this.val$predicateCustomizer.call(var2, var4));
         }

         var10000.where(var10001);
      } catch (FindException var8) {
         throw new HibernateException(var8);
      }

      Query var6 = var1.createQuery(var3);
      return ((Number)var6.getSingleResult()).intValue();
   }

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