/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cz.vutbr.feec.utko.fojtoval.krypto.sifry;

import cz.vutbr.feec.utko.fojtoval.krypto.funkce.Constant;
import java.util.List;

/**
 * Jednoducha substituce - zadani abecedy.
 * @author fojtoval
 */
public class ZadaniAbecedy extends Substituce{

    private char[] abeceda = null;

    /**
     * Sifrovani pomoci zadani abecedy (substituce).
     * @param zdroj otevreny text
     * @return zasifrovany text
     */
    @Override
	public String sifruj(String zdroj) {

		return Utils.zmenaTextuSubs (zdroj, this.abeceda, true);

	}

    /**
     * Nastaveni a kontrola parametru sifry.
     * @param parametr
     */
    @Override
    public void setParametr(Object parametr) {

        if (parametr == null) {
            throw (new NullPointerException ("Parametr je null!"));
        } else if (!(parametr instanceof List)) {
                   throw (new IllegalArgumentException ("Prametr neni List! (" + parametr + ")"));
               }

        List params = (List)parametr;

        if (params.size() != 26) {
            throw (new IllegalArgumentException ("Abeceda neni kompletni ( " + params.size() + ") ."));
        }

        this.abeceda = Utils.zadaniAbc(Constant.abcd, params);
            
    }

    /**
     * Nevyuziva se (pouziva se trida SubstituceZadaniAbecedy).
     * @param zdroj
     * @return
     */
    @Override
    public String lusti(String zdroj) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /**
     * Nevyuziva se (pouziva se trida SubstituceZadaniAbecedy).
     * @return
     */
    @Override
    public String abecedaLusToString() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /**
     * Prevod sifrovaci abecedy na String.
     * @return nova abeceda
     */
    @Override
    public String abecedaSifToString() {
        return String.valueOf (this.abeceda);
    }

}
