source: trunk/fmgVen/src/net/fmg/ven/Ven.java @ 11

Last change on this file since 11 was 11, checked in by fmguler, 16 years ago

FMG VEN kütüphanesi - ilk import

File size: 7.1 KB
Line 
1/*
2 * Ven.java
3 *
4 * Created on December 18, 2006, 5:58 PM
5 * (4.12.06 tarihli SpringDaoDeneme çalýþmasýndan derlenmiþtir)
6 *
7 * Ven - Ayar Yerine Gelenek veritabaný eriþim nesnesi
8 */
9
10package net.fmg.ven;
11
12import java.util.HashMap;
13import java.util.HashSet;
14import java.util.List;
15import java.util.Map;
16import java.util.Set;
17import javax.sql.DataSource;
18import net.fmg.ven.arac.Cevir;
19import org.springframework.beans.BeanWrapper;
20import org.springframework.beans.BeanWrapperImpl;
21import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
22import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
23import org.springframework.jdbc.core.namedparam.SqlParameterSource;
24
25/**
26 * Veritabaný eriþim nesnesi temel sýnýf
27 * @author Fatih Mehmet Güler
28 */
29public class Ven {
30    private SorguUretici uretici;
31    private SorguEslestirici eslestirici;
32    private NamedParameterJdbcTemplate sablon;
33    private Map kullanimlar;
34    private boolean hataAyiklama = false;
35   
36    /** Creates a new instance of Ven */
37    public Ven() {
38        uretici = new SorguUretici();
39        eslestirici = new SorguEslestirici();
40        kullanimlar = new HashMap();
41    }
42   
43    /**
44     * Kullaným No: O kullanýma göre otomatik tespit edeceði baðlarý numaralandýrýr
45     * <p> ÖNEMLÝ: daha bitmedi :)
46     */
47    public List nesneleriAl(Class nesneSinifi, Integer kullanimNo){
48        Set baglar = new HashSet();
49        kullanimlar.put(kullanimNo,baglar);
50        baglar.add(nesneSinifi.getSimpleName());
51       
52        String sorgu = uretici.secmeSorgusuUret(baglar, nesneSinifi);
53        if(hataAyiklama) System.out.println("SQL: "+sorgu);
54       
55        List sonuc = eslestirici.listele(sorgu,new HashMap(),nesneSinifi);
56        return sonuc;
57    }
58   
59    /**
60     * Gönderilen baðlara göre nesneyi iliþkileriyle birlikte veritabanýndan getirir
61     */
62    public List nesneleriAl(Class nesneSinifi, Set baglar){
63        String sorgu = uretici.secmeSorgusuUret(baglar, nesneSinifi);
64        if(hataAyiklama) System.out.println("SQL: "+sorgu);
65       
66        List sonuc = eslestirici.listele(sorgu,new HashMap(),nesneSinifi);
67        return sonuc;
68    }
69   
70    /**
71     * Gönderilen baðlara göre nesneyi iliþkileriyle birlikte verilen ölçüte göre veritabanýndan getirir
72     * Verilen ölçütlere göre
73     */
74    public List nesneleriAl(Class nesneSinifi, Set baglar, Olcut olcut){
75        String sorgu = uretici.secmeSorgusuUret(baglar, nesneSinifi);
76        sorgu += " where 1=1"+olcut.olcutleriAl();
77        if(hataAyiklama) System.out.println("SQL: "+sorgu);
78       
79        List sonuc = eslestirici.listele(sorgu,olcut.parametreler(),nesneSinifi);
80        return sonuc;
81       
82    }
83   
84    /**
85     * Gönderilen baðlara göre nesneyi iliþkileriyle birlikte verilen ölçüte göre veritabanýndan kaç satýr olacaðýný sayar
86     * Verilen ölçütlere göre
87     */
88    public int nesneleriSay(Class nesneSinifi, Set baglar){
89        String sorgu = uretici.saymaSorgusuUret(baglar, nesneSinifi);       
90        if(hataAyiklama) System.out.println("SQL: "+sorgu);
91        int sonuc = sablon.queryForInt(sorgu,new HashMap());
92        return sonuc;
93    }
94   
95    /**
96     * Gönderilen baðlara göre nesneyi iliþkileriyle birlikte verilen ölçüte göre veritabanýndan kaç satýr olacaðýný sayar
97     * Verilen ölçütlere göre
98     */
99    public int nesneleriSay(Class nesneSinifi, Set baglar, Olcut olcut){
100        String sorgu = uretici.saymaSorgusuUret(baglar, nesneSinifi);
101        sorgu += " where 1=1"+olcut.olcutleriAl();
102        if(hataAyiklama) System.out.println("SQL: "+sorgu);
103        int sonuc = sablon.queryForInt(sorgu,olcut.parametreler());
104        return sonuc;
105    }
106   
107    /**
108     * Gönderilen baðlara göre nesneyi iliþkileriyle birlikte veritabanýndan getirir
109     * <p> Sadece Nesne
110     */
111    public Object nesneAl(Class nesneSinifi, Integer no, Set baglar){
112        String sorgu = uretici.secmeSorgusuUret(baglar, nesneSinifi);
113        Olcut olcut = new Olcut().ekle("and "+Cevir.vt(nesneSinifi.getSimpleName())+".no = :___no").ekle("___no",no);
114        sorgu += " where 1=1"+olcut.olcutleriAl();
115        if(hataAyiklama) System.out.println("SQL: "+sorgu);
116       
117        List sonuc = eslestirici.listele(sorgu,olcut.parametreler(),nesneSinifi);
118        if (sonuc.size()==0) return null;
119        if (sonuc.size()>1) System.out.println("**UYARI>> nesneAl birden fazla sonuç döndürüyor, haberin olsun");
120        return sonuc.get(0);
121    }
122   
123    /**
124     * Gönderilen baðlara göre nesneyi iliþkileriyle birlikte verilen ölçüte göre veritabanýndan getirir
125     * <p> Sadece Nesne, ölçütlere göre
126     */
127    public Object nesneAl(Class nesneSinifi, Integer no, Set baglar, Olcut olcut){
128        String sorgu = uretici.secmeSorgusuUret(baglar, nesneSinifi);
129        sorgu += " where 1=1 and "+Cevir.vt(nesneSinifi.getSimpleName())+".no = :___no "+olcut.olcutleriAl(); //No diðer ölçütlerden önce gelmeli order-limit için
130        olcut.ekle("___no",no);
131        if(hataAyiklama) System.out.println("SQL: "+sorgu);
132       
133        List sonuc = eslestirici.listele(sorgu,olcut.parametreler(),nesneSinifi);
134        if (sonuc.size()==0) return null;
135        if (sonuc.size()>1) System.out.println("**UYARI>> nesneAl birden fazla sonuç döndürüyor, haberin olsun");
136        return sonuc.get(0);
137       
138    }
139   
140    public void nesneSakla(Object nesne){       
141        String sorgu = uretici.guncellemeSorgusuUret(nesne);
142        SqlParameterSource parametreKaynagi = new BeanPropertySqlParameterSource(nesne);
143        sablon.update(sorgu,parametreKaynagi);
144        //YAP: yeni eklenenin nosunu almak için daha etkin bir yöntem bulunabilir (üreticinin içinde deki beanwrapper kullanýlabilir vs)
145        BeanWrapper wr = new BeanWrapperImpl(nesne);
146        if(wr.getPropertyValue("no")==null){           
147            wr.setPropertyValue("no",new Integer(sablon.queryForInt("select currval('"+Cevir.vt(nesne.getClass().getSimpleName())+"_no')", new HashMap())));
148        }
149    }
150   
151    public void nesneSil(Integer no, Class nesneSinifi){
152        String sorgu = "delete from "+Cevir.vt(nesneSinifi.getSimpleName())+" where no = :no ;";
153        Map parametreler = new HashMap(2);
154        parametreler.put("no",no);
155        sablon.update(sorgu,parametreler);
156    }
157   
158    //SETTERS--------------------------------------------
159    public void setDataSource(DataSource dataSource){
160        if (dataSource==null) throw new RuntimeException("DataSource null olamaz!!! Bu koþullar altýnda daha fazla çalýþamam :)");
161        this.sablon = new NamedParameterJdbcTemplate(dataSource);
162        this.eslestirici.setSablon(sablon);
163    }
164   
165    public void setHataAyiklama(boolean hataAyiklama) {
166        this.hataAyiklama = hataAyiklama;
167        eslestirici.setHataAyiklama(hataAyiklama);
168    }
169   
170    public void setNesnePaketleri(Set nesnePaketleri) {
171        uretici.getNesnePaketleri().addAll(nesnePaketleri);
172        eslestirici.getNesnePaketleri().addAll(nesnePaketleri);
173    }
174   
175    public NamedParameterJdbcTemplate getSablon() {
176        return sablon;
177    }
178}
Note: See TracBrowser for help on using the repository browser.