package cn.androidy.logger.data;
import android.os.AsyncTask;
import android.text.TextUtils;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import cn.androidy.common.utils.FileUtils;
public class LogListReadTask extends AsyncTask<String, Void, List<ILog>> {
private ILogListReadListener listener;
private String dir;
public LogListReadTask(String dir, ILogListReadListener listener) {
super();
this.dir = dir;
this.listener = listener;
}
public static interface ILogListReadListener {
public void onLogGet(List<ILog> result);
}
@Override
protected List<ILog> doInBackground(String... params) {
String logTag = params[0];
if (TextUtils.isEmpty(dir)) {
return null;
}
File file;
if (TextUtils.isEmpty(logTag)) {
file = new File(dir);
} else {
file = new File(dir, logTag);
}
if (!file.exists()) {
return null;
}
if (!file.isDirectory()) {
return null;
}
List<ILog> result = new ArrayList<>();
for (File f : file.listFiles()) {
if (f != null && f.isFile()) {
StringBuilder sb = FileUtils.readFile(f.getAbsolutePath(), "utf-8");
if (sb != null && sb.length() > 0) {
LogEntity logEntity = new LogEntity(f.getName(), sb.toString());
result.add(logEntity);
}
} else if (f != null && f.isDirectory()) {
LogCategory logCategory = new LogCategory(f.getName());
result.add(logCategory);
}
}
return result;
}
@Override
protected void onPostExecute(List<ILog> result) {
if (listener != null) {
listener.onLogGet(result);
}
}
}