/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.identity.User
 *  com.l7tech.identity.UserBean
 *  com.l7tech.identity.cert.ClientCertManager
 *  com.l7tech.identity.fed.FederatedGroup
 *  com.l7tech.identity.fed.FederatedUser
 *  com.l7tech.objectmodel.DuplicateObjectException
 *  com.l7tech.objectmodel.EntityManager$UniqueType
 *  com.l7tech.objectmodel.EntityType
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.IdentityHeader
 *  com.l7tech.objectmodel.RuleViolationUpdateException
 *  com.l7tech.objectmodel.SaveException
 *  com.l7tech.objectmodel.UpdateException
 *  com.l7tech.util.CollectionUtils
 *  jakarta.persistence.criteria.CriteriaBuilder
 *  jakarta.persistence.criteria.Expression
 *  jakarta.persistence.criteria.Predicate
 *  jakarta.persistence.criteria.Root
 *  org.apache.commons.lang3.StringUtils
 *  org.hibernate.Criteria
 *  org.hibernate.criterion.Criterion
 *  org.hibernate.criterion.Restrictions
 *  org.springframework.dao.DataAccessException
 *  org.springframework.orm.hibernate5.HibernateCallback
 *  org.springframework.transaction.annotation.Propagation
 *  org.springframework.transaction.annotation.Transactional
 */
package com.l7tech.server.identity.fed;

