From: masensio Date: Mon, 27 Jan 2014 13:00:07 +0000 (+0100) Subject: Merge branch 'develop' into share_link_show_shared_files X-Git-Tag: oc-android-1.5.5~35^2~47 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/388fdd2265b24b78808d1e51a994cc543d2a43c8 Merge branch 'develop' into share_link_show_shared_files --- 388fdd2265b24b78808d1e51a994cc543d2a43c8 diff --cc src/com/owncloud/android/authentication/AuthenticatorActivity.java index 2fcb5c8f,3a11ea62..4bd2bb8a --- a/src/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/com/owncloud/android/authentication/AuthenticatorActivity.java @@@ -53,18 -53,18 +53,20 @@@ import com.actionbarsherlock.app.Sherlo import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener; - import com.owncloud.android.oc_framework.accounts.AccountTypeUtils; - import com.owncloud.android.oc_framework.accounts.OwnCloudAccount; - import com.owncloud.android.oc_framework.network.webdav.OwnCloudClientFactory; - import com.owncloud.android.oc_framework.network.webdav.WebdavClient; + import com.owncloud.android.lib.accounts.AccountTypeUtils; + import com.owncloud.android.lib.accounts.OwnCloudAccount; + import com.owncloud.android.lib.network.OwnCloudClientFactory; + import com.owncloud.android.lib.network.OwnCloudClient; import com.owncloud.android.operations.OAuth2GetAccessToken; - import com.owncloud.android.oc_framework.operations.OnRemoteOperationListener; - import com.owncloud.android.oc_framework.operations.RemoteOperation; - import com.owncloud.android.oc_framework.operations.RemoteOperationResult; - import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode; - import com.owncloud.android.oc_framework.operations.remote.ExistenceCheckRemoteOperation; - import com.owncloud.android.oc_framework.operations.remote.GetUserNameRemoteOperation; - import com.owncloud.android.oc_framework.operations.remote.OwnCloudServerCheckOperation; ++ + import com.owncloud.android.lib.operations.common.OnRemoteOperationListener; -import com.owncloud.android.operations.OwnCloudServerCheckOperation; ++import com.owncloud.android.lib.operations.remote.OwnCloudServerCheckOperation; + import com.owncloud.android.lib.operations.common.RemoteOperation; + import com.owncloud.android.lib.operations.common.RemoteOperationResult; + import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; + import com.owncloud.android.lib.operations.remote.ExistenceCheckRemoteOperation; + import com.owncloud.android.lib.operations.remote.GetUserNameRemoteOperation; ++ import com.owncloud.android.ui.dialog.SamlWebViewDialog; import com.owncloud.android.ui.dialog.SslValidatorDialog; import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener; diff --cc src/com/owncloud/android/datamodel/FileDataStorageManager.java index 313ad06f,042709a1..5709dc19 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@@ -27,7 -27,6 +27,7 @@@ import java.util.Vector import com.owncloud.android.MainApp; import com.owncloud.android.db.ProviderMeta.ProviderTableMeta; - import com.owncloud.android.oc_framework.operations.ShareType; ++import com.owncloud.android.lib.operations.common.ShareType; import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.Log_OC; diff --cc src/com/owncloud/android/datamodel/OCShare.java index 07069f90,00000000..9946ba7e mode 100644,000000..100644 --- a/src/com/owncloud/android/datamodel/OCShare.java +++ b/src/com/owncloud/android/datamodel/OCShare.java @@@ -1,284 -1,0 +1,284 @@@ +/* ownCloud Android client application + * Copyright (C) 2012-2014 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, + * 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package com.owncloud.android.datamodel; + - import com.owncloud.android.oc_framework.operations.ShareRemoteFile; - import com.owncloud.android.oc_framework.operations.ShareType; ++import com.owncloud.android.lib.operations.common.ShareRemoteFile; ++import com.owncloud.android.lib.operations.common.ShareType; +import com.owncloud.android.utils.Log_OC; + +import android.os.Parcel; +import android.os.Parcelable; + +public class OCShare implements Parcelable{ + + private static final String TAG = OCShare.class.getSimpleName(); + + private long mId; + private long mFileSource; + private long mItemSource; + private ShareType mShareType; + private String mShareWith; + private String mPath; + private int mPermissions; + private long mSharedDate; + private long mExpirationDate; + private String mToken; + private String mSharedWithDisplayName; + private boolean mIsDirectory; + private long mUserId; + private long mIdRemoteShared; + + + /** + * Create new {@link OCShare} 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 OCShare(String path) { + resetData(); + if (path == null || path.length() <= 0 || !path.startsWith(OCFile.PATH_SEPARATOR)) { + Log_OC.e(TAG, "Trying to create a OCShare with a non valid path"); + throw new IllegalArgumentException("Trying to create a OCShare with a non valid path: " + path); + } + mPath = path; + } + + public OCShare(ShareRemoteFile remoteFile) { + mId = -1; + + String path = remoteFile.getPath(); + if (path == null || path.length() <= 0 || !path.startsWith(OCFile.PATH_SEPARATOR)) { + Log_OC.e(TAG, "Trying to create a OCShare with a non valid path"); + throw new IllegalArgumentException("Trying to create a OCShare with a non valid path: " + path); + } + mPath = path; + + mFileSource = remoteFile.getFileSource(); + mItemSource = remoteFile.getItemSource(); + mShareType = remoteFile.getShareType(); + mShareWith = remoteFile.getShareWith(); + mPermissions = remoteFile.getPermissions(); + mSharedDate = remoteFile.getSharedDate(); + mExpirationDate = remoteFile.getExpirationDate(); + mToken = remoteFile.getToken(); + mSharedWithDisplayName = remoteFile.getSharedWithDisplayName(); + mIsDirectory = remoteFile.isDirectory(); + mUserId = remoteFile.getUserId(); + mIdRemoteShared = remoteFile.getIdRemoteShared(); + } + + /** + * Used internally. Reset all file properties + */ + private void resetData() { + mId = -1; + mFileSource = 0; + mItemSource = 0; + mShareType = ShareType.NO_SHARED; + mShareWith = null; + mPath = null; + mPermissions = -1; + mSharedDate = 0; + mExpirationDate = 0; + mToken = null; + mSharedWithDisplayName = null; + mIsDirectory = false; + mUserId = -1; + mIdRemoteShared = -1; + + } + + /// Getters and Setters + public long getFileSource() { + return mFileSource; + } + + public void setFileSource(long fileSource) { + this.mFileSource = fileSource; + } + + public long getItemSource() { + return mItemSource; + } + + public void setItemSource(long itemSource) { + this.mItemSource = itemSource; + } + + public ShareType getShareType() { + return mShareType; + } + + public void setShareType(ShareType shareType) { + this.mShareType = shareType; + } + + public String getShareWith() { + return mShareWith; + } + + public void setShareWith(String shareWith) { + this.mShareWith = shareWith; + } + + public String getPath() { + return mPath; + } + + public void setPath(String path) { + this.mPath = path; + } + + public int getPermissions() { + return mPermissions; + } + + public void setPermissions(int permissions) { + this.mPermissions = permissions; + } + + public long getSharedDate() { + return mSharedDate; + } + + public void setSharedDate(long sharedDate) { + this.mSharedDate = sharedDate; + } + + public long getExpirationDate() { + return mExpirationDate; + } + + public void setExpirationDate(long expirationDate) { + this.mExpirationDate = expirationDate; + } + + public String getToken() { + return mToken; + } + + public void setToken(String token) { + this.mToken = token; + } + + public String getSharedWithDisplayName() { + return mSharedWithDisplayName; + } + + public void setSharedWithDisplayName(String sharedWithDisplayName) { + this.mSharedWithDisplayName = sharedWithDisplayName; + } + + public boolean isDirectory() { + return mIsDirectory; + } + + public void setIsDirectory(boolean isDirectory) { + this.mIsDirectory = isDirectory; + } + + public long getUserId() { + return mUserId; + } + + public void setUserId(long userId) { + this.mUserId = userId; + } + + public long getIdRemoteShared() { + return mIdRemoteShared; + } + + public void setIdRemoteShared(long idRemoteShared) { + this.mIdRemoteShared = idRemoteShared; + } + + public long getId() { + return mId; + } + + public void setId(long id){ + mId = id; + } + + /** + * Parcelable Methods + */ + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public OCShare createFromParcel(Parcel source) { + return new OCShare(source); + } + + @Override + public OCShare[] newArray(int size) { + return new OCShare[size]; + } + }; + + /** + * Reconstruct from parcel + * + * @param source The source parcel + */ + private OCShare(Parcel source) { + mId = source.readLong(); + mFileSource = source.readLong(); + mItemSource = source.readLong(); + try { + mShareType = ShareType.valueOf(source.readString()); + } catch (IllegalArgumentException x) { + mShareType = ShareType.NO_SHARED; + } + mShareWith = source.readString(); + mPath = source.readString(); + mPermissions = source.readInt(); + mSharedDate = source.readLong(); + mExpirationDate = source.readLong(); + mToken = source.readString(); + mSharedWithDisplayName = source.readString(); + mIsDirectory = source.readInt() == 0; + mUserId = source.readLong(); + mIdRemoteShared = source.readLong(); + } + + @Override + public int describeContents() { + return this.hashCode(); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeLong(mId); + dest.writeLong(mFileSource); + dest.writeLong(mItemSource); + dest.writeString((mShareType == null) ? "" : mShareType.name()); + dest.writeString(mShareWith); + dest.writeString(mPath); + dest.writeInt(mPermissions); + dest.writeLong(mSharedDate); + dest.writeLong(mExpirationDate); + dest.writeString(mToken); + dest.writeString(mSharedWithDisplayName); + dest.writeInt(mIsDirectory ? 1 : 0); + dest.writeLong(mUserId); + dest.writeLong(mIdRemoteShared); + } +} diff --cc src/com/owncloud/android/operations/GetSharedFilesOperation.java index 68fd6ab5,00000000..174ebbc0 mode 100644,000000..100644 --- a/src/com/owncloud/android/operations/GetSharedFilesOperation.java +++ b/src/com/owncloud/android/operations/GetSharedFilesOperation.java @@@ -1,95 -1,0 +1,95 @@@ +/* ownCloud Android client application + * 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 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package com.owncloud.android.operations; + +import java.util.ArrayList; + +import com.owncloud.android.datamodel.FileDataStorageManager; +import com.owncloud.android.datamodel.OCFile; +import com.owncloud.android.datamodel.OCShare; - import com.owncloud.android.oc_framework.network.webdav.WebdavClient; - import com.owncloud.android.oc_framework.operations.RemoteOperation; - import com.owncloud.android.oc_framework.operations.RemoteOperationResult; - import com.owncloud.android.oc_framework.operations.ShareRemoteFile; - import com.owncloud.android.oc_framework.operations.ShareType; - import com.owncloud.android.oc_framework.operations.remote.GetRemoteSharedFilesOperation; - import com.owncloud.android.oc_framework.utils.FileUtils; ++import com.owncloud.android.lib.network.OwnCloudClient; ++import com.owncloud.android.lib.operations.common.RemoteOperation; ++import com.owncloud.android.lib.operations.common.RemoteOperationResult; ++import com.owncloud.android.lib.operations.common.ShareRemoteFile; ++import com.owncloud.android.lib.operations.common.ShareType; ++import com.owncloud.android.lib.operations.remote.GetRemoteSharedFilesOperation; ++import com.owncloud.android.lib.utils.FileUtils; +import com.owncloud.android.utils.Log_OC; + +/** + * Access to remote operation to get the share files/folders + * Save the data in Database + * + * @author masensio + */ + +public class GetSharedFilesOperation extends RemoteOperation { + + private static final String TAG = GetSharedFilesOperation.class.getSimpleName(); + + private String mUrlServer; + protected FileDataStorageManager mStorageManager; + + + public GetSharedFilesOperation(String urlServer, FileDataStorageManager storageManager) { + mUrlServer = urlServer; + mStorageManager = storageManager; + } + + @Override - protected RemoteOperationResult run(WebdavClient client) { ++ protected RemoteOperationResult run(OwnCloudClient client) { + GetRemoteSharedFilesOperation operation = new GetRemoteSharedFilesOperation(mUrlServer); + RemoteOperationResult result = operation.execute(client); + + if (result.isSuccess()) { + + // Clean Share data in filelist table + mStorageManager.cleanShareFile(); + // Update DB with the response + ArrayList shareRemoteFiles = operation.getSharedFiles(); + Log_OC.d(TAG, "Share list size = " + shareRemoteFiles.size()); + for (ShareRemoteFile remoteFile: shareRemoteFiles) { + OCShare shareFile = new OCShare(remoteFile); + saveShareFileInDB(shareFile); + } + } + + return result; + } + + private void saveShareFileInDB(OCShare shareFile) { + // Save share file + mStorageManager.saveShareFile(shareFile); + + // Get the path + String path = shareFile.getPath(); + if (shareFile.isDirectory()) { + path = path + FileUtils.PATH_SEPARATOR; + } + + // Update OCFile with data from share: ShareByLink ¿and publicLink? + OCFile file = mStorageManager.getFileByPath(path); + if (file != null) { + if (shareFile.getShareType().equals(ShareType.PUBLIC_LINK)) { + file.setShareByLink(true); + mStorageManager.saveFile(file); + } + } + } + +} diff --cc src/com/owncloud/android/ui/activity/FileActivity.java index 09763edf,3d2323fb..3a9297ec --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@@ -33,8 -33,7 +33,10 @@@ import com.owncloud.android.MainApp import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.datamodel.OCFile; - import com.owncloud.android.oc_framework.accounts.OwnCloudAccount; - import com.owncloud.android.oc_framework.network.webdav.WebdavUtils; ++ ++import com.owncloud.android.lib.accounts.OwnCloudAccount; + import com.owncloud.android.lib.network.webdav.WebdavUtils; ++ import com.owncloud.android.utils.Log_OC; diff --cc src/com/owncloud/android/ui/activity/FileDisplayActivity.java index ee6a2ad0,04d0eeec..f3f763e8 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@@ -69,12 -68,10 +69,15 @@@ import com.owncloud.android.files.servi import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.operations.CreateFolderOperation; - import com.owncloud.android.oc_framework.accounts.OwnCloudAccount; - import com.owncloud.android.oc_framework.operations.OnRemoteOperationListener; - import com.owncloud.android.oc_framework.operations.RemoteOperation; - import com.owncloud.android.oc_framework.operations.RemoteOperationResult; - import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode; ++ +import com.owncloud.android.operations.GetSharedFilesOperation; ++ ++import com.owncloud.android.lib.accounts.OwnCloudAccount; + import com.owncloud.android.lib.operations.common.OnRemoteOperationListener; + import com.owncloud.android.lib.operations.common.RemoteOperation; + import com.owncloud.android.lib.operations.common.RemoteOperationResult; + import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; ++ import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation;