mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-31 14:53:59 +01:00 
			
		
		
		
	Convert WikiSiteTypeAdapter to kotlin
This commit is contained in:
		
							parent
							
								
									85dda964bc
								
							
						
					
					
						commit
						4ac81e1b64
					
				
					 2 changed files with 61 additions and 63 deletions
				
			
		|  | @ -1,63 +0,0 @@ | |||
| package fr.free.nrw.commons.wikidata.json; | ||||
| 
 | ||||
| import android.net.Uri; | ||||
| 
 | ||||
| import com.google.gson.JsonParseException; | ||||
| import com.google.gson.TypeAdapter; | ||||
| import com.google.gson.stream.JsonReader; | ||||
| import com.google.gson.stream.JsonToken; | ||||
| import com.google.gson.stream.JsonWriter; | ||||
| 
 | ||||
| import fr.free.nrw.commons.wikidata.model.WikiSite; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| 
 | ||||
| public class WikiSiteTypeAdapter extends TypeAdapter<WikiSite> { | ||||
|     private static final String DOMAIN = "domain"; | ||||
|     private static final String LANGUAGE_CODE = "languageCode"; | ||||
| 
 | ||||
|     @Override public void write(JsonWriter out, WikiSite value) throws IOException { | ||||
|         out.beginObject(); | ||||
|         out.name(DOMAIN); | ||||
|         out.value(value.url()); | ||||
| 
 | ||||
|         out.name(LANGUAGE_CODE); | ||||
|         out.value(value.languageCode()); | ||||
|         out.endObject(); | ||||
|     } | ||||
| 
 | ||||
|     @Override public WikiSite read(JsonReader in) throws IOException { | ||||
|         // todo: legacy; remove in June 2018 | ||||
|         if (in.peek() == JsonToken.STRING) { | ||||
|             return new WikiSite(Uri.parse(in.nextString())); | ||||
|         } | ||||
| 
 | ||||
|         String domain = null; | ||||
|         String languageCode = null; | ||||
|         in.beginObject(); | ||||
|         while (in.hasNext()) { | ||||
|             String field = in.nextName(); | ||||
|             String val = in.nextString(); | ||||
|             switch (field) { | ||||
|                 case DOMAIN: | ||||
|                     domain = val; | ||||
|                     break; | ||||
|                 case LANGUAGE_CODE: | ||||
|                     languageCode = val; | ||||
|                     break; | ||||
|                 default: break; | ||||
|             } | ||||
|         } | ||||
|         in.endObject(); | ||||
| 
 | ||||
|         if (domain == null) { | ||||
|             throw new JsonParseException("Missing domain"); | ||||
|         } | ||||
| 
 | ||||
|         // todo: legacy; remove in June 2018 | ||||
|         if (languageCode == null) { | ||||
|             return new WikiSite(domain); | ||||
|         } | ||||
|         return new WikiSite(domain, languageCode); | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,61 @@ | |||
| package fr.free.nrw.commons.wikidata.json | ||||
| 
 | ||||
| import android.net.Uri | ||||
| import com.google.gson.JsonParseException | ||||
| import com.google.gson.TypeAdapter | ||||
| import com.google.gson.stream.JsonReader | ||||
| import com.google.gson.stream.JsonToken | ||||
| import com.google.gson.stream.JsonWriter | ||||
| import fr.free.nrw.commons.wikidata.model.WikiSite | ||||
| import java.io.IOException | ||||
| 
 | ||||
| class WikiSiteTypeAdapter : TypeAdapter<WikiSite>() { | ||||
|     @Throws(IOException::class) | ||||
|     override fun write(out: JsonWriter, value: WikiSite) { | ||||
|         out.beginObject() | ||||
|         out.name(DOMAIN) | ||||
|         out.value(value.url()) | ||||
| 
 | ||||
|         out.name(LANGUAGE_CODE) | ||||
|         out.value(value.languageCode()) | ||||
|         out.endObject() | ||||
|     } | ||||
| 
 | ||||
|     @Throws(IOException::class) | ||||
|     override fun read(reader: JsonReader): WikiSite { | ||||
|         // todo: legacy; remove reader June 2018 | ||||
|         if (reader.peek() == JsonToken.STRING) { | ||||
|             return WikiSite(Uri.parse(reader.nextString())) | ||||
|         } | ||||
| 
 | ||||
|         var domain: String? = null | ||||
|         var languageCode: String? = null | ||||
|         reader.beginObject() | ||||
|         while (reader.hasNext()) { | ||||
|             val field = reader.nextName() | ||||
|             val value = reader.nextString() | ||||
|             when (field) { | ||||
|                 DOMAIN -> domain = value | ||||
|                 LANGUAGE_CODE -> languageCode = value | ||||
|                 else -> {} | ||||
|             } | ||||
|         } | ||||
|         reader.endObject() | ||||
| 
 | ||||
|         if (domain == null) { | ||||
|             throw JsonParseException("Missing domain") | ||||
|         } | ||||
| 
 | ||||
|         // todo: legacy; remove reader June 2018 | ||||
|         return if (languageCode == null) { | ||||
|             WikiSite(domain) | ||||
|         } else { | ||||
|             WikiSite(domain, languageCode) | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val DOMAIN = "domain" | ||||
|         private const val LANGUAGE_CODE = "languageCode" | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Paul Hawke
						Paul Hawke