导航菜单

页面标题

页面副标题

Clean Center v0.5.5 - ErrorUtil.java 源代码

正在查看: Clean Center v0.5.5 应用的 ErrorUtil.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.wxiwei.office.system;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import com.wxiwei.office.common.ICustomDialog;
import com.wxiwei.office.constant.EventConstant;
import com.wxiwei.office.fc.OldFileFormatException;
import com.wxiwei.office.fc.poifs.filesystem.OfficeXmlFileException;
import com.wxiwei.office.officereader.R;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class ErrorUtil {
    public static final int BAD_FILE = 2;
    public static final int INSUFFICIENT_MEMORY = 0;
    public static final int OLD_DOCUMENT = 3;
    public static final int PARSE_ERROR = 4;
    public static final int PASSWORD_DOCUMENT = 6;
    public static final int PASSWORD_INCORRECT = 7;
    public static final int RTF_DOCUMENT = 5;
    public static final int SD_CARD_ERROR = 8;
    public static final int SD_CARD_NOSPACELEFT = 10;
    public static final int SD_CARD_WRITEDENIED = 9;
    public static final int SYSTEM_CRASH = 1;
    private static final String VERSION = "2.0.0.4";
    private static final SimpleDateFormat sdf_24 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private File logFile;
    private AlertDialog message;
    private SysKit sysKit;

    public void dispose() {
        this.sysKit = null;
    }

    public ErrorUtil(SysKit sysKit) {
        this.sysKit = sysKit;
        if (sysKit.getControl() != null && sysKit.getControl().getMainFrame().isWriteLog()) {
            File temporaryDirectory = sysKit.getControl().getMainFrame().getTemporaryDirectory();
            this.logFile = temporaryDirectory;
            if (temporaryDirectory != null && temporaryDirectory.exists() && this.logFile.canWrite()) {
                File file = new File(this.logFile.getAbsolutePath() + File.separatorChar + "ASReader");
                this.logFile = file;
                if (!file.exists()) {
                    this.logFile.mkdirs();
                }
                this.logFile = new File(this.logFile.getAbsolutePath() + File.separatorChar + "errorLog.txt");
            }
        }
    }

    public void writerLog(Throwable th) {
        writerLog(th, false);
    }

    public void writerLog(Throwable th, boolean z) {
        writerLog(th, z, true);
    }

    public void writerLog(Throwable th, boolean z, boolean z2) {
        try {
            StringBuilder sb = new StringBuilder();
            sb.append(th.getMessage()).append("\n");
            for (int i = 0; i < th.getStackTrace().length; i++) {
                sb.append(th.getStackTrace()[i].toString()).append("\n");
            }
            this.sysKit.getControl().getMainFrame().newFatalOccurs(sb.toString());
            if (th instanceof OutOfMemoryError) {
                this.sysKit.getControl().getMainFrame().outOfMemoryOccurs();
                return;
            }
            if (th instanceof AbortReaderError) {
                return;
            }
            File file = this.logFile;
            if (file == null) {
                th = new Throwable("SD CARD ERROR");
            } else if (file != null && file.exists() && !this.logFile.canWrite()) {
                th = new Throwable("Write Permission denied");
            } else if (this.sysKit.getControl().getMainFrame().isWriteLog() && !(th instanceof OutOfMemoryError)) {
                FileWriter fileWriter = new FileWriter(this.logFile, true);
                PrintWriter printWriter = new PrintWriter((Writer) fileWriter, true);
                printWriter.println();
                printWriter.println("--------------------------------------------------------------------------");
                printWriter.println("Exception occurs: " + sdf_24.format(Calendar.getInstance().getTime()) + "  " + VERSION);
                th.printStackTrace(printWriter);
                fileWriter.close();
            }
            if (z2) {
                processThrowable(th, z);
            }
        } catch (Exception | OutOfMemoryError unused) {
        }
    }

    private void processThrowable(final Throwable th, final boolean z) {
        final IControl control = this.sysKit.getControl();
        final Activity activity = control.getMainFrame().getActivity();
        if (control == null || activity == null) {
            return;
        }
        if (control.isAutoTest()) {
            System.exit(0);
        } else if (this.message == null) {
            control.getActivity().getWindow().getDecorView().post(new Runnable() {
                @Override
                public void run() {
                    int i;
                    try {
                        String str = "";
                        String th2 = th.toString();
                        if (th2.contains("SD")) {
                            str = control.getMainFrame().getLocalString("SD_CARD");
                            i = 8;
                        } else if (th2.contains("Write Permission denied")) {
                            str = control.getMainFrame().getLocalString("SD_CARD_WRITEDENIED");
                            i = 9;
                        } else if (th2.contains("No space left on device")) {
                            str = control.getMainFrame().getLocalString("SD_CARD_NOSPACELEFT");
                            i = 10;
                        } else {
                            if (!(th instanceof OutOfMemoryError) && !th2.contains("OutOfMemoryError")) {
                                if (!th2.contains("no such entry") && !th2.contains("Format error") && !th2.contains("Unable to read entire header") && !(th instanceof OfficeXmlFileException) && !th2.contains("The text piece table is corrupted") && !th2.contains("Invalid header signature")) {
                                    if (th2.contains("The document is really a RTF file")) {
                                        str = control.getActivity().getString(R.string.dialog_rtf_file);
                                        i = 5;
                                    } else if (th instanceof OldFileFormatException) {
                                        str = control.getActivity().getString(R.string.dialog_old_document);
                                        i = 3;
                                    } else if (th2.contains("Cannot process encrypted office file")) {
                                        str = control.getActivity().getString(R.string.dialog_cannot_encrypted_file);
                                        i = 6;
                                    } else if (th2.contains("Password is incorrect")) {
                                        str = control.getMainFrame().getLocalString("DIALOG_PASSWORD_INCORRECT");
                                        i = 7;
                                    } else if (z) {
                                        str = control.getActivity().getString(R.string.dialog_parse_error);
                                        i = 4;
                                    } else {
                                        Throwable th3 = th;
                                        if (!(th3 instanceof NullPointerException) && !(th3 instanceof IllegalArgumentException) && !(th3 instanceof ClassCastException)) {
                                            if (ErrorUtil.this.sysKit.isDebug()) {
                                                str = control.getActivity().getString(R.string.dialog_system_crash_error);
                                            }
                                            i = 1;
                                        }
                                        str = control.getActivity().getString(R.string.dialog_system_crash_error);
                                        i = 1;
                                    }
                                }
                                str = control.getActivity().getString(R.string.dialog_format_error);
                                i = 2;
                            }
                            str = control.getActivity().getString(R.string.dialog_insufficient_memory);
                            i = 0;
                        }
                        if (str.length() > 0) {
                            control.getMainFrame().error(i);
                            control.actionEvent(EventConstant.APP_ABORTREADING, true);
                            if (control.getMainFrame().isPopUpErrorDlg() && ErrorUtil.this.message == null) {
                                AlertDialog.Builder builder = new AlertDialog.Builder(activity);
                                builder.setMessage(str);
                                builder.setCancelable(false);
                                builder.setTitle(control.getMainFrame().getAppName());
                                builder.setPositiveButton(control.getMainFrame().getLocalString("BUTTON_OK"), new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialogInterface, int i2) {
                                        ErrorUtil.this.message = null;
                                        activity.onBackPressed();
                                    }
                                });
                                ErrorUtil.this.message = builder.create();
                                ErrorUtil.this.message.show();
                                return;
                            }
                            ICustomDialog customDialog = control.getCustomDialog();
                            if (customDialog != null) {
                                customDialog.showDialog((byte) 3);
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}