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

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 com.ifpdos.udi.sdk.service.doc.base.democode.ShellCodeGenerator;
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.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;

/* JADX INFO: compiled from: SimpleDocGenerator.kt */
/* JADX INFO: loaded from: classes.dex */
@i
public final class SimpleDocGenerator implements IDocGenerator {
    private ClassParser classParser;
    private final ShellCodeGenerator demoCodeGenerator = new ShellCodeGenerator("▶");
    private CommentDetails serviceComment;

    private final void addClassDefine(String str, IClassWrapper iClassWrapper, Set<ClassDefine> set, Set<EnumDefine> set2) {
        if (iClassWrapper.isEnum()) {
            addEnumDefine(str, iClassWrapper, set2);
            return;
        }
        ArrayList arrayList = new ArrayList();
        Iterator<T> it = iClassWrapper.getFields().iterator();
        while (true) {
            if (!it.hasNext()) {
                String simpleName = getSimpleName(str);
                CommentDetails comment = iClassWrapper.getComment();
                set.add(new ClassDefine(simpleName, comment != null ? comment.getTotal() : null, arrayList));
                return;
            }
            IFieldWrapper iFieldWrapper = (IFieldWrapper) it.next();
            String name = iFieldWrapper.getName();
            String link = getLink(iFieldWrapper.getType());
            CommentDetails comment2 = iFieldWrapper.getComment();
            arrayList.add(new FieldInfo(name, link, comment2 != null ? comment2.getSummary() : null));
            ClassParser classParser = this.classParser;
            if (classParser == null) {
                l.m("classParser");
                throw null;
            }
            IClassWrapper rVar = classParser.parser(iFieldWrapper.getType());
            if (rVar != null) {
                if (rVar.isEnum()) {
                    addEnumDefine(iFieldWrapper.getType(), rVar, set2);
                } else if (!Utils.INSTANCE.isBuildType(iFieldWrapper.getType())) {
                    addClassDefine(iFieldWrapper.getType(), rVar, set, set2);
                }
            }
        }
    }

    private final void addEnumDefine(String str, IClassWrapper iClassWrapper, Set<EnumDefine> set) {
        String simpleName = getSimpleName(str);
        CommentDetails comment = iClassWrapper.getComment();
        String total = comment != null ? comment.getTotal() : null;
        List<IFieldWrapper> fields = iClassWrapper.getFields();
        ArrayList arrayList = new ArrayList(a.C(fields, 10));
        for (IFieldWrapper iFieldWrapper : fields) {
            String name = iFieldWrapper.getName();
            CommentDetails comment2 = iFieldWrapper.getComment();
            arrayList.add(new EnumValueDefine(name, comment2 != null ? comment2.getSummary() : null));
        }
        set.add(new EnumDefine(simpleName, total, arrayList));
    }

