wiki-framework-report-kernel

REPORT KERNEL

Konu başlıkları

Report Kernel Nedir ?

Bu kernel , HTML_TAG abstract sınıfından html özelliğini miras alan ve oluşturduğumuz kayıtları bizim istediğimiz başlıklar altında listeleme , bu listeyi e-mail , yazıcı çıktısı şeklinde alma , office/html/metin belgeleri formatına dönüştürebilme özelliklerine sahip abstract bir sınıftır.Bu sınıftan oluşturacağımız yeni Report Kernel'larımız ile kayıtlarımızı tasarladığımız şekilde listeleyebilir , listeyi yazıcı çıktısı , email , office/html/metin belgeleri formatlarına dönüştürebiliriz. Mesela elimizde sınıf/isim/numara bilgileri olan 5 tane öğrenci olsun.Bu öğrencileri sınıf/isim/numara altında listeleyerek raporlarını oluşturmak isteyelim.Report Kernel sınıfından türeteceğimiz yeni Report Kernel'ımızı amacımız doğrultusunda oluşturarak bu işlemleri yapabiliriz.Örnekten önce Report Kernel sınıfına bir göz atalım…

Report Kernel Sınıfı

Sınıf abstract bir sınıf olduğu için nesnesi oluşturulamaz.Bu sınıfı yeni raporlama mekanizmaları oluşturmak için kullanabiliriz.Bunun için zorunlu fonksiyonları raporlama işlemimize göre implement etmeliyiz.

  • Şimdi 5 tane öğrenciyi , Öğrenci Sınfı , Öğrenci Ismi , Öğrenci Numarası bilgileri altında raporlayacak Report Kernel oluşturalım..
  • Veri tabanı kullanmadığımız için öğrenci bilgilerini bu fonksiyonda oluşturalım.. :
void TEST_OGRENCI_BILGI_RAPORU::OGRENCI_BILGISI_OLUSTUR()
{
  QString ogrenci_isim[5] = {"emrah","burak","ozcan","sinan","adem"};
  for( int i = 0 ; i < 5 ; ++i ){
      QStringList row_data;
      row_data << QString::number( i + 1 ) << ogrenci_isim[i] << QString::number(6104400 + i ) ;
      ogrenciler.append(row_data);
  }
}
  • Nesnemizi oluştururken yapıcı fonksiyonumuzda , rapor sayfamızın altlık ve başlık boyutlarını ayarlıyoruz.. Ve öğrenci bilgilerimizi oluşturuyoruz.. :
TEST_OGRENCI_BILGI_RAPORU::TEST_OGRENCI_BILGI_RAPORU( QString rapor_ismi ) : REPORT_KERNEL (rapor_ismi)
{
  OGRENCI_BILGISI_OLUSTUR();
  SET_HEIGHTS ( 30, 30 );
  yazdirilan_kayit_sayisi = 0 ;
  m_max_line_count  =  GET_MAX_LINE_COUNT ( 14 );
}
  • Report Kernel bu akış diyagramındaki gibi çalışmaktadır..

REPORT KERNEL AKIŞ DİYAGRAM

Zorunlu Fonksiyonlar

GET_HEADER()

Bu fonksiyon kernel tarafindan cagrilir.Bu fonksiyonda oluşturacağımız raporun içinde bölüm başlıklarını oluşutururuz.Kernel bu başlıkları alarak header boşuğuna eklemektedir.

  • Örnek report kernel'ımıza göre bu fonksiyonu kodlayalım.. Tablomuzun başlık bilgilerini oluşturduk.Eğer başlık bilgisi yoksa NULL return etmeliyiz.. :
QString TEST_OGRENCI_BILGI_RAPORU::GET_HEADER()
{
   if( yazdirilan_kayit_sayisi > 0 )
   {    SET_HEIGHTS ( 0, 30 );
       return NULL ;
   }
   QStringList header() << "Öğrenci Sınfı" << "Öğrenci Ismi" << "Öğrenci Numarası"; 
   CREATE_TABLE(QStringList()<<""<<""<<"",0,0 );
   ADD_ROW_TO_TABLE(header);
   return GET_TABLE_HTML_STRING();
}
GET_BODY()

Bu fonksiyon kayıtlarımıza erişip , verilerimizi listelediğimiz yerdir.

Burada CREATE_TABLE() fonksiyonu ile verilerimizi listeleyeceğimiz tablomuzu oluştururuz ve verilerimize erişerek verilerimizi , MAX_LINE_COUNT sayısı aşılmayacak miktarda tablomuza satır satır ekleriz ve tablomuzu GET_TABLE_HTML_STRING fonksiyonunu çağırarak html forma dönüştürüp return ederiz. Kernel return ettiğimiz bu html formatını alarak header başlıklarımızın altına eklemektedir.

  • Bu fonksiyonda , oluşturduğumuz öğrenci bilgilerini tablomuza , oluşturduğumuz balışklar altında ekledik.. :
QString TEST_OGRENCI_BILGI_RAPORU::GET_BODY()
{
   if(yazdirilan_kayit_sayisi > 4 ){
       return NULL ;
   }
   CREATE_TABLE(QStringList()<<"Öğrenci Sınfı" << "Öğrenci Ismi" << "Öğrenci Numarası",0,0);
   while(yazdirilan_kayit_sayisi < 5 ){
       ADD_ROW_TO_TABLE ( ogrenciler.at(yazdirilan_kayit_sayisi) );
       ++yazdirilan_kayit_sayisi;
   }
   return GET_TABLE_HTML_STRING();
}
GET_FOOTER()

