/** * Tallentaa havainnon ja palauttaa olion, jonka tiedot haettu tietokannasta. * Virheen sattuessa palauttaa arvon Malliluokkapohja::VIRHE. * @param <type> $henkilo_id * @param <type> $lajiluokka_id * @param <type> $vuosi * @param <type> $kk * @param <type> $paiva * @param <type> $paikka * @param <type> $kommentti * @param <type> $maa * @param <type> $varmuus */ public function luo_ja_tallenna_havainto($henkilo_id, $lajiluokka_id, $vuosi, $kk, $paiva, $paikka, $kommentti, $maa, $varmuus) { $id = Havainto::$PARAMETRI_EI_KAYTOSSA; $hav = new Havainto($this->tietokantaolio, $id); $hav->set_henkilo_id($henkilo_id); $hav->set_lajiluokka_id($lajiluokka_id); $hav->set_vuosi($vuosi); $hav->set_kk($kk); $hav->set_paiva($paiva); $hav->set_paikka($paikka); $hav->set_kommentti($kommentti); $hav->set_maa($maa); $hav->set_varmuus($varmuus); $palaute = $hav->tallenna_uusi(); // Haetaan tiedot: if ($palaute === Havainto::$OPERAATIO_ONNISTUI) { return new Havainto($this->tietokantaolio, $hav->get_id()); } else { // Otetaan virheilmoitukset talteen ja nollataan olio: $this->lisaa_virheilmoitus($hav->tulosta_virheilmoitukset()); $hav->nollaa_muuttujat(); return Malliluokkapohja::$VIRHE; } }
/** * Toteuttaa monen uuden havainnon tallennuksen. * @return \Palaute */ public function toteuta_tallenna_monta_uutta() { $tietokantaolio = $this->get_tietokantaolio(); $palauteolio = $this->get_palauteolio(); // Sisältää valittujen lajiluokkien id:t. $valinnat = $this->get_parametriolio()->lajivalinnat_hav; $laskuri = 0; $tallennusten_lkm = 0; $virheiden_lkm = 0; $tallennetut_lajit = ""; // Nimet kerätään tähän. foreach ($valinnat as $id_lj) { $uusi = new Havainto($this->tietokantaolio(), Havainto::$PARAMETRI_EI_KAYTOSSA); $uusi->set_henkilo_id($this->get_parametriolio()->omaid); $uusi->set_lajiluokka_id($id_lj); $uusi->set_paiva($this->get_parametriolio()->paiva_hav); $uusi->set_kk($this->get_parametriolio()->kk_hav); $uusi->set_vuosi($this->get_parametriolio()->vuosi_hav); $uusi->set_paikka($this->get_parametriolio()->paikka_hav); $uusi->set_kommentti($this->get_parametriolio()->kommentti_hav); $uusi->set_maa($this->get_parametriolio()->maa_hav); $uusi->set_varmuus($this->get_parametriolio()->varmuus_hav); if ($uusi->tallenna_uusi() === Havainto::$OPERAATIO_ONNISTUI) { $tallennusten_lkm++; // Haetaan nimi tallennetulle: $nimi = Bongaustekstit::$nimi_tuntematon; $lajiluokka = new Lajiluokka($tietokantaolio, $id_lj); if ($lajiluokka->olio_loytyi_tietokannasta) { $kuvaus = $lajiluokka->hae_kuvaus($this->get_parametriolio()->kieli_id); if ($kuvaus instanceof Kuvaus) { if ($laskuri == 0) { $nimi = $kuvaus->get_nimi(); } else { $nimi = ", " . $kuvaus->get_nimi(); } } } $tallennetut_lajit .= $nimi; } else { $virheiden_lkm++; } $laskuri++; } // Aktiivisuusmerkintä (vain kerran): $viimeksi_aktiivi = time(); $aktiivisuuslaji = Aktiivisuus::$HAVAINTO_UUDEN_TALLENNUS; paivita_aktiivisuus($this->get_parametriolio()->omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji); // Palautteet: if ($tallennusten_lkm == sizeof($valinnat)) { $kommentti = $tallennusten_lkm . " " . Bongaustekstit::$ilm_havaintojen_lisays_ok . " (" . $tallennetut_lajit . ")"; } else { $kommentti = $virheiden_lkm . " " . Bongaustekstit::$ilm_havaintojen_lisays_eiok; } $palauteolio->set_ilmoitus($kommentti); // Avataan havainnot. $palauteolio->set_sisalto($this->toteuta_nayta()->get_sisalto()); return $palauteolio; }
public function testaa_havainnon_muokkaus() { $this->lisaa_testikommentti("<h4>Havainnon muokkaustesti alkaa</h4>", false); $this->lisaa_testikommentti("Muokataan ekaa valmista havaintota (Linnut)", false); $this->muokattava = $this->havainto1; //====================================================================== // Testataan ennen muutoksia onTallennuskelpoinen-metodi, jonka // pitäisi valittaa: $this->lisaa_testikommentti("Kokeillaan tallentaa ennen muutoksia,\n minka ei pitaisi onnistua:", false); if ($this->muokattava->tallenna_muutokset() == Havainto::$OPERAATIO_ONNISTUI) { $this->lisaa_testikommentti("Virhe: muuttumattomia tietoja ei\n ole tarkoitus antaa tallentaa!", true); } else { $this->lisaa_testikommentti("Oikein: muuttumattomia tietoja ei\n tallenneta!", false); } //====================================================================== // ASetetaan kuvaukselle tahallaan vääriä arvoja (paikaksi tyhjä): $this->muokattava->set_paikka(""); $this->lisaa_testikommentti("Testataan tahallaan tallennus,\n jonka pitaisi valittaa:", false); // tyhjennetään vielä aiemmat virheilmoitukset: $this->muokattava->tyhjenna_virheilmoitukset(); // Virheilmoitus pitäisi tulla: if ($this->muokattava->tallenna_muutokset() == Havainto::$OPERAATIO_ONNISTUI) { $this->lisaa_testikommentti("Virhe: tyhjä paikka-muuttuja livahti ohi\n tarkastuksen!", true); } else { if ($this->muokattava->virheilmoitusten_lkm() == 1) { $this->lisaa_testikommentti("Oikein: Tiedoissa virheita:<br/>" . $this->muokattava->tulosta_virheilmoitukset(), false); } else { $this->lisaa_testikommentti("Virhe: virheilmoituksia (" . $this->muokattava->virheilmoitusten_lkm() . " kpl):<br/>" . $this->muokattava->tulosta_virheilmoitukset(), true); } } // tyhjennetään vielä aiemmat virheilmoitukset: $this->muokattava->tyhjenna_virheilmoitukset(); //====================================================================== // ASetetaan havainnolle hyviä arvoja: $muokattu_paikka = "Naapurin pihallla"; $muokattu_vuosi = 1999; $this->muokattava->set_paikka($muokattu_paikka); $this->muokattava->set_vuosi($muokattu_vuosi); $this->lisaa_testikommentti("Testataan hyvien muutosten tallennus, \n jonka ei pitaisi valittaa:", false); // tyhjennetään vielä aiemmat virheilmoitukset: $this->muokattava->tyhjenna_virheilmoitukset(); // Virheilmoituksia ei pitäisi tulla: if ($this->muokattava->tallenna_muutokset() === Havainto::$OPERAATIO_ONNISTUI) { $this->lisaa_testikommentti("Oikein! Tallennus ok!", false); // Kokeillaan hakea sama tietokannasta ja varmistetaan, että // muutettu kommentti on todella muuttunut: // Huom! Alla vuoden vertailussa pitää olla merkit noin. Täysi // identtisyys ei mene läpi. Menisi, jos vuosi olisi // määritelty $muokattu_vuosi = "1999". Liittyy ilmeisesti // tapaan, jolla numeroarvot jossakin vaiheessa muuttuvat merkkijonoiksi. $testi = new Havainto($this->tietokantaolio, $this->muokattava->get_id()); if ($testi->get_paikka() === $muokattu_paikka && $testi->get_vuosi() == $muokattu_vuosi) { $this->lisaa_testikommentti("Muutokset oikein tietokannassa!\n Paikka on nykyaan: '" . $testi->get_paikka() . "' ja " . "vuosi '" . $testi->get_vuosi() . "'", false); } else { $this->lisaa_testikommentti("Muutokset vaarin tietokannassa!\n Paikka on nykyaan: '" . $testi->get_paikka() . "' ja " . "vuosi '" . $testi->get_vuosi() . "'", true); } } else { $this->lisaa_testikommentti("Virhe: Tallennus ei ok:<br/>" . $this->muokattava->tulosta_virheilmoitukset(), true); $testi = new Havainto($this->tietokantaolio, $this->muokattava->get_id()); $this->lisaa_testikommentti(" Tietokannassa seuraavat tiedot:\n Paikka on nykyaan: '" . $testi->get_paikka() . "' ja " . "vuosi '" . $testi->get_vuosi() . "'", true); } //====================================================================== $this->lisaa_testikommentti("<h4>Havainnon muokkaustesti loppui</h4>", false); // Tyhjennetään virheilmoitukset: $this->tyhjenna_virheilmoitukset(); //====================================================================== //====================================================================== }