package com.ifpdos.udi.sdk.service.doc.mkdocs;

import com.ifpdos.udi.sdk.kotlin.comment.parser.CommentDetails;
import com.ifpdos.udi.sdk.service.doc.base.ApiInfo;
import com.ifpdos.udi.sdk.service.doc.base.ClassParser;
import com.ifpdos.udi.sdk.service.doc.base.IClassWrapper;
import com.ifpdos.udi.sdk.service.doc.base.IDocGenerator;
import com.ifpdos.udi.sdk.service.doc.base.IFieldWrapper;
import com.ifpdos.udi.sdk.service.doc.base.Notify;
import com.ifpdos.udi.sdk.service.doc.base.Permission;
import com.ifpdos.udi.sdk.service.doc.base.Request;
import com.ifpdos.udi.sdk.service.doc.base.Utils;
import f.a.y.a;
import g.c0.g;
import g.h0.c.l;
import g.i;
import g.m0.f;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;

/* JADX INFO: compiled from: MkDocsGenerator.kt */
/* JADX INFO: loaded from: classes.dex */
@i
public final class MkDocsGenerator implements IDocGenerator {
    private List<ApiInfo> apis;
    private ClassParser classParser;
    private CommentDetails serviceComment;
    private final Map<String, List<FieldInfo>> classes = new LinkedHashMap();
    private final Map<IClassWrapper, List<IFieldWrapper>> enums = new LinkedHashMap();
    private final CodeContentTab demoCodeGenerator = new CodeContentTab();

    private final String getApiDocName(String str) {
        if (!f.J(str, "/", false, 2)) {
            return f.A(f.A(f.A(str, "/", "_", false, 4), "{", "", false, 4), "}", "", false, 4) + ".zh.md";
        }
        StringBuilder sb = new StringBuilder();
        String strSubstring = str.substring(1);
        l.e(strSubstring, "this as java.lang.String).substring(startIndex)");
        sb.append(f.A(f.A(f.A(strSubstring, "/", "_", false, 4), "{", "", false, 4), "}", "", false, 4));
        sb.append(".zh.md");
        return sb.toString();
    }

    private final ProtocolDefine getApiProtocol(ApiInfo apiInfo) {
        String total;
        CommentDetails comment;
        LinkedHashSet linkedHashSet = new LinkedHashSet();
        ArrayList arrayList = new ArrayList();
        arrayList.add(new ApiDefine(getSummary(apiInfo), apiInfo.getUri(), apiInfo.getAlias(), parserGetter(apiInfo, linkedHashSet), parserSetter(apiInfo, linkedHashSet), parserNotifyDefine(apiInfo, linkedHashSet), apiInfo.getComment()));
        Map<String, List<FieldInfo>> map = this.classes;
        ArrayList arrayList2 = new ArrayList(map.size());
        for (Map.Entry<String, List<FieldInfo>> entry : map.entrySet()) {
            String key = entry.getKey();
            String genericSimpleNameWithoutPackage = getGenericSimpleNameWithoutPackage(entry.getKey());
            String simpleName = getSimpleName(entry.getKey());
            ClassParser classParser = this.classParser;
            String total2 = null;
            if (classParser == null) {
                l.m("classParser");
                throw null;
            }
            IClassWrapper rVar = classParser.parser(entry.getKey());
            if (rVar != null && (comment = rVar.getComment()) != null) {
                total2 = comment.getTotal();
            }
            arrayList2.add(new ClassDefine(key, genericSimpleNameWithoutPackage, simpleName, total2, entry.getValue()));
        }
        Map<IClassWrapper, List<IFieldWrapper>> map2 = this.enums;
        ArrayList arrayList3 = new ArrayList(map2.size());
        for (Map.Entry<IClassWrapper, List<IFieldWrapper>> entry2 : map2.entrySet()) {
            String simpleName2 = getSimpleName(entry2.getKey().getType());
            CommentDetails comment2 = entry2.getKey().getComment();
            if (comment2 == null || (total = comment2.getTotal()) == null) {
                total = "";
            }
            arrayList3.add(new EnumDefine(entry2.getKey().getType(), simpleName2, total, getEnumValueDefines(entry2.getValue())));
        }
        return new ProtocolDefine(arrayList, arrayList2, arrayList3);
    }

