diff --git a/.idea/gradle.xml b/.idea/gradle.xml index be321461..2996d531 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -3,25 +3,12 @@ diff --git a/build.gradle b/build.gradle index d831ee75..1565d587 100644 --- a/build.gradle +++ b/build.gradle @@ -1,18 +1,18 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. - -// To deploy the library to bintray and jcenter, edit the build.gradle file in the child folder -// and then, from this folder execute: -// ./gradlew bintrayUpload - buildscript { + apply from: 'manifest.gradle' + repositories { jcenter() + google() mavenCentral() } + dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7' + classpath "com.android.tools.build:gradle:$gradle_version" + classpath "com.github.ben-manes:gradle-versions-plugin:$gradle_versions_plugin_version" + classpath "com.github.dcendents:android-maven-gradle-plugin:$maven_gradle_version" + classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:$bintray_plugin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -22,7 +22,7 @@ buildscript { allprojects { repositories { jcenter() - maven { url 'http://maven.google.com' } + google() mavenCentral() } } diff --git a/examples/app/.idea/gradle.xml b/examples/app/.idea/gradle.xml index bb71d8b3..2996d531 100644 --- a/examples/app/.idea/gradle.xml +++ b/examples/app/.idea/gradle.xml @@ -3,17 +3,11 @@ diff --git a/examples/app/build.gradle b/examples/app/build.gradle index 2353643e..806e76b2 100644 --- a/examples/app/build.gradle +++ b/examples/app/build.gradle @@ -1,17 +1,22 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. +apply plugin: 'com.github.ben-manes.versions' buildscript { + apply from: '../../manifest.gradle' + repositories { jcenter() mavenCentral() - maven { url "https://jitpack.io" } - maven { url "https://maven.google.com" } + google() } + dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7' - classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.6.2' + classpath "com.android.tools.build:gradle:$gradle_version" + + //classpath dependencies to import library project + classpath "com.github.ben-manes:gradle-versions-plugin:$gradle_versions_plugin_version" + classpath "com.github.dcendents:android-maven-gradle-plugin:$maven_gradle_version" + classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:$bintray_plugin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -22,8 +27,7 @@ allprojects { repositories { jcenter() mavenCentral() - mavenLocal() - maven { url "https://maven.google.com" } + google() } } diff --git a/examples/app/demoapp/build.gradle b/examples/app/demoapp/build.gradle index adda2039..8792d822 100644 --- a/examples/app/demoapp/build.gradle +++ b/examples/app/demoapp/build.gradle @@ -1,62 +1,75 @@ apply plugin: 'com.android.application' -apply plugin: 'com.getkeepsafe.dexcount' - -def sdkVersion = 26 -def libraryVersion = "3.4.2" android { - compileSdkVersion sdkVersion - buildToolsVersion '26.0.2' + compileSdkVersion target_sdk defaultConfig { - applicationId "net.gotev.uploadservicedemo" - minSdkVersion 16 - targetSdkVersion sdkVersion - versionCode 22 - versionName libraryVersion + applicationId demo_app_id + minSdkVersion min_sdk + targetSdkVersion target_sdk + versionCode version_code + versionName library_version + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } -} -repositories { - maven { url 'http://dl.bintray.com/igenius-code/maven' } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } -def butterKnifeVersion = "8.8.1" -def supportVersion = "27.0.2" +def butterKnifeVersion = "10.0.0" def stethoVersion = "1.4.2" dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) + // Testing - https://developer.android.com/training/testing/set-up-project + testImplementation "junit:junit:$junit_version" + testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" - // Debugging - debugCompile "com.facebook.stetho:stetho:${stethoVersion}" - debugCompile "com.facebook.stetho:stetho-okhttp3:${stethoVersion}" - releaseCompile "net.igenius:stetho-no-op:1.1" - compile 'com.squareup.okhttp3:logging-interceptor:3.9.1' + // Core library + androidTestImplementation "androidx.test:core:$androidx_test_core_version" - // Google support libraries - compile "com.android.support:appcompat-v7:${supportVersion}" - compile "com.android.support:design:${supportVersion}" + // AndroidJUnitRunner and JUnit Rules + androidTestImplementation "androidx.test:runner:$androidx_test_runner_version" + androidTestImplementation "androidx.test:rules:$androidx_test_rules_version" + + // Assertions + androidTestImplementation "androidx.test.ext:junit:$androidx_test_ext_junit_version" + androidTestImplementation "androidx.test.ext:truth:$androidx_test_ext_truth_version" + androidTestImplementation "com.google.truth:truth:$truth_version" + + // Espresso dependencies + androidTestImplementation "androidx.test.espresso:espresso-core:$androidx_test_espresso_version" + + // Support + implementation "androidx.appcompat:appcompat:$androidx_appcompat_version" + implementation 'com.google.android.material:material:1.0.0' + + // Debugging + implementation "com.facebook.stetho:stetho:${stethoVersion}" + implementation "com.facebook.stetho:stetho-okhttp3:${stethoVersion}" + implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1' // ButterKnife - compile "com.jakewharton:butterknife:${butterKnifeVersion}" + implementation "com.jakewharton:butterknife:${butterKnifeVersion}" annotationProcessor "com.jakewharton:butterknife-compiler:${butterKnifeVersion}" - compile 'com.nononsenseapps:filepicker:4.0.0-beta1' - compile 'net.gotev:recycleradapter:1.6' + implementation 'com.nononsenseapps:filepicker:4.0.0-beta1' + implementation 'net.gotev:recycleradapter:1.8.0' - /*compile "net.gotev:uploadservice:${libraryVersion}" - compile "net.gotev:uploadservice-okhttp:${libraryVersion}" - compile "net.gotev:uploadservice-ftp:${libraryVersion}"*/ + /*implementation "net.gotev:uploadservice:${libraryVersion}" + implementation "net.gotev:uploadservice-okhttp:${libraryVersion}" + implementation "net.gotev:uploadservice-ftp:${libraryVersion}"*/ //comment the previous lines and uncomment the next ones for development (it uses the local libs) - compile project(':uploadservice') - compile project(':uploadservice-okhttp') - compile project(':uploadservice-ftp') + implementation project(':uploadservice') + implementation project(':uploadservice-okhttp') + implementation project(':uploadservice-ftp') } diff --git a/examples/app/demoapp/src/main/AndroidManifest.xml b/examples/app/demoapp/src/main/AndroidManifest.xml index f336d25d..d4b0ef00 100644 --- a/examples/app/demoapp/src/main/AndroidManifest.xml +++ b/examples/app/demoapp/src/main/AndroidManifest.xml @@ -12,7 +12,7 @@ android:supportsRtl="true" android:theme="@style/AppTheme"> diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/BaseActivity.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/BaseActivity.java index 4fab0ffb..7ebe8f6b 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/BaseActivity.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/BaseActivity.java @@ -5,9 +5,9 @@ import android.content.Intent; import android.graphics.Color; import android.net.Uri; -import android.support.annotation.LayoutRes; -import android.support.annotation.StringRes; -import android.support.v7.app.AppCompatActivity; +import androidx.annotation.LayoutRes; +import androidx.annotation.StringRes; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.view.inputmethod.InputMethodManager; diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/BinaryUploadActivity.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/BinaryUploadActivity.java index f20fd109..189cf413 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/BinaryUploadActivity.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/BinaryUploadActivity.java @@ -2,7 +2,7 @@ import android.content.Intent; import android.os.Bundle; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.view.View; import android.widget.Toast; diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/FTPUploadActivity.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/FTPUploadActivity.java index d5355fb0..dcf33524 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/FTPUploadActivity.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/FTPUploadActivity.java @@ -2,10 +2,6 @@ import android.content.Intent; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.NavUtils; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.Menu; import android.view.MenuItem; import android.widget.EditText; @@ -25,6 +21,10 @@ import java.util.List; import java.util.UUID; +import androidx.annotation.Nullable; +import androidx.core.app.NavUtils; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.OnClick; @@ -69,7 +69,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { uploadItemsAdapter = new RecyclerAdapter(); uploadItemUtils = new UploadItemUtils(uploadItemsAdapter); - requestItems.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)); + requestItems.setLayoutManager(new LinearLayoutManager(this, RecyclerView.VERTICAL, false)); requestItems.setAdapter(uploadItemsAdapter); ipAddressAndHostnameValidator = new IPAddressAndHostnameValidator(); diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/UploadActivity.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/UploadActivity.java index 3a3b5b80..cd841017 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/UploadActivity.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/UploadActivity.java @@ -1,10 +1,6 @@ package net.gotev.uploadservicedemo; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.NavUtils; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.Menu; import android.view.MenuItem; import android.widget.ArrayAdapter; @@ -21,6 +17,10 @@ import java.util.List; +import androidx.annotation.Nullable; +import androidx.core.app.NavUtils; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.OnClick; @@ -70,7 +70,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { uploadItemsAdapter = new RecyclerAdapter(); uploadItemUtils = new UploadItemUtils(uploadItemsAdapter); - requestItems.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)); + requestItems.setLayoutManager(new LinearLayoutManager(this, RecyclerView.VERTICAL, false)); requestItems.setAdapter(uploadItemsAdapter); AdapterItem emptyItem = getEmptyItem(); diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/adapteritems/EmptyItem.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/adapteritems/EmptyItem.java index bc1459bb..2109847a 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/adapteritems/EmptyItem.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/adapteritems/EmptyItem.java @@ -1,7 +1,7 @@ package net.gotev.uploadservicedemo.adapteritems; import android.content.Context; -import android.support.annotation.StringRes; +import androidx.annotation.StringRes; import android.view.View; import android.widget.TextView; diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/adapteritems/UploadItem.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/adapteritems/UploadItem.java index 464c8ae2..b57c3094 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/adapteritems/UploadItem.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/adapteritems/UploadItem.java @@ -1,7 +1,7 @@ package net.gotev.uploadservicedemo.adapteritems; import android.os.Bundle; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.view.View; import android.widget.ImageView; import android.widget.TextView; diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/dialogs/AddFileParameterNameDialog.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/dialogs/AddFileParameterNameDialog.java index 44cabc04..fb3a0454 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/dialogs/AddFileParameterNameDialog.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/dialogs/AddFileParameterNameDialog.java @@ -2,9 +2,9 @@ import android.content.Context; import android.content.DialogInterface; -import android.support.annotation.StringRes; -import android.support.v7.app.AlertDialog; -import android.support.v7.app.AppCompatActivity; +import androidx.annotation.StringRes; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/dialogs/AddNameValueDialog.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/dialogs/AddNameValueDialog.java index 9d28a609..68fbfabe 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/dialogs/AddNameValueDialog.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/dialogs/AddNameValueDialog.java @@ -2,9 +2,9 @@ import android.content.Context; import android.content.DialogInterface; -import android.support.annotation.StringRes; -import android.support.v7.app.AlertDialog; -import android.support.v7.app.AppCompatActivity; +import androidx.annotation.StringRes; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/utils/AndroidPermissions.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/utils/AndroidPermissions.java index 39f306a1..902f0633 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/utils/AndroidPermissions.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/utils/AndroidPermissions.java @@ -3,8 +3,8 @@ import android.app.Activity; import android.content.pm.PackageManager; import android.os.Build; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; import android.util.Log; import java.util.ArrayList; diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/utils/FilesPickerActivity.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/utils/FilesPickerActivity.java index 2712cb1a..25f1e192 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/utils/FilesPickerActivity.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/utils/FilesPickerActivity.java @@ -6,8 +6,8 @@ import android.net.Uri; import android.os.Bundle; import android.os.Environment; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.util.Log; import android.widget.Toast; diff --git a/examples/app/demoapp/src/main/res/layout/activity_upload.xml b/examples/app/demoapp/src/main/res/layout/activity_upload.xml index 39b8c65e..df73d5cc 100644 --- a/examples/app/demoapp/src/main/res/layout/activity_upload.xml +++ b/examples/app/demoapp/src/main/res/layout/activity_upload.xml @@ -50,7 +50,7 @@ android:clickable="true" app:colorFilter="@color/colorPrimaryDark"/> - - @@ -40,7 +40,7 @@ android:layout_width="match_parent" android:layout_height="0dp" android:gravity="top" - android:ellipsize="middle" + android:singleLine="true" android:maxLines="1" android:id="@+id/subtitle" /> diff --git a/examples/app/gradle.properties b/examples/app/gradle.properties index 89e0d99e..acf164f6 100644 --- a/examples/app/gradle.properties +++ b/examples/app/gradle.properties @@ -16,3 +16,5 @@ # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true +android.enableJetifier=true +android.useAndroidX=true diff --git a/examples/app/gradle/wrapper/gradle-wrapper.properties b/examples/app/gradle/wrapper/gradle-wrapper.properties index e71bbb1d..b595a166 100644 --- a/examples/app/gradle/wrapper/gradle-wrapper.properties +++ b/examples/app/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Nov 19 18:06:10 CET 2017 +#Sun Jan 20 17:16:15 CET 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 07e48e0e..cdfab82e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Aug 31 08:51:19 CEST 2016 +#Sun Jan 20 16:54:37 CET 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip diff --git a/manifest.gradle b/manifest.gradle new file mode 100644 index 00000000..747ed3cd --- /dev/null +++ b/manifest.gradle @@ -0,0 +1,38 @@ +ext { + github_username = 'gotev' + github_repository_name = 'android-upload-service' + + maintainer = 'Aleksandar Gotev' + + library_description = 'Easily upload files in the background with automatic Android Notification Center progress indication.' + library_keywords = ['android', 'upload', 'service', 'library', 'background', 'notification'] + library_licenses = ["Apache-2.0"] + library_licenses_url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + library_project_group = 'net.gotev' + library_version = '3.5.0' + version_code = 31 + min_sdk = 18 + target_sdk = 28 + demo_app_id = 'net.gotev.uploadservicedemo' + + // Gradle classpath dependencies versions + kotlin_version = '1.3.11' + gradle_version = '3.3.0' + maven_gradle_version = '2.1' + gradle_versions_plugin_version = '0.20.0' + bintray_plugin_version = '1.7' + + // Library and app testing dependencies versions + junit_version = '4.12' + androidx_test_core_version = '1.0.0' + androidx_test_runner_version = '1.1.0' + androidx_test_rules_version = '1.1.0' + androidx_test_ext_junit_version = '1.0.0' + androidx_test_ext_truth_version = '1.0.0' + truth_version = '0.42' + androidx_test_espresso_version = '3.1.0' + + // Library and app dependencies versions + androidx_appcompat_version = '1.0.2' + +} diff --git a/uploadservice-ftp/build.gradle b/uploadservice-ftp/build.gradle index a08a3608..0f03ecaf 100644 --- a/uploadservice-ftp/build.gradle +++ b/uploadservice-ftp/build.gradle @@ -1,43 +1,74 @@ apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' +apply plugin: 'com.github.ben-manes.versions' -def siteUrl = 'https://github.com/gotev/android-upload-service' -def gitUrl = 'https://github.com/gotev/android-upload-service.git' +// start - do not modify this if your project is on github +def siteUrl = "https://github.com/${github_username}/${github_repository_name}" +def gitUrl = siteUrl + '.git' +def bugTrackerUrl = siteUrl + '/issues/' def projectName = "android-upload-service-ftp" -def projectDesc = "FTP Upload implementation for Android Upload Service." -def projectGroup = "net.gotev" -group = projectGroup -version = "3.4.2" +// end - do not modify this if your project is on github -def sdkVersion = 26 +// start - module specific overrides of default values written in manifest.gradle +def library_description = "FTP Upload implementation for Android Upload Service." +def library_keywords = ['android', 'upload', 'service', 'ftp', 'upload'] +// end - module specific overrides + +group = library_project_group +version = library_version android { - compileSdkVersion sdkVersion - buildToolsVersion '26.0.2' + compileSdkVersion target_sdk defaultConfig { - minSdkVersion 14 - targetSdkVersion sdkVersion - versionCode 16 - versionName version + minSdkVersion min_sdk + targetSdkVersion target_sdk + versionCode version_code + versionName library_version + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + lintOptions { warning 'InvalidPackage' } } dependencies { - compile 'commons-net:commons-net:3.6' - //compile "net.gotev:uploadservice:${version}" + // Testing - https://developer.android.com/training/testing/set-up-project + testImplementation "junit:junit:$junit_version" + + // Core library + androidTestImplementation "androidx.test:core:$androidx_test_core_version" + + // AndroidJUnitRunner and JUnit Rules + androidTestImplementation "androidx.test:runner:$androidx_test_runner_version" + androidTestImplementation "androidx.test:rules:$androidx_test_rules_version" + + // Assertions + androidTestImplementation "androidx.test.ext:junit:$androidx_test_ext_junit_version" + androidTestImplementation "androidx.test.ext:truth:$androidx_test_ext_truth_version" + androidTestImplementation "com.google.truth:truth:$truth_version" + + // Espresso dependencies + androidTestImplementation "androidx.test.espresso:espresso-core:$androidx_test_espresso_version" + + api 'commons-net:commons-net:3.6' + //api "net.gotev:uploadservice:${version}" //comment the previous line and uncomment the next line for development (it uses the local lib) - compile project(':uploadservice') + api project(':uploadservice') } Properties properties = new Properties() @@ -49,21 +80,21 @@ install { repositories.mavenInstaller { pom.project { name projectName - description projectDesc + description library_description packaging 'aar' - groupId projectGroup + groupId library_project_group version version url siteUrl licenses { license { - name 'The Apache Software License, Version 2.0' - url 'http://www.apache.org/licenses/LICENSE-2.0.txt' + name library_licenses[0] + url library_licenses_url } } developers { developer { - id 'gotev' - name 'Aleksandar Gotev' + id properties.getProperty("bintray.user") + name maintainer } } scm { @@ -83,12 +114,12 @@ bintray { pkg { repo = "maven" name = projectName - desc = projectDesc + desc = library_description websiteUrl = siteUrl vcsUrl = gitUrl - issueTrackerUrl = siteUrl + "/issues/" - licenses = ["Apache-2.0"] - labels = ['android', 'upload', 'service', 'ftp', 'upload'] + issueTrackerUrl = bugTrackerUrl + licenses = library_licenses + labels = library_keywords publicDownloadNumbers = true publish = true } @@ -100,22 +131,23 @@ task sourcesJar(type: Jar) { } task javadoc(type: Javadoc) { - title = "Android Upload Service FTP upload implementation for version $project.version" + excludes = ['**/*.kt'] // < ---- Exclude all kotlin files from javadoc file. + + title = "$projectName $project.version API" description "Generates Javadoc" source = android.sourceSets.main.java.srcDirs classpath += files(android.bootClasspath) exclude '**/BuildConfig.java', '**/R.java' options { - addStringOption('Xdoclint:none') - windowTitle("Android Upload Service FTP upload implementation for version $project.version") + windowTitle("$projectName $project.version Reference") locale = 'en_US' encoding = 'UTF-8' charSet = 'UTF-8' - links("http://docs.oracle.com/javase/7/docs/api/"); - linksOffline("http://d.android.com/reference", "${android.sdkDirectory}/docs/reference"); + links("http://docs.oracle.com/javase/7/docs/api/") + linksOffline("http://d.android.com/reference", "${android.sdkDirectory}/docs/reference") setMemberLevel(JavadocMemberLevel.PUBLIC) + addStringOption('Xdoclint:none', '-quiet') } - failOnError false } task javadocJar(type: Jar, dependsOn: javadoc) { diff --git a/uploadservice-okhttp/build.gradle b/uploadservice-okhttp/build.gradle index 92a112d3..25a0e478 100644 --- a/uploadservice-okhttp/build.gradle +++ b/uploadservice-okhttp/build.gradle @@ -1,43 +1,74 @@ apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' +apply plugin: 'com.github.ben-manes.versions' -def siteUrl = 'https://github.com/gotev/android-upload-service' -def gitUrl = 'https://github.com/gotev/android-upload-service.git' +// start - do not modify this if your project is on github +def siteUrl = "https://github.com/${github_username}/${github_repository_name}" +def gitUrl = siteUrl + '.git' +def bugTrackerUrl = siteUrl + '/issues/' def projectName = "android-upload-service-okhttp" -def projectDesc = "OkHttp stack implementation for Android Upload Service." -def projectGroup = "net.gotev" -group = projectGroup -version = "3.4.2" +// end - do not modify this if your project is on github -def sdkVersion = 26 +// start - module specific overrides of default values written in manifest.gradle +def library_description = "OkHttp stack implementation for Android Upload Service." +def library_keywords = ['android', 'upload', 'service', 'okhttp', 'stack'] +// end - module specific overrides + +group = library_project_group +version = library_version android { - compileSdkVersion sdkVersion - buildToolsVersion '26.0.2' + compileSdkVersion target_sdk defaultConfig { - minSdkVersion 14 - targetSdkVersion sdkVersion - versionCode 14 - versionName version + minSdkVersion min_sdk + targetSdkVersion target_sdk + versionCode version_code + versionName library_version + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + lintOptions { warning 'InvalidPackage' } } dependencies { - compile 'com.squareup.okhttp3:okhttp:3.9.1' - //compile "net.gotev:uploadservice:${version}" + // Testing - https://developer.android.com/training/testing/set-up-project + testImplementation "junit:junit:$junit_version" + + // Core library + androidTestImplementation "androidx.test:core:$androidx_test_core_version" + + // AndroidJUnitRunner and JUnit Rules + androidTestImplementation "androidx.test:runner:$androidx_test_runner_version" + androidTestImplementation "androidx.test:rules:$androidx_test_rules_version" + + // Assertions + androidTestImplementation "androidx.test.ext:junit:$androidx_test_ext_junit_version" + androidTestImplementation "androidx.test.ext:truth:$androidx_test_ext_truth_version" + androidTestImplementation "com.google.truth:truth:$truth_version" + + // Espresso dependencies + androidTestImplementation "androidx.test.espresso:espresso-core:$androidx_test_espresso_version" + + api 'com.squareup.okhttp3:okhttp:3.12.1' + //api "net.gotev:uploadservice:${version}" //comment the previous line and uncomment the next line for development (it uses the local lib) - compile project(':uploadservice') + api project(':uploadservice') } Properties properties = new Properties() @@ -49,21 +80,21 @@ install { repositories.mavenInstaller { pom.project { name projectName - description projectDesc + description library_description packaging 'aar' - groupId projectGroup + groupId library_project_group version version url siteUrl licenses { license { - name 'The Apache Software License, Version 2.0' - url 'http://www.apache.org/licenses/LICENSE-2.0.txt' + name library_licenses[0] + url library_licenses_url } } developers { developer { - id 'gotev' - name 'Aleksandar Gotev' + id properties.getProperty("bintray.user") + name maintainer } } scm { @@ -83,12 +114,12 @@ bintray { pkg { repo = "maven" name = projectName - desc = projectDesc + desc = library_description websiteUrl = siteUrl vcsUrl = gitUrl - issueTrackerUrl = siteUrl + "/issues/" - licenses = ["Apache-2.0"] - labels = ['android', 'upload', 'service', 'okhttp', 'stack'] + issueTrackerUrl = bugTrackerUrl + licenses = library_licenses + labels = library_keywords publicDownloadNumbers = true publish = true } @@ -100,22 +131,23 @@ task sourcesJar(type: Jar) { } task javadoc(type: Javadoc) { - title = "Android Upload Service OkHttp Stack implementation for version $project.version" + excludes = ['**/*.kt'] // < ---- Exclude all kotlin files from javadoc file. + + title = "$projectName $project.version API" description "Generates Javadoc" source = android.sourceSets.main.java.srcDirs classpath += files(android.bootClasspath) exclude '**/BuildConfig.java', '**/R.java' options { - addStringOption('Xdoclint:none') - windowTitle("Android Upload Service OkHttp Stack implementation for version $project.version") + windowTitle("$projectName $project.version Reference") locale = 'en_US' encoding = 'UTF-8' charSet = 'UTF-8' - links("http://docs.oracle.com/javase/7/docs/api/"); - linksOffline("http://d.android.com/reference", "${android.sdkDirectory}/docs/reference"); + links("http://docs.oracle.com/javase/7/docs/api/") + linksOffline("http://d.android.com/reference", "${android.sdkDirectory}/docs/reference") setMemberLevel(JavadocMemberLevel.PUBLIC) + addStringOption('Xdoclint:none', '-quiet') } - failOnError false } task javadocJar(type: Jar, dependsOn: javadoc) { diff --git a/uploadservice/build.gradle b/uploadservice/build.gradle index 3cd4b866..bcb7f288 100644 --- a/uploadservice/build.gradle +++ b/uploadservice/build.gradle @@ -1,43 +1,67 @@ apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' +apply plugin: 'com.github.ben-manes.versions' -def siteUrl = 'https://github.com/gotev/android-upload-service' -def gitUrl = 'https://github.com/gotev/android-upload-service.git' -def projectName = "android-upload-service" -def projectDesc = "Easily upload files in the background with automatic Android Notification Center progress indication." -def projectGroup = "net.gotev" -group = projectGroup -version = "3.4.2" +// start - do not modify this if your project is on github +def siteUrl = "https://github.com/${github_username}/${github_repository_name}" +def gitUrl = siteUrl + '.git' +def bugTrackerUrl = siteUrl + '/issues/' +def projectName = github_repository_name +// end - do not modify this if your project is on github -def sdkVersion = 26 +group = library_project_group +version = library_version android { - compileSdkVersion sdkVersion - buildToolsVersion '26.0.2' + compileSdkVersion target_sdk defaultConfig { - minSdkVersion 14 - targetSdkVersion sdkVersion - versionCode 30 - versionName version + minSdkVersion min_sdk + targetSdkVersion target_sdk + versionCode version_code + versionName library_version + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + lintOptions { warning 'InvalidPackage' } } -def supportLibraryVersion = "27.0.2" - dependencies { - compile "com.android.support:appcompat-v7:${supportLibraryVersion}" - compile "com.android.support:support-v4:${supportLibraryVersion}" + // Testing - https://developer.android.com/training/testing/set-up-project + testImplementation "junit:junit:$junit_version" + + // Core library + androidTestImplementation "androidx.test:core:$androidx_test_core_version" + + // AndroidJUnitRunner and JUnit Rules + androidTestImplementation "androidx.test:runner:$androidx_test_runner_version" + androidTestImplementation "androidx.test:rules:$androidx_test_rules_version" + + // Assertions + androidTestImplementation "androidx.test.ext:junit:$androidx_test_ext_junit_version" + androidTestImplementation "androidx.test.ext:truth:$androidx_test_ext_truth_version" + androidTestImplementation "com.google.truth:truth:$truth_version" + + // Espresso dependencies + androidTestImplementation "androidx.test.espresso:espresso-core:$androidx_test_espresso_version" + + // Support + implementation "androidx.appcompat:appcompat:$androidx_appcompat_version" } // add the following information to the file: local.properties situated in the parent directory of @@ -57,21 +81,21 @@ install { repositories.mavenInstaller { pom.project { name projectName - description projectDesc + description library_description packaging 'aar' - groupId projectGroup + groupId library_project_group version version url siteUrl licenses { license { - name 'The Apache Software License, Version 2.0' - url 'http://www.apache.org/licenses/LICENSE-2.0.txt' + name library_licenses[0] + url library_licenses_url } } developers { developer { - id 'gotev' - name 'Aleksandar Gotev' + id properties.getProperty("bintray.user") + name maintainer } } scm { @@ -91,12 +115,12 @@ bintray { pkg { repo = "maven" name = projectName - desc = projectDesc + desc = library_description websiteUrl = siteUrl vcsUrl = gitUrl - issueTrackerUrl = siteUrl + "/issues/" - licenses = ["Apache-2.0"] - labels = ['android', 'upload', 'service', 'library', 'background', 'notification'] + issueTrackerUrl = bugTrackerUrl + licenses = library_licenses + labels = library_keywords publicDownloadNumbers = true publish = true } @@ -108,19 +132,22 @@ task sourcesJar(type: Jar) { } task javadoc(type: Javadoc) { - title = "Android Upload Service $project.version API" + excludes = ['**/*.kt'] // < ---- Exclude all kotlin files from javadoc file. + + title = "$projectName $project.version API" description "Generates Javadoc" source = android.sourceSets.main.java.srcDirs classpath += files(android.bootClasspath) exclude '**/BuildConfig.java', '**/R.java' options { - windowTitle("Android Upload Service $project.version Reference") + windowTitle("$projectName $project.version Reference") locale = 'en_US' encoding = 'UTF-8' charSet = 'UTF-8' - links("http://docs.oracle.com/javase/7/docs/api/"); - linksOffline("http://d.android.com/reference", "${android.sdkDirectory}/docs/reference"); + links("http://docs.oracle.com/javase/7/docs/api/") + linksOffline("http://d.android.com/reference", "${android.sdkDirectory}/docs/reference") setMemberLevel(JavadocMemberLevel.PUBLIC) + addStringOption('Xdoclint:none', '-quiet') } } diff --git a/uploadservice/src/main/AndroidManifest.xml b/uploadservice/src/main/AndroidManifest.xml index 045df17e..d314bd53 100644 --- a/uploadservice/src/main/AndroidManifest.xml +++ b/uploadservice/src/main/AndroidManifest.xml @@ -5,6 +5,7 @@ + diff --git a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationAction.java b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationAction.java index cf0d99ef..961afef4 100644 --- a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationAction.java +++ b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationAction.java @@ -3,9 +3,10 @@ import android.app.PendingIntent; import android.os.Parcel; import android.os.Parcelable; -import android.support.v4.app.NotificationCompat; import android.text.TextUtils; +import androidx.core.app.NotificationCompat; + /** * Class which represents a notification action. * It is necessary because NotificationCompat.Action is not serializable or Parcelable, thus it's @@ -22,6 +23,7 @@ public class UploadNotificationAction implements Parcelable { /** * Creates a new object from an existing NotificationCompat.Action object. + * * @param action notification compat action * @return new instance */ @@ -31,8 +33,9 @@ public static UploadNotificationAction from(NotificationCompat.Action action) { /** * Creates a new {@link UploadNotificationAction} object. - * @param icon icon to show for this action - * @param title the title of the action + * + * @param icon icon to show for this action + * @param title the title of the action * @param intent the {@link PendingIntent} to fire when users trigger this action */ public UploadNotificationAction(int icon, CharSequence title, PendingIntent intent) { diff --git a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationConfig.java b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationConfig.java index c6e4b68b..e2b94b73 100644 --- a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationConfig.java +++ b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationConfig.java @@ -4,7 +4,8 @@ import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcelable; -import android.support.annotation.NonNull; + +import androidx.annotation.NonNull; /** * Contains the configuration of the upload notification. @@ -28,14 +29,14 @@ public final class UploadNotificationConfig implements Parcelable { /** * Creates a new upload notification configuration with default settings: *
    - *
  • {@code android.R.drawable.ic_menu_upload} will be used as the icon
  • - *
  • If the user taps on the notification, nothing will happen
  • - *
  • Once the operation is completed (either successfully or with an error): - *
      - *
    • the default notification sound will be emitted (or the default notification vibration if the device is in silent mode)
    • - *
    • the notification will remain in the Notification Center until the user swipes it out
    • - *
    - *
  • + *
  • {@code android.R.drawable.ic_menu_upload} will be used as the icon
  • + *
  • If the user taps on the notification, nothing will happen
  • + *
  • Once the operation is completed (either successfully or with an error): + *
      + *
    • the default notification sound will be emitted (or the default notification vibration if the device is in silent mode)
    • + *
    • the notification will remain in the Notification Center until the user swipes it out
    • + *
    + *
  • *
