import com.owncloud.android.MainApp;\r
import com.owncloud.android.R;\r
import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener;\r
- import com.owncloud.android.oc_framework.accounts.AccountTypeUtils;\r
- import com.owncloud.android.oc_framework.accounts.OwnCloudAccount;\r
- import com.owncloud.android.oc_framework.network.webdav.OwnCloudClientFactory;\r
- import com.owncloud.android.oc_framework.network.webdav.WebdavClient;\r
+ import com.owncloud.android.lib.accounts.AccountTypeUtils;\r
+ import com.owncloud.android.lib.accounts.OwnCloudAccount;\r
+ import com.owncloud.android.lib.network.OwnCloudClientFactory;\r
+ import com.owncloud.android.lib.network.OwnCloudClient;\r
import com.owncloud.android.operations.OAuth2GetAccessToken;\r
- import com.owncloud.android.oc_framework.operations.OnRemoteOperationListener;\r
- import com.owncloud.android.oc_framework.operations.RemoteOperation;\r
- import com.owncloud.android.oc_framework.operations.RemoteOperationResult;\r
- import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode;\r
- import com.owncloud.android.oc_framework.operations.remote.ExistenceCheckRemoteOperation;\r
- import com.owncloud.android.oc_framework.operations.remote.GetUserNameRemoteOperation;\r
- import com.owncloud.android.oc_framework.operations.remote.OwnCloudServerCheckOperation;\r
++
+ import com.owncloud.android.lib.operations.common.OnRemoteOperationListener;\r
-import com.owncloud.android.operations.OwnCloudServerCheckOperation;\r
++import com.owncloud.android.lib.operations.remote.OwnCloudServerCheckOperation;\r
+ import com.owncloud.android.lib.operations.common.RemoteOperation;\r
+ import com.owncloud.android.lib.operations.common.RemoteOperationResult;\r
+ import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;\r
+ import com.owncloud.android.lib.operations.remote.ExistenceCheckRemoteOperation;\r
+ import com.owncloud.android.lib.operations.remote.GetUserNameRemoteOperation;\r
++
import com.owncloud.android.ui.dialog.SamlWebViewDialog;\r
import com.owncloud.android.ui.dialog.SslValidatorDialog;\r
import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener;\r
--- /dev/null
- import com.owncloud.android.oc_framework.operations.ShareRemoteFile;
- import com.owncloud.android.oc_framework.operations.ShareType;
+/* 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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package com.owncloud.android.datamodel;
+
++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<OCShare> CREATOR = new Parcelable.Creator<OCShare>() {
+ @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);
+ }
+}
--- /dev/null
- 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;
+/* 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.datamodel.FileDataStorageManager;
+import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.datamodel.OCShare;
- protected RemoteOperationResult run(WebdavClient client) {
++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(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<ShareRemoteFile> 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);
+ }
+ }
+ }
+
+}