package com.seafile.seadroid2.data;
import android.util.Log;
import com.seafile.seadroid2.R;
import com.seafile.seadroid2.util.Utils;
import org.json.JSONException;
import org.json.JSONObject;
/**
* Searched file entity
*/
public class SearchedFile implements SeafItem {
private static final String DEBUG_TAG = "SearchedFile";
public enum FileType {DIR, FILE}
private String name;
private String repoID;
private long mtime;
private String path;
private FileType type;
private long size; // size of file, 0 if type is dir
private String oid;
static SearchedFile fromJson(JSONObject obj) {
SearchedFile searchedFile = new SearchedFile();
try {
searchedFile.name = obj.getString("name");
searchedFile.repoID = obj.getString("repo_id");
searchedFile.mtime = obj.getLong("last_modified");
searchedFile.path = obj.getString("fullpath");
searchedFile.size = obj.optLong("size");
searchedFile.oid = obj.optString("oid");
boolean type = obj.getBoolean("is_dir");
searchedFile.type = type ? FileType.DIR : FileType.FILE;
return searchedFile;
} catch (JSONException e) {
Log.d(DEBUG_TAG, searchedFile.path + e.getMessage());
return null;
}
}
public boolean isDir() {
return (type == FileType.DIR);
}
public String getRepoID() {
return repoID;
}
public String getPath() {
return path;
}
@Override
public String getTitle() {
return name;
}
@Override
public String getSubtitle() {
String timestamp = Utils.translateCommitTime(mtime * 1000);
if (isDir())
return timestamp;
return Utils.readableFileSize(size) + ", " + timestamp;
}
@Override
public int getIcon() {
if (isDir())
return R.drawable.folder;
return Utils.getFileIcon(getTitle());
}
}