Veri Kaynaklarını Bildir

Veri kaynakları, yapılandırılmış veri kapsayıcılarıdır. Rapor oluştururken JasperReports motoru, veri kaynaklarından veri alır. Veri veritabanlarından, XML dosyalarından, nesne dizilerinden ve nesnelerin koleksiyonundan elde edilebilir. Filling Reports bölümünde , fillReportXXX () yönteminin doldurulması gereken raporun bir veri kaynağını şu şekilde almayı beklediğini gördük:net.sf.jasperreports.engine.JRDataSource nesne veya bir java.sql.Connection (rapor verileri ilişkisel bir veritabanında bulunduğunda).

JRDataSource arabiriminin uygulanması gereken yalnızca iki yöntemi vardır -

  • public boolean next () JRException'ı atar;

    • Rapor doldurma zamanında, bu yöntem, veriler arasında yineleme yapılırken raporlama motoru tarafından veri kaynağı nesnesinde çağrılır.

  • public Object getFieldValue (JRField jrField) JRException atar;

    • Bu yöntem, geçerli veri kaynağı kaydındaki her bir rapor alanı için değer sağlar.

Veri kaynağından veri almanın tek yolu rapor alanlarını kullanmaktır. Veri kaynağındaki kayıtların elde edilme şekline bağlı olarak JRDataSource arayüzünün birkaç varsayılan uygulaması vardır.

Veri Kaynağı Uygulamaları

Aşağıda verilen tablo, veri kaynaklarını ve bunların uygulama sınıflarını özetlemektedir -

Veri kaynağı Uygulama Sınıfı
JDBC net.sf.jasperreports.engine.JRResultSetDataSource
JavaBean net.sf.jasperreports.engine.data.JRBeanCollectionDataSource, net.sf.jasperreports.engine.data.JRBeanArrayDataSource
Harita tabanlı net.sf.jasperreports.engine.data.JRMapArrayDataSource, net.sf.jasperreports.engine.data.JRMapCollectionDataSource
TableModel net.sf.jasperreports.engine.data.JRTableModelDataSource
XML net.sf.jasperreports.engine.data.JRXmlDataSource
CSV net.sf.jasperreports.engine.data.JRCsvDataSource
XLS net.sf.jasperreports.engine.data.JRXlsDataSource
Boş net.sf.jasperreports.engine.JREmptyDataSource

JDBC Veri Kaynakları

Sınıf JRResultSetDataSourcejava.sql.ResultSet nesnesini craps . Bu, rapor verileri ilişkisel bir veritabanından çıkarıldığında en yaygın kullanılan veri kaynağı uygulamalarıdır. Bunun yerine motora bir java.sql.Connection iletilirse, önce ilgili sorguyu yürütür ve döndürülen java.sql.ResultSet nesnesini bir JRResultSetDataSource örneğinde depolar.

JavaBean Veri Kaynakları

Sınıflar JRBeanArrayDataSource ve JRBeanCollectionDataSourceJavaBean nesnelerinin dizilerini ve koleksiyonlarını sarabilen uygulamaları temsil eder. Dizi veya koleksiyondaki her nesne, bu tür veri kaynağında tek bir kayıt olarak görülecektir. Belirli bir JavaBean özelliği ile karşılık gelen rapor alanı arasındaki eşleştirme, adlandırma kuralları ile yapılır. Rapor alanının adı, JavaBeans belirtimlerinde belirtilen JavaBean özelliğinin adıyla aynı olmalıdır.

Bu öğreticinin tüm örneklerinde JRBeanCollectionDataSource kullandık.

Harita Tabanlı Veri Kaynakları

Uygulama sınıfları JRMapArrayDataSource ve JRMapCollectionDataSourceÜst uygulama, bellekte bulunan raporlama verilerini java.util.Map nesneleri olarak zaten depoluyorsa kullanışlıdır . Sarmalanmış dizideki veya koleksiyondaki her Map nesnesi, veri kaynağındaki sanal bir kayıt olarak kabul edilir ve her bir rapor alanının değeri, anahtar olarak adlandırılan rapor alanı kullanılarak haritadan çıkarılır.

TableModel Veri Kaynakları

