X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/84a4a086d614bd12fef58dd911f1312016013ecc..9df957d548b51bf347ab7ba8134699362990f443:/src/com/owncloud/android/services/OperationsService.java diff --git a/src/com/owncloud/android/services/OperationsService.java b/src/com/owncloud/android/services/OperationsService.java index 099bd087..eff8e032 100644 --- a/src/com/owncloud/android/services/OperationsService.java +++ b/src/com/owncloud/android/services/OperationsService.java @@ -54,7 +54,8 @@ import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.lib.resources.users.GetRemoteUserNameOperation; import com.owncloud.android.operations.CopyFileOperation; import com.owncloud.android.operations.CreateFolderOperation; -import com.owncloud.android.operations.CreateShareOperation; +import com.owncloud.android.operations.CreateShareViaLinkOperation; +import com.owncloud.android.operations.CreateShareWithShareeOperation; import com.owncloud.android.operations.GetServerInfoOperation; import com.owncloud.android.operations.MoveFileOperation; import com.owncloud.android.operations.OAuth2GetAccessToken; @@ -62,7 +63,7 @@ import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation; import com.owncloud.android.operations.SynchronizeFolderOperation; -import com.owncloud.android.operations.UnshareLinkOperation; +import com.owncloud.android.operations.UnshareOperation; import com.owncloud.android.operations.common.SyncOperation; import java.io.IOException; @@ -88,10 +89,13 @@ public class OperationsService extends Service { public static final String EXTRA_NEW_PARENT_PATH = "NEW_PARENT_PATH"; public static final String EXTRA_FILE = "FILE"; public static final String EXTRA_PASSWORD_SHARE = "PASSWORD_SHARE"; + public static final String EXTRA_SHARE_TYPE = "SHARE_TYPE"; + public static final String EXTRA_SHARE_WITH = "SHARE_WITH"; public static final String EXTRA_COOKIE = "COOKIE"; - public static final String ACTION_CREATE_SHARE = "CREATE_SHARE"; + public static final String ACTION_CREATE_SHARE_VIA_LINK = "CREATE_SHARE_VIA_LINK"; + public static final String ACTION_CREATE_SHARE_WITH_SHAREE = "CREATE_SHARE_WITH_SHAREE"; public static final String ACTION_UNSHARE = "UNSHARE"; public static final String ACTION_GET_SERVER_INFO = "GET_SERVER_INFO"; public static final String ACTION_OAUTH2_GET_ACCESS_TOKEN = "OAUTH2_GET_ACCESS_TOKEN"; @@ -100,7 +104,7 @@ public class OperationsService extends Service { public static final String ACTION_REMOVE = "REMOVE"; public static final String ACTION_CREATE_FOLDER = "CREATE_FOLDER"; public static final String ACTION_SYNC_FILE = "SYNC_FILE"; - public static final String ACTION_SYNC_FOLDER = "SYNC_FOLDER";//for the moment, just to download + public static final String ACTION_SYNC_FOLDER = "SYNC_FOLDER"; public static final String ACTION_MOVE_FILE = "MOVE_FILE"; public static final String ACTION_COPY_FILE = "COPY_FILE"; @@ -110,7 +114,6 @@ public class OperationsService extends Service { ".OPERATION_FINISHED"; - private ConcurrentMap> mUndispatchedFinishedOperations = new ConcurrentHashMap>(); @@ -234,7 +237,6 @@ public class OperationsService extends Service { */ @Override public IBinder onBind(Intent intent) { - //Log_OC.wtf(TAG, "onBind" ); return mOperationsBinder; } @@ -549,22 +551,42 @@ public class OperationsService extends Service { ); String action = operationIntent.getAction(); - if (action.equals(ACTION_CREATE_SHARE)) { // Create Share + if (action.equals(ACTION_CREATE_SHARE_VIA_LINK)) { // Create public share via link String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); String password = operationIntent.getStringExtra(EXTRA_PASSWORD_SHARE); Intent sendIntent = operationIntent.getParcelableExtra(EXTRA_SEND_INTENT); if (remotePath.length() > 0) { - operation = new CreateShareOperation(OperationsService.this, remotePath, - ShareType.PUBLIC_LINK, - "", false, password, 1, sendIntent); + operation = new CreateShareViaLinkOperation( + remotePath, + password, + sendIntent + ); } + } else if (action.equals(ACTION_CREATE_SHARE_WITH_SHAREE)) { // Create private share with user or group + String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); + String shareeName = operationIntent.getStringExtra(EXTRA_SHARE_WITH); + ShareType shareType = (ShareType) operationIntent.getSerializableExtra(EXTRA_SHARE_TYPE); + if (remotePath.length() > 0) { + operation = new CreateShareWithShareeOperation( + remotePath, + shareeName, + shareType + ); + } + } else if (action.equals(ACTION_UNSHARE)) { // Unshare file String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); + ShareType shareType = (ShareType) operationIntent. + getSerializableExtra(EXTRA_SHARE_TYPE); + String shareWith = operationIntent.getStringExtra(EXTRA_SHARE_WITH); if (remotePath.length() > 0) { - operation = new UnshareLinkOperation( - remotePath, - OperationsService.this); + operation = new UnshareOperation( + remotePath, + shareType, + shareWith, + OperationsService.this + ); } } else if (action.equals(ACTION_GET_SERVER_INFO)) { @@ -615,7 +637,7 @@ public class OperationsService extends Service { ); } else if (action.equals(ACTION_SYNC_FOLDER)) { - // Sync file + // Sync folder (all its descendant files are sync'ed) String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); operation = new SynchronizeFolderOperation( this, // TODO remove this dependency from construction time @@ -623,7 +645,7 @@ public class OperationsService extends Service { account, System.currentTimeMillis() // TODO remove this dependency from construction time ); - + } else if (action.equals(ACTION_MOVE_FILE)) { // Move file/folder String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); @@ -726,7 +748,6 @@ public class OperationsService extends Service { } } if (count == 0) { - //mOperationResults.put(operation.hashCode(), result); Pair undispatched = new Pair(operation, result); mUndispatchedFinishedOperations.put(((Runnable) operation).hashCode(), undispatched);