Uygulamayla İlgili İpuçları

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

Kendi Yayınınızı Kullanma

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

  1. DataTableGenerator arayüzünü uygulayın ve getCapabilities() ile generateDataTable() ayarlarını geçersiz kılın.
  2. Veri kaynağı akışını çalıştırmak için servlet'inizin kodundan DataSourceHelper.executeDataSourceServletFlow() yöntemini çağırın.Bu yöntem aşağıdaki parametreleri alır:
    • HttpServletRequest nesnesi.
    • HttpServletResponse nesnesi.
    • Yukarıdaki 1. adımda uyguladığınız DataTableGenerator arayüzü.
    • Kısıtlı veya sınırsız erişim modunu belirten bir boole.

Örneğin, servlet'inizi dahili kimlik doğrulama sağlayan AuthServlet adlı başka bir servlet sınıfından devralmak isterseniz aşağıdaki gibi DataSourceServlet yerine AuthServlet devralmak için SimpleServletExample öğesini yeniden yazabilirsiniz:

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

Aynı tekniği, normalde çerçeve tarafından sağlanan bir soyut sınıfı kullandığınız servlet çerçevesi kullanıyorsanız da kullanabilirsiniz. Örneğin, WebWork kullanıyorsanız ActionSupport sınıfını devralmayı tercih edebilirsiniz.

Yetenekleri Tanımlama

Veri deponuz büyük miktarda veri içeriyorsa ve veri kaynağınızın verimliliğini artırmak istiyorsanız veri mağazanızın sorgu özelliklerini kullanabilirsiniz. Örneğin, veri deponuzun bir veritabanı olduğunu ve veritabanında çok sayıda sütun olduğunu varsayalım. Görselleştirme bu sütunların yalnızca birkaçını isterse veritabanının içinde bir SELECT işlemi çalıştırmak, tüm sütunları almaktan ve SELECT işlevini gerçekleştirmek için kitaplığın sorgu özelliklerini kullanmaktan daha verimlidir. SELECT özelliklerini uygulamak için veritabanında bir SELECT işlemi çalıştırmak ve veri tablosu döndürmek üzere kod yazarsınız.

Kodunuzun sağladığı sorgu özelliklerini tanımlamak için Capabilities enum'u kullanın. Şu seçenekler kullanılabilir:

  • NONE: Varsayılan, kodunuz 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 tüm sorgu işlemlerini işler.

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

Örneklerden üçü, özelliklerin nasıl uygulanacağını göstermektedir: AdvancedExampleServlet, AdvancedExampleServlet2 ve SqlDataSourceServlet. Hepsi example paketinde. AdvancedExampleServlet2, Yetenekleri Tanımlama ve Etkinlik Akışı konusunda ele alınmıştır.

Etkinlik Akışını Özelleştirme

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

  1. Sorgu parametrelerini ayıklama ve ayrıştırma.
  2. Yalnızca kısıtlı erişim modu için, isteğin servlet ile aynı alandan kaynaklandığını doğrulayın.
  3. Veri kaynağı sorgusu ve tamamlama sorgusu olmak üzere iki sorgu nesnesi oluşturma isteği ayrıştırılır. Veri kaynağı sorgusunu generateDataTable() uygulamanıza geçirin.
  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ştirmede belirtilen biçimde oluşturun ve servlet yanıtını ayarlayın.

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

Parametreleri DataTableGenerator.generateDataTable öğesine iletme

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

Serginizin koduna, aktarmak istediğiniz nesneyi HttpServletRequest bölümüne aşağıdaki gibi yerleştirin:

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

dataTableGenerator arayüz uygulamanızda, nesneyi HttpServletRequest nesnesinden 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 
} 

servissiz veri kaynağını uygulama

Kütüphaneyi bir servlet olmadan uyguluyorsanı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 DataSourceHelper işlevlerinden bazılarını içerir. Aşağıdakileri yapmak için bu sınıfları ve işlevleri kullanabilirsiniz:

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