Birçok istemci tarafı uygulamasında, veriler tablo biçiminde görüntülenir. Birçok uygulamada ortak bir gereklilik, kullanıcının bu tablo biçimini bir rapor olarak yazdırmasına izin vermektir. Uygulama sınıfıJRTableModelDataSourceSwing uygulamaları için tablo formatında rapor oluşturma görevini önemsiz hale getirir. Bu sınıf, bir javax.swing.table.TableModel nesnesini sarar. Sarmalanmış TableModel nesnesindeki sütunlara isimlerinden veya 0 tabanlı dizinlerinden erişilebilir.

XML Veri Kaynakları

Sınıf JRXmlDataSourceXML belgesinden veri seçmek için XPath ifadelerini kullanan DOM'a dayalı bir veri kaynağı uygulamasıdır. XML veri kaynağındaki kayıtlar, XPath ifadesi aracılığıyla seçilen düğüm öğeleriyle temsil edilir. Alan değerleri, alan açıklaması (JRXML'deki <fieldDescription> öğesi) tarafından sağlanan XPath ifadesi kullanılarak her kayıttan alınır.

XPath, bir XML belgesinin nitelikleri ve öğeleri arasında gezinmek için kullanılan bir dildir. XPath hakkında daha fazla bilgi şu adreste bulunabilir:http://www.w3.org/TR/xpath.

CSV Veri Kaynakları

JRCsvDataSourceverilerini yapılandırılmış metin dosyalarından alan veri kaynakları için bir uygulamayı temsil eder; genellikle CSV'ler. Alan değerleri, sütun dizini kullanılarak alınır.

XLS Veri Kaynakları

JRXlsDataSourceVerilerini Excel belgelerinden alan veri kaynakları için bir uygulamayı temsil eder. Bu veri kaynağı uygulaması için rapor alanı eşlemesi de alan sütun indeksine dayanır.

Boş Veri Kaynakları

Sınıf JREmptyDataSource, içinde belirli sayıda sanal boş kayıt bulunan bir veri kaynağını simüle eder. Kullanıcı arabirimi araçları tarafından temel rapor önizleme işlevi sunmak için veya özel rapor şablonlarında veya test etme ve hata ayıklama amacıyla kullanılır.

Geri Sarılabilir Veri Kaynakları

net.sf.jasperreports.engine.JRRewindableDataSourcetemel JRDataSource arayüzünü genişletir . Arabirime moveFirst () adında yalnızca bir yöntem ekler. Bu yöntem, imleci veri kaynağındaki ilk öğeye taşımak için tasarlanmıştır.

Geri alınabilir veri kaynakları, isSplitAllowed = "false" ayarı nedeniyle bölünmesine izin verilmeyen bir bant içine yerleştirilmiş alt raporlarla çalışırken ve alt raporun işlenmesi için geçerli sayfada yeterli alan yokken kullanışlıdır.

Yukarıdaki veri kaynağı uygulamalarının tümü geri sarılabilir. JRResultSetDataSource, kayıt işaretçisinin geri taşınmasını desteklemediğinden. Bu, yalnızca bu veri kaynağı bir java.sql.ResultSet'i alt rapora geçirmeden önce el ile sarmak için kullanılırsa bir sorun oluşturur. SQL sorgusu alt rapor şablonunda yer alıyorsa, motor sonraki sayfadaki alt raporu yeniden başlatırken onu tekrar çalıştıracağından herhangi bir sorun yoktur.

Veri Kaynağı Sağlayıcıları

JasperReports kütüphanesinin bir arayüzü vardır net.sf.jasperreports.engine.JRDataSourceProvider. Bu, veri kaynağı nesnelerinin oluşturulmasına ve atılmasına yardımcı olur. GUI araçlarını kullanarak bir rapor şablonu oluştururken, raporun veri kaynağını özelleştirmek için özel bir araç gereklidir. JRDataSourceProvider, özel veri kaynaklarını bir tasarım aracına eklemenin standart yoludur. Bu arabirimin özel bir uygulaması, veri kaynağı nesnelerinin oluşturulmasına ve atılmasına izin veren aşağıdaki yöntemleri ve ayrıca mümkünse veri kaynağı içindeki mevcut rapor alanlarını listeleme yöntemlerini uygulamalıdır:

public boolean supportsGetFieldsOperation();

public JRField[] getFields(JasperReport report)
   throws JRException, UnsupportedOperationException;

public JRDataSource create(JasperReport report) throws JRException;

public void dispose(JRDataSource dataSource) throws JRException;