Merge pull request #4421 from nextcloud/codacy

Codacy
This commit is contained in:
Andy Scherzinger 2019-08-27 21:33:11 +02:00 committed by GitHub
commit 8a58553019
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 202 additions and 133 deletions

View file

@ -683,6 +683,7 @@ public class FileDataStorageManager {
if (c.moveToFirst()) {
int lengthOfOldPath = file.getRemotePath().length();
int lengthOfOldStoragePath = defaultSavePath.length() + lengthOfOldPath;
String[] fileId = new String[1];
do {
ContentValues cv = new ContentValues(); // keep construction in the loop
OCFile child = createFileInstance(c);
@ -704,13 +705,11 @@ public class FileDataStorageManager {
if (child.getRemotePath().equals(file.getRemotePath())) {
cv.put(ProviderTableMeta.FILE_PARENT, targetParent.getFileId());
}
fileId[0] = String.valueOf(child.getFileId());
operations.add(
ContentProviderOperation.newUpdate(ProviderTableMeta.CONTENT_URI).
withValues(cv).
withSelection(
ProviderTableMeta._ID + "=?",
new String[]{String.valueOf(child.getFileId())}
)
withSelection(ProviderTableMeta._ID + "=?", fileId)
.build());
} while (c.moveToNext());
@ -802,9 +801,10 @@ public class FileDataStorageManager {
ArrayList<ContentProviderOperation> operations = new ArrayList<>(cursor.getCount());
if (cursor.moveToFirst()) {
String[] fileId = new String[1];
do {
ContentValues cv = new ContentValues();
long fileId = cursor.getLong(cursor.getColumnIndex(ProviderTableMeta._ID));
fileId[0] = String.valueOf(cursor.getLong(cursor.getColumnIndex(ProviderTableMeta._ID)));
String oldFileStoragePath =
cursor.getString(cursor.getColumnIndex(ProviderTableMeta.FILE_STORAGE_PATH));
@ -815,7 +815,7 @@ public class FileDataStorageManager {
operations.add(
ContentProviderOperation.newUpdate(ProviderTableMeta.CONTENT_URI).
withValues(cv).
withSelection(ProviderTableMeta._ID + "=?", new String[]{String.valueOf(fileId)})
withSelection(ProviderTableMeta._ID + "=?", fileId)
.build());
}
@ -1850,6 +1850,7 @@ public class FileDataStorageManager {
parentPath = parentPath.substring(0, parentPath.lastIndexOf(OCFile.PATH_SEPARATOR) + 1);
Log_OC.d(TAG, "checking parents to remove conflict; STARTING with " + parentPath);
String[] projection = new String[]{ProviderTableMeta._ID};
while (parentPath.length() > 0) {
String whereForDescencentsInConflict =
@ -1861,7 +1862,7 @@ public class FileDataStorageManager {
if (getContentResolver() != null) {
descendentsInConflict = getContentResolver().query(
ProviderTableMeta.CONTENT_URI_FILE,
new String[]{ProviderTableMeta._ID},
projection,
whereForDescencentsInConflict,
new String[]{account.name, parentPath + "%"},
null
@ -1870,7 +1871,7 @@ public class FileDataStorageManager {
try {
descendentsInConflict = getContentProviderClient().query(
ProviderTableMeta.CONTENT_URI_FILE,
new String[]{ProviderTableMeta._ID},
projection,
whereForDescencentsInConflict,
new String[]{account.name, parentPath + "%"},
null

View file

@ -0,0 +1,33 @@
/*
* Nextcloud Android client application
*
* @author Andy Scherzinger
* Copyright (C) 2019 Andy Scherzinger
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.owncloud.android.operations;
class UploadException extends Exception {
private static final long serialVersionUID = 5931153844211429915L;
UploadException() {
super();
}
UploadException(String message) {
super(message);
}
}

View file

@ -464,9 +464,9 @@ public class UploadFileOperation extends SyncOperation {
mUpload.setFolderUnlockToken(token);
uploadsStorageManager.updateUpload(mUpload);
} else if (lockFileOperationResult.getHttpCode() == HttpStatus.SC_FORBIDDEN) {
throw new Exception("Forbidden! Please try again later.)");
throw new UploadException("Forbidden! Please try again later.)");
} else {
throw new Exception("Unknown error!");
throw new UploadException("Unknown error!");
}
// Update metadata
@ -498,10 +498,10 @@ public class UploadFileOperation extends SyncOperation {
metadata.getMetadata().getMetadataKeys().put(0, encryptedMetadataKey);
} else {
// TODO error
throw new Exception("something wrong");
throw new UploadException("something wrong");
}
/***** E2E *****/
/**** E2E *****/
// check name collision
checkNameCollision(client, metadata, parentFile.isEncrypted());
@ -646,7 +646,7 @@ public class UploadFileOperation extends SyncOperation {
}
if (!uploadMetadataOperationResult.isSuccess()) {
throw new Exception();
throw new UploadException();
}
}
} catch (FileNotFoundException e) {

View file

@ -1,4 +1,4 @@
/**
/*
* Nextcloud Android client application
*
* Copyright (C) 2018 Edvard Holst
@ -20,7 +20,7 @@ package com.owncloud.android.ui.activities.data.activities;
import androidx.annotation.NonNull;
public class ActivityRepositories {
public final class ActivityRepositories {
private ActivityRepositories() {
// No instance
@ -29,6 +29,4 @@ public class ActivityRepositories {
public static synchronized ActivitiesRepository getRepository(@NonNull ActivitiesServiceApi activitiesServiceApi) {
return new RemoteActivitiesRepository(activitiesServiceApi);
}
}

View file

@ -1,4 +1,4 @@
/**
/*
* Nextcloud Android client application
*
* Copyright (C) 2018 Edvard Holst
@ -20,7 +20,7 @@ package com.owncloud.android.ui.activities.data.files;
import androidx.annotation.NonNull;
public class FileRepositories {
public final class FileRepositories {
private FileRepositories() {
// No instance

View file

@ -67,13 +67,12 @@ import androidx.fragment.app.Fragment;
/**
* Fragment for Sharing a file with sharees (users or groups) or creating
* a public link.
* <p/>
*
* A simple {@link Fragment} subclass.
* <p/>
*
* Activities that contain this fragment must implement the
* {@link ShareFragmentListener} interface
* to handle interaction events.
* <p/>
* {@link ShareFragmentListener} interface to handle interaction events.
*
* Use the {@link ShareFileFragment#newInstance} factory method to
* create an instance of this fragment.
*/
@ -694,16 +693,9 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
*/
private void updatePublicShareSection() {
if (mPublicShare != null && ShareType.PUBLIC_LINK.equals(mPublicShare.getShareType())) {
/// public share bound -> expand section
SwitchCompat shareViaLinkSwitch = getShareViaLinkSwitch();
if (!shareViaLinkSwitch.isChecked()) {
// set null listener before setChecked() to prevent infinite loop of calls
shareViaLinkSwitch.setOnCheckedChangeListener(null);
shareViaLinkSwitch.setChecked(true);
shareViaLinkSwitch.setOnCheckedChangeListener(
mOnShareViaLinkSwitchCheckedChangeListener
);
}
// public share bound -> expand section
updateShareViaLinkSwitch(mOnShareViaLinkSwitchCheckedChangeListener);
getExpirationDateSection().setVisibility(View.VISIBLE);
getPasswordSection().setVisibility(View.VISIBLE);
if (mFile.isFolder() && !mCapabilities.getFilesSharingPublicUpload().isFalse()) {
@ -713,7 +705,130 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
getEditPermissionSection().setVisibility(View.GONE);
}
// GetLink button
// init link button
initLinkButton();
/// update state of expiration date switch
updateExpirationDateSwitch(mPublicShare.getExpirationDate(), mOnExpirationDateInteractionListener);
/// update state of password switch
updatePasswordSwitch(mPublicShare.isPasswordProtected(), mOnPasswordInteractionListener);
/// update state of the edit permission switch
updatePermissionSwitch(mPublicShare.getPermissions(), mOnEditPermissionInteractionListener);
/// update state of the hide file listing permission switch
updateHideFileListingPermissionSwitch(mPublicShare.getPermissions(),
mOnHideFileListingPermissionInteractionListener);
} else {
// no public share -> collapse section
collapsePublicShareSection();
}
}
private void updateShareViaLinkSwitch(
CompoundButton.OnCheckedChangeListener onShareViaLinkSwitchCheckedChangeListener) {
SwitchCompat shareViaLinkSwitch = getShareViaLinkSwitch();
if (!shareViaLinkSwitch.isChecked()) {
// set null listener before setChecked() to prevent infinite loop of calls
shareViaLinkSwitch.setOnCheckedChangeListener(null);
shareViaLinkSwitch.setChecked(true);
shareViaLinkSwitch.setOnCheckedChangeListener(onShareViaLinkSwitchCheckedChangeListener);
}
}
private void updateHideFileListingPermissionSwitch(
int permissions,
OnHideFileListingPermissionInteractionListener onHideFileListingPermissionInteractionListener)
{
SwitchCompat hideFileListingPermissionSwitch = getHideFileListingPermissionSwitch();
// set null listener before setChecked() to prevent infinite loop of calls
hideFileListingPermissionSwitch.setOnCheckedChangeListener(null);
boolean readOnly = (permissions & OCShare.READ_PERMISSION_FLAG) != 0;
hideFileListingPermissionSwitch.setChecked(!readOnly);
// recover listener
hideFileListingPermissionSwitch.setOnCheckedChangeListener(onHideFileListingPermissionInteractionListener);
}
private void updatePermissionSwitch(
int permissions,
OnEditPermissionInteractionListener onEditPermissionInteractionListener)
{
SwitchCompat editPermissionSwitch = getEditPermissionSwitch();
// set null listener before setChecked() to prevent infinite loop of calls
editPermissionSwitch.setOnCheckedChangeListener(null);
if (permissions > OCShare.READ_PERMISSION_FLAG) {
if (!editPermissionSwitch.isChecked()) {
editPermissionSwitch.toggle();
}
getHideFileListingPermissionSection().setVisibility(View.VISIBLE);
} else {
if (editPermissionSwitch.isChecked()) {
editPermissionSwitch.toggle();
}
getHideFileListingPermissionSection().setVisibility(View.GONE);
}
// recover listener
editPermissionSwitch.setOnCheckedChangeListener(onEditPermissionInteractionListener);
}
private void updatePasswordSwitch(
boolean isPasswordProtected,
OnPasswordInteractionListener onPasswordInteractionListener)
{
SwitchCompat passwordSwitch = getPasswordSwitch();
// set null listener before setChecked() to prevent infinite loop of calls
passwordSwitch.setOnCheckedChangeListener(null);
if (isPasswordProtected) {
if (!passwordSwitch.isChecked()) {
passwordSwitch.toggle();
}
getPasswordValue().setVisibility(View.VISIBLE);
} else {
if (passwordSwitch.isChecked()) {
passwordSwitch.toggle();
}
getPasswordValue().setVisibility(View.INVISIBLE);
}
// recover listener
passwordSwitch.setOnCheckedChangeListener(onPasswordInteractionListener);
}
private void updateExpirationDateSwitch(
long expirationDate,
OnExpirationDateInteractionListener onExpirationDateInteractionListener)
{
SwitchCompat expirationDateSwitch = getExpirationDateSwitch();
// set null listener before setChecked() to prevent infinite loop of calls
expirationDateSwitch.setOnCheckedChangeListener(null);
if (expirationDate > 0) {
if (!expirationDateSwitch.isChecked()) {
expirationDateSwitch.toggle();
}
String formattedDate = SimpleDateFormat.getDateInstance().format(new Date(expirationDate));
getExpirationDateValue().setText(formattedDate);
} else {
if (expirationDateSwitch.isChecked()) {
expirationDateSwitch.toggle();
}
getExpirationDateValue().setText(R.string.empty);
}
// recover listener
expirationDateSwitch.setOnCheckedChangeListener(onExpirationDateInteractionListener);
}
private void initLinkButton() {
MaterialButton getLinkButton = getGetLinkButton();
getLinkButton.getBackground().setColorFilter(ThemeUtils.primaryColor(getContext()),
PorterDuff.Mode.SRC_ATOP);
@ -727,86 +842,9 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
}
});
/// update state of expiration date switch and message depending on expiration date
SwitchCompat expirationDateSwitch = getExpirationDateSwitch();
// set null listener before setChecked() to prevent infinite loop of calls
expirationDateSwitch.setOnCheckedChangeListener(null);
long expirationDate = mPublicShare.getExpirationDate();
if (expirationDate > 0) {
if (!expirationDateSwitch.isChecked()) {
expirationDateSwitch.toggle();
}
String formattedDate =
SimpleDateFormat.getDateInstance().format(
new Date(expirationDate)
);
getExpirationDateValue().setText(formattedDate);
} else {
if (expirationDateSwitch.isChecked()) {
expirationDateSwitch.toggle();
}
getExpirationDateValue().setText(R.string.empty);
}
// recover listener
expirationDateSwitch.setOnCheckedChangeListener(mOnExpirationDateInteractionListener);
/// update state of password switch and message depending on password protection
SwitchCompat passwordSwitch = getPasswordSwitch();
// set null listener before setChecked() to prevent infinite loop of calls
passwordSwitch.setOnCheckedChangeListener(null);
if (mPublicShare.isPasswordProtected()) {
if (!passwordSwitch.isChecked()) {
passwordSwitch.toggle();
}
getPasswordValue().setVisibility(View.VISIBLE);
} else {
if (passwordSwitch.isChecked()) {
passwordSwitch.toggle();
}
getPasswordValue().setVisibility(View.INVISIBLE);
}
// recover listener
passwordSwitch.setOnCheckedChangeListener(mOnPasswordInteractionListener);
/// update state of the edit permission switch
SwitchCompat editPermissionSwitch = getEditPermissionSwitch();
// set null listener before setChecked() to prevent infinite loop of calls
editPermissionSwitch.setOnCheckedChangeListener(null);
if (mPublicShare.getPermissions() > OCShare.READ_PERMISSION_FLAG) {
if (!editPermissionSwitch.isChecked()) {
editPermissionSwitch.toggle();
}
getHideFileListingPermissionSection().setVisibility(View.VISIBLE);
} else {
if (editPermissionSwitch.isChecked()) {
editPermissionSwitch.toggle();
}
getHideFileListingPermissionSection().setVisibility(View.GONE);
}
// recover listener
editPermissionSwitch.setOnCheckedChangeListener(mOnEditPermissionInteractionListener);
/// update state of the hide file listing permission switch
SwitchCompat hideFileListingPermissionSwitch = getHideFileListingPermissionSwitch();
// set null listener before setChecked() to prevent infinite loop of calls
hideFileListingPermissionSwitch.setOnCheckedChangeListener(null);
boolean readOnly = (mPublicShare.getPermissions() & OCShare.READ_PERMISSION_FLAG) != 0;
hideFileListingPermissionSwitch.setChecked(!readOnly);
// recover listener
hideFileListingPermissionSwitch.setOnCheckedChangeListener(
mOnHideFileListingPermissionInteractionListener
);
} else {
/// no public share -> collapse section
private void collapsePublicShareSection() {
SwitchCompat shareViaLinkSwitch = getShareViaLinkSwitch();
if (shareViaLinkSwitch.isChecked()) {
shareViaLinkSwitch.setOnCheckedChangeListener(null);
@ -821,7 +859,6 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
getHideFileListingPermissionSection().setVisibility(View.GONE);
getGetLinkButton().setVisibility(View.GONE);
}
}
// BEWARE: following methods will fail with NullPointerException if called before onCreateView() finishes