mirror of
https://github.com/nextcloud/android.git
synced 2024-11-23 21:55:48 +03:00
OC-2677: Add GetSharesForFile operation
This commit is contained in:
parent
8bf072f71c
commit
f7bb011b7e
4 changed files with 114 additions and 36 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit cc71eeaa21e9217947dfce213049e16d02629b0b
|
Subproject commit 781e738347a87c2b24144e03f7fe8fe32603f2f3
|
|
@ -29,6 +29,7 @@ import com.owncloud.android.MainApp;
|
||||||
import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
|
import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
|
||||||
import com.owncloud.android.lib.operations.common.OCShare;
|
import com.owncloud.android.lib.operations.common.OCShare;
|
||||||
import com.owncloud.android.lib.operations.common.ShareType;
|
import com.owncloud.android.lib.operations.common.ShareType;
|
||||||
|
import com.owncloud.android.lib.utils.FileUtils;
|
||||||
import com.owncloud.android.utils.FileStorageUtils;
|
import com.owncloud.android.utils.FileStorageUtils;
|
||||||
import com.owncloud.android.utils.Log_OC;
|
import com.owncloud.android.utils.Log_OC;
|
||||||
|
|
||||||
|
@ -1098,4 +1099,36 @@ public class FileDataStorageManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void saveSharesDB(ArrayList<OCShare> shares) {
|
||||||
|
|
||||||
|
if (shares.size() > 0) {
|
||||||
|
// Save share file
|
||||||
|
saveShares(shares);
|
||||||
|
|
||||||
|
ArrayList<OCFile> sharedFiles = new ArrayList<OCFile>();
|
||||||
|
|
||||||
|
for (OCShare share : shares) {
|
||||||
|
// Get the path
|
||||||
|
String path = share.getPath();
|
||||||
|
if (share.isDirectory()) {
|
||||||
|
path = path + FileUtils.PATH_SEPARATOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update OCFile with data from share: ShareByLink ¿and publicLink?
|
||||||
|
OCFile file = getFileByPath(path);
|
||||||
|
if (file != null) {
|
||||||
|
if (share.getShareType().equals(ShareType.PUBLIC_LINK)) {
|
||||||
|
file.setShareByLink(true);
|
||||||
|
sharedFiles.add(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sharedFiles.size() > 0) {
|
||||||
|
updateSharedFiles(sharedFiles);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
/* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package com.owncloud.android.operations;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import com.owncloud.android.lib.network.OwnCloudClient;
|
||||||
|
import com.owncloud.android.lib.operations.common.OCShare;
|
||||||
|
import com.owncloud.android.lib.operations.common.RemoteOperationResult;
|
||||||
|
import com.owncloud.android.lib.operations.remote.GetSharesForFileRemoteOperation;
|
||||||
|
import com.owncloud.android.operations.common.SyncOperation;
|
||||||
|
import com.owncloud.android.utils.Log_OC;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide a list shares for a specific file.
|
||||||
|
*
|
||||||
|
* @author masensio
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class GetSharesForFileOperation extends SyncOperation {
|
||||||
|
|
||||||
|
private static final String TAG = GetSharesForFileOperation.class.getSimpleName();
|
||||||
|
|
||||||
|
private String mPath;
|
||||||
|
private boolean mReshares;
|
||||||
|
private boolean mSubfiles;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param path Path to file or folder
|
||||||
|
* @param reshares If set to ‘false’ (default), only shares from the current user are returned
|
||||||
|
* If set to ‘true’, all shares from the given file are returned
|
||||||
|
* @param subfiles If set to ‘false’ (default), lists only the folder being shared
|
||||||
|
* If set to ‘true’, all shared files within the folder are returned.
|
||||||
|
*/
|
||||||
|
public GetSharesForFileOperation(String path, boolean reshares, boolean subfiles) {
|
||||||
|
mPath = path;
|
||||||
|
mReshares = reshares;
|
||||||
|
mSubfiles = subfiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RemoteOperationResult run(OwnCloudClient client) {
|
||||||
|
GetSharesForFileRemoteOperation operation = new GetSharesForFileRemoteOperation(mPath, mReshares, mSubfiles);
|
||||||
|
RemoteOperationResult result = operation.execute(client);
|
||||||
|
|
||||||
|
if (result.isSuccess()) {
|
||||||
|
|
||||||
|
// Update DB with the response
|
||||||
|
Log_OC.d(TAG, "File = " + mPath + " Share list size " + result.getData().size());
|
||||||
|
ArrayList<OCShare> shares = new ArrayList<OCShare>();
|
||||||
|
for(Object obj: result.getData()) {
|
||||||
|
shares.add((OCShare) obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
getStorageManager().saveSharesDB(shares);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -19,13 +19,10 @@ package com.owncloud.android.operations;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import com.owncloud.android.datamodel.OCFile;
|
|
||||||
import com.owncloud.android.lib.network.OwnCloudClient;
|
import com.owncloud.android.lib.network.OwnCloudClient;
|
||||||
import com.owncloud.android.lib.operations.common.RemoteOperationResult;
|
import com.owncloud.android.lib.operations.common.RemoteOperationResult;
|
||||||
import com.owncloud.android.lib.operations.common.OCShare;
|
import com.owncloud.android.lib.operations.common.OCShare;
|
||||||
import com.owncloud.android.lib.operations.common.ShareType;
|
|
||||||
import com.owncloud.android.lib.operations.remote.GetRemoteSharesOperation;
|
import com.owncloud.android.lib.operations.remote.GetRemoteSharesOperation;
|
||||||
import com.owncloud.android.lib.utils.FileUtils;
|
|
||||||
import com.owncloud.android.operations.common.SyncOperation;
|
import com.owncloud.android.operations.common.SyncOperation;
|
||||||
import com.owncloud.android.utils.Log_OC;
|
import com.owncloud.android.utils.Log_OC;
|
||||||
|
|
||||||
|
@ -55,41 +52,10 @@ public class GetSharesOperation extends SyncOperation {
|
||||||
shares.add((OCShare) obj);
|
shares.add((OCShare) obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
saveSharesDB(shares);
|
getStorageManager().saveSharesDB(shares);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveSharesDB(ArrayList<OCShare> shares) {
|
|
||||||
|
|
||||||
if (shares.size() > 0) {
|
|
||||||
// Save share file
|
|
||||||
getStorageManager().saveShares(shares);
|
|
||||||
|
|
||||||
ArrayList<OCFile> sharedFiles = new ArrayList<OCFile>();
|
|
||||||
|
|
||||||
for (OCShare share : shares) {
|
|
||||||
// Get the path
|
|
||||||
String path = share.getPath();
|
|
||||||
if (share.isDirectory()) {
|
|
||||||
path = path + FileUtils.PATH_SEPARATOR;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update OCFile with data from share: ShareByLink ¿and publicLink?
|
|
||||||
OCFile file = getStorageManager().getFileByPath(path);
|
|
||||||
if (file != null) {
|
|
||||||
if (share.getShareType().equals(ShareType.PUBLIC_LINK)) {
|
|
||||||
file.setShareByLink(true);
|
|
||||||
sharedFiles.add(file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sharedFiles.size() > 0) {
|
|
||||||
getStorageManager().updateSharedFiles(sharedFiles);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue