Logo Search packages:      
Sourcecode: zemberek version File versions  Download package

List<Ek> net::zemberek::yapi::ek::XmlEkOkuyucu::ardisilEkleriOlustur ( Ek  anaEk,
Element  ekElement 
) [inline, private]

Bir eke iliskin ardisil ekler belirlenir. ardisil ekler a) ek kumelerinden b) normal tek olarak c) dogrudan baska bir ekin ardisil eklerinden kopyalanarak elde edilir. Ayrica eger oncelikli ekler belirtilmis ise bu ekler ardisil ek listeisnin en basina koyulur.

Parameters:
ekElement : ek xml bileseni..
anaEk ardisil ekler eklenecek asil ek
Returns:
Ek referans Listesi.

Definition at line 201 of file XmlEkOkuyucu.java.

References net::zemberek::yapi::ek::Ek::ad, and net::zemberek::yapi::ek::Ek::ardisilEkler.

Referenced by ekleriOlustur().

                                                                       {

        Set<Ek> ardisilEkSet = new HashSet<Ek>();
        Element ardisilEklerEl = XmlYardimcisi.ilkEleman(ekElement, "ardisil-ekler");
        if (ardisilEklerEl == null) return Collections.emptyList();

        // tek ekleri ekle.
        List<Element> tekArdisilEkler = XmlYardimcisi.elemanlar(ardisilEklerEl, "aek");
        for (Element element : tekArdisilEkler) {
            String ekAdi = element.getTextContent();
            Ek ek = this.ekler.get(ekAdi);
            if (ek == null) throw new EkKonfigurasyonHatasi(anaEk.ad() + " icin ardisil ek bulunamiyor! " + ekAdi);
            ardisilEkSet.add(ek);
        }

        // kume eklerini ekle.
        List<Element> kumeEkler = XmlYardimcisi.elemanlar(ardisilEklerEl, "kume");
        for (Element element : kumeEkler) {
            String kumeAdi = element.getTextContent();
            Set<Ek> kumeEkleri = ekKumeleri.get(kumeAdi);
            if (kumeEkleri == null) throw new EkKonfigurasyonHatasi("kume bulunamiyor..." + kumeAdi);
            ardisilEkSet.addAll(kumeEkleri);
        }

        //varsa baska bir ekin ardisil eklerini kopyala.
        Attr attr = ardisilEklerEl.getAttributeNode("kopya-ek");
        if (attr != null) {
            final String kopyaEkadi = attr.getValue();
            Ek ek = this.ekler.get(kopyaEkadi);
            if (ek == null) throw new EkKonfigurasyonHatasi(anaEk.ad() + " icin kopyalanacak ek bulunamiyor! " + kopyaEkadi);
            ardisilEkSet.addAll(ek.ardisilEkler());
        }

        List<Ek> ardisilEkler = new ArrayList<Ek>(ardisilEkSet.size());

        //varsa oncelikli ekleri oku ve ardisil ekler listesinin ilk basina koy.
        // bu tamamen performans ile iliskili bir islemdir.
        Element oncelikliEklerEl = XmlYardimcisi.ilkEleman(ekElement, "oncelikli-ekler");
        if (oncelikliEklerEl != null) {
            List<Element> oncelikliEkler = XmlYardimcisi.elemanlar(oncelikliEklerEl, "oek");
            for (Element element : oncelikliEkler) {
                String ekAdi = element.getTextContent();
                Ek ek = this.ekler.get(ekAdi);
                if (ek == null) throw new EkKonfigurasyonHatasi(anaEk.ad() + " icin oncelikli ek bulunamiyor! " + ekAdi);
                if (ardisilEkSet.contains(ek)) {
                    ardisilEkler.add(ek);
                    ardisilEkSet.remove(ek);
                } else log.warning(anaEk.ad() + "icin oncelikli ek:" + ekAdi + " bu ekin ardisil eki degil!");
            }
        }

        ardisilEkler.addAll(ardisilEkSet);
        return ardisilEkler;
    }


Generated by  Doxygen 1.6.0   Back to index