    private final List<ApiSummary> getApiSummaries(ApiInfo apiInfo) {
        String string;
        Permission permission;
        Permission permission2;
        String string2;
        Permission permission3;
        String string3;
        String summary = getSummary(apiInfo);
        String path = apiInfo.getUri().getPath();
        Request getterRequest = apiInfo.getGetterRequest();
        String str = (getterRequest == null || (permission3 = getterRequest.getPermission()) == null || (string3 = Integer.valueOf(permission3.getPermission()).toString()) == null) ? "-" : string3;
        Request setterRequest = apiInfo.getSetterRequest();
        String str2 = (setterRequest == null || (permission2 = setterRequest.getPermission()) == null || (string2 = Integer.valueOf(permission2.getPermission()).toString()) == null) ? "-" : string2;
        Notify notify = apiInfo.getNotify();
        if (notify == null || (permission = notify.getPermission()) == null || (string = Integer.valueOf(permission.getPermission()).toString()) == null) {
            string = "-";
        }
        return a.w0(new ApiSummary(summary, path, str, str2, string));
    }

    private final List<EnumValueDefine> getEnumValueDefines(List<? extends IFieldWrapper> list) {
        String summary;
        ArrayList arrayList = new ArrayList(a.C(list, 10));
        for (IFieldWrapper iFieldWrapper : list) {
            CommentDetails comment = iFieldWrapper.getComment();
            if (comment == null || (summary = comment.getSummary()) == null) {
                summary = "";
            }
            arrayList.add(new EnumValueDefine(iFieldWrapper.getName(), summary));
        }
        return arrayList;
    }

    private final FieldInfo getFieldInfo(IClassWrapper iClassWrapper, IFieldWrapper iFieldWrapper) {
        String summary;
        String wrapperTypeIfIsRawBuildInType = Utils.INSTANCE.toWrapperTypeIfIsRawBuildInType(iFieldWrapper.getType());
        String link = getLink(wrapperTypeIfIsRawBuildInType);
        CommentDetails comment = iFieldWrapper.getComment();
        if (comment == null || (summary = comment.getSummary()) == null) {
            summary = "";
        }
        return new FieldInfo(iFieldWrapper.getName(), wrapperTypeIfIsRawBuildInType, link, summary);
    }

    private final String getGenericSimpleNameWithoutPackage(String str) {
        if (!f.b(str, "<", false, 2)) {
            return (String) g.t(f.E(str, new String[]{"."}, false, 0, 6));
        }
        String strSubstring = str.substring(f.m(str, "<", 0, false, 6) + 1, f.m(str, ">", 0, false, 6) + 1);
        l.e(strSubstring, "this as java.lang.String…ing(startIndex, endIndex)");
        String strSubstring2 = str.substring(0, f.m(str, "<", 0, false, 6) + 1);
        l.e(strSubstring2, "this as java.lang.String…ing(startIndex, endIndex)");
        String str2 = ((String) g.t(f.E(strSubstring2, new String[]{"."}, false, 0, 6))) + ((String) g.t(f.E(strSubstring, new String[]{"."}, false, 0, 6)));
        l.e(str2, "{\n            val generi…Name.toString()\n        }");
        return str2;
    }

