[tx-robot] updated from transifex
[pub/Android/ownCloud.git] / src / com / owncloud / android / operations / CreateShareWithShareeOperation.java
1 /**
2 * ownCloud Android client application
3 *
4 * @author masensio
5 * @author David A. Velasco
6 * Copyright (C) 2015 ownCloud Inc.
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2,
10 * as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22 package com.owncloud.android.operations;
23
24 /**
25 * Creates a new private share for a given file
26 */
27
28
29 import com.owncloud.android.datamodel.FileDataStorageManager;
30 import com.owncloud.android.datamodel.OCFile;
31 import com.owncloud.android.lib.common.OwnCloudClient;
32 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
33 import com.owncloud.android.lib.resources.files.FileUtils;
34 import com.owncloud.android.lib.resources.shares.CreateRemoteShareOperation;
35 import com.owncloud.android.lib.resources.shares.OCShare;
36 import com.owncloud.android.lib.resources.shares.ShareType;
37 import com.owncloud.android.operations.common.SyncOperation;
38
39 public class CreateShareWithShareeOperation extends SyncOperation {
40
41 protected FileDataStorageManager mStorageManager;
42
43 private String mPath;
44 private String mShareeName;
45 private ShareType mShareType;
46
47 /**
48 * Constructor.
49 *
50 * @param path Full path of the file/folder being shared.
51 * @param shareeName User or group name of the target sharee.
52 * @param shareType Type of share determines type of sharee; {@link ShareType#USER} and {@link ShareType#GROUP}
53 * are the only valid values for the moment.
54 */
55 public CreateShareWithShareeOperation(String path, String shareeName, ShareType shareType) {
56 if (!ShareType.USER.equals(shareType) && !ShareType.GROUP.equals(shareType)) {
57 throw new IllegalArgumentException("Illegal share type " + shareType);
58 }
59 mPath = path;
60 mShareeName = shareeName;
61 mShareType = shareType;
62 }
63
64 @Override
65 protected RemoteOperationResult run(OwnCloudClient client) {
66 // Check if the share link already exists
67 // TODO or not
68 /*
69 RemoteOperation operation = new GetRemoteSharesForFileOperation(mPath, false, false);
70 RemoteOperationResult result = operation.execute(client);
71 if (!result.isSuccess() || result.getData().size() <= 0) {
72 */
73
74 CreateRemoteShareOperation operation = new CreateRemoteShareOperation(
75 mPath,
76 mShareType,
77 mShareeName,
78 false,
79 "",
80 OCShare.DEFAULT_PERMISSION
81 );
82 operation.setGetShareDetails(true);
83 RemoteOperationResult result = operation.execute(client);
84
85
86 if (result.isSuccess()) {
87 if (result.getData().size() > 0) {
88 OCShare share = (OCShare) result.getData().get(0);
89 updateData(share);
90 }
91 }
92
93 return result;
94 }
95
96 public String getPath() {
97 return mPath;
98 }
99
100 private void updateData(OCShare share) {
101 // Update DB with the response
102 share.setPath(mPath);
103 share.setIsFolder(mPath.endsWith(FileUtils.PATH_SEPARATOR));
104
105 getStorageManager().saveShare(share);
106
107 // Update OCFile with data from share: ShareByLink and publicLink
108 OCFile file = getStorageManager().getFileByPath(mPath);
109 if (file!=null) {
110 file.setShareWithSharee(true); // TODO - this should be done by the FileContentProvider, as part of getStorageManager().saveShare(share)
111 getStorageManager().saveFile(file);
112 }
113 }
114
115 }