Harjoitustehtävä 9


Tehtävänäsi on luoda verkkotietokantaa hyödyntävä chat. HUOM! Chtin viestit menevät julkiseen (MIT / App Inventor) tietokantaan täysin salaamattomassa muodossa.

Viestien tallennuksen hoitaa TinyWebDB -komponentti. Viestiketjun viestejä täytyy päivittää säännöllisin väliajoin. Tämä hoidetaan Clock -komponentilla. Viestien tallennukseen käy hyvin lista. Listaan tehdään lisäyksiä ja tallennetaan tietokantaan.

Verkkotietokanta toimii muuten samalla tavalla kuin puhelmine muistia käyttävä tietokanta (TinyDB), paitsi arvojen hakeminen on toteutettu hieman toisin. Tässä käytetään erillistä GotValue -palikkaa.

Yllä olevassa if-ehtolauseessa tarkistetaaan että saatu tietokannan arvo on lista-tyyppinen muuttuja ja varmistetaan että palautunut tagi on haluamamme. Kyseiseen if-ehtoon kannattaa tehdä vielä lisäys, jonka mukaan päivityksiä ei tehdä, mikäli tietokannasta saatu arvo ei ole muuttunut (on sama kuin viestiketju-listamuuttuja). Alla on luotu uusi teksti-muuttuja viestiketjun lopullista tulostusta varten, sekä proseduuri (metodi) viestiketjuListanTulostaminen, joka käy läpi kaikki viestiketju-listamuuttujan arvot ja tallentaa ne viestiketjuTeksti-muuttujaan. Lopuksi viestiketjun tekstikenttäelementti päivitetään vastaamaan viestiketjuTeksti-muuttujaa.

Huomaa että proseduuria (metodia) viestiketjuListanTulostaminen ei kutsuta vielä missään. Mieti missä kutsuminen on hyvä tehdä ja viimeistele sovellus mieleiseksesi. Voit myös parantaa sitä (voisit esimerkiksi lisätä kunkin viestin alkuun viestin lähettäjän puhelinnumeron).

Lisätehtävä: Salaa viestisi omalla yksinkertaisella salausalgoritmilla. Luo salausta varten oma globaali muuttuja salattuViesti ja käytä Text-luokasta löytyviä metodeja (esimerkiksi alimpana listassa oleva replace) viestin salaamiseen ennen viestin tallentamista tietokantaan (lahetaButton.Click). Huom! Muista myös purkaa salaus viestiKetjuListanTulostaminen-metodissa.