/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.server.management.db.LiquibaseDBManager
 *  com.l7tech.util.Charsets
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.ResourceUtils
 *  liquibase.exception.LiquibaseException
 *  org.springframework.core.io.Resource
 */
package com.l7tech.server.util;

import com.l7tech.server.management.db.LiquibaseDBManager;
import com.l7tech.util.Charsets;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.ResourceUtils;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.sql.DataSource;
import liquibase.exception.LiquibaseException;
import org.springframework.core.io.Resource;

public class DerbyDbHelper {
    private static final Logger a;
    private static final String[] b;

    /*
     * Loose catch block
     */
    public static void runScripts(Connection connection, Resource[] resourceArray, boolean bl2) throws SQLException {
        for (Resource resource : resourceArray) {
            try {
                if (!resource.exists()) {
                    continue;
                }
            }
            catch (SQLException sQLException) {
                throw DerbyDbHelper.a(sQLException);
            }
            String[] stringArray = b;
            a.config(stringArray[16] + resource.getDescription() + stringArray[2]);
            try {
                block22: {
                    block23: {
                        String[] stringArray2;
                        for (String string : stringArray2 = DerbyDbHelper.getSqlStatements(resource)) {
                            Statement statement = null;
                            try {
                                statement = connection.createStatement();
                                try {
                                    if (a.isLoggable(Level.FINE)) {
                                        a.log(Level.FINE, b[4] + string);
                                    }
                                }
                                catch (SQLException sQLException) {
                                    throw DerbyDbHelper.a(sQLException);
                                }
                                statement.executeUpdate(string);
                                for (SQLWarning sQLWarning = statement.getWarnings(); sQLWarning != null; sQLWarning = sQLWarning.getNextWarning()) {
                                    String string2 = sQLWarning.getMessage();
                                    int n2 = sQLWarning.getErrorCode();
                                    String string3 = sQLWarning.getSQLState();
                                    stringArray = b;
                                    a.warning(stringArray[5] + string3 + stringArray[9] + n2 + stringArray[8] + string2);
                                }
                            }
                            catch (SQLException sQLException) {
                                stringArray = b;
                                a.log(Level.INFO, stringArray[13] + string, ExceptionUtils.getDebugException((Throwable)sQLException));
                                throw sQLException;
                            }
                            finally {
                                ResourceUtils.closeQuietly((Statement)statement);
                            }
                        }
                        if (!bl2) continue;
                        if (resource.getFile() == null) continue;
                        break block23;
                        catch (SQLException sQLException) {
                            throw DerbyDbHelper.a(sQLException);
                        }
                    }
                    try {
                        block24: {
                            if (!resource.getFile().delete()) break block22;
                            break block24;
                            catch (SQLException sQLException) {
                                throw DerbyDbHelper.a(sQLException);
                            }
                        }
                        a.info(b[10] + resource.getDescription() + b[20]);
                        continue;
                    }
                    catch (SQLException sQLException) {
                        throw DerbyDbHelper.a(sQLException);
                    }
                }
                stringArray = b;
                a.warning(stringArray[19] + resource.getDescription() + stringArray[20]);
            }
            catch (IOException iOException) {
                a.log(Level.WARNING, b[6], iOException);
            }
        }
    }

