package com.ys.bdtp.base.comparators

import java.io.File

/**
 * 文件排序器
 *
 * @author  庞利祥(sybotan@126.com)
 */
class SFileComparator {
    /**
     * 名称升序比较器
     *
     * @author  庞利祥(sybotan@126.com)
     */
    class NameAsc : Comparator<File> {
        /**
         * 文件名比较
         *
         * @param   file1   文件1
         * @param   file2   文件2
         * @return  如果文件1比文件2名称靠后返回1，否则返回-1
         */
        override fun compare(file1: File, file2: File): Int {
            return if (file1.name > file2.name) {
                1
            } else {
                -1
            }
        } // Function compare()
    } // LastModifiedAsc

    /**
     * 文件名比较器
     *
     * @author  庞利祥(sybotan@126.com)
     */
    class NameDesc : Comparator<File> {
        /**
         * 创建时间比较
         *
         * @param   file1   文件1
         * @param   file2   文件2
         * @return  如果文件1比文件2名称靠前返回1，否则返回-1
         */
        override fun compare(file1: File, file2: File): Int {
            return if (file1.name < file2.name) {
                1
            } else {
                -1
            }
        } // Function compare()
    } // NameDesc

    /**
     * 创建时间升序比较器
     *
     * @author  庞利祥(sybotan@126.com)
     */
    class LastModifiedAsc : Comparator<File> {
        /**
         * 创建时间比较
         *
         * @param   file1   文件1
         * @param   file2   文件2
         * @return  如果文件1比文件2修改时间靠后返回1，否则返回-1
         */
        override fun compare(file1: File, file2: File): Int {
            return if (file1.lastModified() > file2.lastModified()) {
                1
            } else {
                -1
            }
        } // Function compare()
    } // LastModifiedAsc

    /**
     * 创建时间降序比较器
     *
     * @author  庞利祥(sybotan@126.com)
     */
    class LastModifiedDesc : Comparator<File> {
        /**
         * 创建时间比较
         *
         * @param   file1   文件1
         * @param   file2   文件2
         * @return  如果文件1比文件2修改时间靠前返回1，否则返回-1
         */
        override fun compare(file1: File, file2: File): Int {
            return if (file1.lastModified() < file2.lastModified()) {
                1
            } else {
                -1
            }
        } // Function compare()
    } // LastModifiedDesc
} // Class SFileComparator