/*
 * Olcut.java
 *
 * Created on December 20, 2006, 1:45 PM
 * (4.12.06 tarihli SpringDaoDeneme çalışmasından derlenmiştir)
 *
 * Ven - Ayar Yerine Gelenek veritabanı erişim nesnesi
 */
package net.fmg.ven;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import net.fmg.ven.arac.Cevir;

/**
 * Ven için ölçütlerin belirlenebileceği sınıf
 * @author Fatih Mehmet Güler
 */
public class Olcut {
    private String metin;
    private Map parametreler;
    private Set baglaclar;

    /** 
     * Yeni ölçüt
     */
    public Olcut() {
        this.metin = "";
        this.parametreler = new HashMap();
        this.baglaclar = new HashSet();
        //{"and", "or", "=", "<>", "<", ">"}
    }

    /**
     * YAPILMADI
     */
    public Olcut ekle(Olcut olcut) {
        return null;
    }

    /**
     * YAPILMADI
     */
    public Olcut ekle(List olcutler) {
        return null;
    }

    /**
     * YAPILMADI
     */
    public Olcut ve() {
        return null;
    }

    /**
     * koşul ekle
     */
    public Olcut ekle(String kosul) {
        this.metin += " " + kosul;
        return this;
    }

    /**
     * koşullarda kullanılan parametreleri ekle
     */
    public Olcut ekle(String parametre, Object nesne) {
        this.parametreler.put(parametre, nesne);
        return this;
    }

    /**
     * koşullarda kullanılan parametreleri tümden ekle
     */
    public Olcut ekle(Map parametreler) {
        this.parametreler.putAll(parametreler);
        return this;
    }

    public String olcutleriAl() {
        //((1=1) and ((1=1) and (musteri_numuneler_numune_sahibi.rapor_tarihi is null) and (musteri.no = 4)))
        //Musteri.numuneler.deneyler.deneyTip.ad like :p1
        String sonuc = "";
        metin = metin.replaceAll("\\(", "\\( ");
        metin = metin.replaceAll("\\)", " \\)");
        String[] parcalar = metin.split(" ");
        for (int i = 0; i < parcalar.length; i++) {
            if (!parcalar[i].startsWith(":") && parcalar[i].indexOf(".") >= 0) {
                int sonNokta = parcalar[i].lastIndexOf('.');
                sonuc += " ";
                int u = parcalar[i].length();
                sonuc += Cevir.vt(parcalar[i].substring(0, sonNokta).replace('.', '_'));
                sonuc += Cevir.vt(parcalar[i].substring(sonNokta, u));
            } else {
                sonuc += " " + parcalar[i];
            }
        }
        return sonuc;
    }

    public Map parametreler() {
        return this.parametreler;
    }

    public String toString() {
        return olcutleriAl() + " " + this.parametreler;
    }
}