Bu fonksiyonda , raporumuzun sayfa altlığı ayarını yaptığımız yerdir.Bu fonksiyonda rapor sayfamızın altlığını oluşturur ve html formatıyla return ederiz.Kernel bu altlığı alır ve consturtorda SET_HEIGHTS() fonksiyonu ile oluşturduğumuz sayfa altlığı bölümüne yerleştirir.

  • Örneğimizde bu altlık kullanmadığımız için bu fonksiyondan NULL return ettik.. :
QString TEST_OGRENCI_BILGI_RAPORU::GET_FOOTER()
{
   return NULL;
}
OLUŞTURDUĞUMUZ RAPORUMUZ
  • Oluşturduğumuz öğrencilerin bilgileri alanlar altında sınıflandırılarak rapor oluşturuldu. Oluşturulan rapor , A4 çıktısı olarak alınabilir , zarf olarak yazdırılabilir , mail olarak gönderilebilir ve html sayfası ove word dökümanı olarak saklanabilir.

 

ÖĞRENCİ BİLGİ RAPORU

Hazır Fonksiyonlar

Bu fonksiyonlar , raporumuzda ayarlamalar yapmak için hazırlanmış fonksiyonlardır.Bu fonsiyonlar vasıtasıyla raporumuzdaki header boşluklarını , sayfa altlığını , çıktı alacağımız kağıdımızın boyutlarını ayarlar.

CREATE_HTML_PAGES()

Bu fonksiyon , oluşturulan rapor sayfasını html formatına dönüştürür.

OPEN_PRINTER_PREVIEW()

Bu fonksiyon , raporu yazıcıdan alacağımız çıktı olarak gösterir.

CREATE_TABLE()

Rapor içeriğinin listeleneceği tablomuzu oluşturan fonksiyondur.Fonksiyon parametre olarak verilen QStringList'teki eleman sayısı kadar kolon oluşturur ve bu QStringList'teki header isimlerine gore tablonun header satırını doldurur. Ayni zamanda fonksiyona paramtre olarak verilen border_height ile tablonun border kalınlığı , font_size ile de tablonun font boyutu ayarlanabilir.

ADD_ROW_TO_TABLE()

CREATE_TABLE() fonksiyonu ile oluşturulan tablomuza bu fonksiyona parametre olarak verilen QStringList'teki elemanlar tek bir satır olarak eklenir.QStringList'teki kolon sayısı CREATE_TABLE() ile oluşturulan kolon sayısından fazla olamaz.

GET_MAX_LINE_COUNT()

Bu fonksiyon , parametre olarak gönderilen line_height degerine gore raporun bir sayfasina sığacak olan satır sayısını verir.Parametre olarak gönderilecek değer point cinsinden olmalidir.

SET_HEIGHTS()

Bu fonksiyon , oluşturacağımız raporun header( başlık ) ve footer( sayfa altlığı ) ayarlarını yapar.Değerler punto cinsinden gonderilmelidir.Bu değerlere göre kernel sayfanın üst ve altından genişlik ayarlar.

SET_TABLE_TAG_STRING()

Bu fonksiyon , programcının ihtiyacına göre tabloyu tanımlar.Mesela , SET_TABLE_TAG_STRING( "" ) çağrısıyla genişliği 200 point , yüksekliği 20 point ve border genişliği 1 point olan bir tablo oluşturulur.

SET_TD_TAG_STRING()

Bu fonksiyon , rapor için oluşturacağımız tablomuzdaki kolonların tüm ozelliklerini tanımlayabilir.Fonksiyon kullanılmazsa kolonlardaki tüm değerler standart olarak sola dayalı olarak oluşturulur.Eğer bu fonksiyon kullanılacaksa , tablodaki tüm kolonların özelliklerinin atanması gerekir.Özelliği değiştirilmeyecek olan kolon için "" kullanılmalıdır.

GET_TABLE_HTML_STRING()

Bu fonksiyon , CREATE_TABLE ile oluşturduğumuz oluşturduğumuz ve ADD_ROW_TO_TABLE ile satılarını doldurduğumuz tablonun html formatını QString olarak verir.

REPORT KERNEL Tasariminda Dikkat Edilmesi Gereken Kurallar

  • Akış diyagramında gösterilen fonksiyon çağırılma sırasına dikkat edilmelidir.
  • Rapor Kernel'da , SET_HEIGHTS fonksiyonunu kullanarak footer ve header genişliklerini ayarlamalıyız.
  • Bir satırımızın genişliğini , GET_MAX_LINE_COUNT fonksiyonuna göndererek body'e ekleyebileceğimiz maksimum satır sayısını bulmalıyız.
  • GET_MAX_LINE_COUNT'da aldığımız değer kadar sayfaya satır eklemeliyiz.
  • GET_HEADER ve GET_BODY de oluşturduğumuz yada düzenlediğimiz tabloların html formatlı strin hali bu fonksiyonlarda return edilmelidir.
  • Footer ayarı yapmıyorsak GET_FOOTER fonksiyonundan NULL return etmeliyiz.