package com.openfarmanager.android.filesystem; import com.openfarmanager.android.App; import com.openfarmanager.android.core.archive.MimeTypes; import com.openfarmanager.android.core.network.skydrive.JsonKeys; import com.openfarmanager.android.model.Bookmark; import org.json.JSONObject; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Locale; import static com.openfarmanager.android.utils.Extensions.isNullOrEmpty; /** * Represents SkyDrive file. * * @author Vlad Namashko */ public class SkyDriveFile implements FileProxy { private JSONObject mJsonData; private long mModified; private String mFullPath; private static final SimpleDateFormat sSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz", Locale.US); public SkyDriveFile(JSONObject jsonData, String parentPath) { mJsonData = jsonData; if (!parentPath.endsWith("/")) { parentPath += "/"; } mFullPath = parentPath + getName(); if (!isDirectory()) { try { mModified = sSimpleDateFormat.parse(tryGet(JsonKeys.UPDATED_TIME, "")).getTime(); } catch (Exception e) { mModified = 0; } } } @Override public String getId() { return tryGet(JsonKeys.ID, ""); } @Override public String getName() { return tryGet(JsonKeys.NAME, ""); } @Override public boolean isDirectory() { String type = tryGet(JsonKeys.TYPE, ""); return JsonKeys.FOLDER.equals(type) || !mJsonData.isNull(JsonKeys.COUNT); } @Override public long getSize() { return tryGet(JsonKeys.SIZE, 0); } @Override public long lastModifiedDate() { return mModified; } @Override public List getChildren() { return new ArrayList(); } @Override public String getFullPath() { return getId(); } @Override public String getFullPathRaw() { return mFullPath; } @Override public String getParentPath() { return tryGet(JsonKeys.PARENT_ID, ""); } @Override public boolean isUpNavigator() { return false; } @Override public boolean isRoot() { return false; } @Override public boolean isVirtualDirectory() { return false; } @Override public boolean isBookmark() { return false; } @Override public Bookmark getBookmark() { return null; } @Override public String getMimeType() { String type = tryGet(JsonKeys.TYPE, ""); switch (type) { case "photo": return MimeTypes.MIME_IMAGE; case "video": return MimeTypes.MIME_VIDEO; case "audio": return MimeTypes.MIME_AUDIO; } return type; } public String getSource() { return tryGet(JsonKeys.SOURCE, ""); } private String tryGet(String name, String defaultValue) { try { return mJsonData.getString(name); } catch (Exception e) { return defaultValue; } } private long tryGet(String name, long defaultValue) { try { return mJsonData.getLong(name); } catch (Exception e) { return defaultValue; } } }