    public static String[] getSqlStatements(Resource resource) throws IOException {
        int n2;
        ArrayList<String> arrayList = new ArrayList<String>();
        String string = null;
        StreamTokenizer streamTokenizer = new StreamTokenizer(new InputStreamReader(resource.getInputStream(), Charsets.UTF8));
        streamTokenizer.eolIsSignificant(true);
        try {
            for (n2 = 48; n2 <= 57; ++n2) {
                streamTokenizer.ordinaryChar(n2);
            }
        }
        catch (IOException iOException) {
            throw DerbyDbHelper.a(iOException);
        }
        streamTokenizer.quoteChar(39);
        streamTokenizer.ordinaryChar(46);
        streamTokenizer.ordinaryChar(45);
        streamTokenizer.ordinaryChar(32);
        streamTokenizer.wordChars(16, 31);
        streamTokenizer.wordChars(33, 38);
        streamTokenizer.wordChars(40, 45);
        streamTokenizer.wordChars(46, 126);
        streamTokenizer.ordinaryChar(59);
        StringBuilder stringBuilder = new StringBuilder();
        while (true) {
            block23: {
                block22: {
                    int n3;
                    int n4;
                    block21: {
                        n2 = streamTokenizer.nextToken();
                        try {
                            try {
                                if (n2 == -1) break;
                                if (n2 != -3) break block21;
                            }
                            catch (IOException iOException) {
                                throw DerbyDbHelper.a(iOException);
                            }
                            stringBuilder.append(streamTokenizer.sval);
                            continue;
                        }
                        catch (IOException iOException) {
                            throw DerbyDbHelper.a(iOException);
                        }
                    }
                    if (n2 == 59) {
                        string = stringBuilder.toString().trim();
                        n4 = stringBuilder.lastIndexOf("\n");
                        String[] stringArray = b;
                        n3 = stringBuilder.indexOf(stringArray[15], n4);
                        try {
                            if (n3 >= 0) {
                                stringBuilder.append(";");
                                continue;
                            }
                        }
                        catch (IOException iOException) {
                            throw DerbyDbHelper.a(iOException);
                        }
                        stringBuilder.setLength(0);
                        arrayList.add(string);
                        continue;
                    }
                    try {
                        if (n2 != 10 || stringBuilder.length() <= 0) break block22;
                    }
                    catch (IOException iOException) {
                        throw DerbyDbHelper.a(iOException);
                    }
                    n4 = stringBuilder.lastIndexOf("\n");
                    n3 = stringBuilder.indexOf(b[14], n4);
                    try {
                        if (n3 >= 0) {
                            stringBuilder.setLength(n3);
                        }
                    }
                    catch (IOException iOException) {
                        throw DerbyDbHelper.a(iOException);
                    }
                    stringBuilder.append("\n");
                    continue;
                }
                try {
                    try {
                        if (n2 != 32 || stringBuilder.length() <= 0) break block23;
                    }
                    catch (IOException iOException) {
                        throw DerbyDbHelper.a(iOException);
                    }
                    stringBuilder.append(" ");
                    continue;
                }
                catch (IOException iOException) {
                    throw DerbyDbHelper.a(iOException);
                }
            }
            if (n2 != 39) continue;
            stringBuilder.append("'");
            stringBuilder.append(streamTokenizer.sval);
            stringBuilder.append("'");
        }
        return arrayList.toArray(new String[arrayList.size()]);
    }

