X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/537e075fca51a81570d7de702ced3eea4838da51..c54d7e35d0efb3d1352ff6d1330cac185bef0a21:/src/com/owncloud/android/datamodel/OCFile.java?ds=sidebyside diff --git a/src/com/owncloud/android/datamodel/OCFile.java b/src/com/owncloud/android/datamodel/OCFile.java index d1821b44..fcde054a 100644 --- a/src/com/owncloud/android/datamodel/OCFile.java +++ b/src/com/owncloud/android/datamodel/OCFile.java @@ -22,9 +22,9 @@ package com.owncloud.android.datamodel; import android.os.Parcel; import android.os.Parcelable; +import android.webkit.MimeTypeMap; import com.owncloud.android.lib.common.utils.Log_OC; -import com.owncloud.android.utils.FileStorageUtils; import java.io.File; @@ -74,6 +74,8 @@ public class OCFile implements Parcelable, Comparable { private boolean mIsDownloading; + private String mEtagInConflict; // Save file etag in the server, when there is a conflict. No conflict = null + /** * Create new {@link OCFile} with given path. @@ -115,8 +117,9 @@ public class OCFile implements Parcelable, Comparable { mPublicLink = source.readString(); mPermissions = source.readString(); mRemoteId = source.readString(); - mNeedsUpdateThumbnail = source.readInt() == 0; - mIsDownloading = source.readInt() == 0; + mNeedsUpdateThumbnail = source.readInt() == 1; + mIsDownloading = source.readInt() == 1; + mEtagInConflict = source.readString(); } @@ -142,6 +145,7 @@ public class OCFile implements Parcelable, Comparable { dest.writeString(mRemoteId); dest.writeInt(mNeedsUpdateThumbnail ? 1 : 0); dest.writeInt(mIsDownloading ? 1 : 0); + dest.writeString(mEtagInConflict); } /** @@ -289,11 +293,13 @@ public class OCFile implements Parcelable, Comparable { /** * 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; @@ -314,24 +320,6 @@ 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 - */ - public void addFile(OCFile file) throws IllegalStateException { - if (isFolder()) { - file.mParentId = mId; - mNeedsUpdating = true; - return; - } - throw new IllegalStateException( - "This is not a directory where you can add stuff to!"); - } - - /** * Used internally. Reset all file properties */ private void resetData() { @@ -355,6 +343,7 @@ public class OCFile implements Parcelable, Comparable { mRemoteId = null; mNeedsUpdateThumbnail = false; mIsDownloading = false; + mEtagInConflict = null; } /** @@ -454,7 +443,7 @@ public class OCFile implements Parcelable, Comparable { @Override public int describeContents() { - return ((Object) this).hashCode(); + return super.hashCode(); } @Override @@ -483,8 +472,11 @@ public class OCFile implements Parcelable, Comparable { @Override public String toString() { - 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); + 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; } @@ -493,10 +485,9 @@ public class OCFile implements Parcelable, Comparable { } public void setEtag(String etag) { - this.mEtag = etag; + this.mEtag = (etag != null ? etag : ""); } - public boolean isShareByLink() { return mShareByLink; } @@ -540,7 +531,33 @@ public class OCFile implements Parcelable, Comparable { */ public boolean isImage() { return ((mMimeType != null && mMimeType.startsWith("image/")) || - FileStorageUtils.getMimeTypeFromName(mRemotePath).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()); + return (result != null) ? result : ""; + } + + /** + * @return 'True' if the file is hidden + */ + public boolean isHidden() { + return getFileName().startsWith("."); } public String getPermissions() { @@ -567,8 +584,11 @@ public class OCFile implements Parcelable, Comparable { this.mIsDownloading = isDownloading; } - public boolean isSynchronizing() { - // TODO real implementation - return false; + public String getEtagInConflict() { + return mEtagInConflict; + } + + public void setEtagInConflict(String etagInConflict) { + mEtagInConflict = etagInConflict; } }