*/ public UploadNotificationConfig() { @@ -62,6 +63,7 @@ public UploadNotificationConfig() { /** * Sets the notification title for all the notification statuses. + * * @param title Title to show in the notification icon * @return {@link UploadNotificationConfig} */ @@ -75,6 +77,7 @@ public final UploadNotificationConfig setTitleForAllStatuses(String title) { /** * Sets the same notification icon for all the notification statuses. + * * @param resourceID Resource ID of the icon to use * @return {@link UploadNotificationConfig} */ @@ -88,6 +91,7 @@ public final UploadNotificationConfig setIconForAllStatuses(int resourceID) { /** * Sets the same notification icon for all the notification statuses. + * * @param iconColorResourceID Resource ID of the color to use * @return {@link UploadNotificationConfig} */ @@ -101,6 +105,7 @@ public final UploadNotificationConfig setIconColorForAllStatuses(int iconColorRe /** * Sets the same large notification icon for all the notification statuses. + * * @param largeIcon Bitmap of the icon to use * @return {@link UploadNotificationConfig} */ @@ -146,7 +151,7 @@ public final UploadNotificationConfig addActionForAllStatuses(UploadNotification /** * Sets whether or not to clear the notification when the user taps on it * for all the notification statuses. - * + *

* This would not affect progress notification, as it's ongoing and managed by the upload * service. * @@ -179,7 +184,7 @@ public final UploadNotificationConfig setRingToneEnabled(Boolean enabled) { * @param channelId notification channel ID * @return {@link UploadNotificationConfig} */ - public final UploadNotificationConfig setNotificationChannelId(@NonNull String channelId){ + public final UploadNotificationConfig setNotificationChannelId(@NonNull String channelId) { this.notificationChannelId = channelId; return this; } @@ -204,7 +209,7 @@ public UploadNotificationStatusConfig getCancelled() { return cancelled; } - public String getNotificationChannelId(){ + public String getNotificationChannelId() { return notificationChannelId; } diff --git a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationStatusConfig.java b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationStatusConfig.java index d81d2bed..ee002bfe 100644 --- a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationStatusConfig.java +++ b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationStatusConfig.java @@ -6,10 +6,11 @@ import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcelable; -import android.support.v4.app.NotificationCompat; import java.util.ArrayList; +import androidx.core.app.NotificationCompat; + /** * @author Aleksandar Gotev */ @@ -98,7 +99,7 @@ public void writeToParcel(Parcel dest, int flags) { dest.writeTypedList(this.actions); } - public UploadNotificationStatusConfig(){ + public UploadNotificationStatusConfig() { } protected UploadNotificationStatusConfig(Parcel in) { diff --git a/uploadservice/src/main/java/net/gotev/uploadservice/UploadTask.java b/uploadservice/src/main/java/net/gotev/uploadservice/UploadTask.java index 0cdd18d9..50983b20 100644 --- a/uploadservice/src/main/java/net/gotev/uploadservice/UploadTask.java +++ b/uploadservice/src/main/java/net/gotev/uploadservice/UploadTask.java @@ -9,7 +9,6 @@ import android.net.Uri; import android.os.Build; import android.os.Handler; -import android.support.v4.app.NotificationCompat; import java.io.File; import java.io.IOException; @@ -19,9 +18,12 @@ import java.util.Iterator; import java.util.List; +import androidx.core.app.NotificationCompat; + /** * Base class to subclass when creating upload tasks. It contains the logic common to all the tasks, * such as notification management, status broadcast, retry logic and some utility methods. + * * @author Aleksandar Gotev */ public abstract class UploadTask implements Runnable { @@ -95,6 +97,7 @@ public abstract class UploadTask implements Runnable { /** * Implementation of the upload logic. + * * @throws Exception if an error occurs */ abstract protected void upload() throws Exception; @@ -102,7 +105,8 @@ public abstract class UploadTask implements Runnable { /** * Implement in subclasses to be able to do something when the upload is successful. */ - protected void onSuccessfulUpload() {} + protected void onSuccessfulUpload() { + } public UploadTask() { startTime = new Date().getTime(); @@ -114,7 +118,7 @@ public UploadTask() { * custom parameters set in {@link UploadRequest#initializeIntent(Intent)} method. * * @param service Upload Service instance. You should use this reference as your context. - * @param intent intent sent to the service to start the upload + * @param intent intent sent to the service to start the upload * @throws IOException if an I/O exception occurs while initializing */ protected void init(UploadService service, Intent intent) throws IOException { @@ -173,7 +177,8 @@ public final void run() { while (shouldContinue && System.currentTimeMillis() < (beforeSleepTs + errorDelay)) { try { Thread.sleep(2000); - } catch (Throwable ignored) { } + } catch (Throwable ignored) { + } } errorDelay *= UploadService.BACKOFF_MULTIPLIER; @@ -192,6 +197,7 @@ public final void run() { /** * Sets the last time the notification was updated. * This is handled automatically and you should never call this method. + * * @param lastProgressNotificationTime time in milliseconds * @return {@link UploadTask} */ @@ -204,6 +210,7 @@ protected final UploadTask setLastProgressNotificationTime(long lastProgressNoti * Sets the upload notification ID for this task. * This gets called by {@link UploadService} when the task is initialized. * You should never call this method. + * * @param notificationId notification ID * @return {@link UploadTask} */ @@ -216,7 +223,7 @@ protected final UploadTask setNotificationId(int notificationId) { * Broadcasts a progress update. * * @param uploadedBytes number of bytes which has been uploaded to the server - * @param totalBytes total bytes of the request + * @param totalBytes total bytes of the request */ protected final void broadcastProgress(final long uploadedBytes, final long totalBytes) { @@ -228,12 +235,12 @@ protected final void broadcastProgress(final long uploadedBytes, final long tota setLastProgressNotificationTime(currentTime); Logger.debug(LOG_TAG, "Broadcasting upload progress for " + params.id - + ": " + uploadedBytes + " bytes of " + totalBytes); + + ": " + uploadedBytes + " bytes of " + totalBytes); final UploadInfo uploadInfo = new UploadInfo(params.id, startTime, uploadedBytes, - totalBytes, (attempts - 1), - successfullyUploadedFiles, - pathStringListFrom(params.files)); + totalBytes, (attempts - 1), + successfullyUploadedFiles, + pathStringListFrom(params.files)); BroadcastData data = new BroadcastData() .setStatus(BroadcastData.Status.IN_PROGRESS) @@ -280,9 +287,9 @@ protected final void broadcastCompleted(final ServerResponse response) { + " for " + params.id); final UploadInfo uploadInfo = new UploadInfo(params.id, startTime, uploadedBytes, - totalBytes, (attempts - 1), - successfullyUploadedFiles, - pathStringListFrom(params.files)); + totalBytes, (attempts - 1), + successfullyUploadedFiles, + pathStringListFrom(params.files)); final UploadNotificationConfig notificationConfig = params.notificationConfig; @@ -290,7 +297,7 @@ protected final void broadcastCompleted(final ServerResponse response) { if (successfulUpload && notificationConfig.getCompleted().message != null) { updateNotification(uploadInfo, notificationConfig.getCompleted()); - } else if (notificationConfig.getError().message != null){ + } else if (notificationConfig.getError().message != null) { updateNotification(uploadInfo, notificationConfig.getError()); } } @@ -331,9 +338,9 @@ protected final void broadcastCancelled() { Logger.debug(LOG_TAG, "Broadcasting cancellation for upload with ID: " + params.id); final UploadInfo uploadInfo = new UploadInfo(params.id, startTime, uploadedBytes, - totalBytes, (attempts - 1), - successfullyUploadedFiles, - pathStringListFrom(params.files)); + totalBytes, (attempts - 1), + successfullyUploadedFiles, + pathStringListFrom(params.files)); final UploadNotificationConfig notificationConfig = params.notificationConfig; @@ -362,6 +369,7 @@ public void run() { /** * Add a file to the list of the successfully uploaded files and remove it from the file list + * * @param file file on the device */ protected final void addSuccessfullyUploadedFile(UploadFile file) { @@ -376,7 +384,7 @@ protected final void addSuccessfullyUploadedFile(UploadFile file) { * This will automatically remove them from the params.getFiles() list. */ protected final void addAllFilesToSuccessfullyUploadedFiles() { - for (Iterator iterator = params.files.iterator(); iterator.hasNext();) { + for (Iterator iterator = params.files.iterator(); iterator.hasNext(); ) { UploadFile file = iterator.next(); if (!successfullyUploadedFiles.contains(file.path)) { @@ -391,6 +399,7 @@ protected final void addAllFilesToSuccessfullyUploadedFiles() { * You must not modify this list in your subclasses! You can only read its contents. * If you want to add an element into it, * use {@link UploadTask#addSuccessfullyUploadedFile(UploadFile)} + * * @return list of strings */ protected final List getSuccessfullyUploadedFiles() { @@ -412,9 +421,9 @@ private void broadcastError(final Exception exception) { + params.id + ". " + exception.getMessage()); final UploadInfo uploadInfo = new UploadInfo(params.id, startTime, uploadedBytes, - totalBytes, (attempts - 1), - successfullyUploadedFiles, - pathStringListFrom(params.files)); + totalBytes, (attempts - 1), + successfullyUploadedFiles, + pathStringListFrom(params.files)); final UploadNotificationConfig notificationConfig = params.notificationConfig; @@ -445,10 +454,12 @@ public void run() { /** * If the upload task is initialized with a notification configuration, this handles its * creation. + * * @param uploadInfo upload information and statistics */ private void createNotification(UploadInfo uploadInfo) { - if (params.notificationConfig == null || params.notificationConfig.getProgress().message == null) return; + if (params.notificationConfig == null || params.notificationConfig.getProgress().message == null) + return; UploadNotificationStatusConfig statusConfig = params.notificationConfig.getProgress(); notificationCreationTimeMillis = System.currentTimeMillis(); @@ -479,10 +490,12 @@ private void createNotification(UploadInfo uploadInfo) { /** * Informs the {@link UploadService} that the task has made some progress. You should call this * method from your task whenever you have successfully transferred some bytes to the server. + * * @param uploadInfo upload information and statistics */ private void updateNotificationProgress(UploadInfo uploadInfo) { - if (params.notificationConfig == null || params.notificationConfig.getProgress().message == null) return; + if (params.notificationConfig == null || params.notificationConfig.getProgress().message == null) + return; UploadNotificationStatusConfig statusConfig = params.notificationConfig.getProgress(); @@ -495,7 +508,7 @@ private void updateNotificationProgress(UploadInfo uploadInfo) { .setLargeIcon(statusConfig.largeIcon) .setColor(statusConfig.iconColorResourceID) .setGroup(UploadService.NAMESPACE) - .setProgress((int)uploadInfo.getTotalBytes(), (int)uploadInfo.getUploadedBytes(), false) + .setProgress((int) uploadInfo.getTotalBytes(), (int) uploadInfo.getUploadedBytes(), false) .setOngoing(true); statusConfig.addActionsToNotificationBuilder(notification);