लागू करने से जुड़े सुझाव

इस सेक्शन में कुछ ऐसी सलाह दी गई हैं जो लाइब्रेरी के लिए ज़्यादा कॉम्प्लेक्स लागू करने में आपकी मदद करेंगी:

अपना सर्वलेट इस्तेमाल करना

डेटा सोर्स को लागू करने के सबसे आसान तरीके, लाइब्रेरी की DataSourceServlet क्लास से इनहेरिट किए जाते हैं. DataSourceServlet के अलावा किसी दूसरी क्लास से इनहेरिट करने के लिए, डेटा सोर्स को इस तरह से लागू करें:

  1. DataTableGenerator इंटरफ़ेस लागू करें और getCapabilities() और generateDataTable() को बदलें.
  2. डेटा सोर्स फ़्लो चलाने के लिए, अपने सर्वलेट के कोड में से DataSourceHelper.executeDataSourceServletFlow() को कॉल करें.इस तरीके में, ये पैरामीटर इस्तेमाल किए जाते हैं :
    • HttpServletRequest ऑब्जेक्ट.
    • HttpServletResponse ऑब्जेक्ट.
    • ऊपर दिए गए पहले चरण में DataTableGenerator इंटरफ़ेस को लागू करना.
    • प्रतिबंधित या बिना पाबंदी वाले ऐक्सेस मोड के बारे में बताने के लिए बूलियन.

उदाहरण के लिए, अगर अपने सर्वलेट को AuthServlet नाम की किसी ऐसी सर्वलेट क्लास से इनहेरिट करना है जो पहले से पुष्टि करने की सुविधा देती है, तो आप SimpleServletExample को इस तरह से लिख सकते हैं कि वह AuthServlet की जगह AuthServlet को इनहेरिट करे:DataSourceServlet

  1. DataTableGenerator इंटरफ़ेस लागू करें.
  2. generateDataTable() को लागू किए गए DataSourceServlet से को लागू करने के लिए, DataTableGenerator में ले जाएं.
  3. लागू करने के DataTableGenerator तरीके में getCapabilities() को बदलें, ताकि Capabilities.None दिखाया जा सके.
  4. अपने सर्वलेट कोड (doGet() या doPost()) में से DataSourceHelper.executeDataSourceServletFlow() को कॉल करें और DataTableGenerator का इस्तेमाल करें. यह तरीका, डेटा सोर्स के पूरे फ़्लो को चलाता है. इसमें डेटा सोर्स के नतीजों को सर्वलेट रिस्पॉन्स में रेंडर करना भी शामिल है.

अगर सर्वलेट फ़्रेमवर्क का इस्तेमाल किया जा रहा है, जिसमें आम तौर पर फ़्रेमवर्क से दी गई ऐब्सट्रैक्ट क्लास को इनहेरिट किया जाता है, तो भी यही तकनीक इस्तेमाल करें. उदाहरण के लिए, अगर WebWork का इस्तेमाल किया जा रहा है, तो हो सकता है कि आप ActionSupport क्लास इनहेरिट करना चाहें.

अधिकारों को तय करना

अगर आपके डेटा स्टोर में बहुत ज़्यादा डेटा है और आपको अपने डेटा सोर्स की परफ़ॉर्मेंस को बेहतर बनाना है, तो अपने डेटा स्टोर की क्वेरी करने की क्षमताओं का इस्तेमाल किया जा सकता है. उदाहरण के लिए, मान लें कि आपका डेटा स्टोर एक डेटाबेस है और डेटाबेस में बड़ी संख्या में कॉलम हैं. अगर कोई विज़ुअलाइज़ेशन इनमें से सिर्फ़ कुछ कॉलम का अनुरोध करता है, तो सभी कॉलम वापस पाने और SELECT को पूरा करने के लिए, लाइब्रेरी की क्वेरी करने की क्षमताओं का इस्तेमाल करने के बजाय, डेटाबेस में SELECT कार्रवाई करना ज़्यादा आसान होता है. SELECT की सुविधाओं को लागू करने के लिए, आपको डेटाबेस में SELECT ऑपरेशन चलाने और डेटा टेबल दिखाने के लिए कोड लिखना होगा.

अपने कोड से मिलने वाली क्वेरी करने की क्षमताओं को बताने के लिए Capabilities enum का इस्तेमाल करें. ये विकल्प उपलब्ध हैं:

  • NONE: डिफ़ॉल्ट रूप से, आपका कोड कोई क्वेरी ऑपरेशन नहीं करता है.
  • SQL: आपका कोड, एसक्यूएल क्वेरी से जुड़ी कार्रवाइयां उपलब्ध कराता है.
  • SORT_AND_PAGINATION: आपका कोड, क्वेरी को क्रम से लगाने और पेज पर नंबर डालने, दोनों की सुविधा देता है.
  • SELECT: आपका कोड, आपको चुनने का विकल्प देता है.
  • ALL: आपका कोड SQL, SORT_AND_PAGINATION, और SELECT से जुड़ी कार्रवाइयों की जानकारी देता है.

