/**
      * Use this to check if this file is available locally
      * 
+     * TODO use a better condition not dependent upon mLenght being synchronized; to change when downloads are done through a temporal file
+     * 
      * @return true if it is
      */
-    public boolean isDownloaded() {
-        return mLocalPath != null && !mLocalPath.equals("");
+    public boolean isDown() {
+        if (mLocalPath != null && mLocalPath.length() > 0) {
+            File file = new File(mLocalPath);
+            return (file.exists() && file.length() == mLength);
+        }
+        return false;
+    }
+    
+    /**
+     * Use this to check if this file is downloading
+     * 
+     * TODO use a better condition not dependent upon mLenght being synchronized; to change when downloads are done through a temporal file
+     * 
+     * @return true if it is in a download in progress
+     */
+    public boolean isDownloading() {
+        if (mLocalPath != null && mLocalPath.length() > 0) {
+            File file = new File(mLocalPath);
+            return (file.exists() && file.length() < mLength);  
+        }
+        return false;
     }
 
     /**
     @Override
     public String toString() {
         String asString = "[id=%s, name=%s, mime=%s, downloaded=%s, local=%s, remote=%s]";
-        asString = String.format(asString, new Long(mId), getFileName(), mMimeType, isDownloaded(), mLocalPath, mRemotePath);
+        asString = String.format(asString, new Long(mId), getFileName(), mMimeType, isDown(), mLocalPath, mRemotePath);
         return asString;
     }