/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.server.management.db.LiquibaseDBManager
 *  com.l7tech.util.BuildInfo
 *  com.l7tech.util.DbUpgradeUtil
 *  com.l7tech.util.Triple
 *  org.apache.commons.lang3.StringUtils
 *  org.jetbrains.annotations.NotNull
 *  org.springframework.core.io.Resource
 *  org.springframework.core.io.support.PathMatchingResourcePatternResolver
 *  org.springframework.jdbc.CannotGetJdbcConnectionException
 *  org.springframework.jdbc.core.support.JdbcDaoSupport
 *  org.springframework.transaction.PlatformTransactionManager
 *  org.springframework.transaction.support.TransactionCallback
 *  org.springframework.transaction.support.TransactionTemplate
 */
package com.l7tech.server.util;

import com.l7tech.server.management.db.LiquibaseDBManager;
import com.l7tech.server.util.DerbyDbHelper;
import com.l7tech.server.util.SchemaUpdater;
import com.l7tech.server.util.ab;
import com.l7tech.util.BuildInfo;
import com.l7tech.util.DbUpgradeUtil;
import com.l7tech.util.Triple;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.CannotGetJdbcConnectionException;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;

/*
 * Exception performing whole class analysis ignored.
 */
public class EmbeddedDbSchemaUpdater
extends JdbcDaoSupport
implements SchemaUpdater {
    private static final Logger a;
    private LiquibaseDBManager b;
    private final PlatformTransactionManager c;
    private final Map<String, Triple<String, Resource, Resource>> d;
    private static final String[] e;

    public EmbeddedDbSchemaUpdater(@NotNull PlatformTransactionManager platformTransactionManager, @NotNull String string, @NotNull LiquibaseDBManager liquibaseDBManager) throws IOException {
        if (platformTransactionManager == null) {
            EmbeddedDbSchemaUpdater.a(0);
        }
        if (string == null) {
            EmbeddedDbSchemaUpdater.a(1);
        }
        if (liquibaseDBManager == null) {
            EmbeddedDbSchemaUpdater.a(2);
        }
        this.d = new HashMap<String, Triple<String, Resource, Resource>>();
        this.c = platformTransactionManager;
        try {
            Resource[] resourceArray;
            String[] stringArray = e;
            for (Resource resource : resourceArray = new PathMatchingResourcePatternResolver().getResources(string + stringArray[24])) {
                Triple triple;
                block8: {
                    if (!resource.exists()) continue;
                    String string2 = resource.getURL().getPath();
                    int n2 = string2.lastIndexOf(47);
                    String string3 = string2.substring(n2 + 1);
                    triple = DbUpgradeUtil.isUpgradeScript((String)string3);
                    try {
                        if (triple == null) continue;
                        if (!this.d.containsKey(triple.left)) break block8;
                    }
                    catch (FileNotFoundException fileNotFoundException) {
                        throw EmbeddedDbSchemaUpdater.a(fileNotFoundException);
                    }
                    Triple<String, Resource, Resource> triple2 = this.d.get(triple.left);
                    this.d.put((String)triple.left, (Triple<String, Resource, Resource>)new Triple((Object)((String)triple.middle), (Object)((Resource)triple2.middle), (Object)resource));
                    continue;
                }
                this.d.put((String)triple.left, (Triple<String, Resource, Resource>)new Triple((Object)((String)triple.middle), (Object)resource, null));
            }
        }
        catch (FileNotFoundException fileNotFoundException) {
            throw new IllegalArgumentException(string + e[21]);
        }
        this.b = liquibaseDBManager;
    }

    @Override
    public void ensureCurrentSchema() throws SchemaUpdater.SchemaException {
        String string = this.getProductVersion();
        try {
            if (StringUtils.isBlank((CharSequence)string)) {
                throw new SchemaUpdater.SchemaException(e[27]);
            }
        }
        catch (SchemaUpdater.SchemaException schemaException) {
            throw EmbeddedDbSchemaUpdater.a(schemaException);
        }
        new TransactionTemplate(this.c).execute((TransactionCallback)new ab(this, string));
    }

    private void a(@NotNull Connection connection, @NotNull String string) {
        try {
            if (connection == null) {
                EmbeddedDbSchemaUpdater.a(3);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw EmbeddedDbSchemaUpdater.a(illegalArgumentException);
        }
        try {
            if (string == null) {
                EmbeddedDbSchemaUpdater.a(4);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw EmbeddedDbSchemaUpdater.a(illegalArgumentException);
        }
        String string2 = DbUpgradeUtil.checkVersionFromDatabaseVersion((Connection)connection);
        try {
            if (StringUtils.isBlank((CharSequence)string2)) {
                throw new SchemaUpdater.SchemaException(e[2]);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw EmbeddedDbSchemaUpdater.a(illegalArgumentException);
        }
        while (!LiquibaseDBManager.JAVELIN_PRE_DB_VERSION.equals(string2)) {
            Triple<String, Resource, Resource> triple = this.d.get(string2);
            if (triple == null) {
                String[] stringArray = e;
                String string3 = stringArray[1] + string2 + stringArray[10] + string + "\"";
                a.warning(string3);
                throw new SchemaUpdater.SchemaException(string3);
            }
            this.a(string2, triple, connection);
            string2 = DbUpgradeUtil.checkVersionFromDatabaseVersion((Connection)connection);
        }
    }

    /*
     * Loose catch block
     * Enabled force condition propagation
     * Lifted jumps to return sites
     */
    private void a(@NotNull String string, @NotNull Triple<String, Resource, Resource> triple, @NotNull Connection connection) {
        Resource resource;
        String string2;
        block33: {
            try {
                if (string == null) {
                    EmbeddedDbSchemaUpdater.a(5);
                }
            }
            catch (SQLException sQLException) {
                throw EmbeddedDbSchemaUpdater.a(sQLException);
            }
            try {
                if (triple == null) {
                    EmbeddedDbSchemaUpdater.a(6);
                }
            }
            catch (SQLException sQLException) {
                throw EmbeddedDbSchemaUpdater.a(sQLException);
            }
            try {
                if (connection == null) {
                    EmbeddedDbSchemaUpdater.a(7);
                }
            }
            catch (SQLException sQLException) {
                throw EmbeddedDbSchemaUpdater.a(sQLException);
            }
            string2 = (String)triple.left;
            if (triple.right == null) {
                resource = (Resource)triple.middle;
            } else {
                Resource resource2;
                try {
                    resource2 = ((Resource)triple.middle).getFilename().contains(DbUpgradeUtil.UPGRADE_TRY_SUFFIX) ? (Resource)triple.middle : (Resource)triple.right;
                }
                catch (SQLException sQLException) {
                    throw EmbeddedDbSchemaUpdater.a(sQLException);
                }
                resource = resource2;
            }
            if (StringUtils.isBlank((CharSequence)string2)) throw new SchemaUpdater.SchemaException(e[14]);
            try {
                if (resource != null) break block33;
                throw new SchemaUpdater.SchemaException(e[14]);
                catch (SQLException sQLException) {
                    throw EmbeddedDbSchemaUpdater.a(sQLException);
                }
            }
            catch (SQLException sQLException) {
                throw EmbeddedDbSchemaUpdater.a(sQLException);
            }
        }
        String[] stringArray = e;
        a.info(stringArray[3] + string + stringArray[4] + string2);
        try {
            DerbyDbHelper.runScripts(connection, new Resource[]{resource}, false);
        }
        catch (SQLException sQLException) {
            block34: {
                Resource resource3;
                block36: {
                    block35: {
                        if (triple.right == null) break block34;
                        try {
                            block37: {
                                if (!((Resource)triple.middle).getFilename().contains(DbUpgradeUtil.UPGRADE_SUCCESS_SUFFIX)) break block35;
                                break block37;
                                catch (SQLException sQLException2) {
                                    throw EmbeddedDbSchemaUpdater.a(sQLException2);
                                }
                            }
                            resource3 = (Resource)triple.middle;
                            break block36;
                        }
                        catch (SQLException sQLException3) {
                            throw EmbeddedDbSchemaUpdater.a(sQLException3);
                        }
                    }
                    resource3 = (Resource)triple.right;
                }
                Resource resource4 = resource3;
                try {
                    Object object;
                    String[] stringArray2 = DerbyDbHelper.getSqlStatements(resource4);
                    stringArray = e;
                    a.info(stringArray[9] + resource4.getFilename());
                    Statement statement = null;
                    for (int i2 = 0; i2 < stringArray2.length - 1; ++i2) {
                        object = stringArray2[i2];
                        statement = connection.createStatement();
                        try {
                            if (a.isLoggable(Level.FINE)) {
                                a.log(Level.FINE, e[11] + (String)object);
                            }
                        }
                        catch (SQLException sQLException4) {
                            throw EmbeddedDbSchemaUpdater.a(sQLException4);
                        }
                        statement.executeUpdate((String)object);
                    }
                    String string3 = stringArray2[stringArray2.length - 1];
                    stringArray = e;
                    a.log(Level.FINE, stringArray[26] + string3);
                    statement = connection.createStatement();
                    object = statement.executeQuery(string3);
                    try {
                        if (!object.next()) {
                            throw new SQLException(stringArray[6]);
                        }
                    }
                    catch (SQLException sQLException5) {
                        throw EmbeddedDbSchemaUpdater.a(sQLException5);
                    }
                }
                catch (SQLException sQLException6) {
                    stringArray = e;
                    throw new SchemaUpdater.SchemaException(stringArray[13], sQLException6);
                }
                catch (IOException iOException) {
                    stringArray = e;
                    throw new SchemaUpdater.SchemaException(stringArray[17], iOException);
                }
            }
            stringArray = e;
            throw new SchemaUpdater.SchemaException(stringArray[17], sQLException);
        }
        stringArray = e;
        a.info(stringArray[23] + string + stringArray[18] + string2);
    }

    protected String getProductVersion() {
        return BuildInfo.getFormalProductVersion();
    }

    static /* synthetic */ Connection access$000(EmbeddedDbSchemaUpdater embeddedDbSchemaUpdater) throws CannotGetJdbcConnectionException {
        return embeddedDbSchemaUpdater.getConnection();
    }

    static /* synthetic */ void access$100(EmbeddedDbSchemaUpdater embeddedDbSchemaUpdater, Connection connection) {
        embeddedDbSchemaUpdater.releaseConnection(connection);
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[29];
                var3_1 = 0;
                var2_2 = "\rj\r;; =\rq\u0003;\u0005 0\u0018\u007f\t'\u00167wL 8&,\u0018|\tu8 *\u00118\n'',~[+<j\u001e::a,\u001cy\b<&&~\u001am\u001e'-/*Yn\t';(1\u00178\n'',~\u001dy\u00184* -\u001c\u0012,h\u000b')%7\u0017\u007fL1*a8\u000bw\u0001u\u0002T&.\u001aw\u0001z$v*\u001c{\u0004z;$,\u000f}\u001ez=57\u00157)8*$:\u001d}\b\u0011*\u0012=\u0011}\u00014\u001d1:\u0018l\t'+<j\u001e::a=\u0011}\u000f>!/9Yk\u00196+$-\n4L;'a,\u001ck\u00199<a,\u001cl\u0019'&$:W\t\u001dz:0:27\u0016v\n\u0017}\u001b\u0003-3-\u0010w\u0002\u0016,k\u0005;/a+\t\u007f\u001e4,$~\n{\u001e<85dY\u0006[8\u0018:hc\u0013+m\u0002;!/9Yk\u00184<$3\u001cv\u0018oh\r\u0015}\u000b4+8\u000b\t\u007f\u001e4,$\u0017<j\u001e::a;\u0001}\u000f <(0\u001e8\u0019%/3?\u001d}(,v\u0007;'60Yv\t-<a(\u001cj\u001f<'/~\u0016jL 8&,\u0018|\tu:$-\u0016m\u001e6-\u0006Eq\u0002<<\u007f\u0014\fh\u000b')%;*q\u00022$$\b\u001cj\u001f<'/\u0017<j\u001e::a;\u0001}\u000f <(0\u001e8\u0019%/3?\u001d}\u0002T&\n\u001aw\u0002;-\"*\u0010w\u0002\u000b\fh\u000b')%;0v\n:\u0010Y|\u00030;a0\u0016lL00(-\r6\t\u001dz!4& 9\u001cj\u0017:w\u0001%$$*\u001c|L 8&,\u0018|\tu.31\u00148\u0006V2B&9->8j\u000b %$0\r8\n::a\u001e7w\u0018\u001b=-2Yh\r'),;\r}\u001euod-^8\u00033hd-W=\u001fu%4-\r8\u0002:<a<\u001c8\u0002 $-\u0013+m\u0002;!/9Yk\u00184<$3\u001cv\u0018oh";
                var4_3 = "\rj\r;; =\rq\u0003;\u0005 0\u0018\u007f\t'\u00167wL 8&,\u0018|\tu8 *\u00118\n'',~[+<j\u001e::a,\u001cy\b<&&~\u001am\u001e'-/*Yn\t';(1\u00178\n'',~\u001dy\u00184* -\u001c\u0012,h\u000b')%7\u0017\u007fL1*a8\u000bw\u0001u\u0002T&.\u001aw\u0001z$v*\u001c{\u0004z;$,\u000f}\u001ez=57\u00157)8*$:\u001d}\b\u0011*\u0012=\u0011}\u00014\u001d1:\u0018l\t'+<j\u001e::a=\u0011}\u000f>!/9Yk\u00196+$-\n4L;'a,\u001ck\u00199<a,\u001cl\u0019'&$:W\t\u001dz:0:27\u0016v\n\u0017}\u001b\u0003-3-\u0010w\u0002\u0016,k\u0005;/a+\t\u007f\u001e4,$~\n{\u001e<85dY\u0006[8\u0018:hc\u0013+m\u0002;!/9Yk\u00184<$3\u001cv\u0018oh\r\u0015}\u000b4+8\u000b\t\u007f\u001e4,$\u0017<j\u001e::a;\u0001}\u000f <(0\u001e8\u0019%/3?\u001d}(,v\u0007;'60Yv\t-<a(\u001cj\u001f<'/~\u0016jL 8&,\u0018|\tu:$-\u0016m\u001e6-\u0006Eq\u0002<<\u007f\u0014\fh\u000b')%;*q\u00022$$\b\u001cj\u001f<'/\u0017<j\u001e::a;\u0001}\u000f <(0\u001e8\u0019%/3?\u001d}\u0002T&\n\u001aw\u0002;-\"*\u0010w\u0002\u000b\fh\u000b')%;0v\n:\u0010Y|\u00030;a0\u0016lL00(-\r6\t\u001dz!4& 9\u001cj\u0017:w\u0001%$$*\u001c|L 8&,\u0018|\tu.31\u00148\u0006V2B&9->8j\u000b %$0\r8\n::a\u001e7w\u0018\u001b=-2Yh\r'),;\r}\u001euod-^8\u00033hd-W=\u001fu%4-\r8\u0002:<a<\u001c8\u0002 $-\u0013+m\u0002;!/9Yk\u00184<$3\u001cv\u0018oh".length();
                var1_4 = 18;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = EmbeddedDbSchemaUpdater.a(v0, EmbeddedDbSchemaUpdater.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\u001fI=\u0019\u0019B\u000f?Z+\u001f\u0005\u0005]9N=\u0004\u000e\f\tzY:\u001f\u0007\u0006],^=\u0005\u0002\r\u0013\u0011(^<\u0019\u001e\u0010\u001e?\u007f&\u0004\u000e\u0001\t5I6";
                    var4_3 = "\u001fI=\u0019\u0019B\u000f?Z+\u001f\u0005\u0005]9N=\u0004\u000e\f\tzY:\u001f\u0007\u0006],^=\u0005\u0002\r\u0013\u0011(^<\u0019\u001e\u0010\u001e?\u007f&\u0004\u000e\u0001\t5I6".length();
                    var1_4 = 35;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 10;
                        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++] = EmbeddedDbSchemaUpdater.a(v0, EmbeddedDbSchemaUpdater.a(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;
            }
        }
        EmbeddedDbSchemaUpdater.e = var5;
        EmbeddedDbSchemaUpdater.a = Logger.getLogger(EmbeddedDbSchemaUpdater.class.getName());
    }

    /*
     * Exception decompiling
     */
    private static /* synthetic */ void a(int var0) {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [0[TRYBLOCK]], but top level block is 2[SWITCH]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1050)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

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

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

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String a(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 -> 80;
                    case 1 -> 49;
                    case 2 -> 69;
                    case 3 -> 124;
                    case 4 -> 97;
                    case 5 -> 104;
                    default -> 119;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