ध्यान दें: सभी मामलों में लाइब्रेरी ऐसी सभी क्वेरी ऑपरेशन को हैंडल करती है जो आपके कोड में नहीं दी गई हैं.

NONE के अलावा कोई दूसरी सुविधा लागू करने के लिए, Capabilities.getCapabilities() को बदलें. साथ ही, डेटा स्टोर से क्वेरी करने और डेटा टेबल दिखाने के लिए DataTable.generateDataTable() लागू करें.

इनमें से तीन उदाहरणों में, क्षमताओं को लागू करने का तरीका बताया गया है: AdvancedExampleServlet, AdvancedExampleServlet2, और SqlDataSourceServlet. सभी example पैकेज में हैं. AdvancedExampleServlet2 के बारे में क्षमताएं तय करना और इवेंट का फ़्लो लेख में बताया गया है.

इवेंट के फ़्लो को पसंद के मुताबिक बनाना

इवेंट का डिफ़ॉल्ट फ़्लो, DataSourceHelper.executeDataSourceServletFlow में बताया गया है. डिफ़ॉल्ट फ़्लो ऐसा होता है:

  1. क्वेरी पैरामीटर एक्सट्रैक्ट करें और पार्स करें.
  2. सिर्फ़ प्रतिबंधित ऐक्सेस मोड के लिए, पुष्टि करें कि अनुरोध उसी डोमेन से आया है जिस पर सर्वलेट उपलब्ध है.
  3. दो क्वेरी ऑब्जेक्ट बनाने के अनुरोध को पार्स करें: डेटा सोर्स क्वेरी और पूरी क्वेरी. generateDataTable() को लागू करने के लिए, डेटा सोर्स क्वेरी को पास करें.
  4. generateDataTable() को लागू करने से, डेटा टेबल जनरेट होती है.
  5. चरण 5 में जनरेट की गई डेटा टेबल पर पूरा होने वाली क्वेरी चलाएं.
  6. डेटा टेबल को विज़ुअलाइज़ेशन में बताए गए फ़ॉर्मैट में रेंडर करें और सर्वलेट रिस्पॉन्स सेट करें.

इवेंट का अपना फ़्लो तय करने के लिए, datasource.DataSourceHelper में हेल्पर फ़ंक्शन को कॉल करें. लागू करने के उदाहरण के लिए, क्षमताएं और इवेंट का फ़्लो तय करना.

पैरामीटर को DataTableGenerator.generateDataTable में पास करना

ऐसा डेटा जो किसी क्वेरी या HttpServletRequest ऑब्जेक्ट का हिस्सा नहीं है उसे DataTableGenerator.generateDataTable को भेजने के लिए, HttpServletRequest.setAttribute का इस्तेमाल किया जा सकता है. उदाहरण के लिए, कोड यहां दिया गया है.

अपने सर्वलेट के कोड में, जिस ऑब्जेक्ट को पास करना है उसे HttpServletRequest में इस तरह डालें:

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

अपने dataTableGenerator इंटरफ़ेस में, HttpServletRequest से ऑब्जेक्ट इस तरह हासिल करें:

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

बिना सर्वलेट वाला डेटा सोर्स लागू करना

सर्वलेट का इस्तेमाल किए बिना लाइब्रेरी को लागू करने पर, सिर्फ़ उन क्लास और हेल्पर फ़ंक्शन का इस्तेमाल किया जा सकता है जिनके लिए सर्वलेट एनवायरमेंट की ज़रूरत न हो. इनमें Query और DataTable क्लास के साथ-साथ parseQuery, applyQuery, validateQuery, और splitQuery जैसे कुछ DataSourceHelper फ़ंक्शन शामिल हैं. इन क्लास और फ़ंक्शन का इस्तेमाल करके ये काम किए जा सकते हैं:

  • विज़ुअलाइज़ेशन क्वेरी को पार्स करें.
  • क्वेरी को डेटा सोर्स क्वेरी और पूरी क्वेरी के हिसाब से बांटें.
  • डेटा टेबल जनरेट करने के लिए पूरी क्वेरी चलाएं.
  • डेटा टेबल को HTML, CSV या JSON फ़ॉर्मैट में विज़ुअलाइज़ेशन में वापस करें.