/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.audit.AuditRecord
 *  com.l7tech.gateway.common.audit.AuditRecordHeader
 *  com.l7tech.gateway.common.audit.AuditSearchCriteria
 *  com.l7tech.objectmodel.DeleteException
 *  com.l7tech.objectmodel.EntityManager
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.util.Config
 *  com.l7tech.util.Pair
 */
package com.l7tech.server.audit;

import com.l7tech.gateway.common.audit.AuditRecord;
import com.l7tech.gateway.common.audit.AuditRecordHeader;
import com.l7tech.gateway.common.audit.AuditSearchCriteria;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.EntityManager;
import com.l7tech.objectmodel.FindException;
import com.l7tech.util.Config;
import com.l7tech.util.Pair;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
import java.util.Map;

public interface AuditRecordManager
extends EntityManager<AuditRecord, AuditRecordHeader> {
    public static final String PROP_NAME = "name";
    public static final String PROP_MSG = "message";

    public List<AuditRecordHeader> findHeaders(AuditSearchCriteria var1) throws FindException;

    public Config getAuditValidatedConfig();

    public Map<String, Pair<byte[], byte[]>> getDigestForAuditRecords(Collection<String> var1) throws FindException;

    public void deleteOldAuditRecords(long var1) throws DeleteException;

    public int findCount(AuditSearchCriteria var1) throws FindException;

    public Collection<AuditRecord> findPage(SortProperty var1, boolean var2, int var3, int var4, AuditSearchCriteria var5) throws FindException;

    public long getMinMills(long var1) throws SQLException;

    public int deleteRangeByTime(long var1, long var3) throws SQLException;

    public long getMaxTableSpace() throws FindException;

    public long getCurrentUsage() throws FindException;

    public void setDatabaseFull(boolean var1);

    public static final class SortProperty
    extends Enum<SortProperty> {
        public static final /* enum */ SortProperty TIME;
        public static final /* enum */ SortProperty MESSAGE;
        public static final /* enum */ SortProperty LEVEL;
        private final String name;
        private static final /* synthetic */ SortProperty[] $VALUES;

        public static SortProperty[] values() {
            return (SortProperty[])$VALUES.clone();
        }

        public static SortProperty valueOf(String string) {
            return Enum.valueOf(SortProperty.class, string);
        }

        private SortProperty(String string2) {
            this.name = string2;
        }

        String getPropertyName() {
            return this.name;
        }

        private static /* synthetic */ SortProperty[] $values() {
            return new SortProperty[]{TIME, MESSAGE, LEVEL};
        }

        /*
         * Unable to fully structure code
         */
        static {
            block10: {
                block9: {
                    var0 = new String[6];
                    var4_1 = 0;
                    var3_2 = "Y!jz@x\u0007Y-ueHl{\u0005x\rPSe\u0004`\u0001KS";
                    var5_3 = "Y!jz@x\u0007Y-ueHl{\u0005x\rPSe\u0004`\u0001KS".length();
                    var2_4 = 6;
                    var1_5 = -1;
lbl7:
                    // 2 sources

                    while (true) {
                        v0 = 81;
                        v1 = ++var1_5;
                        v2 = var3_2.substring(v1, v1 + var2_4);
                        v3 = -1;
                        break block9;
                        break;
                    }
lbl13:
                    // 1 sources

                    while (true) {
                        var0[var4_1++] = SortProperty.a(v0, SortProperty.a(v2));
                        if ((var1_5 += var2_4) < var5_3) {
                            var2_4 = var3_2.charAt(var1_5);
                            ** continue;
                        }
                        var3_2 = ".U\u001d36\u000e\u0007\u0010d<,\u0001%2";
                        var5_3 = ".U\u001d36\u000e\u0007\u0010d<,\u0001%2".length();
                        var2_4 = 6;
                        var1_5 = -1;
lbl22:
                        // 2 sources

                        while (true) {
                            v0 = 56;
                            v4 = ++var1_5;
                            v2 = var3_2.substring(v4, v4 + var2_4);
                            v3 = 0;
                            break block9;
                            break;
                        }
                        break;
                    }
lbl28:
                    // 1 sources

                    while (true) {
                        var0[var4_1++] = SortProperty.a(v0, SortProperty.a(v2));
                        if ((var1_5 += var2_4) < var5_3) {
                            var2_4 = var3_2.charAt(var1_5);
                            ** continue;
                        }
                        break block10;
                        break;
                    }
                }
                switch (v3) {
                    default: {
                        ** continue;
                    }
                    ** case 0:
lbl39:
                    // 1 sources

                    ** continue;
                }
            }
            SortProperty.TIME = new SortProperty(var0[0]);
            SortProperty.MESSAGE = new SortProperty(var0[1]);
            SortProperty.LEVEL = new SortProperty(var0[4]);
            SortProperty.$VALUES = SortProperty.$values();
        }

        private static char[] a(String string) {
            char[] cArray = string.toCharArray();
            if (cArray.length < 2) {
                cArray = cArray;
                cArray[0] = (char)(cArray[0] ^ 0x4F);
            }
            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 -> 101;
                        case 1 -> 25;
                        case 2 -> 87;
                        case 3 -> 71;
                        case 4 -> 120;
                        case 5 -> 90;
                        default -> 79;
                    })));
                    ++n3;
                    n4 = n4;
                } while (n4 > n3);
            }
            return new String(cArray2).intern();
        }
    }
}

