Velocity Engine

Velocity Engine bu günlerde öğrendiğim çok kullanışlı bir araç. Dinamik olarak dosyaların içlerini değiştirmeye olanak sağlıyor. Yani dinamik olarak bir TXT dosyasının içeriğini, veritabanından çektiğiniz bilgilerle doldurabilir ya da göndereceğiniz bir mailin içeriğini, kimlere göndereceğiniz bilgisini dinamik olarak oluşturabilirsiniz. Sadece TXT dosyalarını değil aklınıza gelebilecek tüm dosya türlerini dinamik olarak değiştirebilirsiniz. Buna HTML ve XML dosyalarıda dahil ve üstelik tüm bunları JAVA kullanarak gerçekleştiriyorsunuz.

Öncelikle Velocity Engini indirelim ve indirdiğimiz dosyayı projemizin build path’ına ekleyelim.

Sonrasında her programlama örneğine başlanıldığında yapılan bir HelloWorld örneği yapalım. Bunun için öncelikle kullanacağımız dosyayı oluşturualım.

merhaba.dat

Merhaba $isim!  Velocity!

Sonra bu dosyayı, açıp, $isim olarak belirttiğimiz alana bizim istediğimiz String’i yazacak kodu yazalım. Örneğimizde isim yerine WordPress yazdıracağız.

Merhaba.java

 package velocity.Merhaba;

import java.io.StringWriter;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;

public class Merhaba {

 private static final String FILENAME = "merhaba.dat";

 public static void main(String[] args) throws Exception {

 // Engine intialize ediliyor
 VelocityEngine ve = new VelocityEngine();
 ve.init();

 // Önceden oluşturduğumuz dosyayı Tamplete'e alınıyor
 Template t = ve.getTemplate(FILENAME);

 // Dosya içindeki isim değişkenine atanacak context'imizi oluşturuyoruz
 VelocityContext context = new VelocityContext();
 context.put("isim", "WordPress");

 // StringWriter kullanarak oluşturduğumuz değişkeni yazıyoruz.
 StringWriter writer = new StringWriter();
 t.merge(context, writer);

 // Ekrana basıyoruz.
 System.out.println(writer.toString());
 }
}
 

Bu kodu derleyip çalıştırdığımızda aşağıdaki ekran çıktısını almamız gerekiyor.

Merhaba WordPress!  Velocity!

Şimdi ise neler yapabileceğimizi daha iyi gösterebilecek başka bir örneğe geçelim. Yine basit bir örnek olsun ve bizim önceden bir liste içinde tuttuğumuz kitapları ekrana bassın. Bunun için yine örnek dosyamızı oluşturalım.

kitapListesi.dat

$kitapList.size() Adet kitabiniz bulunmakta
Kitap Listesi:
#foreach( $kitap in $kitapList )
Kitap Adi: “$kitap.isim” yazari $kitap.yazar
#end
Iyi gunler

Sonrasında yine bu örnek dosyayı kullanarak, oluşturduğumuz liste içerisindeki bilgileri ekrana yazdıracak kodumuzu yazalım.

Kitap.java

package velocity.kitap;

import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;

public class Kitap {

 private static final String FILENAME = "kitapListesi.dat";

 public static void main(String[] args) {
 // Engine intialize ediliyor
 VelocityEngine ve = new VelocityEngine();
 ve.init();

 // Önceden oluşturduğumuz dosyayı Tamplete'e alınıyor
 Template t = ve.getTemplate(FILENAME);

 // Dosya içindeki isim değişkenine atanacak context'imizi oluşturuyoruz
 VelocityContext context = new VelocityContext();
 context.put("kitapList", getKitapList());

 // StringWriter kullanarak oluşturduğumuz değişkeni yazıyoruz.
 StringWriter writer = new StringWriter();
 t.merge(context, writer);

 // Ekrana basıyoruz.
 System.out.println(writer.toString());

 }

 private static ArrayList getKitapList() {
 ArrayList kitapList = new ArrayList();
 Map map = new HashMap();
 map.put("isim", "Fahrenheit 451");
 map.put("yazar", "Ray Bradbury");
 kitapList.add(map);

 map = new HashMap();
 map.put("isim", "The Time Machine");
 map.put("yazar", "H. G. Wells");
 kitapList.add(map);

 map = new HashMap();
 map.put("isim", "Brave New World");
 map.put("yazar", "Aldous Huxley");
 kitapList.add(map);

 map = new HashMap();
 map.put("isim", "1984");
 map.put("yazar", "George Orwell");
 kitapList.add(map);

 return kitapList;
 }

}
 

Yine bu kodu derleyip çalıştırdığınızda aşağıdakine benzer bir çıktı alacaksınız.

4 Adet kitabiniz bulunmakta
Kitap Listesi:
Kitap Adi: “Fahrenheit 451” yazari Ray Bradbury
Kitap Adi: “The Time Machine” yazari H. G. Wells
Kitap Adi: “Brave New World” yazari Aldous Huxley
Kitap Adi: “1984” yazari George Orwell
Iyi gunler

Yazının başında da belirttiğim gibi her dosya uzantısı için Velocity Engine’i kullanmanız mümkün.
Son olarak bu kodlar Ubuntu altında Eclipse ile Velocity Engine 1.7 ve  Java SE 1.6 kullanarak derlenmiştir.

End Of Line