瀏覽代碼

Merge pull request #3010 from nextcloud/codacy

Codacy
Andy Scherzinger 6 年之前
父節點
當前提交
fc62aa42b8
共有 50 個文件被更改,包括 247 次插入169 次删除
  1. 5 2
      src/generic/java/com/owncloud/android/utils/PushUtils.java
  2. 22 8
      src/gplay/java/com/owncloud/android/utils/PushUtils.java
  3. 3 1
      src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java
  4. 4 1
      src/main/java/com/owncloud/android/authentication/AuthenticatorUrlUtils.java
  5. 1 1
      src/main/java/com/owncloud/android/authentication/PassCodeManager.java
  6. 3 4
      src/main/java/com/owncloud/android/datamodel/ArbitraryDataProvider.java
  7. 2 2
      src/main/java/com/owncloud/android/datamodel/DecryptedFolderMetadata.java
  8. 5 4
      src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java
  9. 8 2
      src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java
  10. 8 7
      src/main/java/com/owncloud/android/datamodel/UploadsStorageManager.java
  11. 1 1
      src/main/java/com/owncloud/android/datastorage/providers/AbstractCommandLineStoragePoint.java
  12. 3 3
      src/main/java/com/owncloud/android/datastorage/providers/AbstractStoragePointProvider.java
  13. 5 4
      src/main/java/com/owncloud/android/datastorage/providers/EnvironmentStoragePointProvider.java
  14. 3 5
      src/main/java/com/owncloud/android/datastorage/providers/IStoragePointProvider.java
  15. 6 5
      src/main/java/com/owncloud/android/datastorage/providers/MountCommandStoragePointProvider.java
  16. 5 4
      src/main/java/com/owncloud/android/datastorage/providers/VDCStoragePointProvider.java
  17. 4 1
      src/main/java/com/owncloud/android/db/PreferenceManager.java
  18. 1 2
      src/main/java/com/owncloud/android/jobs/NotificationJob.java
  19. 6 4
      src/main/java/com/owncloud/android/operations/OAuth2GetAccessToken.java
  20. 4 5
      src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java
  21. 3 2
      src/main/java/com/owncloud/android/operations/UnshareOperation.java
  22. 3 5
      src/main/java/com/owncloud/android/operations/UploadFileOperation.java
  23. 16 14
      src/main/java/com/owncloud/android/providers/FileContentProvider.java
  24. 10 10
      src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java
  25. 4 2
      src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApiImpl.java
  26. 1 1
      src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java
  27. 7 5
      src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java
  28. 13 8
      src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
  29. 2 1
      src/main/java/com/owncloud/android/ui/activity/StorageMigration.java
  30. 3 2
      src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java
  31. 2 1
      src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java
  32. 2 2
      src/main/java/com/owncloud/android/ui/adapter/ActivityAndVersionListAdapter.java
  33. 5 3
      src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java
  34. 1 3
      src/main/java/com/owncloud/android/ui/adapter/UserListAdapter.java
  35. 3 3
      src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java
  36. 3 1
      src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java
  37. 6 4
      src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java
  38. 6 3
      src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java
  39. 1 1
      src/main/java/com/owncloud/android/ui/fragment/util/FileDetailSharingFragmentHelper.java
  40. 3 2
      src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java
  41. 2 2
      src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java
  42. 4 2
      src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java
  43. 1 1
      src/main/java/com/owncloud/android/utils/ClipboardUtil.java
  44. 3 2
      src/main/java/com/owncloud/android/utils/ConnectivityUtils.java
  45. 8 4
      src/main/java/com/owncloud/android/utils/DisplayUtils.java
  46. 7 8
      src/main/java/com/owncloud/android/utils/DrawerMenuUtil.java
  47. 15 6
      src/main/java/com/owncloud/android/utils/EncryptionUtils.java
  48. 2 0
      src/main/java/com/owncloud/android/utils/FileStorageUtils.java
  49. 7 3
      src/main/java/com/owncloud/android/utils/svg/SvgDecoder.java
  50. 5 2
      src/versionDev/java/com/owncloud/android/utils/PushUtils.java

+ 5 - 2
src/generic/java/com/owncloud/android/utils/PushUtils.java

@@ -28,9 +28,12 @@ import com.owncloud.android.db.PreferenceManager;
 
 import java.security.Key;
 
