Uygulama İpuçları

Bu bölümde, kitaplığın daha karmaşık uygulamalarını yazmanıza yardımcı olacak bazı ipuçları verilmektedir:

Kendi Hizmetinizi Kullanma

En basit veri kaynağı uygulamaları, kitaplığın DataSourceServlet sınıfından devralır. DataSourceServlet dışındaki bir sınıftan devralmak için veri kaynağını aşağıdaki şekilde uygulayın:

  1. DataTableGenerator arayüzünü uygulayın ve getCapabilities() ile generateDataTable() değerlerini geçersiz kılın.
  2. Veri kaynağı akışını çalıştırmak için servlet kodunuzdan DataSourceHelper.executeDataSourceServletFlow() komutunu çağırın.Bu yöntemde aşağıdaki parametreler alınır:
    • HttpServletRequest nesnesi.
    • HttpServletResponse nesnesi.
    • Yukarıdaki 1. adımda DataTableGenerator arayüzünü uygulamanız.
    • Kısıtlı veya sınırsız erişim modunu belirtmek için kullanılan boole değeri.

Örneğin, servlet'inizi yerleşik kimlik doğrulama sağlayan AuthServlet adlı başka bir servlet sınıfından devralmak istiyorsanız SimpleServletExample öğesini, DataSourceServlet yerine AuthServlet devralacak şekilde yeniden yazabilirsiniz:

  1. DataTableGenerator arayüzünü uygulayın.
  2. generateDataTable() yöntemini DataSourceServlet uygulamanızdan DataTableGenerator uygulamanıza taşıyın.
  3. Capabilities.None değerini döndürmek için DataTableGenerator uygulamanızda getCapabilities() değerini geçersiz kılın.
  4. Serlet kodunuzdan (doGet() veya doPost()) DataSourceHelper.executeDataSourceServletFlow() yöntemini çağırın ve DataTableGenerator uygulamanızı tamamlayın. Bu yöntem, veri kaynağı sonuçlarının servlet yanıtında oluşturulması da dahil olmak üzere veri kaynağı akışının tüm akışını çalıştırır.

Normalde çerçeve tarafından sağlanan soyut bir sınıfı devraldığınız bir servlet çerçevesi kullanıyorsanız aynı tekniği kullanabilirsiniz. Örneğin, WebWork kullanıyorsanız ActionSupport sınıfını devralmak isteyebilirsiniz.

Özellikleri Tanımlama

Veri deponuz büyük miktarda veri içeriyorsa ve veri kaynağınızın verimliliğini artırmak istiyorsanız veri deponuzun sorgulama özelliklerini kullanabilirsiniz. Örneğin, veri deponuzun bir veritabanı olduğunu ve veritabanında çok sayıda sütun bulunduğunu varsayalım. Bir görselleştirme bu sütunlardan yalnızca birkaçını istiyorsa veritabanında bir SELECT işlemi çalıştırmak, tüm sütunları almaktan ve SELECT işlemini gerçekleştirmek için kitaplığın sorgulama özelliklerini kullanmaktan daha verimlidir. SELECT özelliklerini uygulamak için veritabanında SELECT işlemi çalıştıracak ve bir veri tablosu döndürecek kod yazarsınız.

Kodunuzun sağladığı sorgulama özelliklerini tanımlamak için Capabilities numaralandırmasını kullanın. Kullanılabilir seçenekler şunlardır:

  • NONE: Varsayılan değer, kodunuz herhangi bir sorgu işlemi sağlamaz.
  • SQL: Kodunuz SQL sorgu işlemleri sağlar.
  • SORT_AND_PAGINATION: Kodunuz hem sıralama hem de sayfalara ayırma sorgu işlemleri sağlar.
  • SELECT: Kodunuz seçme işlemi sağlar.
  • ALL: Kodunuz SQL, SORT_AND_PAGINATION ve SELECT işlemlerini sağlar.

Not: Her durumda kitaplık, kodunuz tarafından sağlanmayan sorgu işlemlerini işler.

NONE dışında bir özellik uygulamak için Capabilities.getCapabilities() politikasını geçersiz kılın ve veri deposunu sorgulamak ve bir veri tablosu döndürmek için DataTable.generateDataTable() yöntemini uygulayın.

Örneklerden üçü, özelliklerin nasıl uygulanacağını gösterir: AdvancedExampleServlet, AdvancedExampleServlet2 ve SqlDataSourceServlet. Bunların tümü example paketindedir. AdvancedExampleServlet2, Özellikleri ve Etkinlik Akışını Tanımlama bölümünde açıklanmıştır.

Etkinlik Akışını Özelleştirme

Varsayılan etkinlik akışı DataSourceHelper.executeDataSourceServletFlow içinde tanımlanmıştır. Varsayılan akış aşağıdaki gibidir:

  1. Sorgu parametrelerini çıkarın ve ayrıştırın.
  2. Yalnızca kısıtlı erişim modu için isteğin servlet ile aynı alandan geldiğini doğrulayın.
  3. İki sorgu nesnesi oluşturmak için isteği ayrıştırın: Veri kaynağı sorgusu ve tamamlama sorgusu. Veri kaynağı sorgusunu generateDataTable() uygulamanıza iletin.
  4. generateDataTable() uygulamanız bir veri tablosu oluşturur.
  5. 5. adımda oluşturulan veri tablosunda tamamlama sorgusunu çalıştırın.
  6. Veri tablosunu görselleştirme tarafından belirtilen biçimde oluşturun ve servlet yanıtını ayarlayın.

Kendi etkinlik akışınızı belirtmek için datasource.DataSourceHelper içindeki yardımcı işlevleri çağırın. Örnek uygulama için Özellikleri ve Etkinlik Akışını Tanımlama bölümünü inceleyin.

Parametreleri DataTableGenerator.generateDataTable Hedefine Aktarma

Bir sorgunun veya HttpServletRequest nesnesinin parçası olmayan verileri DataTableGenerator.generateDataTable hizmetine iletmek için HttpServletRequest.setAttribute öğesini kullanabilirsiniz. Örnek kod aşağıda verilmiştir.

Serlet'inizin koduna, HttpServletRequest içine iletmek istediğiniz nesneyi aşağıdaki gibi yerleştirin:

request.setAttribute("my_object_name", myObject);
DataSourceHelper.executeDataSourceServletFlow(request, response, dataTableGenerator);

dataTableGenerator arayüzü uygulamanızda HttpServletRequest nesnesindeki nesneyi aşağıdaki gibi alın:

public DataTable generateDataTable(Query query, HttpServletRequest request){
  Object myObject = request.getAttribute("my_object_name"); 
  // Add your code to manipulate myObject here 
} 

Sservlet olmayan bir Veri Kaynağını Uygulama

Kitaplığı servlet kullanmadan uygularsanız yalnızca servlet ortamı gerektirmeyen sınıfları ve yardımcı işlevleri kullanabilirsiniz. Bunlar, Query ve DataTable sınıflarının yanı sıra parseQuery, applyQuery, validateQuery ve splitQuery gibi bazı DataSourceHelper işlevleridir. Bu sınıfları ve işlevleri kullanarak şunları yapabilirsiniz:

  • Görselleştirme sorgusunu ayrıştırın.
  • Sorguyu bir veri kaynağı sorgusu ve tamamlama sorgusuna bölün.
  • Bir veri tablosu oluşturmak için tamamlama sorgusunu çalıştırın.
  • Veri tablosunu HTML, CSV veya JSON biçiminde görselleştirmeye döndürün.