Java etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Java etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

13 Ekim 2014 Pazartesi

PrimeFaces ile Excel'den Database'e Veri Aktarımı

Bu yazımda sizlere PrimeFaces fileUpload componentini kullanarak bir excel dosyasında ki verileri okuyup , okuduğumuz bu verileri JPA ile DB ye nasıl kaydedeceğimizi anlatacağım


Öncelikle bir excel dosyasını okumak için aşağıda ki linkden gerekli jarları indirip projeye eklemeniz gerekiyor.


Bu kütüphaneleri indirip projeye ekledikten sonra artık excel i parse etmeye başlayabiliriz.(Örnek bir excel dosyası yazının sonunda ekte bulunmakta)

private Vector read(String fileName) {
        Vector cellVectorHolder = new Vector();
        try {
            File file = new File(fileName);
            Workbook wb = WorkbookFactory.create(file);
            Sheet mySheet = wb.getSheetAt(0);
            Iterator<Row> rowIter = mySheet.rowIterator();
            while (rowIter.hasNext()) {
                   XSSFRow myRow = (XSSFRow) rowIter.next();
                   Iterator cellIter = myRow.cellIterator();
                   Vector cellStoreVector = new Vector();
                   while (cellIter.hasNext()) {
                          XSSFCell myCell = (XSSFCell) cellIter.next();
                          cellStoreVector.addElement(myCell);
                   }
                   cellVectorHolder.addElement(cellStoreVector);
                   file.delete();
             }
             } catch (Exception e) {
                    e.printStackTrace();
             }
        return cellVectorHolder;
}

Yukarıda ki  metod excelin içinde ki verileri Vector tipinde bir object şeklinde bize dönüyor.Ön yüzde bu component aşağıda ki gibi kullanılır.

<p:fileUpload  fileUploadListener="#{kitapKayitBean.handleFileUpload}"
       mode="advanced"/>

Artık handleFileUpload metodumuzu yazabiliriz

public void handleFileUpload(FileUploadEvent event) {
       Kitaplar kitapobj = new Kitaplar();
       List<Kitaplar> kitaplarList = new ArrayList<Kitaplar>();
       Vector dataHolder = read(path + event.getFile().getFileName());
       for (int i = 1; i < dataHolder.size(); i++) {
             Vector cellStoreVector = (Vector) dataHolder.elementAt(i);
       for (int j = 0; j < cellStoreVector.size(); j++) {
             XSSFCell myCell = (XSSFCell) cellStoreVector.elementAt(j);
             if (myCell.getColumnIndex() == 0) {                                                    kitapobj.setKitapID(Integer.parseInt(myCell.toString()
                                               .split("\\.")[0]));
             } else if (myCell.getColumnIndex() == 1) {
                                  kitapobj.setKitapad(myCell.toString());
             } else if (myCell.getColumnIndex() == 2) {
                                  kitapobj.setYazarad(myCell.toString());
             } else if (myCell.getColumnIndex() == 3) {
                                  kitapobj.setKitaptur(myCell.toString());
             } else {
                    kitapobj.setKitapdurum(myCell.toString());
             }
             if (kitapobj.getKitapID() != null
                && kitapobj.getKitapad() != null
                && kitapobj.getYazarad() != null
                && kitapobj.getKitaptur() != null
                && kitapobj.getKitapdurum() != null) {
                    kitaplarList.add(kitapobj);
                    kitapobj = new Kitaplar();
             }
                          
         }
    }
            
             for (int i = 0; i < kitaplarList.size(); i++) {
                    service.kitapKaydet(kitaplarList.get(i));
             }
            
}

Bu kodda kendinize göre ufak değişiklikler yaparak kullandığımız takdirde DB ye kayıt atabiliriz.

for (int i = 0; i < kitaplarList.size(); i++) {
       service.kitapKaydet(kitaplarList.get(i));
}

Bu kısımda daha önceki yazılarımda anlattığım gibi JPA ile kayıt atıyoruz.

Buradan bahsettiğim örnek excel dosyasını indirebilirsiniz.

5 Aralık 2013 Perşembe

JAVA DA RSS OKUMA