-public class PushUtils {
+public final class PushUtils {
     public static final String KEY_PUSH = "push";
 
+    private PushUtils() {
+    }
+
     public static void pushRegistrationToServer() {
         // do nothing
     }
@@ -44,7 +47,7 @@ public class PushUtils {
         return null;
     }
 
-    public SignatureVerification verifySignature(Context context, byte[] signatureBytes, byte[] subjectBytes) {
+    public static SignatureVerification verifySignature(Context context, byte[] signatureBytes, byte[] subjectBytes) {
         return null;
     }
 

+ 22 - 8
src/gplay/java/com/owncloud/android/utils/PushUtils.java

@@ -71,7 +71,7 @@ import java.security.spec.PKCS8EncodedKeySpec;
 import java.security.spec.X509EncodedKeySpec;
 import java.util.Locale;
 
-public class PushUtils {
+public final class PushUtils {
 
     public static final String KEY_PUSH = "push";
     private static final String TAG = "PushUtils";
@@ -81,6 +81,9 @@ public class PushUtils {
     private static final String KEYPAIR_PUB_EXTENSION = ".pub";
     private static ArbitraryDataProvider arbitraryDataProvider;
 
+    private PushUtils() {
+    }
+
     public static String generateSHA512Hash(String pushToken) {
         MessageDigest messageDigest = null;
         try {
@@ -295,7 +298,6 @@ public class PushUtils {
             fileInputStream = new FileInputStream(path);
             byte[] bytes = new byte[fileInputStream.available()];
             fileInputStream.read(bytes);
-            fileInputStream.close();
 
             KeyFactory keyFactory = KeyFactory.getInstance("RSA");
 
@@ -315,6 +317,14 @@ public class PushUtils {
             Log_OC.d(TAG, "InvalidKeySpecException while reading the key");
         } catch (NoSuchAlgorithmException e) {
             Log_OC.d(TAG, "RSA algorithm not supported");
+        } finally {
+            if (fileInputStream != null) {
+                try {
+                    fileInputStream.close();
+                } catch (IOException e) {
+                    Log_OC.e(TAG, "Error closing input stream during reading key from file", e);
+                }
+            }
         }
 
         return null;
@@ -331,12 +341,19 @@ public class PushUtils {
             }
             keyFileOutputStream = new FileOutputStream(path);
             keyFileOutputStream.write(encoded);
-            keyFileOutputStream.close();
             return 0;
         } catch (FileNotFoundException e) {
             Log_OC.d(TAG, "Failed to save key to file");
         } catch (IOException e) {
             Log_OC.d(TAG, "Failed to save key to file via IOException");
+        } finally {
+            if (keyFileOutputStream != null) {
+                try {
+                    keyFileOutputStream.close();
+                } catch (IOException e) {
+                    Log_OC.e(TAG, "Error closing input stream during reading key from file", e);
+                }
+            }
         }
 
         return -1;
@@ -400,7 +417,7 @@ public class PushUtils {
         }
     }
 
-    public SignatureVerification verifySignature(Context context, byte[] signatureBytes, byte[] subjectBytes) {
+    public static SignatureVerification verifySignature(Context context, byte[] signatureBytes, byte[] subjectBytes) {
         Signature signature = null;
         PublicKey publicKey;
         SignatureVerification signatureVerification = new SignatureVerification();
@@ -413,7 +430,6 @@ public class PushUtils {
         Gson gson = new Gson();
         PushConfigurationState pushArbitraryData;
 
-
         try {
             signature = Signature.getInstance("SHA512withRSA");
             if (accounts.length > 0) {
@@ -444,7 +460,7 @@ public class PushUtils {
         return signatureVerification;
     }
 
-    private Key readKeyFromString(boolean readPublicKey, String keyString) {
+    private static Key readKeyFromString(boolean readPublicKey, String keyString) {
         String modifiedKey;
         if (readPublicKey) {
             modifiedKey = keyString.replaceAll("\\n", "").replace("-----BEGIN PUBLIC KEY-----",
@@ -464,7 +480,6 @@ public class PushUtils {
                 PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.decode(modifiedKey, Base64.DEFAULT));
                 return keyFactory.generatePrivate(keySpec);
             }
-
         } catch (NoSuchAlgorithmException e) {
             Log.d("TAG", "No such algorithm while reading key from string");
         } catch (InvalidKeySpecException e) {
@@ -473,5 +488,4 @@ public class PushUtils {
 
         return null;
     }
-
 }

+ 3 - 1
src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java

@@ -2081,6 +2081,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
 
     private abstract static class RightDrawableOnTouchListener implements OnTouchListener {
 
+        private static final int RIGHT_DRAWABLE_COMPOUND_DRAWABLES_LENGTH = 2;
+
         private int fuzz = 75;
 
         /**
@@ -2091,7 +2093,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
             Drawable rightDrawable = null;
             if (view instanceof TextView) {
                 Drawable[] drawables = ((TextView) view).getCompoundDrawables();
-                if (drawables.length > 2) {
+                if (drawables.length > RIGHT_DRAWABLE_COMPOUND_DRAWABLES_LENGTH) {
                     rightDrawable = drawables[2];
                 }
             }

+ 4 - 1
src/main/java/com/owncloud/android/authentication/AuthenticatorUrlUtils.java

@@ -32,7 +32,7 @@ import java.util.Locale;
 /**
  * Helper class for authenticator-URL related logic.
  */
-public abstract class AuthenticatorUrlUtils {
+public final class AuthenticatorUrlUtils {
     public static final String WEBDAV_PATH_4_0_AND_LATER = "/remote.php/webdav";
 
     private static final String HTTPS_PROTOCOL = "https://";
@@ -41,6 +41,9 @@ public abstract class AuthenticatorUrlUtils {
     private static final String ODAV_PATH = "/remote.php/odav";
     private static final String SAML_SSO_PATH = "/remote.php/webdav";
 
+    private AuthenticatorUrlUtils() {
+    }
+
     /**
      * Returns the proper URL path to access the WebDAV interface of an ownCloud server,
      * according to its version and the authorization method used.

+ 1 - 1
src/main/java/com/owncloud/android/authentication/PassCodeManager.java

@@ -37,7 +37,7 @@ import com.owncloud.android.utils.DeviceCredentialUtils;
 import java.util.HashSet;
 import java.util.Set;
 
-public class PassCodeManager {
+public final class PassCodeManager {
 
     private static final Set<Class> exemptOfPasscodeActivities;
 

+ 3 - 4
src/main/java/com/owncloud/android/datamodel/ArbitraryDataProvider.java

@@ -35,7 +35,8 @@ import java.util.List;
  * Database provider for handling the persistence aspects of arbitrary data table.
  */
 public class ArbitraryDataProvider {
-    static private final String TAG = ArbitraryDataProvider.class.getSimpleName();
+    private static final String TAG = ArbitraryDataProvider.class.getSimpleName();
+    private static final String TRUE = "true";
 
     private ContentResolver contentResolver;
 
@@ -115,9 +116,7 @@ public class ArbitraryDataProvider {
     }
 
     public boolean getBooleanValue(String accountName, String key) {
-        String value = getValue(accountName, key);
-
-        return !value.isEmpty() && value.equalsIgnoreCase("true");
+        return TRUE.equalsIgnoreCase(getValue(accountName, key));
     }
 
     public boolean getBooleanValue(Account account, String key) {

+ 2 - 2
src/main/java/com/owncloud/android/datamodel/DecryptedFolderMetadata.java

@@ -25,7 +25,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 /**
- * Decrypted class representation of metadata json of folder metadata
+ * Decrypted class representation of metadata json of folder metadata.
  */
 public class DecryptedFolderMetadata {
     private Metadata metadata;
@@ -36,7 +36,7 @@ public class DecryptedFolderMetadata {
         this.files = new HashMap<>();
     }
 
-    public DecryptedFolderMetadata(Metadata metadata, HashMap<String, DecryptedFile> files) {
+    public DecryptedFolderMetadata(Metadata metadata, Map<String, DecryptedFile> files) {
         this.metadata = metadata;
         this.files = files;
     }

+ 5 - 4
src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java

@@ -766,7 +766,8 @@ public class FileDataStorageManager {
         }
     }
 
-    public void migrateStoredFiles(String srcPath, String dstPath) throws Exception {
+    public void migrateStoredFiles(String srcPath, String dstPath)
+            throws RemoteException, OperationApplicationException {
         Cursor cursor;
         try {
             if (getContentResolver() != null) {
@@ -1465,8 +1466,8 @@ public class FileDataStorageManager {
         }
     }
 
-    public void saveSharesDB(ArrayList<OCShare> shares) {
-        ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
+    public void saveSharesDB(List<OCShare> shares) {
+        ArrayList<ContentProviderOperation> operations = new ArrayList<>();
 
         // Reset flags & Remove shares for this files
         String filePath = "";
@@ -1580,7 +1581,7 @@ public class FileDataStorageManager {
      * @return
      */
     private ArrayList<ContentProviderOperation> prepareInsertShares(
-            ArrayList<OCShare> shares, ArrayList<ContentProviderOperation> operations) {
+            List<OCShare> shares, ArrayList<ContentProviderOperation> operations) {
 
         if (shares != null) {
             // prepare operations to insert or update files to save in the given folder

+ 8 - 2
src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java

@@ -78,7 +78,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 /**
  * Manager for concurrent access to thumbnails cache.
  */
-public class ThumbnailsCacheManager {
+public final class ThumbnailsCacheManager {
 
     public static final String PREFIX_RESIZED_IMAGE = "r";
     public static final String PREFIX_THUMBNAIL = "t";
@@ -103,6 +103,9 @@ public class ThumbnailsCacheManager {
 
     public static final Bitmap mDefaultVideo = BitmapFactory.decodeResource(MainApp.getAppContext().getResources(),
             R.drawable.file_movie);
+
+    private ThumbnailsCacheManager() {
+    }
     
     public static class InitDiskCacheTask extends AsyncTask<File, Void, Void> {
         @Override
@@ -641,6 +644,9 @@ public class ThumbnailsCacheManager {
     }
 
     public static class MediaThumbnailGenerationTask extends AsyncTask<Object, Void, Bitmap> {
+
+        private static final int IMAGE_KEY_PARAMS_LENGTH = 2;
+
         private enum Type {IMAGE, VIDEO}
         private final WeakReference<ImageView> mImageViewReference;
         private File mFile;
@@ -660,7 +666,7 @@ public class ThumbnailsCacheManager {
             try {
                 if (params[0] instanceof File) {
                     mFile = (File) params[0];
-                    if (params.length == 2) {
+                    if (params.length == IMAGE_KEY_PARAMS_LENGTH) {
                         mImageKey = (String) params[1];
                     }
 

+ 8 - 7
src/main/java/com/owncloud/android/datamodel/UploadsStorageManager.java

@@ -45,13 +45,14 @@ import java.util.Observable;
  * information for each file.
  */
 public class UploadsStorageManager extends Observable {
+    private static final String TAG = UploadsStorageManager.class.getSimpleName();
 
     private static final String AND = " AND ";
-    static private final String TAG = UploadsStorageManager.class.getSimpleName();
+    private static final int SINGLE_RESULT = 1;
+
     private ContentResolver mContentResolver;
     private Context mContext;
 
-
     public UploadsStorageManager(ContentResolver contentResolver, Context context) {
         if (contentResolver == null) {
             throw new IllegalArgumentException("Cannot create an instance with a NULL contentResolver");
@@ -123,7 +124,7 @@ public class UploadsStorageManager extends Observable {
         );
 
         Log_OC.d(TAG, "updateUpload returns with: " + result + " for file: " + ocUpload.getLocalPath());
-        if (result != 1) {
+        if (result != SINGLE_RESULT) {
             Log_OC.e(TAG, "Failed to update item " + ocUpload.getLocalPath() + " into upload db.");
         } else {
             notifyObserversNow();
@@ -189,7 +190,7 @@ public class UploadsStorageManager extends Observable {
         );
 
         if (c != null) {
-            if (c.getCount() != 1) {
+            if (c.getCount() != SINGLE_RESULT) {
                 Log_OC.e(TAG, c.getCount() + " items for id=" + id
                         + " available in UploadDb. Expected 1. Failed to update upload db.");
             } else {
@@ -272,7 +273,7 @@ public class UploadsStorageManager extends Observable {
     }
 
     public OCUpload[] getAllStoredUploads() {
-        return getUploads(null, null);
+        return getUploads(null, (String[]) null);
     }
 
     private OCUpload[] getUploads(@Nullable String selection, @Nullable String... selectionArgs) {
@@ -393,7 +394,7 @@ public class UploadsStorageManager extends Observable {
      */
     public OCUpload[] getFinishedUploads() {
 
-        return getUploads(ProviderTableMeta.UPLOADS_STATUS + "==" + UploadStatus.UPLOAD_SUCCEEDED.value, null);
+        return getUploads(ProviderTableMeta.UPLOADS_STATUS + "==" + UploadStatus.UPLOAD_SUCCEEDED.value, (String[]) null);
     }
 
     public OCUpload[] getFailedButNotDelayedUploadsForCurrentAccount() {
@@ -432,7 +433,7 @@ public class UploadsStorageManager extends Observable {
                         "<>" + UploadResult.DELAYED_FOR_CHARGING.getValue() +
                         AND + ProviderTableMeta.UPLOADS_LAST_RESULT +
                         "<>" + UploadResult.DELAYED_IN_POWER_SAVE_MODE.getValue(),
-                null
+                (String[]) null
         );
     }
 

+ 1 - 1
src/main/java/com/owncloud/android/datastorage/providers/AbstractCommandLineStoragePoint.java

@@ -1,4 +1,4 @@
-/**
+/*
  *   Nextcloud Android client application
  *
  *   @author Bartosz Przybylski

+ 3 - 3
src/main/java/com/owncloud/android/datastorage/providers/AbstractStoragePointProvider.java

@@ -1,4 +1,4 @@
-/**
+/*
  *   Nextcloud Android client application
  *
  *   @author Bartosz Przybylski
@@ -24,14 +24,14 @@ package com.owncloud.android.datastorage.providers;
 import com.owncloud.android.datastorage.StoragePoint;
 
 import java.io.File;
-import java.util.Vector;
+import java.util.List;
 
 /**
  * @author Bartosz Przybylski
  */
 abstract class AbstractStoragePointProvider implements IStoragePointProvider {
 
-    boolean canBeAddedToAvailableList(Vector<StoragePoint> currentList, String path) {
+    boolean canBeAddedToAvailableList(List<StoragePoint> currentList, String path) {
         if (path == null) {
             return false;
         }

+ 5 - 4
src/main/java/com/owncloud/android/datastorage/providers/EnvironmentStoragePointProvider.java

@@ -1,4 +1,4 @@
-/**
+/*
  *   Nextcloud Android client application
  *
  *   @author Bartosz Przybylski
@@ -25,6 +25,7 @@ import android.text.TextUtils;
 
 import com.owncloud.android.datastorage.StoragePoint;
 
+import java.util.List;
 import java.util.Vector;
 
 /**
@@ -40,15 +41,15 @@ public class EnvironmentStoragePointProvider extends AbstractStoragePointProvide
     }
 
     @Override
-    public Vector<StoragePoint> getAvailableStoragePoint() {
-        Vector<StoragePoint> result = new Vector<>();
+    public List<StoragePoint> getAvailableStoragePoint() {
+        List<StoragePoint> result = new Vector<>();
 
         addEntriesFromEnv(result, sSecondaryStorageEnvName);
 
         return result;
     }
 
-    private void addEntriesFromEnv(Vector<StoragePoint> result, String envName) {
+    private void addEntriesFromEnv(List<StoragePoint> result, String envName) {
         String env = System.getenv(envName);
         if (env != null) {
             for (String p : env.split(":")) {

+ 3 - 5
src/main/java/com/owncloud/android/datastorage/providers/IStoragePointProvider.java

@@ -1,4 +1,4 @@
-/**
+/*
  *   Nextcloud Android client application
  *
  *   @author Bartosz Przybylski
@@ -23,7 +23,7 @@ package com.owncloud.android.datastorage.providers;
 
 import com.owncloud.android.datastorage.StoragePoint;
 
-import java.util.Vector;
+import java.util.List;
 
 /**
  * @author Bartosz Przybylski
@@ -38,11 +38,9 @@ public interface IStoragePointProvider {
      */
     boolean canProvideStoragePoints();
 
-
     /**
      *
      * @return available storage points
      */
-    Vector<StoragePoint> getAvailableStoragePoint();
-
+    List<StoragePoint> getAvailableStoragePoint();
 }

+ 6 - 5
src/main/java/com/owncloud/android/datastorage/providers/MountCommandStoragePointProvider.java

@@ -1,4 +1,4 @@
-/**
+/*
  *   Nextcloud Android client application
  *
  *   @author Bartosz Przybylski
@@ -23,6 +23,7 @@ package com.owncloud.android.datastorage.providers;
 
 import com.owncloud.android.datastorage.StoragePoint;
 
+import java.util.List;
 import java.util.Locale;
 import java.util.Vector;
 import java.util.regex.Pattern;
@@ -42,8 +43,8 @@ public class MountCommandStoragePointProvider extends AbstractCommandLineStorage
     }
 
     @Override
-    public Vector<StoragePoint> getAvailableStoragePoint() {
-        Vector<StoragePoint> result = new Vector<>();
+    public List<StoragePoint> getAvailableStoragePoint() {
+        List<StoragePoint> result = new Vector<>();
 
         for (String p : getPotentialPaths(getCommandLineResult())) {
             if (canBeAddedToAvailableList(result, p)) {
@@ -54,8 +55,8 @@ public class MountCommandStoragePointProvider extends AbstractCommandLineStorage
         return result;
     }
 
-    private Vector<String> getPotentialPaths(String mounted) {
-        final Vector<String> result = new Vector<>();
+    private List<String> getPotentialPaths(String mounted) {
+        final List<String> result = new Vector<>();
 
         for (String line : mounted.split("\n")) {
             if (!line.toLowerCase(Locale.US).contains("asec") && sPattern.matcher(line).matches()) {

+ 5 - 4
src/main/java/com/owncloud/android/datastorage/providers/VDCStoragePointProvider.java

@@ -24,6 +24,7 @@ package com.owncloud.android.datastorage.providers;
 import com.owncloud.android.datastorage.StoragePoint;
 import com.owncloud.android.lib.common.utils.Log_OC;
 
+import java.util.List;
 import java.util.Vector;
 
 /**
@@ -38,8 +39,8 @@ public class VDCStoragePointProvider extends AbstractCommandLineStoragePoint {
 
 
     @Override
-    public Vector<StoragePoint> getAvailableStoragePoint() {
-        Vector<StoragePoint> result = new Vector<>();
+    public List<StoragePoint> getAvailableStoragePoint() {
+        List<StoragePoint> result = new Vector<>();
 
         result.addAll(getPaths(getCommandLineResult()));
 
@@ -51,8 +52,8 @@ public class VDCStoragePointProvider extends AbstractCommandLineStoragePoint {
         return sVDCVolListCommand;
     }
 
-    private Vector<StoragePoint> getPaths(String vdcResources) {
-        Vector<StoragePoint> result = new Vector<>();
+    private List<StoragePoint> getPaths(String vdcResources) {
+        List<StoragePoint> result = new Vector<>();
 
         for (String line : vdcResources.split("\n")) {
             String vdcLine[] = line.split(" ");

+ 4 - 1
src/main/java/com/owncloud/android/db/PreferenceManager.java

@@ -36,7 +36,7 @@ import static com.owncloud.android.ui.fragment.OCFileListFragment.FOLDER_LAYOUT_
 /**
  * Helper to simplify reading of Preferences all around the app
  */
-public abstract class PreferenceManager {
+public final class PreferenceManager {
     /**
      * Constant to access value of last path selected by the user to upload a file shared from other app.
      * Value handled by the app without direct access in the UI.
@@ -65,6 +65,9 @@ public abstract class PreferenceManager {
     private static final String PREF__FOLDER_SORT_ORDER = "folder_sort_order";
     private static final String PREF__FOLDER_LAYOUT = "folder_layout";
 
+    private PreferenceManager() {
+    }
+
     public static void setKeysReInit(Context context) {
         saveBooleanPreference(context, PREF__KEYS_REINIT, true);
     }

+ 1 - 2
src/main/java/com/owncloud/android/jobs/NotificationJob.java

@@ -71,11 +71,10 @@ public class NotificationJob extends Job {
             try {
                 byte[] base64DecodedSubject = Base64.decode(subject, Base64.DEFAULT);
                 byte[] base64DecodedSignature = Base64.decode(signature, Base64.DEFAULT);
-                PushUtils pushUtils = new PushUtils();
                 PrivateKey privateKey = (PrivateKey) PushUtils.readKeyFromFile(false);
 
                 try {
-                    SignatureVerification signatureVerification = pushUtils.verifySignature(context,
+                    SignatureVerification signatureVerification = PushUtils.verifySignature(context,
                             base64DecodedSignature, base64DecodedSubject);
 
                     if (signatureVerification.isSignatureValid()) {

+ 6 - 4
src/main/java/com/owncloud/android/operations/OAuth2GetAccessToken.java

@@ -37,9 +37,11 @@ import java.util.Map;
 
 
 public class OAuth2GetAccessToken extends RemoteOperation {
-    
     private static final String TAG = OAuth2GetAccessToken.class.getSimpleName();
-    
+
+    private static final int KEY_INDEX = 0;
+    private static final int VALUE_INDEX = 1;
+
     private String mClientId;
     private String mRedirectUri;
     private String mGrantType;
@@ -149,9 +151,9 @@ public class OAuth2GetAccessToken extends RemoteOperation {
             String[] part = pairs[i].split("=");
             while (part.length > j) {
                 String p = part[j];
-                if (j == 0) {
+                if (j == KEY_INDEX) {
                     key = p;
-                } else if (j == 1) {
+                } else if (j == VALUE_INDEX) {
                     value = p;
                     mOAuth2ParsedAuthorizationResponse.put(key, value);
                 }

+ 4 - 5
src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java

@@ -344,7 +344,7 @@ public class RefreshFolderOperation extends RemoteOperation {
      *
      * @param folderAndFiles Remote folder and children files in Folder
      */
-    private void synchronizeData(ArrayList<Object> folderAndFiles) {
+    private void synchronizeData(List<Object> folderAndFiles) {
         // get 'fresh data' from the database
         mLocalFolder = mStorageManager.getFileByPath(mLocalFolder.getRemotePath());
 
@@ -397,10 +397,9 @@ public class RefreshFolderOperation extends RemoteOperation {
 
             // prepare content synchronization for kept-in-sync files
             if (updatedFile.isAvailableOffline()) {
-                SynchronizeFileOperation operation = new SynchronizeFileOperation(localFile, remoteFile, mAccount, true,
-                        mContext);
-
-                mFilesToSyncContents.add(operation);
+                mFilesToSyncContents.add(
+                        new SynchronizeFileOperation(localFile, remoteFile, mAccount, true, mContext)
+                );
             }
 
             // update file name for encrypted files

+ 3 - 2
src/main/java/com/owncloud/android/operations/UnshareOperation.java

@@ -43,7 +43,8 @@ import java.util.List;
 public class UnshareOperation extends SyncOperation {
 
     private static final String TAG = UnshareOperation.class.getSimpleName();
-    
+    private static final int SINGLY_SHARED = 1;
+
     private String mRemotePath;
     private ShareType mShareType;
     private String mShareWith;
@@ -83,7 +84,7 @@ public class UnshareOperation extends SyncOperation {
                     List <OCShare> sharesWith = getStorageManager().
                             getSharesWithForAFile(mRemotePath,
                             getStorageManager().getAccount().name);
-                    if (sharesWith.size() == 1) {
+                    if (sharesWith.size() == SINGLY_SHARED) {
                         file.setShareWithSharee(false);
                     }
                 }

+ 3 - 5
src/main/java/com/owncloud/android/operations/UploadFileOperation.java

@@ -699,12 +699,10 @@ public class UploadFileOperation extends SyncOperation {
 
     private RemoteOperationResult unlockFolder(OCFile parentFolder, OwnCloudClient client, String token) {
         if (token != null) {
-            UnlockFileOperation unlockFileOperation = new UnlockFileOperation(parentFolder.getLocalId(), token);
-            RemoteOperationResult unlockFileOperationResult = unlockFileOperation.execute(client, true);
-
-            return unlockFileOperationResult;
-        } else
+            return new UnlockFileOperation(parentFolder.getLocalId(), token).execute(client, true);
+        } else {
             return new RemoteOperationResult(new Exception("No token available"));
+        }
     }
 
     private RemoteOperationResult checkConditions(File originalFile) {

+ 16 - 14
src/main/java/com/owncloud/android/providers/FileContentProvider.java

@@ -86,6 +86,9 @@ public class FileContentProvider extends ContentProvider {
     private static final String ADD_COLUMN = " ADD COLUMN ";
     private static final String REMOVE_COLUMN = " REMOVE COLUMN ";
     private static final String UPGRADE_VERSION_MSG = "OUT of the ADD in onUpgrade; oldVersion == %d, newVersion == %d";
+    private static final int SINGLE_PATH_SEGMENT = 1;
+    public static final int ARBITRARY_DATA_TABLE_INTRODUCTION_VERSION = 20;
+
     private DataBaseHelper mDbHelper;
     private Context mContext;
     private UriMatcher mUriMatcher;
@@ -175,14 +178,14 @@ public class FileContentProvider extends ContentProvider {
                                 db,
                                 ContentUris.withAppendedId(ProviderTableMeta.CONTENT_URI_DIR, childId),
                                 null,
-                                null
+                                (String[]) null
                         );
                     } else {
                         count += delete(
                                 db,
                                 ContentUris.withAppendedId(ProviderTableMeta.CONTENT_URI_FILE, childId),
                                 null,
-                                null
+                                (String[]) null
                         );
                     }
                     children.moveToNext();
@@ -501,67 +504,66 @@ public class FileContentProvider extends ContentProvider {
             case ROOT_DIRECTORY:
                 break;
             case DIRECTORY:
-                String folderId = uri.getPathSegments().get(1);
                 sqlQuery.appendWhere(ProviderTableMeta.FILE_PARENT + "="
-                        + folderId);
+                        + uri.getPathSegments().get(1));
                 break;
             case SINGLE_FILE:
-                if (uri.getPathSegments().size() > 1) {
+                if (uri.getPathSegments().size() > SINGLE_PATH_SEGMENT) {
                     sqlQuery.appendWhere(ProviderTableMeta._ID + "="
                             + uri.getPathSegments().get(1));
                 }
                 break;
             case SHARES:
                 sqlQuery.setTables(ProviderTableMeta.OCSHARES_TABLE_NAME);
-                if (uri.getPathSegments().size() > 1) {
+                if (uri.getPathSegments().size() > SINGLE_PATH_SEGMENT) {
                     sqlQuery.appendWhere(ProviderTableMeta._ID + "="
                             + uri.getPathSegments().get(1));
                 }
                 break;
             case CAPABILITIES:
                 sqlQuery.setTables(ProviderTableMeta.CAPABILITIES_TABLE_NAME);
-                if (uri.getPathSegments().size() > 1) {
+                if (uri.getPathSegments().size() > SINGLE_PATH_SEGMENT) {
                     sqlQuery.appendWhere(ProviderTableMeta._ID + "="
                             + uri.getPathSegments().get(1));
                 }
                 break;
             case UPLOADS:
                 sqlQuery.setTables(ProviderTableMeta.UPLOADS_TABLE_NAME);
-                if (uri.getPathSegments().size() > 1) {
+                if (uri.getPathSegments().size() > SINGLE_PATH_SEGMENT) {
                     sqlQuery.appendWhere(ProviderTableMeta._ID + "="
                             + uri.getPathSegments().get(1));
                 }
                 break;
             case SYNCED_FOLDERS:
                 sqlQuery.setTables(ProviderTableMeta.SYNCED_FOLDERS_TABLE_NAME);
-                if (uri.getPathSegments().size() > 1) {
+                if (uri.getPathSegments().size() > SINGLE_PATH_SEGMENT) {
                     sqlQuery.appendWhere(ProviderTableMeta._ID + "="
                             + uri.getPathSegments().get(1));
                 }
                 break;
             case EXTERNAL_LINKS:
                 sqlQuery.setTables(ProviderTableMeta.EXTERNAL_LINKS_TABLE_NAME);
-                if (uri.getPathSegments().size() > 1) {
+                if (uri.getPathSegments().size() > SINGLE_PATH_SEGMENT) {
                     sqlQuery.appendWhere(ProviderTableMeta._ID + "="
                             + uri.getPathSegments().get(1));
                 }
                 break;
             case ARBITRARY_DATA:
                 sqlQuery.setTables(ProviderTableMeta.ARBITRARY_DATA_TABLE_NAME);
-                if (uri.getPathSegments().size() > 1) {
+                if (uri.getPathSegments().size() > SINGLE_PATH_SEGMENT) {
                     sqlQuery.appendWhere(ProviderTableMeta._ID + "="
                             + uri.getPathSegments().get(1));
                 }
                 break;
             case VIRTUAL:
                 sqlQuery.setTables(ProviderTableMeta.VIRTUAL_TABLE_NAME);
-                if (uri.getPathSegments().size() > 1) {
+                if (uri.getPathSegments().size() > SINGLE_PATH_SEGMENT) {
                     sqlQuery.appendWhere(ProviderTableMeta._ID + "=" + uri.getPathSegments().get(1));
                 }
                 break;
             case FILESYSTEM:
                 sqlQuery.setTables(ProviderTableMeta.FILESYSTEM_TABLE_NAME);
-                if (uri.getPathSegments().size() > 1) {
+                if (uri.getPathSegments().size() > SINGLE_PATH_SEGMENT) {
                     sqlQuery.appendWhere(ProviderTableMeta._ID + "="
                             + uri.getPathSegments().get(1));
                 }
@@ -1629,7 +1631,7 @@ public class FileContentProvider extends ContentProvider {
                         db.execSQL(ALTER_TABLE + ProviderTableMeta.FILE_TABLE_NAME +
                                 ADD_COLUMN + ProviderTableMeta.FILE_ENCRYPTED_NAME + " TEXT ");
                     }
-                    if (oldVersion > 20) {
+                    if (oldVersion > ARBITRARY_DATA_TABLE_INTRODUCTION_VERSION) {
                         if (!checkIfColumnExists(db, ProviderTableMeta.CAPABILITIES_TABLE_NAME,
                                 ProviderTableMeta.CAPABILITIES_END_TO_END_ENCRYPTION)) {
                             db.execSQL(ALTER_TABLE + ProviderTableMeta.CAPABILITIES_TABLE_NAME +

+ 10 - 10
src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java

@@ -1,4 +1,4 @@
-/**
+/*
  * ownCloud Android client application
  *
  * @author David A. Velasco
@@ -18,7 +18,6 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-
 package com.owncloud.android.providers;
 
 import android.accounts.Account;
@@ -32,6 +31,7 @@ import android.net.Uri;
 import android.os.Handler;
 import android.os.Looper;
 import android.provider.BaseColumns;
+import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.widget.Toast;
 
@@ -52,6 +52,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 
 
 /**
@@ -84,7 +85,7 @@ public class UsersAndGroupsSearchProvider extends ContentProvider {
 
     private UriMatcher mUriMatcher;
 
-    private static HashMap<String, ShareType> sShareTypes = new HashMap<>();
+    private static Map<String, ShareType> sShareTypes = new HashMap<>();
 
     public static ShareType getShareType(String authority) {
 
@@ -93,7 +94,7 @@ public class UsersAndGroupsSearchProvider extends ContentProvider {
 
     @Nullable
     @Override
-    public String getType(Uri uri) {
+    public String getType(@NonNull Uri uri) {
         // TODO implement
         return null;
     }
@@ -119,7 +120,7 @@ public class UsersAndGroupsSearchProvider extends ContentProvider {
 
     /**
      * TODO description
-     * <p/>
+     *
      * Reference: http://developer.android.com/guide/topics/search/adding-custom-suggestions.html#CustomContentProvider
      *
      * @param uri           Content {@link Uri}, formattted as
@@ -133,7 +134,7 @@ public class UsersAndGroupsSearchProvider extends ContentProvider {
      */
     @Nullable
     @Override
-    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
+    public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
         Log_OC.d(TAG, "query received in thread " + Thread.currentThread().getName());
 
         int match = mUriMatcher.match(uri);
@@ -240,19 +241,19 @@ public class UsersAndGroupsSearchProvider extends ContentProvider {
 
     @Nullable
     @Override
-    public Uri insert(Uri uri, ContentValues values) {
+    public Uri insert(@NonNull Uri uri, ContentValues values) {
         // TODO implementation
         return null;
     }
 
     @Override
-    public int delete(Uri uri, String selection, String[] selectionArgs) {
+    public int delete(@NonNull Uri uri, String selection, String[] selectionArgs) {
         // TODO implementation
         return 0;
     }
 
     @Override
-    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+    public int update(@NonNull Uri uri, ContentValues values, String selection, String[] selectionArgs) {
         // TODO implementation
         return 0;
     }
@@ -283,5 +284,4 @@ public class UsersAndGroupsSearchProvider extends ContentProvider {
             }
         });
     }
-
 }

+ 4 - 2
src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApiImpl.java

@@ -1,4 +1,4 @@
-/**
+/*
  *   Nextcloud Android client application
  *
  *   Copyright (C) 2018 Edvard Holst
@@ -34,6 +34,8 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.activities.GetRemoteActivitiesOperation;
 
+import org.apache.commons.httpclient.HttpStatus;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -94,7 +96,7 @@ public class ActivitiesServiceApiImpl implements ActivitiesServiceApi {
                     Log_OC.d(TAG, result.getLogMessage());
                     // show error
                     errorMessage = result.getLogMessage();
-                    if (result.getHttpCode() == 304) {
+                    if (result.getHttpCode() == HttpStatus.SC_NOT_MODIFIED) {
                         errorMessage = context.getString(R.string.file_list_empty_headline_server_search);
                     }
                     return false;

+ 1 - 1
src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -663,7 +663,7 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
      *
      * @param accounts list of accounts
      */
-    private void repopulateAccountList(ArrayList<Account> accounts) {
+    private void repopulateAccountList(List<Account> accounts) {
         // remove all accounts from list
         mNavigationView.getMenu().removeGroup(R.id.drawer_menu_accounts);
 

+ 7 - 5
src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java

@@ -74,15 +74,17 @@ import java.util.Set;
 public class ManageAccountsActivity extends FileActivity
         implements AccountListAdapter.AccountListAdapterListener, AccountManagerCallback<Boolean>, ComponentsGetter {
     private static final String TAG = ManageAccountsActivity.class.getSimpleName();
+
     public static final String KEY_ACCOUNT_LIST_CHANGED = "ACCOUNT_LIST_CHANGED";
     public static final String KEY_CURRENT_ACCOUNT_CHANGED = "CURRENT_ACCOUNT_CHANGED";
-
     public static final String PENDING_FOR_REMOVAL = "PENDING_FOR_REMOVAL";
 
     private static final String KEY_DISPLAY_NAME = "DISPLAY_NAME";
 
     private static final int KEY_USER_INFO_REQUEST_CODE = 13;
     private static final int KEY_DELETE_CODE = 101;
+    private static final int SINGLE_ACCOUNT = 1;
+    private static final int MIN_MULTI_ACCOUNT_SIZE = 2;
 
     private ListView mListView;
     private final Handler mHandler = new Handler();
@@ -90,8 +92,8 @@ public class ManageAccountsActivity extends FileActivity
     private AccountListAdapter mAccountListAdapter;
     private ServiceConnection mDownloadServiceConnection;
     private ServiceConnection mUploadServiceConnection;
-    Set<String> mOriginalAccounts;
-    String mOriginalCurrentAccount;
+    private Set<String> mOriginalAccounts;
+    private String mOriginalCurrentAccount;
     private Drawable mTintedCheck;
 
     private ArbitraryDataProvider arbitraryDataProvider;
@@ -347,7 +349,7 @@ public class ManageAccountsActivity extends FileActivity
             }
 
             List<AccountListItem> accountListItemArray = getAccountListItems();
-            if (accountListItemArray.size() > 1) {
+            if (accountListItemArray.size() > SINGLE_ACCOUNT) {
                 mAccountListAdapter = new AccountListAdapter(this, accountListItemArray, mTintedCheck);
                 mListView.setAdapter(mAccountListAdapter);
             } else {
@@ -452,7 +454,7 @@ public class ManageAccountsActivity extends FileActivity
         }
 
         // only one to be (deleted) account remaining
-        if (accounts.length < 2) {
+        if (accounts.length < MIN_MULTI_ACCOUNT_SIZE) {
             Intent resultIntent = new Intent();
             resultIntent.putExtra(KEY_ACCOUNT_LIST_CHANGED, true);
             resultIntent.putExtra(KEY_CURRENT_ACCOUNT_CHANGED, true);

+ 13 - 8
src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java

@@ -315,9 +315,9 @@ public class ReceiveExternalFilesActivity extends FileActivity
          *
          * @return list of account list items
          */
-        private ArrayList<AccountListItem> getAccountListItems(ReceiveExternalFilesActivity activity) {
+        private List<AccountListItem> getAccountListItems(ReceiveExternalFilesActivity activity) {
             Account[] accountList = activity.mAccountManager.getAccountsByType(MainApp.getAccountType(getActivity()));
-            ArrayList<AccountListItem> adapterAccountList = new ArrayList<>(accountList.length);
+            List<AccountListItem> adapterAccountList = new ArrayList<>(accountList.length);
             for (Account account : accountList) {
                 adapterAccountList.add(new AccountListItem(account));
             }
@@ -332,6 +332,8 @@ public class ReceiveExternalFilesActivity extends FileActivity
 
         private static final int CATEGORY_URL = 1;
         private static final int CATEGORY_MAPS_URL = 2;
+        private static final int EXTRA_TEXT_LENGTH = 3;
+        private static final int SINGLE_SPINNER_ENTRY = 1;
 
         private List<String> mFilenameBase;
         private List<String> mFilenameSuffix;
@@ -430,9 +432,8 @@ public class ReceiveExternalFilesActivity extends FileActivity
 
             final Spinner spinner = view.findViewById(R.id.file_type);
             setupSpinner(adapter, selectPos, userInput, spinner);
-            if (adapter.getCount() == 1) {
-                TextView label = view.findViewById(R.id.label_file_type);
-                label.setVisibility(View.GONE);
+            if (adapter.getCount() == SINGLE_SPINNER_ENTRY) {
+                view.findViewById(R.id.label_file_type).setVisibility(View.GONE);
                 spinner.setVisibility(View.GONE);
             }
             mSpinner = spinner;
@@ -538,10 +539,14 @@ public class ReceiveExternalFilesActivity extends FileActivity
 
         private boolean isIntentFromGoogleMap(String subjectText, String extraText) {
             String texts[] = extraText.split("\n");
-            if (texts.length != 3)
+            if (texts.length != EXTRA_TEXT_LENGTH) {
                 return false;
-            if (texts[0].length() == 0 || !subjectText.equals(texts[0]))
+            }
+
+            if (texts[0].length() == 0 || !subjectText.equals(texts[0])) {
                 return false;
+            }
+
             return texts[2].startsWith("https://goo.gl/maps/");
         }
 
@@ -625,7 +630,7 @@ public class ReceiveExternalFilesActivity extends FileActivity
 
     @Override
     public void onBackPressed() {
-        if (mParents.size() <= 1) {
+        if (mParents.size() <= SINGLE_PARENT) {
             super.onBackPressed();
         } else {
             mParents.pop();

+ 2 - 1
src/main/java/com/owncloud/android/ui/activity/StorageMigration.java

@@ -274,8 +274,9 @@ public class StorageMigration {
             // probably migration failed even before saving states,
             // which is weird and should be investigated.
             // But its better than crashing on ArrayOutOfBounds.
-            if (oldSync == null)
+            if (oldSync == null) {
                 return;
+            }
             for (int i = 0; i < mOcAccounts.length; ++i) {
                 ContentResolver.setSyncAutomatically(mOcAccounts[i], mAuthority, oldSync[i]);
             }

+ 3 - 2
src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java

@@ -1,4 +1,4 @@
-/**
+/*
  *   ownCloud Android client application
  *
  *   @author David A. Velasco
@@ -82,6 +82,7 @@ public class UploadFilesActivity extends FileActivity implements
         OnClickListener, ConfirmationDialogFragmentListener, SortingOrderDialogFragment.OnSortingOrderListener {
 
     private static final String SORT_ORDER_DIALOG_TAG = "SORT_ORDER_DIALOG";
+    private static final int SINGLE_DIR = 1;
 
     private ArrayAdapter<String> mDirectories;
     private File mCurrentDir;
@@ -333,7 +334,7 @@ public class UploadFilesActivity extends FileActivity implements
             mSearchView.onActionViewCollapsed();
             setDrawerIndicatorEnabled(isDrawerIndicatorAvailable());
         } else {
-            if (mDirectories.getCount() <= 1) {
+            if (mDirectories.getCount() <= SINGLE_DIR) {
                 finish();
                 return;
             }

+ 2 - 1
src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java

@@ -301,8 +301,9 @@ public class UserInfoActivity extends FileActivity {
 
     private void addToListIfNeeded(List<UserInfoDetailsItem> info, @DrawableRes int icon, String text,
                                    @StringRes int contentDescriptionInt) {
-        if (!TextUtils.isEmpty(text))
+        if (!TextUtils.isEmpty(text)) {
             info.add(new UserInfoDetailsItem(icon, text, getResources().getString(contentDescriptionInt)));
+        }
     }
 
     public static void openAccountRemovalConfirmationDialog(Account account, FragmentManager fragmentManager,

+ 2 - 2
src/main/java/com/owncloud/android/ui/adapter/ActivityAndVersionListAdapter.java

@@ -127,9 +127,9 @@ public class ActivityAndVersionListAdapter extends ActivityListAdapter {
     public int getItemViewType(int position) {
         Object value = values.get(position);
 
-        if (value instanceof Activity)
+        if (value instanceof Activity) {
             return ACTIVITY_TYPE;
-        else if (value instanceof FileVersion) {
+        } else if (value instanceof FileVersion) {
             return VERSION_TYPE;
         } else {
             return HEADER_TYPE;

+ 5 - 3
src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java

@@ -332,8 +332,9 @@ public class ActivityListAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
 
     private RichObject searchObjectByName(List<RichObject> richObjectList, String name) {
         for (RichObject richObject : richObjectList) {
-            if (richObject.getTag().equalsIgnoreCase(name))
+            if (richObject.getTag().equalsIgnoreCase(name)) {
                 return richObject;
+            }
         }
         return null;
     }
@@ -341,10 +342,11 @@ public class ActivityListAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
 
     @Override
     public int getItemViewType(int position) {
-        if (values.get(position) instanceof Activity)
+        if (values.get(position) instanceof Activity) {
             return ACTIVITY_TYPE;
-        else
+        } else {
             return HEADER_TYPE;
+        }
     }
 
     @Override

+ 1 - 3
src/main/java/com/owncloud/android/ui/adapter/UserListAdapter.java

@@ -71,7 +71,6 @@ public class UserListAdapter extends RecyclerView.Adapter<UserListAdapter.UserVi
     private float avatarRadiusDimension;
     private Account account;
     private OCFile file;
-    private FileDataStorageManager storageManager;
 
     public UserListAdapter(FragmentManager fragmentManager, Context context, List<OCShare> shares, Account account,
                            OCFile file, ShareeListAdapterListener listener) {
@@ -83,8 +82,7 @@ public class UserListAdapter extends RecyclerView.Adapter<UserListAdapter.UserVi
         this.file = file;
 
         accentColor = ThemeUtils.primaryAccentColor(context);
-        storageManager = new FileDataStorageManager(account, context.getContentResolver());
-        capabilities = storageManager.getCapability(account.name);
+        capabilities = new FileDataStorageManager(account, context.getContentResolver()).getCapability(account.name);
         avatarRadiusDimension = context.getResources().getDimension(R.dimen.user_icon_radius);
     }
 

+ 3 - 3
src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java

@@ -42,10 +42,10 @@ import java.util.Collection;
 public class RemoveFilesDialogFragment extends ConfirmationDialogFragment implements
         ConfirmationDialogFragmentListener {
 
-    private Collection<OCFile> mTargetFiles;
-
+    private static final int SINGLE_SELECTION = 1;
     private static final String ARG_TARGET_FILES = "TARGET_FILES";
 
+    private Collection<OCFile> mTargetFiles;
     private ActionMode actionMode;
 
     /**
@@ -81,7 +81,7 @@ public class RemoveFilesDialogFragment extends ConfirmationDialogFragment implem
             containsFavorite |= file.isAvailableOffline();
         }
 
-        if (files.size() == 1) {
+        if (files.size() == SINGLE_SELECTION) {
             // choose message for a single file
             OCFile file = files.get(0);
 

+ 3 - 1
src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java

@@ -69,6 +69,8 @@ import com.owncloud.android.ui.interfaces.ActivityListInterface;
 import com.owncloud.android.ui.interfaces.VersionListInterface;
 import com.owncloud.android.utils.ThemeUtils;
 
+import org.apache.commons.httpclient.HttpStatus;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -332,7 +334,7 @@ public class FileDetailActivitiesFragment extends Fragment implements ActivityLi
                     Log_OC.d(TAG, result.getLogMessage());
                     // show error
                     String logMessage = result.getLogMessage();
-                    if (result.getHttpCode() == 304) {
+                    if (result.getHttpCode() == HttpStatus.SC_NOT_MODIFIED) {
                         logMessage = noResultsMessage;
                     }
                     final String finalLogMessage = logMessage;

+ 6 - 4
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -117,6 +117,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -151,6 +152,8 @@ public class OCFileListFragment extends ExtendedListFragment implements
 
     private static final String DIALOG_CREATE_FOLDER = "DIALOG_CREATE_FOLDER";
 
+    private static final int SINGLE_SELECTION = 1;
+
     private FileFragment.ContainerActivity mContainerActivity;
 
     private OCFile mFile;
@@ -180,7 +183,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
 
     private MenuItemAddRemove menuItemAddRemoveValue = MenuItemAddRemove.DO_NOTHING;
 
-    private ArrayList<MenuItem> mOriginalMenuItems = new ArrayList<>();
+    private List<MenuItem> mOriginalMenuItems = new ArrayList<>();
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -439,7 +442,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
         /**
          * Selected items in list when action mode is closed by drawer
          */
-        private HashSet<OCFile> mSelectionWhenActionModeClosedByDrawer = new HashSet<>();
+        private Set<OCFile> mSelectionWhenActionModeClosedByDrawer = new HashSet<>();
 
         @Override
         public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {
@@ -487,7 +490,6 @@ public class OCFileListFragment extends ExtendedListFragment implements
             }
         }
 
-
         /**
          * Update action mode bar when an item is selected / unselected in the list
          */
@@ -894,7 +896,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
             return false;
         }
 
-        if (checkedFiles.size() == 1) {
+        if (checkedFiles.size() == SINGLE_SELECTION) {
             /// action only possible on a single file
             OCFile singleFile = checkedFiles.iterator().next();
             switch (menuId) {

+ 6 - 3
src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java

@@ -109,9 +109,10 @@ public class ContactListFragment extends FileFragment {
 
     public static final String FILE_NAME = "FILE_NAME";
     public static final String ACCOUNT = "ACCOUNT";
-
     public static final String CHECKED_ITEMS_ARRAY_KEY = "CHECKED_ITEMS";
 
+    private static final int SINGLE_ACCOUNT = 1;
+
     @BindView(R.id.contactlist_recyclerview)
     public RecyclerView recyclerView;
 
@@ -416,7 +417,7 @@ public class ContactListFragment extends FileFragment {
             }
         }
 
-        if (accounts.size() == 1) {
+        if (accounts.size() == SINGLE_ACCOUNT) {
             importContacts(accounts.get(0));
         } else {
             ArrayAdapter adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, accounts);
@@ -565,6 +566,8 @@ public class ContactListFragment extends FileFragment {
 }
 
 class ContactListAdapter extends RecyclerView.Adapter<ContactListFragment.ContactItemViewHolder> {
+    private static final int SINGLE_SELECTION = 1;
+
     private List<VCard> vCards;
     private Set<Integer> checkedVCards;
 
@@ -704,7 +707,7 @@ class ContactListAdapter extends RecyclerView.Adapter<ContactListFragment.Contac
             if (!checkedVCards.contains(verifiedPosition)) {
                 checkedVCards.add(verifiedPosition);
             }
-            if (checkedVCards.size() == 1) {
+            if (checkedVCards.size() == SINGLE_SELECTION) {
                 EventBus.getDefault().post(new VCardToggleEvent(true));
             }
         } else {

+ 1 - 1
src/main/java/com/owncloud/android/ui/fragment/util/FileDetailSharingFragmentHelper.java

@@ -30,7 +30,7 @@ import com.owncloud.android.lib.resources.status.OCCapability;
 /**
  * Helper calls for visibility logic of the sharing fragment.
  */
-public class FileDetailSharingFragmentHelper {
+public final class FileDetailSharingFragmentHelper {
     private FileDetailSharingFragmentHelper() {
         // Private empty constructor
     }

+ 3 - 2
src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -412,6 +412,7 @@ public class PreviewImageFragment extends FileFragment {
 
 
     private class LoadBitmapTask extends AsyncTask<OCFile, Void, LoadImage> {
+        private static final int PARAMS_LENGTH = 1;
 
         /**
          * Weak reference to the target {@link ImageView} where the bitmap will be loaded into.
@@ -422,7 +423,7 @@ public class PreviewImageFragment extends FileFragment {
         private final WeakReference<PhotoView> mImageViewRef;
 
         /**
-         * Error message to show when a load fails
+         * Error message to show when a load fails.
          */
         private int mErrorMessageId;
 
@@ -440,7 +441,7 @@ public class PreviewImageFragment extends FileFragment {
         protected LoadImage doInBackground(OCFile... params) {
             Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND + Process.THREAD_PRIORITY_MORE_FAVORABLE);
 
-            if (params.length != 1) {
+            if (params.length != PARAMS_LENGTH) {
                 return null;
             }
 

+ 2 - 2
src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@ -95,6 +95,7 @@ public class PreviewMediaFragment extends FileFragment implements
     public static final String EXTRA_ACCOUNT = "ACCOUNT";
     private static final String EXTRA_PLAY_POSITION = "PLAY_POSITION";
     private static final String EXTRA_PLAYING = "PLAYING";
+    private static final double MIN_DENSITY_RATIO = 24.0;
 
     private Account mAccount;
     private ImageView mImagePreview;
@@ -666,7 +667,7 @@ public class PreviewMediaFragment extends FileFragment implements
     public boolean onTouch(View v, MotionEvent event) {
         if (event.getAction() == MotionEvent.ACTION_DOWN && v.equals(mVideoPreview)) {
             // added a margin on the left to avoid interfering with gesture to open navigation drawer
-            if (event.getX() / Resources.getSystem().getDisplayMetrics().density > 24.0) {
+            if (event.getX() / Resources.getSystem().getDisplayMetrics().density > MIN_DENSITY_RATIO) {
                 startFullScreenVideo();
             }
             return true;
@@ -674,7 +675,6 @@ public class PreviewMediaFragment extends FileFragment implements
         return false;
     }
 
-
     private void startFullScreenVideo() {
         Intent i = new Intent(getActivity(), PreviewVideoActivity.class);
         i.putExtra(FileActivity.EXTRA_ACCOUNT, mAccount);

+ 4 - 2
src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java

@@ -193,6 +193,7 @@ public class    PreviewTextFragment extends FileFragment {
      * Reads the file to preview and shows its contents. Too critical to be anonymous.
      */
     private class TextLoadAsyncTask extends AsyncTask<Object, Void, StringWriter> {
+        private static final int PARAMS_LENGTH = 1;
         private final WeakReference<TextView> mTextViewReference;
 
         private TextLoadAsyncTask(WeakReference<TextView> textView) {
@@ -206,8 +207,9 @@ public class    PreviewTextFragment extends FileFragment {
 
         @Override
         protected StringWriter doInBackground(java.lang.Object... params) {
-            if (params.length != 1) {
-                throw new IllegalArgumentException("The parameter to " + TextLoadAsyncTask.class.getName() + " must be (1) the file location");
+            if (params.length != PARAMS_LENGTH) {
+                throw new IllegalArgumentException("The parameter to " + TextLoadAsyncTask.class.getName()
+                        + " must be (1) the file location");
             }
             String location = (String) params[0];
 

+ 1 - 1
src/main/java/com/owncloud/android/utils/ClipboardUtil.java

@@ -32,7 +32,7 @@ import com.owncloud.android.lib.common.utils.Log_OC;
 /**
  * Helper implementation to copy a string into the system clipboard.
  */
-public class ClipboardUtil {
+public final class ClipboardUtil {
     private static final String TAG = ClipboardUtil.class.getName();
 
     private ClipboardUtil() {

+ 3 - 2
src/main/java/com/owncloud/android/utils/ConnectivityUtils.java

@@ -39,6 +39,7 @@ import com.owncloud.android.lib.common.OwnCloudClientFactory;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.status.OwnCloudVersion;
 
+import org.apache.commons.httpclient.HttpStatus;
 import org.apache.commons.httpclient.methods.GetMethod;
 import org.json.JSONObject;
 
@@ -73,10 +74,10 @@ public final class ConnectivityUtils {
                     int status = client.executeMethod(get);
 
                     if (serverVersion.compareTo(OwnCloudVersion.nextcloud_13) > 0) {
-                        return !(status == 204 &&
+                        return !(status == HttpStatus.SC_NO_CONTENT &&
                                 (get.getResponseContentLength() == -1 || get.getResponseContentLength() == 0));
                     } else {
-                        if (status == 200) {
+                        if (status == HttpStatus.SC_OK) {
                             try {
                                 // try parsing json to verify response
                                 // check if json contains maintenance and it should be false

+ 8 - 4
src/main/java/com/owncloud/android/utils/DisplayUtils.java

@@ -113,6 +113,10 @@ public final class DisplayUtils {
     private static final String HTTP_PROTOCOL = "http://";
     private static final String HTTPS_PROTOCOL = "https://";
     private static final String TWITTER_HANDLE_PREFIX = "@";
+    private static final int MIMETYPE_PARTS_COUNT = 2;
+    private static final int BYTE_SIZE_DIVIDER = 1024;
+    private static final double BYTE_SIZE_DIVIDER_DOUBLE = 1024.0;
+    private static final int DATE_TIME_PARTS_SIZE = 2;
 
     private static Map<String, String> mimeType2HumanReadable;
 
@@ -152,8 +156,8 @@ public final class DisplayUtils {
         } else {
             double result = bytes;
             int suffixIndex = 0;
-            while (result > 1024 && suffixIndex < sizeSuffixes.length) {
-                result /= 1024.;
+            while (result > BYTE_SIZE_DIVIDER && suffixIndex < sizeSuffixes.length) {
+                result /= BYTE_SIZE_DIVIDER_DOUBLE;
                 suffixIndex++;
             }
 
@@ -173,7 +177,7 @@ public final class DisplayUtils {
         if (mimeType2HumanReadable.containsKey(mimetype)) {
             return mimeType2HumanReadable.get(mimetype);
         }
-        if (mimetype.split("/").length >= 2) {
+        if (mimetype.split("/").length >= MIMETYPE_PARTS_COUNT) {
             return mimetype.split("/")[1].toUpperCase(Locale.getDefault()) + " file";
         }
         return MIME_TYPE_UNKNOWN;
@@ -351,7 +355,7 @@ public final class DisplayUtils {
         }
 
         String[] parts = dateString.toString().split(",");
-        if (parts.length == 2) {
+        if (parts.length == DATE_TIME_PARTS_SIZE) {
             if (parts[1].contains(":") && !parts[0].contains(":")) {
                 return parts[0];
             } else if (parts[0].contains(":") && !parts[1].contains(":")) {

+ 7 - 8
src/main/java/com/owncloud/android/utils/DrawerMenuUtil.java

@@ -33,7 +33,7 @@ import com.owncloud.android.lib.resources.status.OwnCloudVersion;
 /**
  * A helper class for drawer menu related operations.
  */
-public class DrawerMenuUtil {
+public final class DrawerMenuUtil {
     private DrawerMenuUtil() {
     }
 
@@ -67,18 +67,17 @@ public class DrawerMenuUtil {
     }
 
     public static void filterTrashbinMenuItem(Menu menu, @Nullable Account account, @Nullable OCCapability capability) {
-        if (account != null && capability != null) {
-            if (AccountUtils.getServerVersion(account).compareTo(OwnCloudVersion.nextcloud_14) < 0 ||
-                    capability.getFilesUndelete().isFalse() || capability.getFilesUndelete().isUnknown()) {
-                filterMenuItems(menu, R.id.nav_trashbin);
-            }
+        if (account != null && capability != null &&
+                (AccountUtils.getServerVersion(account).compareTo(OwnCloudVersion.nextcloud_14) < 0 ||
+                        capability.getFilesUndelete().isFalse() || capability.getFilesUndelete().isUnknown())) {
+            filterMenuItems(menu, R.id.nav_trashbin);
         }
     }
 
     public static void filterActivityMenuItem(Menu menu, @Nullable OCCapability capability) {
         if (capability != null && capability.isActivityEnabled().isFalse()) {
-                filterMenuItems(menu, R.id.nav_activity);
-            }
+            filterMenuItems(menu, R.id.nav_activity);
+        }
     }
 
     public static void removeMenuItem(Menu menu, int id, boolean remove) {

+ 15 - 6
src/main/java/com/owncloud/android/utils/EncryptionUtils.java

@@ -69,6 +69,7 @@ import java.security.spec.PKCS8EncodedKeySpec;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.crypto.BadPaddingException;
@@ -86,7 +87,6 @@ import javax.crypto.spec.SecretKeySpec;
 /**
  * Utils for encryption
  */
-
 public final class EncryptionUtils {
     private static String TAG = EncryptionUtils.class.getSimpleName();
 
@@ -95,8 +95,8 @@ public final class EncryptionUtils {
     public static final String MNEMONIC = "MNEMONIC";
     public static final int ivLength = 16;
     public static final int saltLength = 40;
-    public static final String HASH_DELIMITER = "$";
 
+    private static final String HASH_DELIMITER = "$";
     private static final String ivDelimiter = "fA=="; // "|" base64 encoded
     private static final int iterationCount = 1024;
     private static final int keyStrength = 256;
@@ -571,8 +571,9 @@ public final class EncryptionUtils {
      */
 
     public static String getMD5Sum(File file) {
+        FileInputStream fileInputStream = null;
         try {
-            FileInputStream fileInputStream = new FileInputStream(file);
+            fileInputStream = new FileInputStream(file);
             MessageDigest md5 = MessageDigest.getInstance("MD5");
             byte[] bytes = new byte[2048];
             int readBytes;
@@ -585,12 +586,20 @@ public final class EncryptionUtils {
 
         } catch (Exception e) {
             Log_OC.e(TAG, e.getMessage());
+        } finally {
+            if (fileInputStream != null) {
+                try {
+                    fileInputStream.close();
+                } catch (IOException e) {
+                    Log_OC.e(TAG, "Error getting MD5 checksum for file", e);
+                }
+            }
         }
 
         return "";
     }
 
-    public static ArrayList<String> getRandomWords(int count, Context context) throws IOException {
+    public static List<String> getRandomWords(int count, Context context) throws IOException {
         InputStream ins = context.getResources().openRawResource(context.getResources()
                 .getIdentifier("encryption_key_words", "raw", context.getPackageName()));
 
@@ -598,7 +607,7 @@ public final class EncryptionUtils {
 
         BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
 
-        ArrayList<String> lines = new ArrayList<>();
+        List<String> lines = new ArrayList<>();
         String line;
         while ((line = bufferedReader.readLine()) != null) {
             lines.add(line);
@@ -606,7 +615,7 @@ public final class EncryptionUtils {
 
         SecureRandom random = new SecureRandom();
 
-        ArrayList<String> outputLines = new ArrayList<>();
+        List<String> outputLines = new ArrayList<>();
         for (int i = 0; i < count; i++) {
             int randomLine = random.nextInt(lines.size());
             outputLines.add(lines.get(randomLine));

+ 2 - 0
src/main/java/com/owncloud/android/utils/FileStorageUtils.java

@@ -280,6 +280,8 @@ public final class FileStorageUtils {
         }
     }
 
+    @SuppressFBWarnings(value="OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE",
+            justification="False-positive on the output stream")
     public static boolean copyFile(File src, File target) {
         boolean ret = true;
 

+ 7 - 3
src/main/java/com/owncloud/android/utils/svg/SvgDecoder.java

@@ -41,11 +41,15 @@ public class SvgDecoder implements ResourceDecoder<InputStream, SVG> {
         try {
             SVG svg = SVG.getFromInputStream(source);
 
-            if (width > 0) svg.setDocumentWidth(width);
-            if (height > 0) svg.setDocumentHeight(height);
+            if (width > 0) {
+                svg.setDocumentWidth(width);
+            }
+            if (height > 0) {
+                svg.setDocumentHeight(height);
+            }
             svg.setDocumentPreserveAspectRatio(PreserveAspectRatio.LETTERBOX);
 
-            return new SimpleResource<SVG>(svg);
+            return new SimpleResource<>(svg);
         } catch (SVGParseException ex) {
             throw new IOException("Cannot load SVG from stream", ex);
         }

+ 5 - 2
src/versionDev/java/com/owncloud/android/utils/PushUtils.java

@@ -28,9 +28,12 @@ import com.owncloud.android.db.PreferenceManager;
 
 import java.security.Key;
 
-public class PushUtils {
+public final class PushUtils {
     public static final String KEY_PUSH = "push";
 
+    private PushUtils() {
+    }
+
     public static void pushRegistrationToServer() {
         // do nothing
     }
@@ -44,7 +47,7 @@ public class PushUtils {
         return null;
     }
 
-    public SignatureVerification verifySignature(Context context, byte[] signatureBytes, byte[] subjectBytes) {
+    public static SignatureVerification verifySignature(Context context, byte[] signatureBytes, byte[] subjectBytes) {
         return null;
     }
 }