    private final String getLink(String str) {
        Utils utils = Utils.INSTANCE;
        if (utils.isListType(str)) {
            return d.b.a.a.a.v(d.b.a.a.a.B("List&lt;"), getLink(utils.getTypeByList(str)), "&gt;");
        }
        String wrapperTypeIfIsRawBuildInType = utils.toWrapperTypeIfIsRawBuildInType(getSimpleName(str));
        if (utils.isBuildType(str)) {
            return wrapperTypeIfIsRawBuildInType;
        }
        StringBuilder sb = new StringBuilder();
        sb.append('[');
        sb.append(wrapperTypeIfIsRawBuildInType);
        sb.append("](#");
        String lowerCase = wrapperTypeIfIsRawBuildInType.toLowerCase(Locale.ROOT);
        l.e(lowerCase, "this as java.lang.String).toLowerCase(Locale.ROOT)");
        sb.append(lowerCase);
        sb.append(')');
        return sb.toString();
    }

    private final String getSimpleName(String str) {
        return (String) g.t(f.E(str, new String[]{"."}, false, 0, 6));
    }

    private final String getSummary(ApiInfo apiInfo) {
        return f.A(apiInfo.getComment().getSummary(), "\n", "<br>", false, 4);
    }

    private final void onParserClass(IClassWrapper iClassWrapper) {
        if (this.classes.containsKey(iClassWrapper.getType())) {
            return;
        }
        Map<String, List<FieldInfo>> map = this.classes;
        String type = iClassWrapper.getType();
        List<IFieldWrapper> fields = iClassWrapper.getFields();
        ArrayList arrayList = new ArrayList(a.C(fields, 10));
        Iterator<T> it = fields.iterator();
        while (it.hasNext()) {
            arrayList.add(getFieldInfo(iClassWrapper, (IFieldWrapper) it.next()));
        }
        map.put(type, arrayList);
        Iterator<T> it2 = iClassWrapper.getFields().iterator();
        while (it2.hasNext()) {
            parserClass(((IFieldWrapper) it2.next()).getType());
        }
    }

    private final void onParserEnum(IClassWrapper iClassWrapper, List<? extends IFieldWrapper> list) {
        if (this.enums.containsKey(iClassWrapper)) {
            return;
        }
        this.enums.put(iClassWrapper, list);
    }

    private final void parserClass(String str) {
        ClassParser classParser = this.classParser;
        if (classParser == null) {
            l.m("classParser");
            throw null;
        }
        IClassWrapper rVar = classParser.parser(str);
        if (rVar != null) {
            if (!rVar.isEnum()) {
                onParserClass(rVar);
                return;
            }
            ClassParser classParser2 = this.classParser;
            if (classParser2 != null) {
                onParserEnum(rVar, classParser2.getEnumValues(rVar));
            } else {
                l.m("classParser");
                throw null;
            }
        }
    }

    private final RequestDefine parserGetter(ApiInfo apiInfo, Set<String> set) {
        Request getterRequest = apiInfo.getGetterRequest();
        if (getterRequest == null) {
            return null;
        }
        set.add(getterRequest.getRequestClass());
        set.add(getterRequest.getResponseClass());
        parserClass(getterRequest.getRequestClass());
        parserClass(getterRequest.getResponseClass());
        CodeContentTab codeContentTab = this.demoCodeGenerator;
        ClassParser classParser = this.classParser;
        if (classParser == null) {
            l.m("classParser");
            throw null;
        }
        String strGenGetRequestDemo = codeContentTab.genGetRequestDemo(apiInfo, classParser);
        String requestClass = getterRequest.getRequestClass();
        List<FieldInfo> list = this.classes.get(getterRequest.getRequestClass());
        l.c(list);
        List<FieldInfo> list2 = list;
        String responseClass = getterRequest.getResponseClass();
        List<FieldInfo> list3 = this.classes.get(getterRequest.getResponseClass());
        l.c(list3);
        return new RequestDefine(requestClass, list2, responseClass, list3, strGenGetRequestDemo, getterRequest.getPermission());
    }