RSS çeşitli internet siteleri tarafından yayınlanan haber vb. içeriğin tek bir ortamdan topluca izlenebilmesine olanak sağlayan yeni bir içerik besleme yöntemidir. RSS – Real Simple Syndication, RDF Site Summary veya RichSite Summary (Zengin Site Özeti) kelimelerinin baş harflerinden oluşan kısaltmadır. XML biçiminde olan RSS dosyaları ilk olarak NetScape firması tarafından geliştirilmeye başlanmıştır. RSS dosyalarının kullanımı her geçen gün artarak yaygınlaşmaktadır.
RSS yöntemini destekleyen sitelerin hazırladıkları XML biçimli dosyalara bir çok programla erişmek mümkündür. XML okuyucusu olan bu programlar, web gezgini veya e-posta istemcisi olabileceği gibi sadece RSS içeriği izlemek için hazırlanan masaüstü programları da olabilir.
İşte biz de bu yazımızda bir RSS linkinden gerekli bilgilerin nasıl çekildiğini öğreneceğiz.
RSS dosyalarında ki xml tag leri genelde aynıdır.Bunlar "title","content","date" ilh.
Tagler genelde aynı olduğundan,Java da RSS okuma işlemi için iki tane kütüphane yazılmıştır.Bu iki kütüphaneyi de projemize eklememiz gerekir.Bu kütüphaneler JDOM ve rome kütüphaneleridir.JDOM u buradan , rome kütüphanesini ise buradan indirebilirsiniz.
Bu kütüphaneleri indirip projemize ekledikten sonra artık kodlamaya başlayabiliriz demektir.RSS linki olarak kendi blogumun rss feed ini kullandım.


BlogItems.java

public class BlogItems implements Serializable {

    private String title;
    private String content;
    private String date;

    public BlogItems(String title, String content, String date) {
        this.title = title;
        this.content = content;
        this.date = date;
    }


public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }
}



BlogVeriler.java

public class BlogVeriler {

    private List<BlogItems> blogItems = new ArrayList<BlogItems>();
    private String url = "http://mesutemre.blogspot.com/feeds/posts/default?alt=rss";

