package net.argius.filetool;

import java.io.*;

/**
 * パッケージ用ユーティリティ。
 */
final class Utilities {

    /**
     * Utilitiesの生成。
     */
    private Utilities() {
        // empty
    }

    /**
     * 一時ファイルの生成。
     * @return 一時ファイル
     * @throws IOException 入出力エラーが発生した場合
     */
    static File createTemporaryFile() throws IOException {
        File tmp = File.createTempFile("argius-filetool-", ".tmp");
        tmp.deleteOnExit();
        return tmp;
    }

    /**
     * 指定したクラスの最初のStackTraceを取得する。
     * @param th 例外
     * @param c クラス
     * @return StackTrace文字列 見つからない場合は空文字列
     */
    static String getFirstStackTrace(Throwable th, Class c) {
        Writer buffer = new StringWriter();
        PrintWriter out = new PrintWriter(buffer);
        th.printStackTrace(out);
        try {
            BufferedReader reader = new BufferedReader(new StringReader(buffer.toString()));
            try {
                String className = c.getName();
                for (String line; (line = reader.readLine()) != null;) {
                    if (line.indexOf(className) >= 0) {
                        return line;
                    }
                }
                return "";
            } finally {
                reader.close();
            }
        } catch (IOException ex) {
            throw new RuntimeException(ex.toString());
        }
    }

}
