//package com.forfan.bigbang.onestep;
//
//import android.content.ClipDescription;
//import android.os.Environment;
//import android.system.ErrnoException;
//import android.text.TextUtils;
//import android.util.Log;
//import android.webkit.MimeTypeMap;
//
//import java.io.File;
//import java.util.HashMap;
//import java.util.HashSet;
//import java.util.Locale;
//import java.util.Map;
//import java.util.Set;
//
//import libcore.io.Libcore;
//
//public class FileInfo implements Comparable<FileInfo> {
// public static final String[] MIMETYPE_BLACKLIST = new String[] { "image/*" };
//
// private static final String[] BLACKLIST = new String[] {
// Environment.getExternalStorageDirectory().getAbsolutePath()
// + "/smartisan/textboom",
// Environment.getExternalStorageDirectory().getAbsolutePath()
// + "/OpenMaster/plugins/",
// Environment.getExternalStorageDirectory().getAbsolutePath()
// + "/tencent/"};
//
// private static final String[] WHITELIST = new String[] {
// Environment.getExternalStorageDirectory().getAbsolutePath()
// + "/tencent/QQfile_recv/",
// Environment.getExternalStorageDirectory().getAbsolutePath()
// + "/tencent/MicroMsg/Download/"};
//
// private static final Set<String> PATH_MASK;
// static {
// PATH_MASK = new HashSet<String>();
// PATH_MASK.add("backup");
// PATH_MASK.add("crash");
// PATH_MASK.add("cache");
// PATH_MASK.add("textboom");
// PATH_MASK.add("config");
// PATH_MASK.add("install");
// PATH_MASK.add("applog_bak");
// PATH_MASK.add("map");
// PATH_MASK.add("manifest");// like this -> /storage/emulated0/0/smartisan/bak/manifest/manifest.txt
// PATH_MASK.add("logs");
// PATH_MASK.add("log");
// PATH_MASK.add("baidumap");
// PATH_MASK.add("appstore");
// PATH_MASK.add("plugins");
// PATH_MASK.add("com.pinguo.edit.sdk");
// PATH_MASK.add("yysdk");
// PATH_MASK.add("ycmedia");
// PATH_MASK.add("sohudownload");
// PATH_MASK.add("com.zcool.community");
// PATH_MASK.add("qbiz");//storage/emulated/0/qqmusic/qbiz
// PATH_MASK.add("app_style");//storage/emulated/0/ZAKER/DataStr/app_style/app_style.txt
// PATH_MASK.add("zaker");///storage/emulated/0/ZAKER/DataStr/interaction/interaction.txt
// PATH_MASK.add("emotion");///storage/emulated/0/Android/data/com.eg.android.AlipayGphone/files/emotion/magic/1788303168490637619/1788303168490637619.zip
// }
//
// private static final Set<String> WANTED_MIMETYPE;
// private static final Set<String> WANTED_SUFFIX;
//
// private static final Map<String, String> sExtensionToMimeTypeMap;
//
// static {
// WANTED_MIMETYPE = new HashSet<String>();
// WANTED_MIMETYPE.add("application/zip");
// WANTED_MIMETYPE.add("application/msword");
// WANTED_MIMETYPE.add("application/vnd.ms-powerpoint");
// WANTED_MIMETYPE.add("application/vnd.ms-excel");
// WANTED_MIMETYPE.add("application/pdf");
// WANTED_MIMETYPE.add("text/plain");
// WANTED_MIMETYPE.add("video/*");
// WANTED_MIMETYPE.add("audio/*");
//
// WANTED_SUFFIX = new HashSet<String>();
// WANTED_SUFFIX.add("rar");
// WANTED_SUFFIX.add("zip");
// WANTED_SUFFIX.add("7z");
// WANTED_SUFFIX.add("apk");
// WANTED_SUFFIX.add("pptx");
// WANTED_SUFFIX.add("ppt");
// WANTED_SUFFIX.add("key");
// WANTED_SUFFIX.add("numbers");
// WANTED_SUFFIX.add("xlsx");
// WANTED_SUFFIX.add("doc");
// WANTED_SUFFIX.add("docx");
// WANTED_SUFFIX.add("pages");
// WANTED_SUFFIX.add("pdf");
//
// sExtensionToMimeTypeMap = new HashMap<String, String>();
// sExtensionToMimeTypeMap.put("pages", "application/x-iwork-numbers-sffnumbers");
// sExtensionToMimeTypeMap.put("numbers", "application/x-iwork-pages-sffpages");
// sExtensionToMimeTypeMap.put("key", "application/x-iwork-keynote-sffkey");
// sExtensionToMimeTypeMap.put("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
// sExtensionToMimeTypeMap.put("7z", "application/x-7z-compressed");
//
// for (String suffix : WANTED_SUFFIX) {
// if (TextUtils.isEmpty(getMimeTypeBySuffix(suffix))) {
// throw new IllegalArgumentException(
// "we can't get correct mimetype for some wanted suffix ! like -> " + suffix);
// }
// }
// }
//
// private static final Map<File, Set<String>> sTypeInSpeDir;
// private static final String[] SpeDir = new String[] { "qqmusic/song" };
// private static final String[] SpeType = new String[] { "txt" };
//
// static {
// sTypeInSpeDir = new HashMap<File, Set<String>>();
// if (SpeDir.length != SpeType.length) {
// Log.e(FileInfo.class.getName(), "SpeDir.length != SpeType.length !");
// } else {
// for (int i = 0; i < SpeDir.length; ++i) {
// File dir = new File(Environment.getExternalStorageDirectory(), SpeDir[i]);
// Set<String> set = new HashSet<String>();
// String[] types = SpeType[i].split(",");
// if (types != null) {
// for (String type : types) {
// set.add(type);
// }
// }
// sTypeInSpeDir.put(dir, set);
// }
// }
// }
//
// public String filePath = "";
// public String mimeType;
// public long lastTime;
//
// public FileInfo(String path){
// this(path, null);
// }
//
// public FileInfo(String path, String mimeType){
// if (TextUtils.isEmpty(mimeType)) {
// mimeType = getMimeTypeByFilePath(path);
// }
// this.filePath = path;
// this.mimeType = mimeType;
// this.lastTime = getLastTime(filePath);
// }
//
// public void refresh(){
// this.lastTime = getLastTime(filePath);
// }
//
// /*
// * do not modify this method !!!!!!
// * we mark fileinfo uselss by hashkey, if this is modified, the database will be invalid :(
// */
// public int getHashKey() {
// return (int) (filePath.hashCode() * 13 + lastTime);
// }
//
// public int getIconId() {
// String name = new File(filePath).getName();
// return MimeUtils.getResId(mimeType, getSuffix(name));
// }
//
// public boolean valid() {
// if (!isMimeTypeAndFilePathValid(mimeType, filePath)) {
// return false;
// }
//
// for (int i = 0; i < BLACKLIST.length; i++) {
// if (filePath.startsWith(BLACKLIST[i])) {
// boolean ok = false;
// for (int j = 0; j < WHITELIST.length; j++) {
// if (filePath.startsWith(WHITELIST[j])) {
// ok = true;
// break;
// }
// }
// if (!ok) {
// return false;
// }
// }
// }
// return true;
// }
//
// private static boolean isMaskFile(File file){
// if(file == null){
// return false;
// }
//
// String name = file.getName();
// if(name.startsWith(".") || PATH_MASK.contains(name.toLowerCase())){
// return true;
// }
// return isMaskFile(file.getParentFile());
// }
//
// private static boolean isTypeInSpeDir(File file) {
// if (sTypeInSpeDir.containsKey(file.getParentFile())) {
// if (sTypeInSpeDir.get(file.getParentFile()).contains(getSuffix(file.getName()))) {
// return true;
// }
// }
// return false;
// }
//
// private static boolean isMimeTypeOrSuffixWanted(String mimeType, String suffix) {
// if (WANTED_SUFFIX.contains(suffix)) {
// return true;
// }
//
// for (String want_mime : WANTED_MIMETYPE) {
// if (ClipDescription.compareMimeTypes(mimeType, want_mime)) {
// return true;
// }
// }
// return false;
// }
//
// public static boolean isMimeTypeAndFilePathValid(String mimeType, String filePath) {
// if (TextUtils.isEmpty(filePath) || TextUtils.isEmpty(mimeType)) {
// return false;
// }
//
// if(!isMimeTypeOrSuffixWanted(mimeType, getSuffix(filePath))) {
// return false;
// }
//
// File file = new File(filePath);
// if (isTypeInSpeDir(file)) {
// return false;
// }
//
// if (!file.isFile() || isMaskFile(file.getParentFile())) {
// return false;
// }
//
// if (file.getName().toLowerCase().contains("log")) {
// if (!file.getName().toLowerCase().contains("logo")) {
// return false;
// }
// }
// return true;
// }
//
// public static String getSuffix(String fileName) {
// int index = fileName.lastIndexOf(".");
// if (index > 0) {
// return fileName.substring(index + 1).toLowerCase(Locale.US);
// } else {
// return "";
// }
// }
//
// public static String getMimeTypeByFilePath(String filePath) {
// String suffix = getSuffix(new File(filePath).getName());
// return getMimeTypeBySuffix(suffix);
// }
//
// public static String getMimeTypeBySuffix(String suffix) {
// String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(suffix);
// if (TextUtils.isEmpty(mimeType)) {
// mimeType = sExtensionToMimeTypeMap.get(suffix);
// }
// return mimeType;
// }
//
// public static long getLastTime(String path){
// long aTime = 0;
// long cTime = 0;
// long mTime = 0;
// try {
// aTime = Libcore.os.stat(path).st_atime * 1000L;
// cTime = Libcore.os.stat(path).st_ctime * 1000L;
// mTime = Libcore.os.stat(path).st_mtime * 1000L;
// } catch (Error e) {
// // NA;
// }
// return Math.max(Math.max(aTime, cTime), mTime);
// }
//
// @Override
// public int compareTo(FileInfo info) {
// if (info == null) {
// return -1;
// }
// if (lastTime != info.lastTime) {
// if (info.lastTime > lastTime) {
// return 1;
// } else {
// return -1;
// }
// }
// return filePath.compareTo(info.filePath);
// }
//}