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

Last change on this file since 24 was 22, checked in by fmguler, 14 years ago

Refs #3 - The new com.fmguler.ven package is created. Project netbeans encoding is changed from windows 1254 to UTF-8. Existing Turkish source files are transformed to UTF-8. Project license is set as apache 2.0 and netbeans license template is created (which is copied from netbeans apache20 and project name is added). To install this template to netbeans, you should import the etc/license/license-ven-apache20.txt to netbeans->tools->templates ->licenses.

The new Ven class is created having the new license template. Now the translation task is to be done.

File size: 7.2 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.