    public static void ensureDataSource(DataSource dataSource, LiquibaseDBManager liquibaseDBManager, Resource[] resourceArray) {
        block17: {
            block16: {
                Connection connection = null;
                boolean bl2 = true;
                try {
                    connection = dataSource.getConnection();
                    SQLWarning sQLWarning = connection.getWarnings();
                    while (true) {
                        block18: {
                            block14: {
                                try {
                                    if (sQLWarning == null) break;
                                    if (!b[0].equals(sQLWarning.getSQLState())) break block14;
                                }
                                catch (SQLException sQLException) {
                                    throw DerbyDbHelper.a(sQLException);
                                }
                                bl2 = false;
                                break block18;
                            }
                            String string = sQLWarning.getMessage();
                            String string2 = sQLWarning.getSQLState();
                            int n2 = sQLWarning.getErrorCode();
                            String[] stringArray = b;
                            a.log(Level.WARNING, stringArray[11] + n2 + stringArray[1] + string2 + stringArray[17] + string);
                        }
                        sQLWarning = sQLWarning.getNextWarning();
                    }
                    try {
                        if (bl2) {
                            liquibaseDBManager.ensureSchema(connection);
                            DerbyDbHelper.runScripts(connection, resourceArray, false);
                            connection.commit();
                        }
                    }
                    catch (SQLException sQLException) {
                        throw DerbyDbHelper.a(sQLException);
                    }
                }
                catch (SQLException sQLException) {
                    String[] stringArray = b;
                    throw new RuntimeException(stringArray[7], sQLException);
                }
                catch (LiquibaseException liquibaseException) {
                    String[] stringArray = b;
                    throw new RuntimeException(stringArray[3], liquibaseException);
                }
                finally {
                    ResourceUtils.closeQuietly((Connection)connection);
                }
                try {
                    if (!bl2) break block16;
                    a.config(b[18]);
                    break block17;
                }
                catch (SQLException sQLException) {
                    throw DerbyDbHelper.a(sQLException);
                }
            }
            a.config(b[12]);
        }
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[21];
                var3_1 = 0;
                var2_2 = ",>)\u000bA\f0/0j<} }{\u0006\u0001P\u0002;!\u0016_`\u0016W\u0014\u000e7nj\u0002O\u0015\u000e0}{\u0002Y\u0011]12\u0013Nz\rU\u0019@3<|\u0017Z\u0004K9ya\u0017\u0001P\fO^/\u001b'O&rf\r\\P\u001bY}\u0011T\u0002\u000e$n`\u0000^\u0003]=rhC\u007f2\u000e'\u007f}\nK\u0004\u0000\u001e_`\u0016W\u0014\u000e:s{CX\u001f@:yl\u0017\u001b\u0004Atxn\u0017Z\u0012O'y!\u000355C\u0002<'\u0013Xj\u000f^\u0004K0<K!\u001b\u0003M&u\u007f\u0017\u001bW\rO^/\u001b'O&rf\r\\J\u000e\u0018I|\nU\u0017\u000e1df\u0010O\u0019@3<k\u0002O\u0011L5ojM\u001ePn\u0010OP}\u0005P/\u0010O\u0011Z1qj\rOPO hj\u000eK\u0004K0&/\u00021\"\u00021\"\u0013Nz\rU\u0019@3<K!\u001b\u0003M&u\u007f\u0017\u001bW\u000b0/.^\u0003]5{jY\u001b\u0015_}\u0006Z\u0004K0<a\u0006LPJ5hn\u0001Z\u0003Kz";
                var4_3 = ",>)\u000bA\f0/0j<} }{\u0006\u0001P\u0002;!\u0016_`\u0016W\u0014\u000e7nj\u0002O\u0015\u000e0}{\u0002Y\u0011]12\u0013Nz\rU\u0019@3<|\u0017Z\u0004K9ya\u0017\u0001P\fO^/\u001b'O&rf\r\\P\u001bY}\u0011T\u0002\u000e$n`\u0000^\u0003]=rhC\u007f2\u000e'\u007f}\nK\u0004\u0000\u001e_`\u0016W\u0014\u000e:s{CX\u001f@:yl\u0017\u001b\u0004Atxn\u0017Z\u0012O'y!\u000355C\u0002<'\u0013Xj\u000f^\u0004K0<K!\u001b\u0003M&u\u007f\u0017\u001bW\rO^/\u001b'O&rf\r\\J\u000e\u0018I|\nU\u0017\u000e1df\u0010O\u0019@3<k\u0002O\u0011L5ojM\u001ePn\u0010OP}\u0005P/\u0010O\u0011Z1qj\rOPO hj\u000eK\u0004K0&/\u00021\"\u00021\"\u0013Nz\rU\u0019@3<K!\u001b\u0003M&u\u007f\u0017\u001bW\u000b0/.^\u0003]5{jY\u001b\u0015_}\u0006Z\u0004K0<a\u0006LPJ5hn\u0001Z\u0003Kz".length();
                var1_4 = 5;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = DerbyDbHelper.a(v0, DerbyDbHelper.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "R`\u0005T\u000eM1x%\u000fP\u0013H;r%\u000f^\b\u0004\u001aT%\u001aR\bM.b%N\u00021+";
                    var4_3 = "R`\u0005T\u000eM1x%\u000fP\u0013H;r%\u000f^\b\u0004\u001aT%\u001aR\bM.b%N\u00021+".length();
                    var1_4 = 31;
                    var0_5 = -1;
lbl22:
                    // 2 sources

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

    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] ^ 0x10);
        }
        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 -> 88;
                    case 1 -> 75;
                    case 2 -> 39;
                    case 3 -> 127;
                    case 4 -> 52;
                    case 5 -> 106;
                    default -> 16;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