    private final List<FieldInfo> getFieldInfoList(IClassWrapper iClassWrapper) {
        List<IFieldWrapper> fields = iClassWrapper.getFields();
        if (fields.isEmpty()) {
            return null;
        }
        ArrayList arrayList = new ArrayList(a.C(fields, 10));
        for (IFieldWrapper iFieldWrapper : fields) {
            String link = getLink(Utils.INSTANCE.toWrapperTypeIfIsRawBuildInType(iFieldWrapper.getType()));
            CommentDetails comment = iFieldWrapper.getComment();
            arrayList.add(new FieldInfo(iFieldWrapper.getName(), link, comment != null ? comment.getSummary() : null));
        }
        return arrayList;
    }

    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) {
        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, "simpleName.toString()");
        return f.A(f.A(str2, "<", "\\<", false, 4), ">", "\\>", false, 4);
    }

    private final String getTitleLink(String str, int i2) {
        return '[' + str + "](#" + i2 + '-' + f.A(str, " ", "-", false, 4) + ')';
    }

    private final NotifyDefine parserNotifyDefine(ApiInfo apiInfo) {
        Notify notify = apiInfo.getNotify();
        if (notify == null) {
            return null;
        }
        ClassParser classParser = this.classParser;
        if (classParser == null) {
            l.m("classParser");
            throw null;
        }
        IClassWrapper rVar = classParser.parser(notify.getNotifyClass());
        l.c(rVar);
        String notifyClass = notify.getNotifyClass();
        List<FieldInfo> fieldInfoList = getFieldInfoList(rVar);
        ShellCodeGenerator shellCodeGenerator = this.demoCodeGenerator;
        ClassParser classParser2 = this.classParser;
        if (classParser2 != null) {
            return new NotifyDefine(notifyClass, fieldInfoList, shellCodeGenerator.genNotifyRegisterDemo(apiInfo, classParser2), notify.getPermission().getPermission() > 0 ? String.valueOf(notify.getPermission().getPermission()) : null);
        }
        l.m("classParser");
        throw null;
    }

    private final RequestDefine parserRequestDefine(Request request, g.h0.b.a<String> aVar) {
        if (request == null) {
            return null;
        }
        ClassParser classParser = this.classParser;
        if (classParser == null) {
            l.m("classParser");
            throw null;
        }
        IClassWrapper rVar = classParser.parser(request.getRequestClass());
        l.c(rVar);
        ClassParser classParser2 = this.classParser;
        if (classParser2 == null) {
            l.m("classParser");
            throw null;
        }
        IClassWrapper rVar2 = classParser2.parser(request.getResponseClass());
        l.c(rVar2);
        return new RequestDefine(request.getRequestClass(), getFieldInfoList(rVar), request.getResponseClass(), getFieldInfoList(rVar2), aVar.invoke(), request.getPermission().getPermission() > 0 ? String.valueOf(request.getPermission().getPermission()) : null);
    }

    private final void scanFiled(String str, Set<ClassDefine> set, Set<EnumDefine> set2) {
        ClassParser classParser = this.classParser;
        if (classParser == null) {
            l.m("classParser");
            throw null;
        }
        IClassWrapper rVar = classParser.parser(str);
        l.c(rVar);
        List<IFieldWrapper> fields = rVar.getFields();
        ArrayList<IFieldWrapper> arrayList = new ArrayList();
        for (Object obj : fields) {
            if (!Utils.INSTANCE.isBuildType(((IFieldWrapper) obj).getType())) {
                arrayList.add(obj);
            }
        }
        for (IFieldWrapper iFieldWrapper : arrayList) {
            ClassParser classParser2 = this.classParser;
            if (classParser2 == null) {
                l.m("classParser");
                throw null;
            }
            IClassWrapper rVar2 = classParser2.parser(iFieldWrapper.getType());
            if (rVar2 != null) {
                addClassDefine(rVar2.getType(), rVar2, set, set2);
            }
        }
    }

    @Override // com.ifpdos.udi.sdk.service.doc.base.IDocGenerator
    public void genDoc(List<ApiInfo> list, CommentDetails commentDetails, ClassParser classParser, File file) {
        Permission permission;
        Permission permission2;
        Permission permission3;
        l.f(list, "apis");
        l.f(commentDetails, "serviceComment");
        l.f(classParser, "classParser");
        l.f(file, "docDir");
        this.serviceComment = commentDetails;
        this.classParser = classParser;
        File file2 = new File(file, "doc-simple");
        if (!file2.exists()) {
            file2.mkdirs();
        }
        String serviceName = Utils.INSTANCE.getServiceName(commentDetails);
        LinkedHashSet linkedHashSet = new LinkedHashSet();
        LinkedHashSet linkedHashSet2 = new LinkedHashSet();
        ArrayList arrayList = new ArrayList(a.C(list, 10));
        Iterator it = list.iterator();
        boolean z = false;
        int i2 = 0;
        while (it.hasNext()) {
            Object next = it.next();
            int i3 = i2 + 1;
            if (i2 < 0) {
                g.D();
                throw null;
            }
            ApiInfo apiInfo = (ApiInfo) next;
            Request getterRequest = apiInfo.getGetterRequest();
            int permission4 = (getterRequest == null || (permission3 = getterRequest.getPermission()) == null) ? 0 : permission3.getPermission();
            Request setterRequest = apiInfo.getSetterRequest();
            int permission5 = (setterRequest == null || (permission2 = setterRequest.getPermission()) == null) ? 0 : permission2.getPermission();
            Notify notify = apiInfo.getNotify();
            if ((permission4 | permission5 | ((notify == null || (permission = notify.getPermission()) == null) ? 0 : permission.getPermission())) != 0) {
                z = true;
            }
            Request getterRequest2 = apiInfo.getGetterRequest();
            if (getterRequest2 != null) {
                scanFiled(getterRequest2.getRequestClass(), linkedHashSet, linkedHashSet2);
                scanFiled(getterRequest2.getResponseClass(), linkedHashSet, linkedHashSet2);
            }
            Request setterRequest2 = apiInfo.getSetterRequest();
            if (setterRequest2 != null) {
                scanFiled(setterRequest2.getRequestClass(), linkedHashSet, linkedHashSet2);
                scanFiled(setterRequest2.getResponseClass(), linkedHashSet, linkedHashSet2);
            }
            Notify notify2 = apiInfo.getNotify();
            if (notify2 != null) {
                scanFiled(notify2.getNotifyClass(), linkedHashSet, linkedHashSet2);
            }
            arrayList.add(new ApiDefine(i3, apiInfo.getUri(), apiInfo.getAlias(), parserRequestDefine(apiInfo.getGetterRequest(), new SimpleDocGenerator$genDoc$apiDefines$1$4(this, apiInfo, classParser)), parserRequestDefine(apiInfo.getSetterRequest(), new SimpleDocGenerator$genDoc$apiDefines$1$5(this, apiInfo, classParser)), parserNotifyDefine(apiInfo), apiInfo.getComment(), getTitleLink(apiInfo.getComment().getSummary(), i3)));
            it = it;
            i2 = i3;
        }
        HashMap map = new HashMap();
        map.put("serviceComment", commentDetails.getDescription());
        map.put("apis", arrayList);
        map.put("hasPermission", Boolean.valueOf(z));
        if (!linkedHashSet.isEmpty()) {
            map.put("classes", linkedHashSet);
        }
        if (!linkedHashSet2.isEmpty()) {
            map.put("enums", linkedHashSet2);
        }
        FileOutputStream fileOutputStream = new FileOutputStream(new File(file2, d.b.a.a.a.p(serviceName, ".md")));
        try {
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "utf-8");
            new d.e.a.f().a(new StringReader(CodeTemplateKt.DOC_TEMPLATE), "doc").g(outputStreamWriter, map);
            outputStreamWriter.flush();
            a.B(fileOutputStream, null);
        } finally {
        }
    }
}
