#3077 Hide disambiguation items from depiction search - when fetching depictions get the entity instead of the search result (#3741)

This commit is contained in:
Seán Mac Gillicuddy 2020-05-12 11:44:17 +01:00 committed by GitHub
parent 34f02499e4
commit 057d11a0e0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
31 changed files with 359 additions and 582 deletions

View file

@ -2,83 +2,94 @@ package org.wikipedia.wikidata
import org.wikipedia.json.RuntimeTypeAdapterFactory
/*"datavalue": {
"value": {
"entity-type": "item",
"id": "Q30",
"numeric-id": 30
},
"type": "wikibase-entityid"
}
OR
"datavalue": {
"value": "SomePicture.jpg",
"type": "string"
}
OR
"datavalue": {
"value": {
"latitude": 37.7733,
"longitude": -122.412255,
"altitude": null,
"precision": 1.0e-6,
"globe": "http://www.wikidata.org/entity/Q2"
},
"type": "globecoordinate"
}
OR
"datavalue": {
"value": {
"time": "+2019-12-03T00:00:00Z",
"timezone": 0,
"before": 0,
"after": 0,
"precision": 11,
"calendarmodel": "http://www.wikidata.org/entity/Q1985727"
},
"type": "time"
}
*/
sealed class DataValue(val type: String) {
companion object {
@JvmStatic
val polymorphicTypeAdapter =
RuntimeTypeAdapterFactory.of(DataValue::class.java, DataValue::type.name)
.registerSubtype(DataValueEntityId::class.java, DataValueEntityId.TYPE)
.registerSubtype(DataValueString::class.java, DataValueString.TYPE)
.registerSubtype(
DataValueGlobeCoordinate_partial::class.java,
DataValueGlobeCoordinate_partial.TYPE
)
.registerSubtype(
DataValueTime_partial::class.java,
DataValueTime_partial.TYPE
)
.registerSubtype(EntityId::class.java, EntityId.TYPE)
.registerSubtype(ValueString::class.java, ValueString.TYPE)
.registerSubtype(GlobeCoordinate_partial::class.java, GlobeCoordinate_partial.TYPE)
.registerSubtype(Time_partial::class.java, Time_partial.TYPE)
.registerSubtype(Quantity_partial::class.java, Quantity_partial.TYPE)
.registerSubtype(MonoLingualText_partial::class.java, MonoLingualText_partial.TYPE)
}
data class DataValueEntityId(val value: WikiBaseEntityValue) :
DataValue(TYPE) {
// "value": {
// "entity-type": "item",
// "id": "Q30",
// "numeric-id": 30
// },
// "type": "wikibase-entityid"
// }
data class EntityId(val value: WikiBaseEntityValue) : DataValue(TYPE) {
companion object {
const val TYPE = "wikibase-entityid"
}
}
data class DataValueString(val value: String) : DataValue(TYPE) {
// {
// "value": "SomePicture.jpg",
// "type": "string"
// }
data class ValueString(val value: String) : DataValue(TYPE) {
companion object {
const val TYPE = "string"
}
}
class DataValueGlobeCoordinate_partial() :
DataValue(TYPE) {
// "value": {
// "latitude": 37.7733,
// "longitude": -122.412255,
// "altitude": null,
// "precision": 1.0e-6,
// "globe": "http://www.wikidata.org/entity/Q2"
// },
// "type": "globecoordinate"
// }
class GlobeCoordinate_partial() : DataValue(TYPE) {
companion object {
const val TYPE = "globecoordinate"
}
}
class DataValueTime_partial() : DataValue(TYPE) {
// "value": {
// "time": "+2019-12-03T00:00:00Z",
// "timezone": 0,
// "before": 0,
// "after": 0,
// "precision": 11,
// "calendarmodel": "http://www.wikidata.org/entity/Q1985727"
// },
// "type": "time"
// }
class Time_partial() : DataValue(TYPE) {
companion object {
const val TYPE = "time"
}
}
// {
// "value": {
// "amount": "+587",
// "unit": "http://www.wikidata.org/entity/Q828224"
// }
// }
class Quantity_partial() : DataValue(TYPE) {
companion object {
const val TYPE = "quantity"
}
}
// {
// "value": {
// "text": "활",
// "language": "ko"
// }
// }
class MonoLingualText_partial() : DataValue(TYPE) {
companion object {
const val TYPE = "monolingualtext"
}
}
}

View file

@ -1,6 +1,6 @@
package org.wikipedia.wikidata
import org.wikipedia.wikidata.DataValue.DataValueEntityId
import org.wikipedia.wikidata.DataValue.EntityId
data class EditClaim(val claims: List<Statement_partial>) {
@ -14,7 +14,7 @@ data class EditClaim(val claims: List<Statement_partial>) {
Snak_partial(
"value",
propertyName,
DataValueEntityId(
EntityId(
WikiBaseEntityValue(
"item",
entityId,

View file

@ -2,6 +2,7 @@ package org.wikipedia.wikidata;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.gson.annotations.SerializedName;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ -42,7 +43,7 @@ public class Entities extends MwResponse implements PostProcessingTypeAdapter.Po
@Nullable private Map<String, Label> labels;
@Nullable private Map<String, Label> descriptions;
@Nullable private Map<String, SiteLink> sitelinks;
@Nullable private Map<String, List<Statement_partial>> statements;
@Nullable @SerializedName(value = "statements", alternate = "claims") private Map<String, List<Statement_partial>> statements;
@Nullable private String missing;
@NonNull public String id() {