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:
metadatacontiene un oggetto vuotoexport_phrasescontiene una lista di oggetti che definiscono una frase.
Ogni oggetto presente nel field export_phrases ha i seguenti fields:
valueche contiene il testo della frasesource_localeche contiene la lingua sorgentetarget_localesche contiene una lista di uno o più oggettilocaleche indicano la lingua di destinazione in cui andrebbe tradotta la frase.created_atche contiene la data di quando la frase è stata generatacollection_nameche 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_localesun 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.jsonle collection sono ordinate:
counting_rhymesing_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.