इस सेक्शन में कुछ ऐसी सलाह दी गई हैं जो लाइब्रेरी के लिए ज़्यादा कॉम्प्लेक्स लागू करने में आपकी मदद करेंगी:
- अपना सर्वलेट इस्तेमाल करना
- भूमिकाएं तय करना
- इवेंट के फ़्लो को पसंद के मुताबिक बनाना
- पैरामीटर को
DataTableGenerator.generateDataTable
में पास करना - बिना सर्वलेट वाला डेटा सोर्स लागू करना
अपना सर्वलेट इस्तेमाल करना
डेटा सोर्स को लागू करने के सबसे आसान तरीके, लाइब्रेरी की DataSourceServlet
क्लास से इनहेरिट किए जाते हैं.
DataSourceServlet
के अलावा किसी दूसरी क्लास से इनहेरिट करने के लिए, डेटा सोर्स को इस तरह से लागू करें:
-
DataTableGenerator
इंटरफ़ेस लागू करें औरgetCapabilities()
औरgenerateDataTable()
को बदलें. - डेटा सोर्स फ़्लो चलाने के लिए, अपने सर्वलेट के कोड में से
DataSourceHelper.executeDataSourceServletFlow()
को कॉल करें.इस तरीके में, ये पैरामीटर इस्तेमाल किए जाते हैं :HttpServletRequest
ऑब्जेक्ट.HttpServletResponse
ऑब्जेक्ट.- ऊपर दिए गए पहले चरण में
DataTableGenerator
इंटरफ़ेस को लागू करना. - प्रतिबंधित या बिना पाबंदी वाले ऐक्सेस मोड के बारे में बताने के लिए बूलियन.
उदाहरण के लिए, अगर अपने सर्वलेट को AuthServlet
नाम की किसी ऐसी सर्वलेट क्लास से इनहेरिट करना है जो पहले से पुष्टि करने की सुविधा देती है, तो आप SimpleServletExample
को इस तरह से लिख सकते हैं कि वह AuthServlet
की जगह AuthServlet
को इनहेरिट करे:DataSourceServlet
-
DataTableGenerator
इंटरफ़ेस लागू करें. -
generateDataTable()
को लागू किए गएDataSourceServlet
से को लागू करने के लिए,DataTableGenerator
में ले जाएं. - लागू करने के
DataTableGenerator
तरीके मेंgetCapabilities()
को बदलें, ताकिCapabilities.None
दिखाया जा सके. - अपने सर्वलेट कोड (
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
में बताया गया है.
डिफ़ॉल्ट फ़्लो ऐसा होता है:
- क्वेरी पैरामीटर एक्सट्रैक्ट करें और पार्स करें.
- सिर्फ़ प्रतिबंधित ऐक्सेस मोड के लिए, पुष्टि करें कि अनुरोध उसी डोमेन से आया है जिस पर सर्वलेट उपलब्ध है.
- दो क्वेरी ऑब्जेक्ट बनाने के अनुरोध को पार्स करें: डेटा सोर्स क्वेरी और
पूरी क्वेरी.
generateDataTable()
को लागू करने के लिए, डेटा सोर्स क्वेरी को पास करें. generateDataTable()
को लागू करने से, डेटा टेबल जनरेट होती है.- चरण 5 में जनरेट की गई डेटा टेबल पर पूरा होने वाली क्वेरी चलाएं.
- डेटा टेबल को विज़ुअलाइज़ेशन में बताए गए फ़ॉर्मैट में रेंडर करें और सर्वलेट रिस्पॉन्स सेट करें.
इवेंट का अपना फ़्लो तय करने के लिए, 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
फ़ॉर्मैट में विज़ुअलाइज़ेशन में वापस करें.