Ci aspettiamo un progetto Maven.
Quello che ci interessa è la qualità del tuo codice.
Ci aspettiamo codice corretto, ordinato e ragionevolmente strutturato.
Ci aspettiamo la presenza di test unitari.
Verrà valutata positivamente una buona code coverage.
Ci aspettiamo codice scritto e compilabile per Java 8+.
Le nuove sintassi lambda sono accettate.
Le uniche librerie accettate sono librerie necessarie al parsing del JSON e all'eventuale testing e deploy: Junit, mockito, ecc.
Da questa URL da chiamare in GET sarà restituito un payload JSON
come quello in esempio nel file input.json
.
Una volta ottenuto il payload, esso andrà letto, interpretato e trasformato in due JSON identici ( ovviamente non necessariamente nella formattazione ) a quelli presenti nei due files:
e scritti su disco, con i suddetti nomi, nella directory output
.
Partendo sempre dal JSON di input:
metadata
contiene un oggetto vuotoexport_phrases
contiene una lista di oggetti che definiscono una frase.
Ogni oggetto presente nel field export_phrases
ha i seguenti fields:
value
che contiene il testo della frasesource_locale
che contiene la lingua sorgentetarget_locales
che contiene una lista di uno o più oggettilocale
che indicano la lingua di destinazione in cui andrebbe tradotta la frase.created_at
che contiene la data di quando la frase è stata generatacollection_name
che contiene il nome della collection a cui la frase appartiene
Il primo raggruppamento deve avvenire per lingua, quindi, ogni file di output prodotto conterrà una sola lingua target che sarà posta nel field metadata oltre che aggiunta al nome del file di output per poterlo distinguere.
{
"metadata": {
"source_locale": "en",
"target_locale": "it-IT"
},
...
}
Vanno quindi esclusi dal file output corrispondente le frasi che non hanno il locale specificato.
Esempio:
La frase
value: "If it hollers let it go"
ha nella listatarget_locales
un solo oggettolocale: "fr-FR"
e quindi essa dovrà essere presente solo nel file output francese.
Il secondo raggruppamento deve avvenire sulla base del campo collection_name
, le frasi che appartengono alla stessa collection devono essere raggruppate.
{
...
"collections": [
{
"name": "counting_rhyme",
"export_phrases": [
{ ... }, { ... }
]
}
]
}
Contestualmente al raggruppamento ( preferibilmente ) o in iterazioni successive, le collection vanno ordinate alfabeticamente.
Esempio: nel file
output_fr-FR.json
le collection sono ordinate:
counting_rhyme
sing_that_song
All'interno delle collections, le phrases devono essere ordinate in maniera crescente sulla base della data created_at
.
Se le regole di raggruppamento e ordinamento verranno rispettate i file json di output risulteranno identici a quelli forniti nella traccia.