X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/85e9a40dbeb521029a592a3d85e9fa583cce0c19..5dc43aab3cc1243f9989dd6a0c7dd3350c3f709b:/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 21b8c375..6b8e1785 100644 --- a/src/com/owncloud/android/datamodel/OCFile.java +++ b/src/com/owncloud/android/datamodel/OCFile.java @@ -1,10 +1,10 @@ /* ownCloud Android client application * Copyright (C) 2012 Bartek Przybylski + * Copyright (C) 2012-2013 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,9 +20,11 @@ package com.owncloud.android.datamodel; import java.io.File; +import com.owncloud.android.Log_OC; + import android.os.Parcel; import android.os.Parcelable; -import android.util.Log; +import android.webkit.MimeTypeMap; public class OCFile implements Parcelable, Comparable { @@ -47,13 +49,17 @@ public class OCFile implements Parcelable, Comparable { private long mLength; private long mCreationTimestamp; private long mModifiedTimestamp; + private long mModifiedTimestampAtLastSyncForData; private String mRemotePath; private String mLocalPath; private String mMimeType; private boolean mNeedsUpdating; - private long mLastSyncDate; + private long mLastSyncDateForProperties; + private long mLastSyncDateForData; private boolean mKeepInSync; + private String mEtag; + /** * Create new {@link OCFile} with given path. * @@ -81,12 +87,14 @@ public class OCFile implements Parcelable, Comparable { mLength = source.readLong(); mCreationTimestamp = source.readLong(); mModifiedTimestamp = source.readLong(); + mModifiedTimestampAtLastSyncForData = source.readLong(); mRemotePath = source.readString(); mLocalPath = source.readString(); mMimeType = source.readString(); mNeedsUpdating = source.readInt() == 0; mKeepInSync = source.readInt() == 1; - mLastSyncDate = source.readLong(); + mLastSyncDateForProperties = source.readLong(); + mLastSyncDateForData = source.readLong(); } @Override @@ -96,12 +104,14 @@ public class OCFile implements Parcelable, Comparable { dest.writeLong(mLength); dest.writeLong(mCreationTimestamp); dest.writeLong(mModifiedTimestamp); + dest.writeLong(mModifiedTimestampAtLastSyncForData); dest.writeString(mRemotePath); dest.writeString(mLocalPath); dest.writeString(mMimeType); dest.writeInt(mNeedsUpdating ? 1 : 0); dest.writeInt(mKeepInSync ? 1 : 0); - dest.writeLong(mLastSyncDate); + dest.writeLong(mLastSyncDateForProperties); + dest.writeLong(mLastSyncDateForData); } /** @@ -191,9 +201,10 @@ public class OCFile implements Parcelable, Comparable { } /** - * Get a UNIX timestamp of the file modification time - * - * @return A UNIX timestamp of the modification time + * 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. */ public long getModificationTimestamp() { return mModifiedTimestamp; @@ -202,12 +213,40 @@ 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 + * 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. + */ + public long getModificationTimestampAtLastSyncForData() { + return mModifiedTimestampAtLastSyncForData; + } + + /** + * 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 + * of this file. + * + * @param modification_timestamp to set + */ + public void setModificationTimestampAtLastSyncForData(long modificationTimestamp) { + mModifiedTimestampAtLastSyncForData = modificationTimestamp; + } + + + /** * Returns the filename and "/" for the root directory * @@ -224,7 +263,7 @@ public class OCFile implements Parcelable, Comparable { * 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.d(TAG, "OCFile name changin from " + mRemotePath); + Log_OC.d(TAG, "OCFile name changin from " + mRemotePath); if (name != null && name.length() > 0 && !name.contains(PATH_SEPARATOR) && !mRemotePath.equals(PATH_SEPARATOR)) { String parent = (new File(getRemotePath())).getParent(); parent = (parent.endsWith(PATH_SEPARATOR)) ? parent : parent + PATH_SEPARATOR; @@ -232,7 +271,7 @@ public class OCFile implements Parcelable, Comparable { if (isDirectory()) { mRemotePath += PATH_SEPARATOR; } - Log.d(TAG, "OCFile name changed to " + mRemotePath); + Log_OC.d(TAG, "OCFile name changed to " + mRemotePath); } } @@ -275,7 +314,9 @@ public class OCFile implements Parcelable, Comparable { mLength = 0; mCreationTimestamp = 0; mModifiedTimestamp = 0; - mLastSyncDate = 0; + mModifiedTimestampAtLastSyncForData = 0; + mLastSyncDateForProperties = 0; + mLastSyncDateForData = 0; mKeepInSync = false; mNeedsUpdating = false; } @@ -343,12 +384,20 @@ public class OCFile implements Parcelable, Comparable { return mNeedsUpdating; } - public long getLastSyncDate() { - return mLastSyncDate; + public long getLastSyncDateForProperties() { + return mLastSyncDateForProperties; } - public void setLastSyncDate(long lastSyncDate) { - mLastSyncDate = lastSyncDate; + public void setLastSyncDateForProperties(long lastSyncDate) { + mLastSyncDateForProperties = lastSyncDate; + } + + public long getLastSyncDateForData() { + return mLastSyncDateForData; + } + + public void setLastSyncDateForData(long lastSyncDate) { + mLastSyncDateForData = lastSyncDate; } public void setKeepInSync(boolean keepInSync) { @@ -395,4 +444,42 @@ public class OCFile implements Parcelable, Comparable { return asString; } + public String getEtag() { + return mEtag; + } + + public long getLocalModificationTimestamp() { + if (mLocalPath != null && mLocalPath.length() > 0) { + File f = new File(mLocalPath); + return f.lastModified(); + } + return 0; + } + + /** @return 'True' if the file contains audio */ + public boolean isAudio() { + return (mMimeType != null && mMimeType.startsWith("audio/")); + } + + /** @return 'True' if the file contains video */ + public boolean isVideo() { + return (mMimeType != null && mMimeType.startsWith("video/")); + } + + /** @return 'True' if the file contains an image */ + public boolean isImage() { + return ((mMimeType != null && mMimeType.startsWith("image/")) || + getMimeTypeFromName().startsWith("image/")); + } + + 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 : ""; + } + }