e2cebcfc327600708f8d223a18b2117383bd79db
   1 /* ownCloud Android client application 
   2  *   Copyright (C) 2012  Bartek Przybylski 
   4  *   This program is free software: you can redistribute it and/or modify 
   5  *   it under the terms of the GNU General Public License as published by 
   6  *   the Free Software Foundation, either version 3 of the License, or 
   7  *   (at your option) any later version. 
   9  *   This program is distributed in the hope that it will be useful, 
  10  *   but WITHOUT ANY WARRANTY; without even the implied warranty of 
  11  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  12  *   GNU General Public License for more details. 
  14  *   You should have received a copy of the GNU General Public License 
  15  *   along with this program.  If not, see <http://www.gnu.org/licenses/>. 
  19 package eu
.alefzero
.owncloud
.datamodel
; 
  23 import android
.os
.Parcel
; 
  24 import android
.os
.Parcelable
; 
  26 public class OCFile 
implements Parcelable 
{ 
  28     public static final Parcelable
.Creator
<OCFile
> CREATOR 
= new Parcelable
.Creator
<OCFile
>() { 
  30         public OCFile 
createFromParcel(Parcel source
) { 
  31             return new OCFile(source
); 
  35         public OCFile
[] newArray(int size
) { 
  36             return new OCFile
[size
]; 
  41     private long mParentId
; 
  43     private long mCreationTimestamp
; 
  44     private long mModifiedTimestamp
; 
  45     private String mRemotePath
; 
  46     private String mLocalPath
; 
  47     private String mMimeType
; 
  48     private boolean mNeedsUpdating
; 
  51      * Create new {@link OCFile} with given path 
  53      * @param path The remote path of the file 
  55     public OCFile(String path
) { 
  57         mNeedsUpdating 
= false
; 
  62      * Reconstruct from parcel 
  64      * @param source The source parcel 
  66     private OCFile(Parcel source
) { 
  67         mId 
= source
.readLong(); 
  68         mParentId 
= source
.readLong(); 
  69         mLength 
= source
.readLong(); 
  70         mCreationTimestamp 
= source
.readLong(); 
  71         mModifiedTimestamp 
= source
.readLong(); 
  72         mRemotePath 
= source
.readString(); 
  73         mLocalPath 
= source
.readString(); 
  74         mMimeType 
= source
.readString(); 
  75         mNeedsUpdating 
= source
.readInt() == 0; 
  79      * Gets the ID of the file 
  83     public long getFileId() { 
  88      * Returns the path of the file 
  92     public String 
getPath() { 
  97      * Can be used to check, whether or not this file exists in the database 
 100      * @return true, if the file exists in the database 
 102     public boolean fileExists() { 
 107      * Use this to find out if this file is a Directory 
 109      * @return true if it is a directory 
 111     public boolean isDirectory() { 
 112         return mMimeType 
!= null 
&& mMimeType
.equals("DIR"); 
 116      * Use this to check if this file is available locally 
 118      * @return true if it is 
 120     public boolean isDownloaded() { 
 121         return mLocalPath 
!= null 
|| mLocalPath
.equals(""); 
 125      * The path, where the file is stored locally 
 127      * @return The local path to the file 
 129     public String 
getStoragePath() { 
 134      * Can be used to set the path where the file is stored 
 136      * @param storage_path to set 
 138     public void setStoragePath(String storage_path
) { 
 139         mLocalPath 
= storage_path
; 
 143      * Get a UNIX timestamp of the file creation time 
 145      * @return A UNIX timestamp of the time that file was created 
 147     public long getCreationTimestamp() { 
 148         return mCreationTimestamp
; 
 152      * Set a UNIX timestamp of the time the file was created 
 154      * @param creation_timestamp to set 
 156     public void setCreationTimestamp(long creation_timestamp
) { 
 157         mCreationTimestamp 
= creation_timestamp
; 
 161      * Get a UNIX timestamp of the file modification time 
 163      * @return A UNIX timestamp of the modification time 
 165     public long getModificationTimestamp() { 
 166         return mModifiedTimestamp
; 
 170      * Set a UNIX timestamp of the time the time the file was modified. 
 172      * @param modification_timestamp to set 
 174     public void setModificationTimestamp(long modification_timestamp
) { 
 175         mModifiedTimestamp 
= modification_timestamp
; 
 179      * Returns the filename and "/" for the root directory 
 181      * @return The name of the file 
 183     public String 
getFileName() { 
 184         if (mRemotePath 
!= null
) { 
 185             File f 
= new File(mRemotePath
); 
 186             return f
.getName().equals("") ? 
"/" : f
.getName(); 
 192      * Can be used to get the Mimetype 
 194      * @return the Mimetype as a String 
 196     public String 
getMimetype() { 
 201      * Adds a file to this directory. If this file is not a directory, an 
 202      * exception gets thrown. 
 205      * @throws IllegalStateException if you try to add a something and this is 
 208     public void addFile(OCFile file
) throws IllegalStateException 
{ 
 210             file
.mParentId 
= mId
; 
 211             mNeedsUpdating 
= true
; 
 214         throw new IllegalStateException( 
 215                 "This is not a directory where you can add stuff to!"); 
 219      * Used internally. Reset all file properties 
 221     private void resetData() { 
 228         mCreationTimestamp 
= 0; 
 229         mModifiedTimestamp 
= 0; 
 233      * Sets the ID of the file 
 235      * @param file_id to set 
 237     public void setFileId(long file_id
) { 
 242      * Sets the Mime-Type of the 
 244      * @param mimetype to set 
 246     public void setMimetype(String mimetype
) { 
 247         mMimeType 
= mimetype
; 
 251      * Sets the ID of the parent folder 
 253      * @param parent_id to set 
 255     public void setParentId(long parent_id
) { 
 256         mParentId 
= parent_id
; 
 260      * Sets the file size in bytes 
 262      * @param file_len to set 
 264     public void setFileLength(long file_len
) { 
 269      * Returns the size of the file in bytes 
 271      * @return The filesize in bytes 
 273     public long getFileLength() { 
 278      * Returns the ID of the parent Folder 
 282     public long getParentId() { 
 287      * Check, if this file needs updating 
 291     public boolean needsUpdatingWhileSaving() { 
 292         return mNeedsUpdating
; 
 296     public int describeContents() { 
 297         return this.hashCode(); 
 301     public void writeToParcel(Parcel dest
, int flags
) { 
 303         dest
.writeLong(mParentId
); 
 304         dest
.writeLong(mLength
); 
 305         dest
.writeLong(mCreationTimestamp
); 
 306         dest
.writeLong(mModifiedTimestamp
); 
 307         dest
.writeString(mRemotePath
); 
 308         dest
.writeString(mLocalPath
); 
 309         dest
.writeString(mMimeType
); 
 310         dest
.writeInt(mNeedsUpdating ? 
0 : 1); // No writeBoolean method exists