    public List<BlogItems> getBlogItems() {
        return blogItems;
    }
    public void setBlogItems(List<BlogItems> blogItems) {
        this.blogItems = blogItems;
    }
    public void verileriGetir() {
        try {
            URLConnection feedUrl = new URL(url).openConnection();
            SyndFeedInput input = new SyndFeedInput();
            SyndFeed feed = input.build(new com.sun.syndication.io.XmlReader(feedUrl) {
            });
            List<SyndEntry> feedList = feed.getEntries();
            int feedSize = feedList.size();
            for (int i = 0; i < feedSize; i++) {
                SyndEntry entry = (SyndEntry) feedList.get(i);
                String title = entry.getTitle();
                String content = entry.getDescription().getValue();
                String date = entry.getPublishedDate().toString();
                blogItems.add(new BlogItems(title, content, date));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

23 Ağustos 2012 Perşembe

Google’ın Autocomplete Algoritması ve JSuggestField Bileşeni


Google arama motorunda herhangi bir konuda arama yaparken bize tavsiyeler sunması autocomplete algoritması sayesindedir. Bu algoritma belki de son zamanların en güzel algoritmalarından birisidir.


İşte bu işi yapan Java da bir class vardır. Bu classı kullanmak için  buradan jar dosyasını indirmek gerekiyor.  Daha sonra bu jar dosyasını projemize eklememiz gerekiyor.

                                               
Burada kullanacağımız sınıf JSuggestField classıdır. Onunda kullanımı için aşağıda ki kodlara bir göz atabilirsiniz.
package suggestionjava;

import ch.rakudave.suggest.JSuggestField;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.Vector;
import javax.swing.JFrame;

public class SuggestionJava {
    public static void main(String[] args) {
        Vector<String> v=new Vector<>();
        Dimension d=new Dimension(60,20);
        JFrame f=new JFrame();
        v.add("Mesut");
        v.add("Emre");
        v.add("Emirhan");
        v.add("Hüsamettin");
        v.add("İlker");
        v.add("Muhammed");
        JSuggestField sg =new JSuggestField(f);
        sg.setSuggestData(v);
        sg.setPreferredSize(d);
        f.setVisible(true);
        f.setLocationRelativeTo(null);
        f.setSize(200, 100);
        f.setLayout(new FlowLayout());
        f.add(sg);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
    }
}
Bu classın constructoru gereği içine bir frame ve bir Vector atabiliriz. Ya da sadece Frame de alabiliriz. Biz yalnızca Frame nesnesi alıp daha sonra setSuggestData() metodu ile Vector nesnesi ekledik. Program çalışında karşımıza bir textField gelecek. Netekim bu class JTextField classında türetilmiştir. Pencere ki textField’in en ve boy uzunluğunu ayarlamak için Dimension nesnesinden yararlanılır.  Bu nesne 11. Satırda tanımlanmıştır.
Vector nesnesine gördüğünüz gibi veri ekledik. Daha önceki yazılarımda bu classdan bahsetmiştim. Dinamik bir dizi gibi düşünebiliriz. add() metodu ile bu dinamik diziye eleman ekleyebiliriz. Bu elemanların String nesnesi olması şarttır. Programın görüntüsü aşağıda ki gibidir.

                                                                       

20 Temmuz 2012 Cuma

Javada ArrayList Sınıfı


Şimdi nesneleri bellekte tutmak için kullanışlı ve bir o kadar da yararlı olan ArrayList sınıfından bahsedeceğiz. Nesneleri bir dizi yardımıyla da tutabiliriz. Fakat bu dizinin boyutunu değiştiremeyiz. Java bizlere bu sınıfı kullanarak dinamik bir bellek kullanımı ve aynı zamanda limitsiz bir nesne tutmamızı sağlar. Bu sınıfın belli başlı metodları aşağıda ki gibidir.
ArrayList()                                                                 Boş bir liste oluşturur.
Add(o):void                                                                o elemanını listeye  ekler
Add(index:int,o):void                                                   listenin belirtilen indexine o elemanını ekler.
Clear():void                                                                Tüm listeyi siler.
Contains(o:Object) :boolean                                        o elemanının listede olup olmadığına bakar.
Get(index:int)                                                              belirtilen indexde ki elemanı getirir.
indexOf(o:Object):int                                                  Belirtilen nesnenin indexini döner.
isEmpty():boolean                                                       Listenin boş olup olmadığını kontrol eder.
Remove(o:Object):boolean                                         belirtilen  elemanı listeden  kaldırır.

Bilindiği üzere ArrayList generic bir sınıftır. Kullanım şekli aşağıda ki gibidir.
ArrayList<data type> isim=new ArrayList<data type>();
Şeklindedir.
Aşağıda ki kodlara bir göz atabilirsiniz.
package arrarylistkullanimi;
import java.util.ArrayList;
public class ArraryListKullanimi {
    public static void main(String[] args) {
        ArrayList<String> arr=new ArrayList<String>();
        arr.add("Mesut Emre");
        arr.add("İsmail Enver");
        arr.add("Melikşah");
        arr.add("Mert");       
        if(arr.isEmpty())
        {
            System.err.println("Listede henüz eleman yoktur");
        }
        else
        {
            for (int i = 0; i < arr.size(); i++) {
                System.out.println(arr.get(i));
            }
        }       
        if (arr.contains("Mesut Emre")) {
            System.out.println("Şahıs listede vardır.");
        }
        else
        {
            System.err.println("Şahıs listede yoktur.");
        }     
        arr.remove("Mert");       
        for (int i = 0; i < arr.size(); i++) {
            System.out.println(arr.get(i));
        }       
        arr.clear();       
        if (arr.isEmpty()) {
            System.err.println("Liste eleman yoktur.");
        }
        else
        {
            System.out.println("Listede eleman vardır.");
        }
    }
}

Kodların çıktısı aşağıda ki gibidir.









23 Nisan 2012 Pazartesi

Java da Animasyon Kavramı


JAVA DA ANİMASYON UYGULAMALARI
Bilindiği üzere canlandırma(animasyon) bir resmin ya da resimlerin belirli zaman aralıklarıyla ard arda gösterilmesi ile olur. Şimdi animasyon oluşturmak için yapılması gereken adımları teker teker açıklayalım.

Resim Yükleme
Java da resim yüklemek için Toolkit  classından yararlanılır. Bu class’ın kullanılışı şu şekildedir.
            Toolkit toolkit=Toolkit.getDefaultToolkit();
            Image resim=toolkit.getImage(dosyaYolu);  
Resim Çizme
Image’ler Java da Graphics sınıfının drawImage()  metoduyla çizilir.
public void paint(Graphics g){
                        g.drawImage(image,0,0,this);
            }         
Zamanlama
Belli bir aralıkta repaint() metodu çağırılırsa resimler ya da istenilen şey art arda çizilmiş olur . Aşağıda ki kodu inceleyelim.
            java.util.Timer timer=new java.util.Timer();
            TimerTask task=new TimerTask(){
                        public void run(){
                                   repaint();
            }
            };
            timer.schedule(task,0,500);

package animasyonuygulamasi;

import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Vector;

/**
 *
 * @author MESUT EMRE
 */
public class olay extends Canvas {
    private Vector resimler=new Vector();
    private int i=0;

    public olay() {
        Timer timer=new Timer();
        TimerTask timerTask=new TimerTask() {

            @Override
            public void run() {
                repaint();
            }
        };
        timer.schedule(timerTask, 0,800);
    }
   
    public void resimekle(String dosyayolu)
    {
        Toolkit toolkit=Toolkit.getDefaultToolkit();
        Image resim=toolkit.getImage(dosyayolu);
        resimler.add(resim);
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        i=i%images.size();
        Image image=(Image)resimler.get(i);
        g.drawImage(resim, 0, 0, this);
        i++;
    }

}

Kaynak kodları ve programın çalıştırılabilir halini buradan indirebilirsiniz. İyi çalışmalar...