    private final NotifyDefine parserNotifyDefine(ApiInfo apiInfo, Set<String> set) {
        Notify notify = apiInfo.getNotify();
        if (notify == null) {
            return null;
        }
        String notifyClass = notify.getNotifyClass();
        set.add(notifyClass);
        parserClass(notifyClass);
        CodeContentTab codeContentTab = this.demoCodeGenerator;
        ClassParser classParser = this.classParser;
        if (classParser == null) {
            l.m("classParser");
            throw null;
        }
        String strGenDemoNotifyRegister = codeContentTab.genDemoNotifyRegister(apiInfo, classParser);
        List<FieldInfo> list = this.classes.get(notifyClass);
        l.c(list);
        return new NotifyDefine(notifyClass, list, strGenDemoNotifyRegister, notify.getPermission());
    }

    private final RequestDefine parserSetter(ApiInfo apiInfo, Set<String> set) {
        Request setterRequest = apiInfo.getSetterRequest();
        if (setterRequest == null) {
            return null;
        }
        set.add(setterRequest.getRequestClass());
        set.add(setterRequest.getResponseClass());
        parserClass(setterRequest.getRequestClass());
        parserClass(setterRequest.getResponseClass());
        CodeContentTab codeContentTab = this.demoCodeGenerator;
        ClassParser classParser = this.classParser;
        if (classParser == null) {
            l.m("classParser");
            throw null;
        }
        String strGenDemoPostRequest = codeContentTab.genDemoPostRequest(apiInfo, classParser);
        String requestClass = setterRequest.getRequestClass();
        List<FieldInfo> list = this.classes.get(setterRequest.getRequestClass());
        l.c(list);
        List<FieldInfo> list2 = list;
        String responseClass = setterRequest.getResponseClass();
        List<FieldInfo> list3 = this.classes.get(setterRequest.getResponseClass());
        l.c(list3);
        return new RequestDefine(requestClass, list2, responseClass, list3, strGenDemoPostRequest, setterRequest.getPermission());
    }

    private final void prepareOutputDir(File file) {
        if (!file.exists()) {
            file.mkdirs();
            return;
        }
        File[] fileArrListFiles = file.listFiles();
        if (fileArrListFiles != null) {
            for (File file2 : fileArrListFiles) {
                file2.delete();
            }
        }
    }

    @Override // com.ifpdos.udi.sdk.service.doc.base.IDocGenerator
    public void genDoc(List<ApiInfo> list, CommentDetails commentDetails, ClassParser classParser, File file) throws IOException {
        l.f(list, "apis");
        l.f(commentDetails, "serviceComment");
        l.f(classParser, "classParser");
        l.f(file, "docDir");
        this.apis = list;
        this.serviceComment = commentDetails;
        this.classParser = classParser;
        this.classes.put(Utils.EMPTY_BODY, g.c0.l.f4067b);
        File file2 = new File(file, "doc-mkdocs");
        if (!file2.exists()) {
            file2.mkdirs();
        }
        String serviceName = Utils.INSTANCE.getServiceName(commentDetails);
        prepareOutputDir(new File(file2, serviceName));
        int i2 = 0;
        for (Object obj : list) {
            int i3 = i2 + 1;
            if (i2 < 0) {
                g.D();
                throw null;
            }
            ApiInfo apiInfo = (ApiInfo) obj;
            String strT = f.t(String.valueOf(i3), 4, '0');
            new DocRenderer(classParser).write(commentDetails, getApiSummaries(apiInfo), getApiProtocol(apiInfo), new File(new File(file2, serviceName), strT + '_' + getApiDocName(apiInfo.getUri().getMqttTopic())));
            i2 = i3;
        }
        List listE = f.E(getApiDocName(((ApiInfo) g.k(list)).getUri().getMqttTopic()), new String[]{"_"}, false, 0, 6);
        new DocRenderer(classParser).createAPIsDocument(commentDetails, new File(new File(file2, serviceName), d.b.a.a.a.q("0000_", ((String) listE.get(0)) + '_' + ((String) listE.get(1)), ".zh.md")));
    }
}
