X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/f98665bc2ded1fbf10727ad9a63df742140cf5d8..fc40765890415abe9f2569a44adcbe88412ea1ba:/src/com/owncloud/android/datamodel/OCFile.java diff --git a/src/com/owncloud/android/datamodel/OCFile.java b/src/com/owncloud/android/datamodel/OCFile.java index bb328d79..4baf1ea5 100644 --- a/src/com/owncloud/android/datamodel/OCFile.java +++ b/src/com/owncloud/android/datamodel/OCFile.java @@ -1,6 +1,8 @@ -/* ownCloud Android client application +/** + * ownCloud Android client application + * * Copyright (C) 2012 Bartek Przybylski - * Copyright (C) 2012-2013 ownCloud Inc. + * Copyright (C) 2015 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, @@ -18,18 +20,15 @@ package com.owncloud.android.datamodel; -import java.io.File; - -import com.owncloud.android.MainApp; -import com.owncloud.android.lib.common.utils.Log_OC; - -import third_parties.daveKoeller.AlphanumComparator; -import android.content.Intent; -import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; import android.webkit.MimeTypeMap; +import com.owncloud.android.lib.common.utils.Log_OC; + +import java.io.File; + +import third_parties.daveKoeller.AlphanumComparator; public class OCFile implements Parcelable, Comparable { public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @@ -48,7 +47,7 @@ public class OCFile implements Parcelable, Comparable { public static final String ROOT_PATH = PATH_SEPARATOR; private static final String TAG = OCFile.class.getSimpleName(); - + private long mId; private long mParentId; private long mLength; @@ -61,10 +60,10 @@ public class OCFile implements Parcelable, Comparable { private boolean mNeedsUpdating; private long mLastSyncDateForProperties; private long mLastSyncDateForData; - private boolean mKeepInSync; + private boolean mFavorite; private String mEtag; - + private boolean mShareByLink; private String mPublicLink; @@ -73,12 +72,14 @@ public class OCFile implements Parcelable, Comparable { private boolean mNeedsUpdateThumbnail; + private boolean mIsDownloading; + /** * Create new {@link OCFile} with given path. - * + *

* The path received must be URL-decoded. Path separator must be OCFile.PATH_SEPARATOR, and it must be the first character in 'path'. - * + * * @param path The remote path of the file. */ public OCFile(String path) { @@ -92,7 +93,7 @@ public class OCFile implements Parcelable, Comparable { /** * Reconstruct from parcel - * + * * @param source The source parcel */ private OCFile(Parcel source) { @@ -106,7 +107,7 @@ public class OCFile implements Parcelable, Comparable { mLocalPath = source.readString(); mMimeType = source.readString(); mNeedsUpdating = source.readInt() == 0; - mKeepInSync = source.readInt() == 1; + mFavorite = source.readInt() == 1; mLastSyncDateForProperties = source.readLong(); mLastSyncDateForData = source.readLong(); mEtag = source.readString(); @@ -115,6 +116,7 @@ public class OCFile implements Parcelable, Comparable { mPermissions = source.readString(); mRemoteId = source.readString(); mNeedsUpdateThumbnail = source.readInt() == 0; + mIsDownloading = source.readInt() == 0; } @@ -130,7 +132,7 @@ public class OCFile implements Parcelable, Comparable { dest.writeString(mLocalPath); dest.writeString(mMimeType); dest.writeInt(mNeedsUpdating ? 1 : 0); - dest.writeInt(mKeepInSync ? 1 : 0); + dest.writeInt(mFavorite ? 1 : 0); dest.writeLong(mLastSyncDateForProperties); dest.writeLong(mLastSyncDateForData); dest.writeString(mEtag); @@ -139,11 +141,12 @@ public class OCFile implements Parcelable, Comparable { dest.writeString(mPermissions); dest.writeString(mRemoteId); dest.writeInt(mNeedsUpdateThumbnail ? 1 : 0); + dest.writeInt(mIsDownloading ? 1 : 0); } - + /** * Gets the ID of the file - * + * * @return the file ID */ public long getFileId() { @@ -152,7 +155,7 @@ public class OCFile implements Parcelable, Comparable { /** * Returns the remote path of the file on ownCloud - * + * * @return The remote path to the file */ public String getRemotePath() { @@ -162,7 +165,7 @@ public class OCFile implements Parcelable, Comparable { /** * Can be used to check, whether or not this file exists in the database * already - * + * * @return true, if the file exists in the database */ public boolean fileExists() { @@ -171,7 +174,7 @@ public class OCFile implements Parcelable, Comparable { /** * Use this to find out if this file is a folder. - * + * * @return true if it is a folder */ public boolean isFolder() { @@ -180,7 +183,7 @@ public class OCFile implements Parcelable, Comparable { /** * Use this to check if this file is available locally - * + * * @return true if it is */ public boolean isDown() { @@ -190,10 +193,10 @@ public class OCFile implements Parcelable, Comparable { } return false; } - + /** * The path, where the file is stored locally - * + * * @return The local path to the file */ public String getStoragePath() { @@ -202,7 +205,7 @@ public class OCFile implements Parcelable, Comparable { /** * Can be used to set the path where the file is stored - * + * * @param storage_path to set */ public void setStoragePath(String storage_path) { @@ -211,7 +214,7 @@ public class OCFile implements Parcelable, Comparable { /** * Get a UNIX timestamp of the file creation time - * + * * @return A UNIX timestamp of the time that file was created */ public long getCreationTimestamp() { @@ -220,7 +223,7 @@ public class OCFile implements Parcelable, Comparable { /** * Set a UNIX timestamp of the time the file was created - * + * * @param creation_timestamp to set */ public void setCreationTimestamp(long creation_timestamp) { @@ -230,8 +233,8 @@ public class OCFile implements Parcelable, Comparable { /** * Get a UNIX timestamp of the file modification time. * - * @return A UNIX timestamp of the modification time, corresponding to the value returned by the server - * in the last synchronization of the properties of this file. + * @return A UNIX timestamp of the modification time, corresponding to the value returned by the server + * in the last synchronization of the properties of this file. */ public long getModificationTimestamp() { return mModifiedTimestamp; @@ -239,22 +242,22 @@ public class OCFile implements Parcelable, Comparable { /** * Set a UNIX timestamp of the time the time the file was modified. - * - * To update with the value returned by the server in every synchronization of the properties + *

+ * To update with the value returned by the server in every synchronization of the properties * of this file. - * + * * @param modification_timestamp to set */ public void setModificationTimestamp(long modification_timestamp) { mModifiedTimestamp = modification_timestamp; } - + /** * Get a UNIX timestamp of the file modification time. * - * @return A UNIX timestamp of the modification time, corresponding to the value returned by the server - * in the last synchronization of THE CONTENTS of this file. + * @return A UNIX timestamp of the modification time, corresponding to the value returned by the server + * in the last synchronization of THE CONTENTS of this file. */ public long getModificationTimestampAtLastSyncForData() { return mModifiedTimestampAtLastSyncForData; @@ -262,61 +265,50 @@ public class OCFile implements Parcelable, Comparable { /** * Set a UNIX timestamp of the time the time the file was modified. - * - * To update with the value returned by the server in every synchronization of THE CONTENTS + *

+ * To update with the value returned by the server in every synchronization of THE CONTENTS * of this file. - * - * @param modification_timestamp to set + * + * @param modificationTimestamp to set */ public void setModificationTimestampAtLastSyncForData(long modificationTimestamp) { mModifiedTimestampAtLastSyncForData = modificationTimestamp; } - - + /** * Returns the filename and "/" for the root directory - * + * * @return The name of the file */ public String getFileName() { File f = new File(getRemotePath()); return f.getName().length() == 0 ? ROOT_PATH : f.getName(); } - + /** * Sets the name of the file - * - * Does nothing if the new name is null, empty or includes "/" ; or if the file is the root directory + *

+ * Does nothing if the new name is null, empty or includes "/" ; or if the file is the root + * directory */ public void setFileName(String name) { Log_OC.d(TAG, "OCFile name changin from " + mRemotePath); - if (name != null && name.length() > 0 && !name.contains(PATH_SEPARATOR) && !mRemotePath.equals(ROOT_PATH)) { + if (name != null && name.length() > 0 && !name.contains(PATH_SEPARATOR) && + !mRemotePath.equals(ROOT_PATH)) { String parent = (new File(getRemotePath())).getParent(); parent = (parent.endsWith(PATH_SEPARATOR)) ? parent : parent + PATH_SEPARATOR; - mRemotePath = parent + name; + mRemotePath = parent + name; if (isFolder()) { mRemotePath += PATH_SEPARATOR; } Log_OC.d(TAG, "OCFile name changed to " + mRemotePath); - - // Notify MediaScanner about removed file - Intent intent1 = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); - intent1.setData(Uri.fromFile(new File(this.getStoragePath()))); - MainApp.getAppContext().sendBroadcast(intent1); - - // Notify MediaScanner about new file - Intent intent2 = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); - String folder = new File(this.getStoragePath()).getParent(); - Log_OC.d(TAG, "uri: " + folder+PATH_SEPARATOR+name); - intent2.setData(Uri.fromFile(new File(folder+ PATH_SEPARATOR+name))); - MainApp.getAppContext().sendBroadcast(intent2); } } /** * Can be used to get the Mimetype - * + * * @return the Mimetype as a String */ public String getMimetype() { @@ -326,10 +318,10 @@ public class OCFile implements Parcelable, Comparable { /** * Adds a file to this directory. If this file is not a directory, an * exception gets thrown. - * + * * @param file to add * @throws IllegalStateException if you try to add a something and this is - * not a directory + * not a directory */ public void addFile(OCFile file) throws IllegalStateException { if (isFolder()) { @@ -356,7 +348,7 @@ public class OCFile implements Parcelable, Comparable { mModifiedTimestampAtLastSyncForData = 0; mLastSyncDateForProperties = 0; mLastSyncDateForData = 0; - mKeepInSync = false; + mFavorite = false; mNeedsUpdating = false; mEtag = null; mShareByLink = false; @@ -364,11 +356,12 @@ public class OCFile implements Parcelable, Comparable { mPermissions = null; mRemoteId = null; mNeedsUpdateThumbnail = false; + mIsDownloading = false; } /** * Sets the ID of the file - * + * * @param file_id to set */ public void setFileId(long file_id) { @@ -377,7 +370,7 @@ public class OCFile implements Parcelable, Comparable { /** * Sets the Mime-Type of the - * + * * @param mimetype to set */ public void setMimetype(String mimetype) { @@ -386,7 +379,7 @@ public class OCFile implements Parcelable, Comparable { /** * Sets the ID of the parent folder - * + * * @param parent_id to set */ public void setParentId(long parent_id) { @@ -395,7 +388,7 @@ public class OCFile implements Parcelable, Comparable { /** * Sets the file size in bytes - * + * * @param file_len to set */ public void setFileLength(long file_len) { @@ -404,7 +397,7 @@ public class OCFile implements Parcelable, Comparable { /** * Returns the size of the file in bytes - * + * * @return The filesize in bytes */ public long getFileLength() { @@ -413,7 +406,7 @@ public class OCFile implements Parcelable, Comparable { /** * Returns the ID of the parent Folder - * + * * @return The ID */ public long getParentId() { @@ -422,13 +415,13 @@ public class OCFile implements Parcelable, Comparable { /** * Check, if this file needs updating - * + * * @return */ public boolean needsUpdatingWhileSaving() { return mNeedsUpdating; } - + public boolean needsUpdateThumbnail() { return mNeedsUpdateThumbnail; } @@ -440,11 +433,11 @@ public class OCFile implements Parcelable, Comparable { public long getLastSyncDateForProperties() { return mLastSyncDateForProperties; } - + public void setLastSyncDateForProperties(long lastSyncDate) { mLastSyncDateForProperties = lastSyncDate; } - + public long getLastSyncDateForData() { return mLastSyncDateForData; } @@ -453,17 +446,17 @@ public class OCFile implements Parcelable, Comparable { mLastSyncDateForData = lastSyncDate; } - public void setKeepInSync(boolean keepInSync) { - mKeepInSync = keepInSync; + public void setFavorite(boolean favorite) { + mFavorite = favorite; } - - public boolean keepInSync() { - return mKeepInSync; + + public boolean isFavorite() { + return mFavorite; } - + @Override public int describeContents() { - return this.hashCode(); + return super.hashCode(); } @Override @@ -480,20 +473,23 @@ public class OCFile implements Parcelable, Comparable { @Override public boolean equals(Object o) { - if(o instanceof OCFile){ + if (o instanceof OCFile) { OCFile that = (OCFile) o; - if(that != null){ + if (that != null) { return this.mId == that.mId; } } - + return false; } @Override public String toString() { - String asString = "[id=%s, name=%s, mime=%s, downloaded=%s, local=%s, remote=%s, parentId=%s, keepInSync=%s etag=%s]"; - asString = String.format(asString, Long.valueOf(mId), getFileName(), mMimeType, isDown(), mLocalPath, mRemotePath, Long.valueOf(mParentId), Boolean.valueOf(mKeepInSync), mEtag); + String asString = "[id=%s, name=%s, mime=%s, downloaded=%s, local=%s, remote=%s, " + + "parentId=%s, favorite=%s etag=%s]"; + asString = String.format(asString, Long.valueOf(mId), getFileName(), mMimeType, isDown(), + mLocalPath, mRemotePath, Long.valueOf(mParentId), Boolean.valueOf(mFavorite), + mEtag); return asString; } @@ -504,8 +500,8 @@ public class OCFile implements Parcelable, Comparable { public void setEtag(String etag) { this.mEtag = etag; } - - + + public boolean isShareByLink() { return mShareByLink; } @@ -530,32 +526,54 @@ public class OCFile implements Parcelable, Comparable { return 0; } - /** @return 'True' if the file contains audio */ + /** + * @return 'True' if the file contains audio + */ public boolean isAudio() { return (mMimeType != null && mMimeType.startsWith("audio/")); } - /** @return 'True' if the file contains video */ + /** + * @return 'True' if the file contains video + */ public boolean isVideo() { return (mMimeType != null && mMimeType.startsWith("video/")); } - /** @return 'True' if the file contains an image */ + /** + * @return 'True' if the file contains an image + */ public boolean isImage() { return ((mMimeType != null && mMimeType.startsWith("image/")) || - getMimeTypeFromName().startsWith("image/")); + getMimeTypeFromName().startsWith("image/")); } - + + /** + * @return 'True' if the file is simple text (e.g. not application-dependent, like .doc or .docx) + */ + public boolean isText() { + return ((mMimeType != null && mMimeType.startsWith("text/")) || + getMimeTypeFromName().startsWith("text/")); + } + public String getMimeTypeFromName() { String extension = ""; int pos = mRemotePath.lastIndexOf('.'); if (pos >= 0) { extension = mRemotePath.substring(pos + 1); } - String result = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase()); + String result = MimeTypeMap.getSingleton(). + getMimeTypeFromExtension(extension.toLowerCase()); return (result != null) ? result : ""; } + /** + * @return 'True' if the file is hidden + */ + public boolean isHidden() { + return getFileName().startsWith("."); + } + public String getPermissions() { return mPermissions; } @@ -572,4 +590,16 @@ public class OCFile implements Parcelable, Comparable { this.mRemoteId = remoteId; } + public boolean isDownloading() { + return mIsDownloading; + } + + public void setDownloading(boolean isDownloading) { + this.mIsDownloading = isDownloading; + } + + public boolean isSynchronizing() { + // TODO real implementation + return false; + } }