@Override
    public ArrayList<String> lisaaViite(Viitetyyppi tyyppi, Map arvot) {

        Viite lisattava;
        Syotetarkastaja tarkastaja = new Syotetarkastaja();

        if (tyyppi == Viitetyyppi.article) {
            lisattava = new Article(tarkastaja);

        } else if (tyyppi == Viitetyyppi.book) {
            lisattava = new Book(tarkastaja);

        } else if (tyyppi == Viitetyyppi.inproceedings) {
            lisattava = new InProceedings(tarkastaja);

        } else {
            return null;
        }

        lisattava.lisaaKentat(arvot);

        if (tarkastaja.getVirheet().isEmpty() && lisattava.kenttaMaarittelyVirheet().isEmpty()) {
            lisattava.lisaaCitationKey(ag.luoAvain(lisattava));

            try {
                db.insertEntry(lisattava);
            } catch (SQLException | NamingException e) {
            }

            viimeksiLisatynCkey = lisattava.getCitationKey();

            return null;
        }
        ArrayList<String> virheet = tarkastaja.getVirheet();
        virheet.addAll(lisattava.kenttaMaarittelyVirheet());

        //jos oli virheitä palautetaan ne
        return virheet;
    }