लागू करने के बारे में सलाह

इस सेक्शन में कुछ ऐसी सलाह दी गई हैं जो लाइब्रेरी इस्तेमाल करने में आपकी मदद करेंगी:

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

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

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

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

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

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

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

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

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

  • NONE: डिफ़ॉल्ट, आपका कोड कोई क्वेरी ऑपरेशन नहीं देता है.
  • SQL: आपका कोड, 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.setAttribute का इस्तेमाल करके, उस डेटा को पास किया जा सकता है जो क्वेरी का हिस्सा नहीं है या HttpServletRequest ऑब्जेक्ट को DataTableGenerator.generateDataTable में भेजने के लिए. नीचे उदाहरण के तौर पर कोड दिया गया है.

अपने सर्वलेट के कोड में, वह ऑब्जेक्ट डालें जिसे आप 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 क्लास और DataSourceHelper के कुछ फ़ंक्शन शामिल हैं, जैसे कि parseQuery, applyQuery, validateQuery, और splitQuery. इन क्लास और फ़ंक्शन का इस्तेमाल करके, ये काम किए जा सकते हैं:

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