import com.l7tech.identity.User;
import com.l7tech.identity.UserBean;
import com.l7tech.identity.cert.ClientCertManager;
import com.l7tech.identity.fed.FederatedGroup;
import com.l7tech.identity.fed.FederatedUser;
import com.l7tech.objectmodel.DuplicateObjectException;
import com.l7tech.objectmodel.EntityManager;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.IdentityHeader;
import com.l7tech.objectmodel.RuleViolationUpdateException;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.server.identity.PersistentUserManagerImpl;
import com.l7tech.server.identity.fed.FederatedGroupManager;
import com.l7tech.server.identity.fed.FederatedIdentityProvider;
import com.l7tech.server.identity.fed.FederatedUserManager;
import com.l7tech.server.identity.fed.d;
import com.l7tech.server.identity.fed.e;
import com.l7tech.server.identity.fed.f;
import com.l7tech.server.logon.LogonInfoManager;
import com.l7tech.util.CollectionUtils;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.Expression;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate5.HibernateCallback;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Transactional(propagation=Propagation.REQUIRED, rollbackFor={Throwable.class})
public class FederatedUserManagerImpl
extends PersistentUserManagerImpl<FederatedUser, FederatedGroup, FederatedUserManager, FederatedGroupManager>
implements FederatedUserManager {
    private final String r;
    private final String s;
    private final String t;
    private static final String[] u;

    public FederatedUserManagerImpl(ClientCertManager clientCertManager, LogonInfoManager logonInfoManager) {
        super(clientCertManager, logonInfoManager);
        String string = this.getTableName();
        String string2 = this.getTableName();
        String string3 = this.getImpClass().getName();
        String string4 = this.getTableName();
        String[] stringArray = u;
        this.r = stringArray[9] + string4 + stringArray[14] + string3 + stringArray[5] + string2 + stringArray[10] + string;
        this.s = this.r + stringArray[2];
        this.t = this.r + stringArray[18];
    }

    @Override
    public void configure(FederatedIdentityProvider federatedIdentityProvider) {
        this.setIdentityProvider(federatedIdentityProvider);
    }

    @Transactional(propagation=Propagation.SUPPORTS)
    public FederatedUser headerToUser(IdentityHeader identityHeader) {
        FederatedUser federatedUser = new FederatedUser(this.getProviderGoid(), identityHeader.getName());
        federatedUser.setGoid(identityHeader.getGoid());
        return federatedUser;
    }

    public FederatedUser reify(UserBean userBean) {
        Goid goid;
        FederatedUser federatedUser;
        FederatedUser federatedUser2 = new FederatedUser(userBean.getProviderId(), userBean.getLogin());
        try {
            federatedUser = federatedUser2;
            goid = userBean.getId() == null ? FederatedUser.DEFAULT_GOID : Goid.parseGoid((String)userBean.getId());
        }
        catch (DataAccessException dataAccessException) {
            throw FederatedUserManagerImpl.b((Exception)((Object)dataAccessException));
        }
        federatedUser.setGoid(goid);
        federatedUser2.setName(userBean.getName());
        federatedUser2.setDepartment(userBean.getDepartment());
        federatedUser2.setEmail(userBean.getEmail());
        federatedUser2.setFirstName(userBean.getFirstName());
        federatedUser2.setLastName(userBean.getLastName());
        federatedUser2.setSubjectDn(userBean.getSubjectDn());
        return federatedUser2;
    }

    public Class<FederatedUser> getImpClass() {
        return FederatedUser.class;
    }

    @Override
    public Class<User> getInterfaceClass() {
        return User.class;
    }

    @Override
    @Transactional(readOnly=true)
    public FederatedUser findBySubjectDN(String string) throws FindException {
        try {
            List list = (List)this.getHibernateTemplate().execute((HibernateCallback)new e(this, string));
            switch (list.size()) {
                case 0: {
                    return null;
                }
                case 1: {
                    return (FederatedUser)list.get(0);
                }
            }
            String[] stringArray = u;
            throw new FindException(stringArray[11]);
        }
        catch (DataAccessException dataAccessException) {
            throw new FindException(u[4], (Throwable)dataAccessException);
        }
    }

    @Override
    @Transactional(readOnly=true)
    public FederatedUser findByEmail(String string) throws FindException {
        try {
            List list = (List)this.getHibernateTemplate().execute((HibernateCallback)new f(this, string));
            switch (list.size()) {
                case 0: {
                    return null;
                }
                case 1: {
                    return (FederatedUser)list.get(0);
                }
            }
            String[] stringArray = u;
            throw new FindException(stringArray[13]);
        }
        catch (DataAccessException dataAccessException) {
            throw new FindException(u[0], (Throwable)dataAccessException);
        }
    }

    @Override
    public FederatedUser cast(User user) {
        try {
            if (user instanceof UserBean) {
                return this.reify((UserBean)user);
            }
        }
        catch (DataAccessException dataAccessException) {
            throw FederatedUserManagerImpl.b((Exception)((Object)dataAccessException));
        }
        return (FederatedUser)user;
    }

    @Override
    protected void preUpdate(FederatedUser federatedUser) throws UpdateException {
        try {
            if (!this.a(federatedUser)) {
                throw new RuleViolationUpdateException(u[12]);
            }
        }
        catch (UpdateException updateException) {
            throw FederatedUserManagerImpl.b((Exception)((Object)updateException));
        }
    }

    @Override
    protected void preSave(FederatedUser federatedUser) throws SaveException {
        try {
            if (!this.a(federatedUser)) {
                throw new DuplicateObjectException(u[7]);
            }
        }
        catch (SaveException saveException) {
            throw FederatedUserManagerImpl.b((Exception)((Object)saveException));
        }
    }

    @Override
    protected void addFindByNameCriteria(Criteria criteria) {
        criteria.add((Criterion)Restrictions.eq((String)u[1], (Object)this.getProviderGoid()));
    }

    @Override
    protected Predicate addFindByNamePredicate(Predicate predicate, CriteriaBuilder criteriaBuilder, Root<FederatedUser> root) {
        return criteriaBuilder.and((Expression)predicate, (Expression)criteriaBuilder.equal((Expression)root.get(u[1]), (Object)this.getProviderGoid()));
    }

    @Override
    protected String getNameFieldname() {
        return u[17];
    }

    @Override
    protected IdentityHeader newHeader(FederatedUser federatedUser) {
        return new IdentityHeader(federatedUser.getProviderId(), federatedUser.getGoid(), EntityType.USER, federatedUser.getName(), null, federatedUser.getName(), federatedUser.getVersion());
    }

    @Override
    protected void addFindAllCriteria(Criteria criteria) {
        criteria.add((Criterion)Restrictions.eq((String)u[1], (Object)this.getProviderGoid()));
    }

    @Override
    protected Predicate addFindAllPredicate(Predicate predicate, CriteriaBuilder criteriaBuilder, Root<FederatedUser> root) {
        return criteriaBuilder.and((Expression)predicate, (Expression)criteriaBuilder.equal((Expression)root.get(u[1]), (Object)this.getProviderGoid()));
    }

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

    @Override
    protected Collection<Map<String, Object>> getUniqueConstraints(FederatedUser federatedUser) {
        ArrayList<Map<String, Object>> arrayList = new ArrayList<Map<String, Object>>();
        String[] stringArray = u;
        this.a(arrayList, federatedUser.getProviderId(), stringArray[8], federatedUser.getName());
        this.a(arrayList, federatedUser.getProviderId(), stringArray[16], federatedUser.getEmail());
        this.a(arrayList, federatedUser.getProviderId(), stringArray[3], federatedUser.getLogin());
        this.a(arrayList, federatedUser.getProviderId(), stringArray[15], federatedUser.getSubjectDn());
        return arrayList;
    }

    private void a(Collection<Map<String, Object>> collection, Goid goid, String string, String string2) {
        try {
            if (!StringUtils.isEmpty((CharSequence)StringUtils.trim((String)string2))) {
                collection.add(CollectionUtils.mapBuilder().put((Object)u[6], (Object)goid).put((Object)string, (Object)string2).map());
            }
        }
        catch (DataAccessException dataAccessException) {
            throw FederatedUserManagerImpl.b((Exception)((Object)dataAccessException));
        }
    }

    private boolean a(FederatedUser federatedUser) {
        boolean bl2;
        block8: {
            block7: {
                List<FederatedUser> list;
                try {
                    d d10 = null;
                    if (!federatedUser.isUnsaved()) {
                        d10 = new d(this, federatedUser);
                    }
                    list = this.findMatching(this.getUniqueConstraints(federatedUser), d10);
                }
                catch (FindException findException) {
                    list = null;
                }
                try {
                    try {
                        if (list != null && !list.isEmpty()) break block7;
                    }
                    catch (FindException findException) {
                        throw FederatedUserManagerImpl.b((Exception)((Object)findException));
                    }
                    bl2 = true;
                    break block8;
                }
                catch (FindException findException) {
                    throw FederatedUserManagerImpl.b((Exception)((Object)findException));
                }
            }
            bl2 = false;
        }
        return bl2;
    }

    static /* synthetic */ Goid access$000(FederatedUserManagerImpl federatedUserManagerImpl) {
        return federatedUserManagerImpl.getProviderGoid();
    }

    static /* synthetic */ Goid access$100(FederatedUserManagerImpl federatedUserManagerImpl) {
        return federatedUserManagerImpl.getProviderGoid();
    }

    private static Exception b(Exception exception) {
        return exception;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[19];
                var3_1 = 0;
                var2_2 = "A>\f>B%zvq\u001f;H/}w\"\u001c \nr#\u0016$O/8p\u0018\u001d\u0017,\"\f0L.>v\u0015\u0017r\u001bkgq$\u001b8C()F?\u0005n>\u001e;H\u0012A>\f>B%zvq\u001f;H/}w\"\u001c \u0007\"\u00061\u0017t\u000e}\nr#\u0016$O/8p\u0018\u001dQV9\u001crS88p\"Y<G&8.q\u0015=A\"3.q\u001c?G\"1.q\u0016 \u0006\u0013s7a@ru>?h4\u001a&\u0006\u000f\u0013\"2\u0016<@'4a%Y%O?5\"0\u0017rC34q%\u0010<Ak(q4\u000b|\u0004l0\u00147\u0005D\u00036\u001f\u0006\u001e,!\u000b=P\"9g#06\u0006v}8!\u000b=P\"9g#06\u0006\n\u0013Fq)D>\f<Bk0w=\r;V'8\"$\n7T8}u8\r:\u00068<o4Y!S)7g2\rrb\u0005KV9\u001crS88p\"Y>I,4l}Y7K*4n}Y=Tk\u0005,dIk\u0006\u0018(`;\u001c1Rk\u0019Lq\u001a=H-1k2\rrQ\")jq\u0018<\u0006.%k\"\r;H,}w\"\u001c \b$D>\f<Bk0w=\r;V'8\"$\n7T8}u8\r:\u00068<o4Y7K*4n\n\"\u00187re\u0007\u001cQ\u0002Y\tq$\u001b8C()F?\u0005g<\u0018;J";
                var4_3 = "A>\f>B%zvq\u001f;H/}w\"\u001c \nr#\u0016$O/8p\u0018\u001d\u0017,\"\f0L.>v\u0015\u0017r\u001bkgq$\u001b8C()F?\u0005n>\u001e;H\u0012A>\f>B%zvq\u001f;H/}w\"\u001c \u0007\"\u00061\u0017t\u000e}\nr#\u0016$O/8p\u0018\u001dQV9\u001crS88p\"Y<G&8.q\u0015=A\"3.q\u001c?G\"1.q\u0016 \u0006\u0013s7a@ru>?h4\u001a&\u0006\u000f\u0013\"2\u0016<@'4a%Y%O?5\"0\u0017rC34q%\u0010<Ak(q4\u000b|\u0004l0\u00147\u0005D\u00036\u001f\u0006\u001e,!\u000b=P\"9g#06\u0006v}8!\u000b=P\"9g#06\u0006\n\u0013Fq)D>\f<Bk0w=\r;V'8\"$\n7T8}u8\r:\u00068<o4Y!S)7g2\rrb\u0005KV9\u001crS88p\"Y>I,4l}Y7K*4n}Y=Tk\u0005,dIk\u0006\u0018(`;\u001c1Rk\u0019Lq\u001a=H-1k2\rrQ\")jq\u0018<\u0006.%k\"\r;H,}w\"\u001c \b$D>\f<Bk0w=\r;V'8\"$\n7T8}u8\r:\u00068<o4Y7K*4n\n\"\u00187re\u0007\u001cQ\u0002Y\tq$\u001b8C()F?\u0005g<\u0018;J".length();
                var1_4 = 18;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 19;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = FederatedUserManagerImpl.c(v0, FederatedUserManagerImpl.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "F\u001a>\u001d\u000f\u0006\u001e>\u0019e\rW\u0015[i\u001da\u0000\u001eD";
                    var4_3 = "F\u001a>\u001d\u000f\u0006\u001e>\u0019e\rW\u0015[i\u001da\u0000\u001eD".length();
                    var1_4 = 4;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 57;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = FederatedUserManagerImpl.c(v0, FederatedUserManagerImpl.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        FederatedUserManagerImpl.u = var5;
    }

    private static char[] b(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x4E);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String c(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 17;
                    case 1 -> 66;
                    case 2 -> 106;
                    case 3 -> 65;
                    case 4 -> 53;
                    case 5 -> 88;
                    default -> 78;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

