From 01d47cfe3ceb505c8da18902e9273d9954048e22 Mon Sep 17 00:00:00 2001 From: Neslihan Date: Thu, 12 Mar 2020 18:17:55 +0300 Subject: [PATCH 01/10] Add p18value variable to contrib --- .../nrw/commons/contributions/Contribution.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/Contribution.java b/app/src/main/java/fr/free/nrw/commons/contributions/Contribution.java index 6a97c938d1..37d357a94e 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/Contribution.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/Contribution.java @@ -68,6 +68,7 @@ public Contribution[] newArray(int i) { public String decimalCoords; public boolean isMultiple; public String wikiDataEntityId; + public String p18Value; public Uri contentProviderUri; public String dateCreatedSource; @@ -271,6 +272,19 @@ public void setWikiDataEntityId(String wikiDataEntityId) { this.wikiDataEntityId = wikiDataEntityId; } + public String getP18Value() { + return p18Value; + } + + /** + * When the corresponding image property of wiki entity is known as in case of nearby uploads, + * it can be set using the setter method + * @param p18Value p18 value, image property of the wikidata item + */ + public void setP18Value(String p18Value) { + this.p18Value = p18Value; + } + public void setContentProviderUri(Uri contentProviderUri) { this.contentProviderUri = contentProviderUri; } From 3a59e063fd26d0c7999d0184ce3b2ffbd1066955 Mon Sep 17 00:00:00 2001 From: Neslihan Date: Thu, 12 Mar 2020 18:19:42 +0300 Subject: [PATCH 02/10] set place.pic to candidate contribution --- app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java index 9630d83e99..ff16e932ea 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java @@ -197,7 +197,8 @@ public Observable buildContributions() { CommonsApplication.DEFAULT_EDIT_SUMMARY, item.gpsCoords.getCoords()); if (item.place != null) { contribution.setWikiDataEntityId(item.place.getWikiDataEntityId()); - } + // If item already has an image, we need to know it. We don't want to override existing image later + contribution.setP18Value(item.place.pic); } if (null == selectedCategories) {//Just a fail safe, this should never be null selectedCategories = new ArrayList<>(); } From 196cb9d7959e13df55b9da3381d4ebc7b0054653 Mon Sep 17 00:00:00 2001 From: Neslihan Date: Mon, 16 Mar 2020 17:05:23 +0300 Subject: [PATCH 03/10] Add p18 value to contrib --- app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java index ff16e932ea..26e4b4f335 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java @@ -198,7 +198,8 @@ public Observable buildContributions() { if (item.place != null) { contribution.setWikiDataEntityId(item.place.getWikiDataEntityId()); // If item already has an image, we need to know it. We don't want to override existing image later - contribution.setP18Value(item.place.pic); } + contribution.setP18Value(item.place.pic); + } if (null == selectedCategories) {//Just a fail safe, this should never be null selectedCategories = new ArrayList<>(); } From 048e519d93b21e5b45d1c8faa32ac179d154f862 Mon Sep 17 00:00:00 2001 From: Neslihan Date: Mon, 16 Mar 2020 17:06:57 +0300 Subject: [PATCH 04/10] Passes p18 value to wikidata upload service --- .../java/fr/free/nrw/commons/upload/UploadService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java index b37dfd0111..11f4f14194 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java @@ -278,9 +278,10 @@ private void uploadContribution(Contribution contribution) { showFailedNotification(contribution); } else { String canonicalFilename = "File:" + uploadResult.getFilename(); - Timber.d("Contribution upload success. Initiating Wikidata edit for entity id %s", - contribution.getWikiDataEntityId()); - wikidataEditService.createClaimWithLogging(contribution.getWikiDataEntityId(), canonicalFilename); + Timber.d("Contribution upload success. Initiating Wikidata edit for" + + " entity id %s if necessary (if P18 is null). P18 value is %s", + contribution.getWikiDataEntityId(), contribution.getP18Value()); + wikidataEditService.createClaimWithLogging(contribution.getWikiDataEntityId(), canonicalFilename, contribution.getP18Value()); contribution.setFilename(canonicalFilename); contribution.setImageUrl(uploadResult.getImageinfo().getOriginalUrl()); contribution.setState(Contribution.STATE_COMPLETED); From 9ca94073711f10b79427934739d25988f2088645 Mon Sep 17 00:00:00 2001 From: Neslihan Date: Mon, 16 Mar 2020 17:07:47 +0300 Subject: [PATCH 05/10] Checks if pic parameter of the wikidata item is empty or not. If not, it does not overrides the existing image, it is just a regular commons upload. --- .../fr/free/nrw/commons/wikidata/WikidataEditService.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java index e486d11505..586f6104a5 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java @@ -48,12 +48,17 @@ public class WikidataEditService { * @param wikidataEntityId * @param fileName */ - public void createClaimWithLogging(String wikidataEntityId, String fileName) { + public void createClaimWithLogging(String wikidataEntityId, String fileName, String p18Value) { if (wikidataEntityId == null) { Timber.d("Skipping creation of claim as Wikidata entity ID is null"); return; } + if (!p18Value.trim().isEmpty()) { + Timber.d("Skipping creation of claim as p18Value is not null, we won't override existing image"); + return; + } + if (fileName == null) { Timber.d("Skipping creation of claim as fileName entity ID is null"); return; From 662db929beb6238bb12d6b80cc13d5ee5eaeaa6b Mon Sep 17 00:00:00 2001 From: Neslihan Date: Mon, 16 Mar 2020 20:55:55 +0300 Subject: [PATCH 06/10] Make public var private --- .../java/fr/free/nrw/commons/contributions/Contribution.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/Contribution.java b/app/src/main/java/fr/free/nrw/commons/contributions/Contribution.java index 37d357a94e..f71df7d8dd 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/Contribution.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/Contribution.java @@ -68,7 +68,7 @@ public Contribution[] newArray(int i) { public String decimalCoords; public boolean isMultiple; public String wikiDataEntityId; - public String p18Value; + private String p18Value; public Uri contentProviderUri; public String dateCreatedSource; From 60e6224c58a5ec9347567062851bd42009607cc8 Mon Sep 17 00:00:00 2001 From: Neslihan Date: Mon, 16 Mar 2020 20:59:18 +0300 Subject: [PATCH 07/10] Make current tests pass --- .../free/nrw/commons/wikidata/WikidataEditService.java | 10 +++++----- .../nrw/commons/wikidata/WikidataEditServiceTest.kt | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java index 586f6104a5..3a8a3b4e9d 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java @@ -54,11 +54,6 @@ public void createClaimWithLogging(String wikidataEntityId, String fileName, Str return; } - if (!p18Value.trim().isEmpty()) { - Timber.d("Skipping creation of claim as p18Value is not null, we won't override existing image"); - return; - } - if (fileName == null) { Timber.d("Skipping creation of claim as fileName entity ID is null"); return; @@ -69,6 +64,11 @@ public void createClaimWithLogging(String wikidataEntityId, String fileName, Str return; } + if (!p18Value.trim().isEmpty()) { + Timber.d("Skipping creation of claim as p18Value is not null, we won't override existing image"); + return; + } + editWikidataProperty(wikidataEntityId, fileName); } diff --git a/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt index f8e24b6dc7..3093008ef2 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt @@ -34,13 +34,13 @@ class WikidataEditServiceTest { @Test fun noClaimsWhenEntityIdIsNull() { - wikidataEditService!!.createClaimWithLogging(null, "Test.jpg") + wikidataEditService!!.createClaimWithLogging(null, "Test.jpg","") verifyZeroInteractions(wikidataClient!!) } @Test fun noClaimsWhenFileNameIsNull() { - wikidataEditService!!.createClaimWithLogging("Q1", null) + wikidataEditService!!.createClaimWithLogging("Q1", null,"") verifyZeroInteractions(wikidataClient!!) } @@ -48,7 +48,7 @@ class WikidataEditServiceTest { fun noClaimsWhenLocationIsNotCorrect() { `when`(directKvStore!!.getBoolean("Picture_Has_Correct_Location", true)) .thenReturn(false) - wikidataEditService!!.createClaimWithLogging("Q1", "Test.jpg") + wikidataEditService!!.createClaimWithLogging("Q1", "Test.jpg","") verifyZeroInteractions(wikidataClient!!) } @@ -60,7 +60,7 @@ class WikidataEditServiceTest { .thenReturn(Observable.just(1L)) `when`(wikidataClient!!.addEditTag(anyLong(), ArgumentMatchers.anyString(), ArgumentMatchers.anyString())) .thenReturn(Observable.just(mock(AddEditTagResponse::class.java))) - wikidataEditService!!.createClaimWithLogging("Q1", "Test.jpg") + wikidataEditService!!.createClaimWithLogging("Q1", "Test.jpg","") verify(wikidataClient!!, times(1)) .createClaim(ArgumentMatchers.anyString(), ArgumentMatchers.anyString()) } From 286823566b49b3240ce5cc36c0bb3fa574af7fdf Mon Sep 17 00:00:00 2001 From: Neslihan Date: Mon, 16 Mar 2020 21:03:39 +0300 Subject: [PATCH 08/10] Add test case for p18 value is not empty --- .../fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt index 3093008ef2..e937952ad0 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt @@ -44,6 +44,12 @@ class WikidataEditServiceTest { verifyZeroInteractions(wikidataClient!!) } + @Test + fun noClaimsWhenP18IsNotEmpty() { + wikidataEditService!!.createClaimWithLogging("Q1", "Test.jpg","Previous.jpg") + verifyZeroInteractions(wikidataClient!!) + } + @Test fun noClaimsWhenLocationIsNotCorrect() { `when`(directKvStore!!.getBoolean("Picture_Has_Correct_Location", true)) From 82950aa74ae182f95ea7e1328b27476515606483 Mon Sep 17 00:00:00 2001 From: Neslihan Date: Tue, 17 Mar 2020 12:06:53 +0300 Subject: [PATCH 09/10] Fix wrong log message --- .../java/fr/free/nrw/commons/wikidata/WikidataEditService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java index 3a8a3b4e9d..0d1017a06e 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java @@ -65,7 +65,7 @@ public void createClaimWithLogging(String wikidataEntityId, String fileName, Str } if (!p18Value.trim().isEmpty()) { - Timber.d("Skipping creation of claim as p18Value is not null, we won't override existing image"); + Timber.d("Skipping creation of claim as p18Value is not empty, we won't override existing image"); return; } From 325919a0695e96c134ab0ee97cd17fe326aff3c4 Mon Sep 17 00:00:00 2001 From: Neslihan Date: Tue, 17 Mar 2020 12:59:59 +0300 Subject: [PATCH 10/10] Add nonnul annotation and fix method javadoc --- .../fr/free/nrw/commons/wikidata/WikidataEditService.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java index 0d1017a06e..abc72478d8 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java @@ -3,6 +3,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import androidx.annotation.NonNull; import java.util.Locale; import javax.inject.Inject; @@ -45,10 +46,11 @@ public class WikidataEditService { /** * Create a P18 claim and log the edit with custom tag - * @param wikidataEntityId - * @param fileName + * @param wikidataEntityId a unique id of each Wikidata items + * @param fileName name of the file we will upload + * @param p18Value pic attribute of Wikidata item */ - public void createClaimWithLogging(String wikidataEntityId, String fileName, String p18Value) { + public void createClaimWithLogging(String wikidataEntityId, String fileName, @NonNull String p18Value) { if (wikidataEntityId == null) { Timber.d("Skipping creation of claim as Wikidata entity ID is null"); return;